作者lintsu (我惠我惠)
看板Python
标题[心得] 用 Python 写 PTT 发钱程式
时间Fri Mar 3 22:57:58 2017
小弟最近和朋友,因为都用 Mac。需要 Mac 也能用的 PTT 发钱程式
就只好自干一个出来了。
先贴 GitHub:
https://github.com/wabilin/MumiGiveP
之前偶尔会在 leetcode 上用 Python 写写题目。
真正写实用的程式还是第一次,如果看到哪里不好也恳请指教。
[ 程式说明 ]
大概分两个部分,
一是走 telnet 和 PTT 沟通,
二是从网页上抓推文下来分析。
程式流程大概就是:
使用者输入发钱设定 -> 从 PTT 网页上抓下推文名单 -> 登入 PTT 自动发钱
说简单其实还真的蛮简单的,程式也不长。
[小心得]
Python 的 telnetlib 真的蛮傻瓜好用的,
之前还研究了 Telnet 的协定一阵子,
然後发现用这个函式库可以写蛮无脑的。
主要遇过问题是,怎麽处理 PTT 的编码。
因为并不是单纯的 Big5,所以 decode 会失败。
最後还是靠 Google 找到别人写好的。
另外一个问题是,PTT 的登入流程中,
会有很多不同的状况,如果一个个写分支或状态机,
会很乱很麻烦。
最後想出了看起来没什麽的解决方法,但又有点自觉巧妙
很意外的一点是,从 PTT 抓来的内容
在 Mac 用 iTerm 直接喷出来,辨识度居然还蛮高的
所以除错也不难
在爬网页方面的功能方面,
「requests」还蛮好用的,
然後为了降低相依性的麻烦,HTML Parser 直接用内建的,
用起来也还轻松愉快
筛选推文名单的功能,
因为 list comprehension 实在很好用,
所以意外快而短小的完成了!
( 本来还有点懒得做
最後要生成 Windows 执行档的时候,
py2exe 包出来的,在 requests 的某些功能上会坏掉,
所以改用 PyInstaller,发现比 py2exe 更加无脑好用!
---- ---- ---- ----
最後一些还没完成的事项:
不知道为什麽在 Windows 搞不定中文显示,
所以目前输出全用 ASCII。
还有一直不想加的 GUI,
同样为了降低相依性,应该会用 Tk 作吧。
应该会有点土法炼钢的感觉
还有一个蛮蠢的是,因为一直没研究怎麽送方向键讯号
还没有做登出XD
--
Sent from my Emacs-24
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.139.49.0
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1488553083.A.FA0.html
※ 编辑: lintsu (223.139.49.0), 03/03/2017 23:01:25
1F:推 ckc1ark: 不考虑ssh吗? 用telnet裸奔有点刺激吧 03/03 23:04
2F:→ uranusjr: 方向键其实很简单, 送 \x1b\x4fA (上, 下右左 BCD) 就好 03/03 23:20
3F:推 ckc1ark: 是说q有些情况也可以当←来用 03/03 23:22
4F:推 banyhong: 推一个 03/03 23:35
5F:→ BigBank: 方向键可用tn.write(b'\x1b[A') 03/03 23:50
6F:→ lintsu: 谢谢 SSH想说之後再弄 telnet简单一点 03/04 08:30
7F:推 timTan: 可以发新台币吗(误) 03/04 09:41
9F:→ lintsu: 好 我试看看 谢谢 03/04 12:54
10F:推 ckc1ark: 登入的时候帐号加,可以用utf8模式 03/04 13:10
11F:推 agogoman: 推 03/15 23:26