作者danny0838 (道可道非常道)
看板Browsers
標題Re: [-Fx-] PTT Web Enhanced PTT網頁版強化套件
時間Sat Sep 16 00:36:51 2017
※ 引述《Kenqr (function(){})()》之銘言:
: https://addons.mozilla.org/zh-TW/firefox/addon/ptt-web-enhanced/
: http://i.imgur.com/3tvnCvf.png
: 自己做的PTT網頁版強化套件,所以來自產自銷一下
剛才向別人推銷時想到的:
試試能否做出
同主題串接的功能(上一篇、下一篇、首篇、末篇、列表),
應該會很實用。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.225.72.138
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Browsers/M.1505493414.A.15D.html
1F:推 HardRealTime: 文章列表大寫S(誤 09/16 00:46
2F:→ kuro: 我覺得可以把色碼改成 Putty 的色碼,看起來比較亮 09/16 01:30
3F:推 toploader: 感謝一樓,學到一招XD 09/16 10:56
4F:推 Kenqr: 這個應該只能用暴力法把前面幾頁的文章標題都抓進來搜尋? 09/16 13:07
5F:→ Kenqr: 有人知道手機app是怎麼連線PTT的嗎? 09/16 13:07
6F:→ CP64: 手機 APP 不意外是用 telnet/ssh 拉內容 parse 吧 09/16 13:29
自己講的自己寫XD
寫了個測試版放 GitHub,原原PO可以參考看看:
https://github.com/danny0838/firefox-ptt-web-enhanced
※ 編輯: danny0838 (36.225.72.138), 09/16/2017 18:32:20
7F:推 s25g5d4: 最近有 websocket 支援囉 不過 parse 還是一樣麻煩 09/17 23:18
8F:推 Kenqr: 印象中手機有專用的連線方式? 是我記錯了嗎 09/18 13:46
9F:→ Kenqr: article.js增加的行數都比原本的行數多了XD 09/18 15:56
10F:→ Kenqr: 這會送很多request嗎? 我怕會對PTT造成負擔 09/18 15:57
11F:推 Kenqr: 這篇會fetch 16次 感覺有點多XD 09/18 16:13
12F:→ Kenqr: 假如是使用者點選了才開始fetch的話 我想就比較沒問題 09/18 16:14
13F:→ Kenqr: 感謝提供 我再仔細研究研究 09/18 16:15
增加負擔是難免,不過對大多數站台而言,
使用者瀏覽網頁時都會在背後送出許多 CSS, JS, 圖片 等 request,
多一點的到二三十個是常態,而且傳輸內容很多是無法壓縮的二進位檔。
相較之下,這裡用 fetch 送出 20 個左右的 request 及傳輸可壓縮的純文字內容
(經 gzip 壓縮後大約 40~60 KB),或許不算太嚴重?
使用者點擊再 fetch 也是個解法,不過由於 fetch 時間相當長,
如果使用者按一個鈕要等 7~8 秒才有反應,用起來可能不會很爽...
※ 編輯: danny0838 (1.164.20.52), 09/18/2017 17:03:05
14F:推 Kenqr: 是這樣沒錯,不過瀏覽器有cache 09/18 17:13
15F:→ Kenqr: 點進下面台電那篇,24個request只送了3個,其他都讀cache 09/18 17:14
16F:推 Kenqr: 我們fetch的資料應該也可以自己暫存起來,就不用送那麼多次 09/18 17:16
PTT 文章更動很快,過幾分鐘可能文章列表就改變了。
另外,瀏覽器本身應該就會盡量使用快取的內容,
而且會根據伺服器傳回 header 辨識內容是否有更新而決定是否使用快取。
※ 編輯: danny0838 (1.164.20.52), 09/18/2017 18:21:48
17F:推 Kenqr: 對耶,都忘了fetch也會用cache 09/18 18:49
18F:→ Kenqr: 不過文章列表應該是動態產生的,會不會用cache可能要測看看 09/18 18:50
19F:→ Kenqr: 開了debug視窗,結果network頁面跑不出東西... 09/18 18:51
20F:→ Kenqr: 文章列表也只有最新幾頁變動很快就是了,舊的還是可以快取 09/18 18:54
21F:推 Kenqr: 實測結果,文章列表不會被cache,每次fetch都會重抓@@ 09/19 18:40
22F:→ Kenqr: 所以這功能我會把它預設關閉,有需要的人再自行開啟 09/19 18:42
糟糕...看來只好自己寫快取功能了XD
目前預計新分頁1~3分鐘,舊分頁10分鐘
(舊分頁的定義暫訂用小於總頁數 - 10,一頁 20 篇,因此最近 200 篇以前的就會快取)
另一個問題:開啟推文自動更新時,新的推文不會自動加上標示哦,有沒有打算修?XD
※ 編輯: danny0838 (1.164.29.214), 09/19/2017 22:01:46
23F:→ Kenqr: 我沒在用推文自動更新 也沒人反映過 所以暫時不處理 09/19 23:47
24F:→ Kenqr: 要改的功能太多了 還是改天吧XD 09/19 23:48
目前有沒有預計要改哪些功能?
我如果有空也許可以做做看
※ 編輯: danny0838 (1.164.29.214), 09/20/2017 00:37:17
25F:推 stucode: 謝天XDD。其實之前也有注意到推文更新的部分,不過因為用 09/20 01:27
26F:→ stucode: 到的機會少,所以沒做反映。 09/20 01:27
27F:推 Kenqr: 我想先把目前進度整理到GitHub上,不然我們各做各的到時候 09/20 11:49
28F:→ Kenqr: 應該很難整合 09/20 11:49
30F:→ Kenqr: 預計要改的功能(的一部份) 09/20 11:57
31F:推 toploader: 文章頁面增加部分選項的開關還滿不錯的 09/20 13:03
32F:→ toploader: 顯示輔助資訊會佔用畫面空間,可是會用到的情況很偶爾 09/20 13:05
33F:→ toploader: 應該說主要是會吸走注意力 09/20 13:09
34F:推 Kenqr: 沒錯,像是樓層就滿適合的 09/20 13:55
35F:→ Kenqr: 目前的設想是樓層和放大圖片兩個功能可以在文章頁面開關 09/20 13:55
36F:→ Kenqr: 開關就放在下方導覽列 09/20 13:56
38F:→ Kenqr: "避免套件重新啟用時重複執行" 改成自動重整會不會比較好? 09/20 18:37
39F:→ Kenqr: 還有設定值改用sync storage,這樣原本的設定值就消失了, 09/20 18:45
40F:→ Kenqr: 你覺得需要做個轉換機制嗎? 09/20 18:47
41F:推 toploader: 我個人的需求會希望樓層與推噓文統計都能開關 09/20 19:31
42F:→ toploader: *都能在文章頁面臨時快速開啟 09/20 19:32
43F:推 grimms42191: 樓上這樣開開關關有什麼優點嗎0.0? 09/20 21:39
44F:→ toploader: 開開關關......那兩個功能對我來說不常用到,有用到的 09/20 21:43
45F:→ toploader: 又會很方便,但是只要出現在那裡,就算是不需要那些 09/20 21:44
46F:→ toploader: 資訊,就是會去下意識瞄一下,引走注意力 09/20 21:44
47F:→ toploader: *有用到的時候又會很方便,能快速開啟最好 09/20 21:45
48F:→ toploader: 該怎麼說...我不知道要怎麼再進一步解釋XD 09/20 21:48
49F:→ toploader: 我現在沒用到那些功能的時候,就是會去改套件設定, 09/20 21:50
50F:→ toploader: 麻煩的程度是還好,但是看到Kenqr已經有打算做這樣一個 09/20 21:51
51F:→ toploader: 可以暫時開啟功能的開關,對我來說就是意外之喜XD 09/20 21:52
52F:→ toploader: 讓原本就在做的事情更方便了 09/20 21:53
53F:推 grimms42191: 瞭解XDD 09/20 22:06
我重新 fork 你的版本庫並且把測試版本從主開發線拿掉了:
https://github.com/danny0838/ptt-web-enhanced
1. 改成自動重整對使用者而言當然是比較好,不過技術上比較不好做,
所以先用比較簡單的方法暫時解決問題。
如果你有意思實做咱們就再研究看看吧XD
2. 設定值改用sync storage導致原本設定值消失。
對使用者而言當然也是自動轉換比較好,不過技術上比較麻煩就是...
我個人是認為反正選項很少,以後應該也不會常發生,讓大家知道一下就可以了XD
3. 「自動連結討論串」我先把預設值改為不勾選,
至於 cache 不曉得是否有確定做?
要的話我有空處理看看。
※ 編輯: danny0838 (1.164.20.52), 09/20/2017 22:30:15
54F:推 Kenqr: 1.偵測到套件重新啟用時reload就可以了吧? 09/21 11:21
55F:→ Kenqr: 2.好 那就不做XD 09/21 11:22
56F:→ Kenqr: 3.我覺得有需要。可以的話就麻煩你了 09/21 11:30
不曉得你有沒有支援 Chrome 的打算?
如果有,也許早點做準備會比較好。
如果一開始沒構思好,到時候打算支援雙瀏覽器,要費的工會等比級數上升。
※ 編輯: danny0838 (59.115.20.234), 09/21/2017 15:49:48
57F:推 Kenqr: 有想過,想說等功能做到一個段落再來考慮 09/21 22:20
58F:→ Kenqr: 以前沒寫過套件,一開始就要支援雙瀏覽器的話, 09/21 22:21
59F:→ Kenqr: 可能會多花很多時間,所以就先專心做Fx版 09/21 22:21
60F:推 Kenqr: 同主題串接功能上架囉 09/22 13:53
61F:推 toploader: 重新設定後,退出到擴充套件列表再回去,設定值消失 09/22 15:02
62F:推 Kenqr: 這邊測試是沒有問題的@@ 我再檢查看看 感謝 09/22 18:02
63F:推 toploader: 我也想說會不會跟上次一樣,過一段時間自己好了XD 09/22 19:19
64F:→ toploader: 到現在這個時間尚未正常 09/22 19:19
65F:→ toploader: 另外按還原成預設值的按鍵沒作用,按之前勾不同的設定 09/22 19:21
66F:→ toploader: 按之後勾選的設定都不會改變 09/22 19:22
67F:→ toploader: Firefox ESR 52.3.0(32位元) 09/22 19:23
68F:推 stucode: 推一個,同主題串接的功能實際試用起來還蠻不錯的。另外 09/22 19:44
69F:→ stucode: 想請問一下是否時間或頁數差距過大的同主題就不會串接了 09/22 19:44
71F:→ stucode: (P.S 55.0.3目前沒有遇到設定上的問題。) 09/22 19:45
是的,因為 PTT 網頁版沒有提供真正的索引功能,
而讓程式真的爬幾千頁顯然不太合適,
因此目前只會抓前後 4 個列表(約 100 篇)。
※ 編輯: danny0838 (1.164.19.182), 09/22/2017 20:49:15
72F:→ stucode: 了解,感謝。 09/22 21:18
73F:推 Kenqr: 因為Firefox 52不支援同步設定,先暫時改回使用本機設定 09/23 15:24
74F:→ Kenqr: 目前審核中,應該一會兒就審好了 09/23 15:25
75F:推 Kenqr: 忘了回2F: 自訂顏色的功能我列入清單裡了,謝謝建議 09/23 15:36
76F:推 toploader: 感謝Kenqr大大 09/23 16:51
不支援同步設定的版本執行 storage.sync 會出錯嗎?
我印象中也是能儲存,只是不能透過網路同步而已,
也就是另一個空間比較小的 storage.local。
※ 編輯: danny0838 (36.227.221.89), 09/23/2017 17:11:16
77F:推 Kenqr: 我有裝52ESR測試,設定值讀不到。錯誤訊息說要到 09/23 17:19
78F:→ Kenqr: about:config裡開啟才能使用storage.sync 09/23 17:19
79F:→ Kenqr: 另外storage.sync還是有東西,所以也不能直接用 09/23 17:21
80F:→ Kenqr: if(browser.storage.sync)來判斷有沒有支援 09/23 17:22
如果設定值開了,會有什麼功能上的異常嗎?
如果沒有,我個人是傾向還是用 sync,告知舊版使用者開設定值就好XD
畢竟我們還是要面向未來的。
※ 編輯: danny0838 (36.227.221.89), 09/23/2017 17:24:54
81F:推 Kenqr: 還沒測試,不過我覺得叫使用者開設定不算是個解法 09/23 18:08
82F:→ Kenqr: 應該會有不少人不想開/不知道要開/不會開 09/23 18:08
83F:→ Kenqr: 所以比較傾向偵測有支援就用sync,沒有就用local 09/23 18:08
84F:→ Kenqr: 我只支援52起跳,已經很面向未來啦XD 09/23 18:09
85F:推 toploader: 感恩 09/23 19:02
我剛才檢查了一下,
Firefox < 51 是 storage.sync === undefined,
Firefox >= 52 是 storage.sync !== undefined,
且有 webextensions.storage.sync.enabled 設定值,
這設定值在 Firefox 52 是預設為 false,不曉得哪版以後預設為 true。
而如果使用者沒有手動改過設定值,升級為新版時會自動變更成新版的預設值,
也就是 Fx 52 使用者若未手動設成 true,
升級到預設為 true 的 Fx 版本也會自動變 true。
我想比較簡單的處理方式是一律先跑 storage.sync,
出錯就 catch 起來 fallback 到 storage.local。
你新版放了嗎?我在 GitHub 沒看到XD
※ 編輯: danny0838 (1.164.19.182), 09/23/2017 21:44:34
86F:推 Kenqr: 忘了push到GitHub XD 現在上去了 09/23 23:06
87F:→ Kenqr: WE文件是說53以上支援sync storage 09/23 23:06
88F:→ Kenqr: 跟我想的解法一樣 這個我來處理就好了 感謝 09/23 23:11
89F:→ Kenqr: 1.5.2已上架 09/24 17:30
90F:→ Kenqr: Fx52設定儲存在本機空間,53以上設定儲存在同步空間 09/24 17:30