PTT 八卦板新年首 PO 機器人
此機器人集中二技術力之大成,成功在 2021 與 2023 新年搶到八卦板首 PO
本人發誓要是搶到首 PO,就把程式碼釋出!
因此才有了此篇說明教學,教導您如何順利地搶下首 PO
2021 文章連結 https://www.ptt.cc/bbs/Gossiping/M.1609430402.A.DFF.html
2023 文章連結 https://www.ptt.cc/bbs/Gossiping/M.1672502402.A.2B4.html
2023 年 update
今年很幸運在家用筆電搶到首 PO,程式策略沒有變動,只有關於穩定度的變更
環境上,有重新啟動路由器,並將路由器上的安全過濾功能暫時關閉
Python 改用有巨大改進的 3.11 版本
使用說明
事先準備
ping ws.ptt.cc
在 3ms 以下的環境
例如: 學術網路等,有高速網路中心加持事半功倍本人採用了兩個環境使用同一個演算法執行此程式
一台是交大實驗室,電腦是第三代 i7 記憶體時脈 1333MHZ ping 3 ms
一台是本人家中,300 Mbps 的光纖網路 Ryzen7 3700X 記憶體時脈 3600MHZ ping 4~5 ms分別位列第一二名
除了證明演算法有用,搶到首 PO 的是 ping 較低的環境
雖然是三代 U 但可見網路速度佔了一大部分的勝利因子安裝 python & pip install PyPtt
搜尋 python 找到官網之後,下載最新版本即可
記得將 python 加入 path 或者自行建立 python 虛擬環境 venv修改程式碼參數
1
2ptt_id, ptt_pw = 'PTT id', 'PTT pw'
release = False請填上你的 PTT 帳密,如有安全疑慮可自行 code review
具備正式與測試的參數設定,一年一度的搶首 PO 盛事,最好事先設定好免得因為時間快到而手忙腳亂好好測試然後上路
此程式釋出之後,可能會提高搶首 PO 的難度,最好事先找到 ping 值最低的網路環境
預祝各位搶首 PO 順利!
演算法說明
我採用一個帳號兩個登入,一個負責與 PTT 對時,這件事非常重要
因為 PTT 主機的時間可能跟 time server 是不一致的,當你需要計較到 1 毫秒的差異的時候
你就需要有 API 可以跟 PTT 對時
參考: PyPtt 對時 API
因為很多失敗的例子都是文章列表顯示 1/1 可是文章裡面的時間卻是 23:59:59
根據 holishing 的文章
https://www.ptt.cc/bbs/PttNewhand/M.1483200003.A.415.html
節錄其中內文
直接按下 Enter 的時間或是按完 s 之後再按下 Enter 的那一瞬間
就是決定你內文記錄顯示的發文時間
而之後選完簽名檔後按下 Enter 的時間點 決定文章在板上文章列表的順序。
也就是說當儲存檔案按下 enter 之前的動作,都可以在新年的 00:00:00 的之前發生
這樣一來我們可以先做好編輯文章並按下 ctrl + x,靜靜的等待時間到來
這樣就可以減少發文瞬間的網路通訊量,你想貼出師表都可以
另一個登入,負責 PO 文
時間快到了,就打開編輯文章,按下 ctrl+x 輸入好最後的 s 只差 enter
當偵測到 00:00 了,瞬間按下 enter,選好簽名檔
流程示意圖
程式碼
https://github.com/PttCodingMan/PTT_bots/blob/master/first_post/first_post.py