《開發文檔所沒說的事20200321》
1. 【expr】用戶在app正式版首頁輸入一本漫畫的網頁網址打開,app會檢查官方插件中心上面所有插件的meta節點的expr是否和它匹配,然后app進入匹配的插件界面或者原網頁界面,前者的話還會瞬間檢查這個插件的book節點的expr是否和它匹配,是的話app就直接進入book節點,否則就進入home節點。
2. 【find】多多貓容器引用的cheerio庫,找子元素只能用children()不能用find()。
3. 【GUID】(不再需要寫,可忽略)是插件的管理權限,同一個guid 的插件,是替換相同的guid的舊的插件
4. (SiteD引擎)每次的一個`http請求`的過程:
1. 確定url (buildUrl?)
2. 確定參數(buildArgs?)等一些信息(buildHeader?)【buildHeader比buildArgs早運行】
3. http
4. 解析(parseUrl? -> parse)(如果parseUrl返回 "CALL::http://xx.com",會再一次進行2.然后3.然后parseUrl,直到不返回 "CALL::..." )
- PS.如果想把parseUrl里返回的數據作為body內容在后面的parse里post請求是不行的,但可以把parseUrl里返回的數據作為body內容在下一輪parseUrl里post請求(這一輪里return "CALL::POST::下一輪url")
5. `private="1"`效果:兩條街不可見,收藏別人不可見,不可通過二維碼分享出去。
6. `search節點`的url用了@page也只有第一頁結果,是app限制,防止多站搜索結果過多。
7. 【sections】截止v35引擎,附加節點sections節點需要先進入buildUrl才能進入parseUrl;book存儲的數據在sections的buildUrl讀取不了,需要在后面的parseUrl或parse環節讀取。
8. 【ua】在電腦寫視頻插件解析網站時ua最好用手機(app不支持flash格式),推薦電腦瀏覽器用Smart Header插件模擬ua。插件每層節點都可以單獨設置ua,不寫則自動繼承父代。
9. 如果源網站`編碼`是GBK,插件meta節點里encode寫GB18030,以更好兼容全平臺設備。
蘋果版多多貓不完整對?后面含有GBK等漢字編碼的url強制百分號編碼導致get請求到別的網頁(搜索詞改為post方式也失敗),安卓uwp版正常。
10. 視頻插件的采用`解碼`格式:mp4優于ogg優于webm,(蘋果版不支持webm)。
對于url有302/301跳轉的(引擎會自動跳轉),parse/parseUrl函數里讀取url參數要在cache=0時才能讀取跳轉后url(否則引擎會讀取緩存找跳轉前的url)。
uwp版對于url有302/301跳轉的,parse/parseUrl里url參數會在開頭自動加上跳轉前的域名(結尾沒有斜杠),是bug,要`url.replace(/^[^\?]+(https?:)/i,'$1')`去除。安卓ios版正常。
11. 【輸出內容】updates節點的newSection在多多貓app界面和name可以兼容共用在同一行。
tag/search節點的author、newSection、updateTime在app界面排斥搶占用同一行(只能按優先度updateTime>author>newSection顯示其中一項),status 單獨占用下一行。
search節點的status在app界面和【by XX插件】以同時出現共存在同一行。
12. 【調試記錄】開啟開發者模式:進入安卓多多貓app的設置-高級設置。長按標題的“高級設置”幾個字,最底部多出一次性出現的開關。在多多貓目錄里/sdcard/Android/data/org.noear.ddcat/files可以找到log運行日志、error日志等。在插件的function里可以寫print("字符串"),在app相應節點執行時候會顯示出字符串或函數值,在剛才多多貓目錄里可以找到print過的日志。正式發布的插件不能運行print,否則在ios等版本中斷函數運行。
13. 【域名變化】SiteD引擎開發者說如果插件的域名發生了變化:(SiteD引擎)每次的一個`http請求`的過程:
1. 千萬不要改了插件url節點;
1.1 在main節點增加durl屬性,是作為最新/實際的源網站地址(url)
1.2 在expr節點內容里同時匹配新舊兩個域名的網址,用 \| 隔開
2. 改好插件后;在book節點buildUrl函數對url參數做一下域名替換。這樣做:1.為插件兼容性升級;2.同地兼容用戶之前已收藏的漫畫!!!
- 最好按著buildUrl的函數輸入輸出格式,配套buildWeb。
14. 非js區域`注釋`用`<!-- xx --> `。js區域里面不能//注釋,可以`/* */`注釋,上架時少保留注釋,因為多平臺兼容性不好。
15. xml代碼區、js代碼區的特定字符記得`轉義`。
- 序言
- 第一章 基礎
- 1.1 Html基礎
- 1.2 CSS選擇器
- 1.2.1 標簽選擇器
- 1.2.2 class/id選擇器
- 1.2.3 屬性選擇器
- 1.3 JavaScript基礎
- 1.4 json基礎
- 第二章 中級
- 2.1 插件結構總覽
- 2.2 meta頭部節點講解
- 2.3 main主體節點講解
- 2.4 script腳本節點講解
- 2.5 插件的安裝調試與發布
- 第三章 高級
- 3.1 插件高級特性
- 3.2 常見內容保護突破方法
- 3.3 開發文檔所沒說的事
- 3.4 電腦js腳本測試插件
- 3.5 加login節點教程
- 3.6 使用yeoman生成器
- 3.7 自動化發布插件
- 第四章 附錄
- 4.1 markdown基本用法