作者sbrhsieh (偶尔想摆烂一下)
看板Python
标题Re: 关於bbs自动载文的机器人
时间Sat Sep 17 01:48:44 2011
※ 引述《walao81 (Male)》之铭言:
: 简单的整理一下我的问题:
: 我写了一个bbs client来取资料,取回来的资料打算用 readline 读取一行之後,
: 用 split() 来切割每个栏位,然後根据位置判断这是什麽资料,资料长相如下:
: 3 ˇOversea_Job 工作 ●海外工作版 11 duer/yearue/OA
: 4 ˇSoft_Job 工作 ◎软体工作。分享/询问 20 TonyQ
: ^ ^ ^ ^ ^
: ID 名称 分类 次分类 版主
: 但是看起来似乎行不通,会有莫名的断行,举例:
: 10 ˇHomeTeach 家教 ●板规多看 水桶少点 请勿卢解水桶 28 kurosaki1986
: 11 ˇshare 娱乐 ●[雪儿] 快来对统一发票 (後面换行了)
: 6 onlysnoopyOD
: (^ 换行我就趴了)
: 因此realine之後再切割资料行不通,但是我没找出一个共通的规则来分析资料栏位,
: 用空白来切割也行不通,因为版标空格的数量不一定。
: 因此我的推断为,ptt的换行符号与一般系统的 \n 或 \r\n 不一样,应该有特定的
: protocol 让 telnet 或 pcman 可以正常显示。
: 有大大有相关的经验吗?
几年前有和朋友一起写了一个 web 界面的 BBS client,就是以浏览器上我架设的
网站後,server 便 telnet 到 BBS 站台,然後以 html 来呈现如同以其他 telnet
client 软体上 BBS 站所呈现的画面,并且提供相同的键盘操作方式,并另外提供
替内文所出现的 url 加上 hyperlink 与文章/邮件列表的项目等加上 hyperlink。
为了实现这些功能,是需要去处理各画面中的文字资料的,加上当初作这东西是为了
早期智慧型手机还不流行 BBS client 软体的时候,想要让人可以透过手机来使用
BBS,所以我门必须针对不同的类型的版面去设计一个呈现方式,使得在手机这般小
的萤幕上,可以在例如 30 x 16 的画面下尽量呈现最多的资讯。这更需要去处理
各时刻呈现给 user 的画面里的文字资讯。
我们所采用的做法是,去 parse BBS/telnet server 的回应来作画。也就是说程式
一开始是 maintain 一个 80 x 24 的画布,这画布是由 glyph plane(可以想成是
array of char array)与 color plane 所构成。任何时候送出数据到 BBS/telnet
server 後,就依照 response 的内容来画布上作画,导致画布的内容更新(有些
控制码等於是移动画笔,颜色相关控制码则是变更 color plane),程式同时也
maintain 游标的位置。
需要去处理或是依照画面里的资讯来作判断时,就可以从 glyph plane 里取得当下
呈现给 user 的所有文字与位置。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.45.16.203
※ 编辑: sbrhsieh 来自: 114.45.16.203 (09/17 01:51)
1F:推 suzuke:推! 09/17 01:58
2F:推 kilfu0701:推!! 09/17 03:52