cnBeta過期評論查看器,再次更新


首先說一下做這個軟件的動機和用途。平時喜歡在cnBeta網站看新聞,但是有時候太忙了,不可能每天都去看,一般兩三天或者四五天去一次,快速掃一下重要的新聞,遇到特別好的文章就收藏起來。唯一不爽的就是超過一天的新聞評論不顯示了,所以一邊學Ruby一邊做了這個軟件。

上一篇博客中使用的方法是在在瀏覽器中使用遠程的代理服務器,然后就可以看到過期的評論。但是網頁打開速度比較慢,圖片加載慢,視頻看不了。現在又用了一個新的方法,而且效果不錯,代理服務器還是在本機運行,網頁文本從遠程服務器獲取,其他的圖片、視頻等則不經過遠程代理,從而達到了一個較好的使用體驗。

代理服務器做成了比較通用的結構,可以掛載對多個網站的處理。

 1class Website
 2  @@sites = {}
 3  attr_accessor :domain, :encoding
 4  def initialize(domain, encoding)
 5    @domain = domain
 6    @encoding = encoding
 7    @@sites[domain] = self
 8  end
 9
10  def self.get_site(domain)
11    @@sites[domain]
12  end
13
14  def self.all_sites
15    @@sites.values
16  end
17end
18
19class << Websites::Cnbeta
20  def need_collect_uri?(uri)
21    false
22  end
23
24  def process_uri(uri, downloader)
25    if match = uri.match(%r{http://www.cnbeta.com/articles/\w+\.htm})
26      if data = downloader.get("http://116.255.235.62:88/get?url=#{uri}", nil, "ASCII-8BIT")
27        return data, 'text/html', true
28      end
29    end
30    return nil
31  end
32end
33
34server = OfflineProxyServer.new(ServerName: "localhost", Port: 9999)
35server.downloader = WebClient.new
36Signal.trap(:INT){ server.shutdown }
37server.start

相關的代碼已經用OCRA(One-Click Ruby Application)工具打包成了一個exe文件,可以獨立運行。

下載proxyserver.zip - 4.32MB

運行后會在本機啟動一個代理服務,在瀏覽器中把代理服務器設置成localhost:9999,再看新聞時就可以看到過期的評論。

最近在看《Agile Web Development with Rails, 4th Edition》,RoR真的是很強,ActiveRecord的OR Mapping設計的很好,自動生成Scaffolding代碼,使用erb生成HTML,用Sass生成CSS,用CoffeeScript生成Javascript,完全讓人工作在一個更高的層次上。RoR有很多的插件可用,常用的功能都有現成的實現。居然有這么多好用的工具,以前的眼界確實太窄了,有種想把自己的網站用RoR重寫一次的沖動。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM