? ปัญหาทางประวัติศาสตร์ และนั่นคือสิ่งที่เราทุกคนรู้ ?
หากต้องการให้รางวัลฉันด้วยรหัสที่ใช้ความรักในการผลิตไฟฟ้า สามารถคลิกลิงก์นี้เพื่อช่วยฉันเติมพลังได้ ❤️:
แอพ轻小说文库
สไตล์ Material Design เป็นโอเพ่นซอร์ส อย่างสมบูรณ์ ! หากคุณต้องการฝึกฝน Material Design คุณสามารถดูซอร์สโค้ดของโปรเจ็กต์นี้ได้ หากคุณไม่ชัดเจนหรือมีหัวข้อที่เกี่ยวข้องต่างๆ คุณสามารถส่ง issue
เพื่อสื่อสารได้ ~
โปรเจ็กต์นี้เป็นครั้งแรกที่ฉันเขียนแอป Android ฉันอ่านหนังสือเบื้องต้น 《第一行代码Android》
ที่ chinapub มอบให้เป็นการวิจารณ์หนังสือ จากนั้นจึงเริ่มเขียนแอปนี้ ฉันเริ่มเขียนในเดือนตุลาคม 2014 และเป็นเวลากระจัดกระจายภายในสิ้นเดือนธันวาคม เวอร์ชัน 0.5.2.0 ถูกเขียนขึ้น ตอนนั้นฉันไม่รู้อะไรเลย และโค้ดที่ฉันเขียนก็แย่มาก ต่อมา นักออกแบบในกลุ่มผู้ใช้เบต้าภายในได้เสนอให้ออกแบบแอปสไตล์ Material Design (ต่อไปนี้จะเรียกว่า MD
) ดังนั้นเขาจึงวางแผนที่จะพัฒนาใหม่อีกครั้ง มันเป็นการผัดวันประกันพรุ่งและแอปใหม่ก็สร้างเสร็จไม่ถึงปลายเดือนกรกฎาคม ถ้าฉันนับมันคงต้องใช้เวลาทั้งเดือนและมีโค้ดที่เขียนด้วยลายมือมากกว่า 20,000 บรรทัด
แอพนี้ไม่สนใจและมีประสบการณ์ในฐานะโปรเจ็กต์เลย ดังนั้นจึง完全无偿
และซอร์สโค้ดยังเป็น完全开源
! ทุกคนสามารถสื่อสารได้ ฉันเคยลังเลที่จะเปิด MD
ใหม่มาก่อน ในแง่หนึ่ง ฉันรู้สึกว่ามันยากเกินไปที่จะเขียน ฉันค้นหาข้อมูลจาก Google ต่างๆ และสนับสนุน Hongxing Plug-in_(:3」∠)_On the ในทางกลับกัน มีการใช้อย่างเป็นทางการเกี่ยวกับการจัดการ git เว็บมาสเตอร์ของ Wenku8 ยังห้ามมิให้เผยแพร่ API สู่สาธารณะ ดังนั้นจึงเป็นเรื่องยากมากในการจัดการทั้งสองเวอร์ชัน ในทางกลับกัน โค้ดจะยุ่งมากและไม่มีการจัดระเบียบ
**หมายเหตุ: **ส่วนหนึ่งของซอร์สโค้ดเวอร์ชัน 1.x ถูกคัดลอกมาจาก 0520 และรูปแบบของ 0520 นั้นแย่มาก ตัวอย่างเช่น isLoading
ของ AsyncTask
ถูกกำหนดไว้ภายนอกคลาส ดังนั้นรูปแบบการเขียนโค้ดจะไม่สอดคล้องกัน ฉันค่อนข้างพอใจกับโค้ดที่เขียนใหม่นี้และยังมีความจำเป็นในการแก้ไขเพียงเล็กน้อย ดังนั้นจึงไม่มีการปรับโครงสร้างใหม่ ยินดีให้คำแนะนำเกี่ยวกับรูปแบบการเขียนโค้ด~
เหตุใดแอปจึงบอกให้แคชนวนิยายที่น่าสนใจโดยเร็วที่สุด เหตุใดจึงมีความเร่งด่วนในการเปิดแหล่งที่มาในขณะนี้?
โปรดดู开发者的碎碎念
ที่ส่วนท้ายของเอกสาร
คุณสามารถดูการเรนเดอร์การผลิตแอปที่จัดทำโดยนักออกแบบได้~
ซอร์สโค้ดเวอร์ชัน 0.5.1.0030 (เวอร์ชัน eclipse
+ ADT
) ซอร์สโค้ดนี้จะตัดส่วนของ API ดังนั้นจึงไม่สามารถรับข้อมูลได้ตามปกติหลังจากการคอมไพล์
ซอร์สโค้ดของ 0.5.2.1典藏版
(เวอร์ชัน Android Studio
) ถูกคัดลอกมาจากไลบรารีส่วนตัวอย่างสมบูรณ์ ที่อยู่การเผยแพร่ของเวอร์ชันวางจำหน่ายจะเหมือนกับเวอร์ชันอย่างเป็นทางการ
ไฟล์ต้นฉบับรูปวาดเวอร์ชันเก่าถูกสร้างขึ้นโดยฉันเองในขณะนั้น และมันเป็นแบบสุ่มโดยสิ้นเชิงและไม่เป็นระเบียบ = -
ที่จัดเก็บซอร์สโค้ดทั้งหมดของเวอร์ชันอย่างเป็นทางการ 1.x ซึ่งเป็นซอร์สโค้ดที่สมบูรณ์ของแอพสไตล์ MD
สามารถคอมไพล์และรันได้ตามปกติ! (เวอร์ชัน Android Studio
)
สำหรับแอปสไตล์ MD
เวอร์ชันใหม่ แบบร่างการออกแบบอยู่ใน design-source/
และไฟล์โปรเจ็กต์อยู่ใน studio-android/
การอ้างอิงถึงไลบรารีบุคคลที่สามทั้งหมดใช้การพึ่งพา Gradle ซึ่งจะถูกละเว้นโดยตรงในแง่ของการทำให้สับสน ความแข็งแกร่งของการเข้ารหัสต่ำ แต่สะดวกสำหรับการพัฒนา ~
Model & Controller: activity/WelcomeActivity.java
View: layout/layout_welcome.xml
Model & Controller: fragment/NavigationDrawerFragment.java
View: layout/layout_main_menu.xml
Model & Controller: fragment/FavFragment.java
Adapter: adapter/NovelItemAdapter.java
View: layout/fragment_latest.xml
搜索界面
Model & Controller: activity/SearchActivity.java
Adapter: adapter/SearchHistoryAdapter.java
View: layout/layout_search.xml
搜索结果界面
Model & Controller: activity/SearchResultActivity.java
Adapter: adapter/NovelItemAdapterUpdate.java
View: layout/layout_search_result.xml
Model & Controller: fragment/RKListFragment.java
Adapter: adapter/NovelItemAdapterUpdate.java
View: layout/fragment_rklist.xml + (layout/fragment_novel_item_list.xml)s
Model & Controller: fragment/FavFragment.java
Adapter: adapter/NovelItemAdapterUpdate.java
View: layout/fragment_novel_item_list.xml
Model & Controller: activity/NovolInfoActivity.java
View: layout/layout_novel_info.xml
Model & Controller: activity/NovolChapterActivity.java
View: layout/layout_novel_chapter.xml
Model & Controller: reader/activity/Wenku8ReaderActivityV1.java
View: layout/layout_reader_swipe_temp.xml + (layout/layout_reader_swipe_page.xml)s
Model & Controller: activity/VerticalReaderActivity.java
View: layout/layout_vertical_reader_temp.xml
Model & Controller: fragment/ConfigFragment.java
View: layout/fragment_config.xml
studio-android/LightNovelLibrary/app/src/main
| AndroidManifest.xml
|
+---assets/fonts
| fzss-gbk.ttf 方正书宋GBK字体
|
+---java/org/mewx/wenku8
| | MyApp.java 自定义Application为了全局获取Context
| |
| +---activity
| | AboutActivity.java 关于界面
| | MainActivity.java 主界面
| | MenuBackgroundSelectorActivity.java 侧栏菜单背景选择界面
| | NovelChapterActivity.java 章节选择界面
| | NovelInfoActivity.java 小说信息界面
| | SearchActivity.java 搜索界面
| | SearchResultActivity.java 搜索结果框架界面
| | UserInfoActivity.java 用户信息界面
| | UserLoginActivity.java 用户登录界面
| | VerticalReaderActivity.java 上下滑动界面
| | ViewImageDetailActivity.java 查看大图界面
| | WelcomeActivity.java 启动界面
| |
| +---adapter
| | NovelItemAdapter.java 老版的小说项Adapter,每10项更新一次
| | NovelItemAdapterUpdate.java 更新的小说项Adapter,动态更新每一项
| | SearchHistoryAdapter.java 搜索历史Adapter
| |
| +---component
| | PagerSlidingTabStrip.java 排行榜自定义的标签类
| | ScrollViewNoFling.java 可控滑动阻尼的ScrollView
| |
| +---fragment
| | ConfigFragment.java 设置界面
| | FavFragment.java 本地书架框架
| | LatestFragment.java 最近更新
| | NavigationDrawerFragment.java 侧栏菜单
| | NovelItemListFragment.java 通用的小说列表界面(嵌入框架中)
| | RKListFragment.java 排行榜框架
| |
| +---global
| | | GlobalConfig.java 全局设置(糟糕向),其中inAlphaBuild控制内测版/正式版
| | |
| | ---api
| | ChapterInfo.java 章节信息类
| | NovelItemInfo.java 小说信息类
| | NovelItemInfoUpdate.java 更新的小说信息类
| | NovelItemList.java 小说项列表类
| | NovelItemMeta.java 小说完整信息类
| | OldNovelContentParser.java 旧的小说内容解析器,解析成text和image
| | UserInfo.java 用户信息类
| | VolumeList.java 卷信息类
| | Wenku8API.java API类
| | Wenku8Error.java 错误信息类,后期的编码中定义的
| | Wenku8Parser.java 通用项目解析器
| |
| +---listener
| | MyItemClickListener.java RecyclerView的单击监听接口
| | MyItemLongClickListener.java RecyclerView的长按监听接口
| |
| +---reader 这边准备封装成的UniversalReaderActivity库的
| | +---activity
| | | Wenku8ReaderActivityV1.java 左右滑动阅读界面
| | |
| | +---loader
| | | WenkuReaderLoader.java 小说载入类的抽象类
| | | WenkuReaderLoaderXML.java XML格式小说载入类
| | |
| | +---setting
| | | WenkuReaderSettingV1.java 阅读设置类V1
| | |
| | +---slider 三方划屏库
| | | | SlidingAdapter.java
| | | | SlidingLayout.java
| | | |
| | | ---base
| | | BaseSlider.java
| | | OverlappedSlider.java
| | | PageSlider.java
| | | Slider.java
| | |
| | ---view
| | WenkuReaderPageBatteryView.java 电池View(未使用)
| | WenkuReaderPageView.java 单页小说View(效率低)
| |
| +---service
| | HeartbeatSessionKeeper.java 心跳包保持session类(未使用)
| |
| ---util
| LightBase64.java 轻量级base64封装库
| LightCache.java 轻量级文件操作库(容易OOM)
| LightNetwork.java 轻量级网络通信库(容易OOM)
| LightTool.java 轻量级工具集合类
| LightUserSession.java 轻量级用户Session管理(包括账号密码加解密)
| Logger.java 轻量级日志类(未使用)
|
---res/
| ... 略
แอปเวอร์ชันเก่าเริ่มต้นและทำงานได้อย่างราบรื่นกว่าเวอร์ชัน MD
และได้รับการดูแลสำหรับรุ่นเก่า ซอร์สโค้ดของเวอร์ชัน Eclipse
สามารถพบได้ในไดเร็กทอรี eclipse-android/
(ไม่ใช่เวอร์ชันล่าสุด) ซอร์สโค้ดของเวอร์ชัน Android Studio
สามารถพบได้ในไดเร็กทอรี eclipse-android-old/
(เวอร์ชันของนักสะสมเป็นเวอร์ชันล่าสุด) ) ทรัพยากรรูปภาพของเวอร์ชันเก่าทั้งหมดสร้างขึ้นด้วย graph-source/
มีการแนะนำไลบรารีของบุคคลที่สามจำนวนมากที่นี่ แต่วิธีการนี้ค่อนข้างงุ่มง่าม โดยส่วนใหญ่จะใช้การคัดลอกและการรวมซอร์สโค้ด ดังนั้นไดเร็กทอรีไฟล์จะยุ่งเหยิง อย่างไรก็ตาม ความแรงของการเข้ารหัสอยู่ในระดับสูง _(:3 ∠)_ ยังคงแนะนำให้ทำเช่นนี้เมื่อสร้างซอฟต์แวร์เชิงพาณิชย์ในอนาคต แม้ว่าจะเป็นเรื่องที่ยุ่งยาก แต่ก็จะน่ารำคาญมากหลังจากเกิดความสับสน~
eclipse-android-oldLightNovelLibrarysrc
+---com
| +---davemorrissey
| | ---labs
| | ---subscaleview 分部加载图片的库,查看大图防止OOM
| | ImageViewState.java
| | ScaleImageView.java
| | SubsamplingScaleImageView.java
| |
| +---ecloud
| | ---pulltozoomview 下拉放大的视图,设置界面用的小苹果~
| | IPullToZoom.java
| | PullToZoomBase.java
| | PullToZoomListView.java
| | PullToZoomListViewEx.java
| | PullToZoomScrollView.java
| | PullToZoomScrollViewEx.java
| |
| +---facebook
| | ---rebound 物理、动画库,用途忘记了 =。= 大半年没动了,好像是侧栏菜单用的
| | | AndroidSpringLooperFactory.java
| | | BaseSpringSystem.java
| | | OrigamiValueConverter.java
| | | SimpleSpringListener.java
| | | Spring.java
| | | SpringConfig.java
| | | SpringConfigRegistry.java
| | | SpringListener.java
| | | SpringLooper.java
| | | SpringSystem.java
| | | SpringSystemListener.java
| | | SpringUtil.java
| | | SteppingLooper.java
| | | SynchronousLooper.java
| | |
| | ---ui
| | SpringConfiguratorView.java
| | Util.java
| |
| +---special
| | ---ResideMenu 侧边滑动菜单iOS风格的
| | ResideMenu.java
| | ResideMenuItem.java
| | TouchDisableView.java
| |
| ---zcw
| ---togglebutton iOS风格的切换按钮
| ToggleButton.java
|
+---me
| ---imid
| ---swipebacklayout 右滑返回layout
| ---lib
| | SwipeBackLayout.java
| | Utils.java
| | ViewDragHelper.java
| |
| ---app
| SwipeBackActivity.java
| SwipeBackActivityBase.java
| SwipeBackActivityHelper.java
| SwipeBackPreferenceActivity.java
|
+---org
| ---mewx
| ---lightnovellibrary
| +---activity
| | AboutActivity.java 关于界面
| | BookshelfFragment.java 本地书架
| | LibraryFragment.java 小说库(主界面入口)
| | MainActivity.java 主界面
| | NovelImageActivity.java 看大图界面
| | NovelInfoActivity.java 小说信息界面
| | NovelListActivity.java 小说列表界面
| | NovelReaderActivity.java 阅读器界面(上下滑动)
| | NovelSearchActivity.java 搜索界面
| | SettingFragment.java 设置
| | StartActivity.java 启动界面
| | Wenku8Fragment.java (未完成)
| |
| +---api
| | Wenku8Interface.java 你懂的
| |
| +---component
| | | GlobalConfig.java 全局设置界面
| | | MyApp.java 用于获取Context的全局Application
| | | NovelContentParser.java 小说内容解析器
| | | XMLParser.java XML解析器
| | |
| | ---adapter
| | EntryElement.java 书库分类项
| | EntryElementAdapter.java 书库分类项Adapter
| | NovelContentAdapter.java 小说内容Adapter
| | NovelElement.java 小说项
| | NovelElementAdapter.java 小说项Adapter
| | NovelElementSearch.java 小说搜索项
| | NovelElementSearchAdapter.java 小说搜索项Adapter
| | NovelIcon.java 小说封面
| | NovelIconAdapter.java 小说封面Adapter
| |
| ---util
| LightBase64.java 轻量级Base64库
| LightCache.java 轻量级文件操作库
| LightNetwork.java 轻量级网络通信库
|
---uk
---co
---senab
---photoview 轻量级看图的View
| Compat.java
| DefaultOnDoubleTapListener.java
| IPhotoView.java
| PhotoView.java
| PhotoViewAttacher.java
|
+---gestures
| CupcakeGestureDetector.java
| EclairGestureDetector.java
| FroyoGestureDetector.java
| GestureDetector.java
| OnGestureListener.java
| VersionedGestureDetector.java
|
+---log
| Logger.java
| LoggerDefault.java
| LogManager.java
|
---scrollerproxy
GingerScroller.java
IcsScroller.java
PreGingerScroller.java
ScrollerProxy.java
จำนวนผู้ใช้แอปเวอร์ชันใหม่เพิ่มขึ้นเป็น 10,000 รายใน 10 วัน ทั้งหมดนี้ต้องขอบคุณ wenku8 จากอัตราการเติบโตในปัจจุบัน คาดว่าจำนวนผู้ใช้สูงสุดจะอยู่ที่ประมาณ 3W
นอกจากนี้ยังมีแผนภูมิทางสถิติที่น่าสนใจอีกสองสามรายการที่จะแบ่งปัน:
สามารถดาวน์โหลดและดูตัวอย่างไฟล์เก็บถาวรได้ในพื้นที่ release
~
sdcard/wenku8
+---cache 完全由UIL接管的图片缓存文件夹
+---custom 用户自定义文件夹,可以放入自定义侧栏壁纸、自定义阅读字体、自定义阅读背景
| .nomedia
|
+---imgs 小说封面
| .nomedia
| *.jpg
|
---saves 存档文件夹
| avatar.jpg 登陆后的头像
| bookshelf_local.wk8 本地书架
| cert.wk8 简单加密的登陆用户名和密码
| read_saves.wk8 旧版的上下滑动阅读进度存档
| read_saves_v1.wk8 新版的左右滑动阅读进度存档
| search_history.wk8 搜索历史存档
| settings.wk8 设置存档
|
+---imgs 小说插图
| .nomedia
| *.jpg
|
+---intro 小说信息
| *.xml
|
---novel 小说正文
*.xml
cache目录
แคชจะถูกสร้างขึ้นโดยอัตโนมัติsettings.wk8
จะถูกอ่านเมื่อแอปเริ่มทำงาน และทุกครั้งที่มีการเปลี่ยนแปลงการตั้งค่า การตั้งค่าจะถูกบันทึกทันทีimgs目录
โดยอัตโนมัติ收藏
ของนวนิยายจะเขียนความช่วยเหลือลงใน saves/bookshelf_local.wk8
และการยกเลิกคอลเลกชันจะยกเลิกการเขียนและลบเนื้อหา xml ในเครื่องที่เกี่ยวข้อง (รูปภาพจะไม่ถูกลบ)saves/intro
3 ไฟล์สำหรับนวนิยายแต่ละเรื่อง และรีเฟรชกิจกรรมหลังการอัปเดตsaves/intro
จากนั้นดาวน์โหลดเนื้อหาเฉพาะของนวนิยาย (เก็บไว้ใน saves/novel
) ตามข้อมูลใน aid-volume.xml
หลังจากดาวน์โหลดแต่ละครั้ง ให้ตรวจสอบว่า xml มีรูปภาพ หากมีรูปภาพ ให้แทรกงานดาวน์โหลดรูปภาพ** (นี่คือสาเหตุที่แถบความคืบหน้าจะข้ามไปที่ 2331 ระหว่างการดาวน์โหลด)**;saves/read_saves_v1.wk8
เมื่อเข้า และบันทึกความคืบหน้าเมื่อออกsaves/read_saves.wk8
เมื่อเข้า และบันทึกความคืบหน้าเมื่อออกsaves/search_history.wk8
จะถูกอ่านโดยอัตโนมัติ และบันทึกการค้นหาล่าสุดจะถูกบันทึกทุกครั้งที่มีการค้นหาsaves/cert.wk8
และ saves/avatar.jpg
จะถูกสร้างขึ้น และพวกเขาจะเข้าสู่ระบบโดยอัตโนมัติทุกครั้งที่เริ่มแอป หากไม่ได้เชื่อมต่อกับอินเทอร์เน็ต พวกเขาจะเข้าสู่ระบบโดยอัตโนมัติเมื่อ คลิกที่รูปประจำตัวหรือเมื่อมีการร้องขอการเข้าถึง หากการเข้าสู่ระบบล้มเหลว เอกสารรับรองทั้งสองนี้จะถูกลบ การนำการเก็บถาวรไปใช้เป็นหลักและข้อกำหนดของการเก็บถาวรที่เข้ากันได้
ตัวอย่างเนื้อหาไฟล์:
1098||1939||1924||1749||278
กฎการบันทึกไฟล์:
||
เมื่ออ่าน ให้เรียก str.split("\|\|");
saves/intro
: aid-intro.xml
, aid-introfull.xml
, aid-volume.xml
หาก检查更新
หายไป หนังสือที่เกี่ยวข้องกับความช่วยเหลือจะถูกละเว้น检查更新
( ดึงการตรวจสอบการอัปเดตในชั้นวางหนังสือและอินเทอร์เฟซข้อมูลใหม่) เพื่อแก้ไขข้อผิดพลาดนี้ตัวอย่างเนื้อหาไฟล์:
66761,,23799,,25575||66752,,134,,15090||63125,,1139,,3059||
63126,,904,,2824||63127,,11299,,157217
กฎการบันทึกไฟล์:
cid,,position,,height
:saves/novel
;||
. และ str.split("\|\|");
ตัวอย่างเนื้อหาไฟล์:
1863:65378:65380:10:0||1922:67426:67427:0:0||1656:56193:56194:38:0||
1244:38825:38827:0:0||1163:35537:35538:0:0||1151:35126:35128:0:0||
1247:38920:38922:230:0||1759:60160:60161:159:0||1886:66259:66261:0:0||
1016:51951:51952:0:0||1749:59813:59814:0:0||1575:52853:52855:0:0||
278:10165:10166:36:0||1213:37499:37503:0:0||1928:67584:67585:0:0||
1446:47586:47588:90:0||1755:60043:60044:0:0||1519:50813:50814:0:0||
1932:67774:67782:255:55||1701:57929:57935:0:0
กฎการบันทึกไฟล์:
aid:cid:vid:paraid:wordid
:||
. และ str.split("\|\|");
一个起始字符(wordid)
一个段落(paraid)
จากนั้นจึงแบ่งหน้าแบบไดนามิกตัวอย่างเนื้อหาไฟล์:
[田中][1到][音][刀剑][1日日日][进击的巨人][光还在][人类衰退][古][寒蝉]
กฎการบันทึกไฟล์:
[]
, UTF-8 ไม่มีการเข้ารหัส BOM0520
จะเพิ่มตัวเลขที่จุดเริ่มต้น:[0田中]
[1到]
GlobalConfig.java
ตัวอย่างเนื้อหาไฟล์:
reader_line_distance::::10||||
menu_bg_path::::/storage/emulated/0/tencent/QQ_Images/5699e514d0bb9779.png||||
reader_background_path::::0||||
version::::1||||
reader_paragraph_distance::::14||||
language::::SC||||
menu_bg_id::::0||||
reader_font_size::::18||||
reader_font_path::::0
ข้อมูลโค้ดสำหรับคีย์:
public enum SettingItems {
version, // (int) 1
language,
menu_bg_id, // (int) 1-5 by system, 0 for user
menu_bg_path, // (String) for user custom
reader_font_path, // (String) path to ttf, "0" means default
reader_font_size, // (int) sp (8 - 32)
reader_line_distance, // (int) dp (0 - 32)
reader_paragraph_distance, // (int) dp (0 - 48)
reader_paragraph_edge_distance, // (int) dp (0 - 16)
reader_background_path, // (String) path to an image, day mode only, "0" means default
}
กฎการบันทึกไฟล์:
ContentValue
ในโค้ด::::
และคู่คีย์-ค่าจะถูกคั่นด้วย ||||
;enum.toString()
จะถูกนำมาใช้เพื่อรับคีย์เหล่านั้น เพื่อหลีกเลี่ยงข้อผิดพลาดระดับต่ำที่เกิดจากฮาร์ดโค้ดตัวอย่างเนื้อหาไฟล์:
Z0M5a0daRXBsZG5SMFZpaFhlPT0K
|b1FQOUVXYjFja1d1SlRkazVtV3BSWGI9Cg==
กฎการบันทึกไฟล์:用户名|密码
ผ่าน การขึ้นบรรทัดใหม่จะถูกสร้างขึ้นโดยอัตโนมัติโดยฟังก์ชันของระบบ และไม่ส่งผลต่อการอ่าน
加密流程:
1. 原文: str
2. 一遍加密: base64(str)
3. 大小写互转: switch(base64(str))
4. 两遍加密: base64(switch(base64(str)))
5. 除了等号外,前后字符交换: swap(base64(switch(base64(str))))
6. 三次加密: base64(swap(base64(switch(base64(str)))))
解密流程:
同理
App นี้ได้ตัดสินใจระงับการบำรุงรักษา...
เหตุผลหนึ่งก็คือผู้พัฒนาต้องเตรียมตัวสอบปลายภาคในช่วงปลายปี ในทางกลับกัน ที่ สำคัญที่สุด คือ Goose Factory ได้ซื้อลิขสิทธิ์ไลท์โนเวลจำนวนมากจากที่นั่น เป็นสาเหตุบางประการที่ไม่สามารถเปิดเผยได้ในขณะนี้ กล่าวโดยย่อคือ แอปของบุคคลที่สามนี้ต้องยุติลง เพื่อดูรายละเอียด คุณสามารถอ่าน开发者的碎碎念
ได้
เมื่อไม่กี่วันก่อน ฉันใช้ HTTrack เพื่อรวบรวมข้อมูลฐานข้อมูลของ lknovel.cn
ขนาดรวมคือ 20G ซึ่งใหญ่เกินไป จำนวนไฟล์คือ 20W โปรแกรมรวบรวมข้อมูล XP ของฉันค้าง อย่างไรก็ตามเนื่องจากเซิร์ฟเวอร์อยู่ในประเทศ ความเร็วจึงค่อนข้างดีและใช้เวลา 1 ถึง 2 วันจึงจะเสร็จสมบูรณ์
ต่อมาฉันพยายามจับภาพ wenku8.com
เซิร์ฟเวอร์อยู่ในสหรัฐอเมริกาและ ความเร็วที่นี่ช้าเกินไป ฉันใช้เวลาทั้งวันในการจับภาพเพียง 1G ทนไม่ไหวจริงๆ
所以尽管API开源了,但是因为内陆速度实在太慢,我都没有兴趣抓取了,所以劝大家去抓其他站:
linovel.com 可以用HTTrack设置总目录页面为入口,深度5,然后设定MAX 10000000,图片采用探索模式即可(一般的扒站工具抓不下来图片),服务器没有防护;
lknovel.cn 可以用HTTrack设置章节页面及小说信息界面为入口(excel生成url即可),深度2,设定MAX 10000000,服务器没有防护。
wenku8.com 速度太慢了,数据量还大,插图还在文末,没啥性价比,别抓了。
กล่าวอีกนัยหนึ่ง แอปนี้จะไม่มีแหล่งข้อมูลในอนาคต หากคุณต้องการสร้างแอปต่อไป คุณสามารถรวบรวมข้อมูลและทำให้ HTML บริสุทธิ์เท่านั้น หากนักพัฒนาคนใดสนใจและต้องการสร้างแอปต่อโดยการรวบรวมข้อมูล (เช่น : ข้อมูลของ lknovel, linovel และ wenku8 สามารถบันทึกได้พร้อมกันและแสดงให้ผู้ใช้เห็น) คุณสามารถอ่านส่วนต่อไปนี้:
ปัจจุบัน wenku8
มีหนังสือน้อยกว่า 2,000 เล่ม ซึ่งหมายความว่าความช่วยเหลือคือ 4 หลัก ความช่วยเหลือของ linovel
และ lknovel
ก็มี 4 หลักเช่นกัน และไม่ใหญ่เท่ากับ wenku8
ดังนั้น:
在aid方面,可以采取aid+10000000的方式,比如linovel的aid是+1000万,lknovel的aid是+2000万,这样本地书架的内容就错开了。
ในแง่ของการเก็บถาวร:
aid-intro.xml 可以采取两种文件格式:
最小文件体:
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<data name="Title" aid="1749"><![CDATA[残酷童话]]></data>
<data name="Author" value="仓桥由美子"/>
<data name="BookStatus" value="已完成"/>
<data name="LastUpdate" value="2015-08-01"/>
<data name="IntroPreview"><![CDATA[ 现实残酷,童话幻灭
在现实生活中,王子与...]]></data>
</metadata>
扩展文件体(可以自定义字段)但是已定义的字段有这些:
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<data name="Title" aid="5"><![CDATA[狼与香辛料(狼与辛香料)]]></data>
<data name="Author" value="支仓冻砂"/>
<data name="DayHitsCount" value="14"/>
<data name="TotalHitsCount" value="394148"/>
<data name="PushCount" value="22940"/>
<data name="FavCount" value="6003"/>
<data name="PressId" value="电击文库" sid="1"/>
<data name="BookStatus" value="已完成"/>
<data name="BookLength" value="2004567"/>
<data name="LastUpdate" value="2012-02-08"/>
<data name="LatestSection" cid="36097"><![CDATA[第十七卷 插图]]></data>
</metadata>
aid-introfull.xml 的文件内容示例:
旅行于各地贩卖并收购物品的商人克拉福·罗伦斯,拜访帕斯罗村并离开后,在自己的马车上发现了不知从哪里跑来的东西。
拨开从帕斯罗村购买的小麦束后,竟然发现一位拥有兽耳与尾巴的美少女。
少女自称为贤狼赫萝,是带给帕斯罗村长期丰收的少女。
“虽然咱长久以来被尊为神,不过,咱就是咱,咱是赫萝。”见到少女的一只手变化成狼脚的罗伦斯,虽然一边怀疑赫萝的身份,但一边也答应让想回到出生遥远北方的少女一同旅行。
aid-volume.xml 文件内容示例:
<?xml version="1.0" encoding="utf-8"?>
<package>
<volume vid="55995"><![CDATA[第一卷]]>
<chapter cid="55996"><![CDATA[序章 Prologue]]></chapter>
<chapter cid="55997"><![CDATA[第一话 A-part 死与不死]]></chapter>
<chapter cid="55998"><![CDATA[第一话 B-part 死与不死]]></chapter>
<chapter cid="55999"><![CDATA[第二话 A-part 杀人与异能]]></chapter>
<chapter cid="56000"><![CDATA[第二话 B-part 杀人与异能]]></chapter>
<chapter cid="56001"><![CDATA[第三话 A-part 命与心]]></chapter>
<chapter cid="56002"><![CDATA[第三话 B-part 命与心]]></chapter>
<chapter cid="56003"><![CDATA[插曲 Interlude]]></chapter>
<chapter cid="56004"><![CDATA[终章 Epilogue]]></chapter>
<chapter cid="56005"><![CDATA[后记]]></chapter>
<chapter cid="56006"><![CDATA[插图]]></chapter>
</volume>
<volume vid="68031"><![CDATA[第二卷]]>
<chapter cid="68032"><![CDATA[【序章】Prologue]]></chapter>
<chapter cid="68033"><![CDATA[【第一话】First Story 别墅与杀人事件]]></chapter>
<chapter cid="68034"><![CDATA[【插曲】~Interlude~ 梦与心的夹缝间]]></chapter>
<chapter cid="68035"><![CDATA[【第二话】Second Story 内心与创伤]]></chapter>
<chapter cid="68036"><![CDATA[【插曲】~Interlude~ 某人的黑暗]]></chapter>
<chapter cid="68037"><![CDATA[【第三话】Third Story 紧张局势与众人目的]]></chapter>
<chapter cid="68038"><![CDATA[【插曲】~Interlude~ 黑暗之中]]></chapter>
<chapter cid="68039"><![CDATA[【第四话】Fourth Story 白天与夜晚]]></chapter>
<chapter cid="68040"><![CDATA[【插曲】~Interlude~ 黑夜与白昼的夹缝间]]></chapter>
<chapter cid="68041"><![CDATA[【终章】Epilogue]]></chapter>
<chapter cid="68042"><![CDATA[后记]]></chapter>
<chapter cid="68255"><![CDATA[插图]]></chapter>
</volume>
<volume vid="68043"><![CDATA[第三卷]]>
<chapter cid="68044"><![CDATA[【序章】Prologue]]></chapter>
<chapter cid="68045"><![CDATA[【第一话·前篇】First Story*First part 妹妹和传说]]></chapter>
<chapter cid="68046"><![CDATA[【第一话·后篇】First Story*Latter part 妹妹和传说]]></chapter>
<chapter cid="68047"><![CDATA[【插曲】~Interlude~ 她所身处的黑暗]]></chapter>
<chapter cid="68048"><![CDATA[【第二话·前篇】Second Story*First part 真实与冒牌货]]></chapter>
<chapter cid="68049"><![CDATA[【第二话·后篇】Second Story*Latter part 真实与冒牌货]]></chapter>
<chapter cid="68050"><![CDATA[【插曲】~Interlude~ 她所身处的黑暗]]></chapter>
<chapter cid="68051"><![CDATA[【终章】~Story of End~ 于是来到她的生日]]></chapter>
<chapter cid="68052"><![CDATA[【章外篇】~Epilogue~]]></chapter>
<chapter cid="68053"><![CDATA[后记]]></chapter>
<chapter cid="68256"><![CDATA[插图]]></chapter>
</volume>
</package>
vid.xml 小说内容示例(目前版本支持图文混排,自动提纯多余换行和前导空格):
一场死亡游戏
即将揭开序幕
SAO玩家·桐人,以完全攻略为目标,
在游戏舞台「艾恩葛朗特」城堡里展开一连串严酷的冒险。
途中与女剑士·亚丝娜的相遇,也为桐人带来命中注定的契机——
川原砾
出身于光之国度,居住在亚兹罗斯。人生就是独行剑士。
虽然嘴里一直逞强说自己不需要一起组队的伙伴,但是最近因为许多任务的难易度提高而感到相当棘手。虽然一辈子都没办法单独去唱KTV,但希望至少能升级到独自去吃烧肉的等级。
<!--image-->http://pic.wenku8.com/pictures/0/471/17513/3213.jpg<!--image-->
<!--image-->http://pic.wenku8.com/pictures/0/471/17513/3214.jpg<!--image-->
<!--image-->http://pic.wenku8.com/pictures/0/471/17513/3215.jpg<!--image-->
<!--image-->http://pic.wenku8.com/pictures/0/471/17513/3216.jpg<!--image-->
ตราบใดที่เนื้อหาที่บันทึกถูกส่งผ่าน正则表达式
หรือสคริปต์ lua
ที่อัปเดตได้ การจับแพ็กเก็ตก็สามารถทำได้ จากนั้นอินเทอร์เฟซหลักของไลบรารีก็สามารถเปลี่ยนเป็น:
文库入口(Material Card):
轻国文库
轻之文库
轻小说文库
etc
คลิกเพื่อเข้าสู่อินเทอร์เฟซการค้นหา จากนั้นค้นหา ดาวน์โหลด และแปลงเป็นรูปแบบที่จดจำได้ สิ่งที่ฉันได้ยินมาคือห้องสมุดในประเทศจะยังคงได้รับการดูแลฟรี!
หากนักเรียนหรือนักพัฒนาคนใดสนใจ คุณสามารถติดต่อฉันได้~
- jgilfelt / SystemBarTint (Apache License 2.0)
用于设置Kitkat以上版本StatusBar和NavigationBar颜色透明度等。
- nostra13 / Android-Universal-Image-Loader (Apache License 2.0)
著名的UIL,用于管理图片缓存和加载的库,非常方便,不会OOM。
- astuetz / PagerSlidingTabStrip (Apache License 2.0)
-> branch: jpardogo / PagerSlidingTabStrip
Material风格的标签及页面库,jpardogo的分支在自定制方面功能更强。
- jpardogo / GoogleProgressBar (Apache License 2.0)
-> branch: MewX / google-progress-bar
谷歌风格的加载动画,我的分支添加了Google Doodle-notifier的样式。
原版的样式是圆角矩形,这边间距细节什么的模仿的不是很完美。
- Google / Volley (Apache License 2.0)
Google发布的大规模并发加载库。原版不支持byte返回值,我这边稍加修改了。
- afollestad / material-dialogs (MIT License)
完美的Material Dialog兼容库!
- futuresimple / android-floating-action-button (Apache License 2.0)
可以展开的FAB,动画效果很自然,但是不支持ripple比较遗憾,而且阴影会截断。
- vinc3m1 / RoundedImageView (Apache License 2.0)
圆形ImageView,显示头像用的。
- chrisbanes / SmoothProgressBar (BEER-WARE LICENSE)
平滑进度条,这里用在小说信息、搜索结果页面的ActionBar下部。
- davemorrissey / subsampling-scale-image-view (Apache License 2.0)
支持局部加载的ImageView,用于小说查看大图,用一般的ImageView容易OOM。
- martiansutdio / SlidingLayout (Unknown License)
针对电子书的划屏库,非常省内存,只有3页,自由度不高,但是毕竟拿来主义 =。=
- AnderWeb / discreteSeekBar (Apache License 2.0)
动画效果不错的SeekBar,用在小说阅读的设置和跳转页面中。
เดิมทีแอปนี้ไม่ได้ตั้งใจให้เป็นโอเพ่นซอร์ส เช่น เขียนโค้ดได้ไม่ดี และหากเป็นโอเพ่นซอร์ส ก็จะต้องคงไว้สองเวอร์ชัน...
เหตุผลหลักคือฉันใช้ทางอ้อมมากมายในการเรียนรู้สื่อ และความพยายามหลายครั้งสามารถเห็นได้จากการผลักดันในอดีต Google เปิดตัวการออกแบบระบบ และแอปอย่างเป็นทางการก็ได้รับการพัฒนาอย่างดีเช่นกัน แต่สิ่งที่นักพัฒนาจำเป็นต้องใช้จริงๆ นอกเหนือจากการสนับสนุนแล้ว - ไลบรารีการออกแบบเป็นเพียงไลบรารีของบุคคลที่สามเท่านั้น แต่ก็ยังไม่ดีเท่าแอป Google Play Store ในทุกด้าน ไม่อยากแยกโค้ด ไม่อยากคัดลอกแอป =. = แต่ปรากฏว่าฉันคิดมากเกินไป...
อย่างไรก็ตาม เมื่อเร็ว ๆ นี้ ฉันได้รับ死亡预告
มากมาย ดังนั้นแอปนี้กำลังจะ寿终正寝
ขณะนี้ 233 เป็นโอเพ่นซอร์สโดยสมบูรณ์ รวมถึง APPKEY, API และอื่น ๆ ยินดีต้อนรับทุกคนในการสื่อสารและเรียนรู้ ~
มาแบ่งปัน经验教训
จากการพัฒนาแอปในครั้งนี้:
แอพที่ต้องอาศัยเว็บไซต์ต้องแน่ใจว่าเว็บไซต์ไม่มีอิทธิพลต่อการพัฒนาแอพ
สถานการณ์ปัจจุบันคือกลยุทธ์เว็บไซต์มีการเปลี่ยนแปลง ส่งผลให้บริการอินเทอร์เฟซของแอปนี้หยุดทำงานและแทนที่ด้วยแอปที่ให้ความร่วมมืออื่น (ไม่ใช่บุคคลที่สาม) สิ่งที่ฉันพูดไปก่อนหน้านี้คือทุกคนควรรีบดาวน์โหลด抓紧缓存
ในขณะที่ยังใช้งานได้ คุณอาจต้องจ่ายเงินในอนาคต เพียงทำตามผู้นำของ Goose Factory!
ดังนั้นผมคิดว่าเวลาสร้างแอปของตัวเองควรสร้างเว็บไซต์บริการแบบเดียวกับ空之文库
ซึ่งมี Server Image ไว้ด้วย ดังนั้นปัญหาของ LK จะไม่ส่งผลกระทบต่อ Kongwenko
โปรดใช้ความระมัดระวังเมื่อพัฒนาประเภทแอป
มีเขียนไว้ในบล็อกโพสต์ด้วยว่าตลาด版权敏感的软件
จะไม่ยอมรับโดยง่าย และต้องมีหลักฐานด้านลิขสิทธิ์ด้วย ดังนั้นจึงไม่สามารถวางบนชั้นวางได้ที่นี่ สามารถวาง轻文
บนชั้นวางได้เนื่องจากมีองค์ประกอบดั้งเดิม ปัจจุบันการเซ็นเซอร์ภายในประเทศมีความเข้มงวดมากขึ้น...
คำแนะนำผู้ใช้เป็นสิ่งสำคัญ
มีฟังก์ชั่นเล็กๆ มากมายที่ซ่อนอยู่ในแอพนี้ ตัวอย่างเช่น ผู้ใช้ไม่พบฟังก์ชั่นการค้นหา การกดค้างที่บทสามารถเลือกที่จะ左右翻页
ขวาหรือ上下滑动
เพื่ออ่าน บันทึก. อีกตัวอย่างหนึ่ง: ปุ่มปรับระดับเสียงสามารถเปลี่ยนหน้า คลิกเพื่อเปลี่ยนหน้า และคุณยังสามารถสลับบทได้ ฯลฯ แม้แต่ผู้ใช้ที่ดูรูปภาพก็ไม่รู้จะทำอย่างไร ที่นี่ ปุ่มจะถูกวางไว้บน ActionBar เพื่อหลีกเลี่ยงความขัดแย้งกับการดำเนินการเปลี่ยนหน้า แต่ผู้ใช้บอกว่าไม่พบรูปภาพ = = ตัวอย่างเช่น ว่ากันว่าแบบอักษร รูปภาพ ฯลฯ ที่กำหนดเองไม่สามารถใช้ในการ์ด SD ภายนอกได้ แต่ผู้ใช้ยังคงไม่สามารถทำงานได้ตามที่ต้องการ
ดังนั้นเมื่อเข้าสู่อินเทอร์เฟซ ควรเป็นมิตรกับผู้ใช้และมีข้อความแจ้งการดำเนินการปรากฏขึ้น ดังนั้นลักษณะนี้จึงหายไป!
ความเหนียวของผู้ใช้ดั้งเดิมต้องใช้ข้อได้เปรียบที่แข็งแกร่งมากในการทำลาย
เดิมทีมีแอปไลท์โนเวลชื่อว่า空之文库
หลังจากแอปของฉันออกมา จำนวนผู้ใช้ก็เพิ่มขึ้นมาก อย่างไรก็ตาม ภาพประกอบในตอนท้ายของบทความถือเป็นจุดอ่อนที่ใหญ่ที่สุด เนื่องจากผู้ใช้ Light จำนวนมาก นวนิยายเป็นนักเรียนมัธยมต้น ผู้ใช้บางคนบอกว่ามันฟังดูน่าอึดอัดใจ แต่เพื่อเพิ่มจำนวนผู้ใช้ แอปที่กำหนดเป้าหมายเป็น替代品
จำเป็นต้องตอบสนองความต้องการของผู้ใช้ส่วนใหญ่ ดังนั้นหลังจากที่轻文
ออกมา จำนวนผู้ใช้ที่นี่ก็สูญเสียไปมาก
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
......
ขอขอบคุณผู้คนที่แสนวิเศษเหล่านี้ (คีย์อีโมจิ):
เบบี้เปปเปอร์ | แจ็ค หลิว |
โครงการนี้เป็นไปตามข้อกำหนดของผู้มีส่วนร่วมทุกคน ยินดีต้อนรับการบริจาคทุกรูปแบบ!