你所寫過的最好的Python指令碼是什麼?

Jason GUO發表於2014-08-17

這是網友在 Quora 上提的同名問答帖,本文摘編了排名前兩名的答案。得到最多讚的使用者介紹了他寫的在Facebook上面感謝好友的指令碼。排名第二的答案介紹了他寫的點選一次自動字幕下載的指令碼、IMDb資訊查詢指令碼、theoatmeal.com網站漫畫下載指令碼和someecards.com下載指令碼。該使用者也因為這些指令碼而得到了一份工作。

Akshit Khurana的答案,3.4k個贊同

使用指令碼在Facebook上感謝五百多個在我生日那天給我祝福的朋友:

那是我21歲的生日,在那天發生了三件使得那天值得紀念的事情。這是那天發生的最後一件。

我傾向於親自評論那些給我的祝福,但是使用Python去做這個將會更好。

為了讓程式工作,你需要通過合適的許可權從Graph API Explorer(需要梯子)獲得一個令牌(token)。指令碼假設在一個特定時間戳之後釋出的所有資訊都是生日祝福。

稍微改動一下commentall函式後我還可以給每個資訊點贊。Shashwat Lal Das | Facebook看到了被我的「自動收報機」引爆的贊、評論和具有相似的結構的評論後很快辨認出我可能做了上文裡我所說的事情。

這個不是我寫過的最好的Python指令碼,但是它簡單、高效並且有趣!

這個想法是我和Sandesh Agrawal在網路實驗室裡討論時想出來的。謝謝你不做實驗室的專案而是浪費時間陪我。

Manoj Memana Jayakumar的答案,1.7k個贊同

更新:我因為這些指令碼得到了工作!
閱讀:Manoj Memana Jayakumar’s answer to Quora: Has anyone been offered a job because of their Quora participation?

1、點選一次下載電影電視劇的字幕
我們都有過類似的經歷:開啟subscene或者opensubtitles等字幕下載網站,搜尋電影、電視劇的名字,選擇正確的壓制版本,下載字幕,解壓,剪下並把它貼上到電影的資料夾內,重新命名字幕檔案來匹配我們的電影檔案。

非常的單調乏味對嗎?我寫了一個指令碼去下載正確匹配電影/電視劇的字幕,並且在你放置電影的資料夾下面儲存它。所有這些只需要點選一次。

不太明白我說的是什麼?

自己看這個視訊吧(需要梯子):

Movie/TV Series Subtitles downloader Python script

是的。僅僅需要點選一次,就像施了咒語一樣達到了目的。

最匹配你的電影或者電視劇的字幕被下載到和視訊檔案一樣的資料夾內,被重新命名成和你的視訊檔案相同的名字。

所有這些將在4秒內完成!

所以你現在所要做的就是開啟電影,吃著爆米花並欣賞它。:)

原始碼在GitHub上:subtitle-downloader

2、IMDb查詢、Excel表格生成器

我是一個電影迷,我喜歡看電影。我收藏了大量的電影,因此我經常為選擇看哪部電影而困擾。

所以我應該怎樣做才能避免困惑並選擇出今晚要看的電影?沒錯,上IMDb。

我開啟http://imdb.com,輸入電影的名字,看看得分,讀讀評論,然後弄清楚這部電影是否值得看。

但是我有太多電影了!誰會願意在搜尋框內輸入我所有電影的名字呢?至少我不願意,尤其是因為我認為「如果某件事是重複的,那麼它可以被自動化」。

所以我用非官方的IMDb API寫了一個Python指令碼投抓取資料。下面是完成指令碼後的結果。

我選擇一個電影檔案/資料夾,右擊它,點選傳送到,再點選IMDB.cmd。(順便提一下,這樣呼叫了我寫的Python指令碼)

瞧,那就是我們想要的!

我的瀏覽器開啟了電影準確對應的IMDb頁面!

所有這些,只需要點選一下按鈕。

如果不明白這有多酷麼,你可以節省多少時間,看看這個視訊(需要梯子):

IMDb lookup python script

從現在開始你不需要開啟瀏覽器,等待IMDb載入並且輸入電影的名字。這個指令碼幫你做好了這一切!

像之前一樣,程式碼在GitHub上:imdb頁面裡面還有如何使用它的說明。當然,因為指令碼需要去掉所有像”DVDRip, YIFY, BRrip”之類的無用的值,這個指令碼使用時有著一定程度的誤差。但是這個指令碼在我測試的大多數電影中表現得很好。

更新(04-01-2014)

很多人認為每次找一部電影的詳細介紹是笨拙的,他們問我是否可以寫一個指令碼以找到一個資料夾裡所有電影的詳細介紹。

我現在已經更新了指令碼。這使得我們可以傳送一個資料夾給指令碼,讓指令碼分析資料夾裡的所有子資料夾,從IMDb裡抓取資料夾裡所有電影的詳細資訊,並開啟一個Excel檔案,使得Excel裡面的電影按照IMDb打分降序排列。

Excel檔案裡面也包含了像IMDb URL、年份、情節、型別、獲獎情況、演員和其他任何你可能想在IMDb裡找到的資訊。

下面的圖片展示了指令碼執行後生成的Excel表格的樣子。

main-qimg-9c8c23be07fb263a55df2d2dbf0b4a44

一個完全屬於你自己的IMDb資料庫!作為一個電影愛好者也不能要求得更多了;)

原始碼在GitHub上:imdb

編輯:

我正設法把這個指令碼改成一個單頁web應用,使用者可以把多個資料夾拖曳放入網頁,然後電影的詳細資訊將會顯示在瀏覽器裡的一個表格裡。

如果有人願意在這個專案中幫我建立應用的前端,包括基本的UI(基於基本的bootstrap就足夠了)和拖曳視窗的話,我會很高興。

如果你有興趣加入這個專案,請通知我。:)

3、theoatmeal.com網站漫畫下載器

main-qimg-a684819abb2a9d79016b534a2665e90c

我是Matthew Inman的漫畫的忠實粉絲。他們的漫畫極度有趣得同時發人深省。

然而,我厭倦了點選下一頁並讀每一頁漫畫。此外,人工下載他們是很困難的,因為每一份漫畫都被分成了許多張圖片。

所以我寫了一個Python指令碼從這個網站上下載所有漫畫。這個指令碼使用BeautifulSoup (http://www.crummy.com/software/B… )去解析HTML資料,因此你在嘗試執行這個指令碼之前需要確認你已經安裝了BeautifulSoup。

oatmeal下載器的原始碼在GitHub上:theoatmeal.com-downloader

這是下載完後資料夾的樣子:D

main-qimg-d0255027ab89b9850ad1026616ffde40

4、someecards.com下載器

在我成功從http://www.theoatmeal.com下載下漫畫後,我想知道我是否能在另一個我最喜歡網站——十分滑稽、獨一無二http://www.someecards.com上做相同的事情並且下載一些東西。

main-qimg-44444242202f87870f12e3293b46af24

someecards的問題在於網站的圖片是隨機命名的,它們的排列沒有特定的順序,每個分類下面都有大量的照片。並且網站裡有52個這樣的分類。

我意識到由於網站裡有大量資料需要解析並下載,因此如果我的指令碼是多執行緒的的話那就再好不過了。於是我在每一個分類下的每一頁分配了一個執行緒。

指令碼從網站的每一個分類下下載下來了所有滑稽的電子卡片。每一個分類被放在單獨的一個資料夾。

現在我擁有了這個星球上最有趣的電子卡片作為我的私人收藏。

這是當下載完成後資料夾的樣子。

main-qimg-98476344e3a4f8bed08a30c186144080

OK。我的私人收藏裡有52種型別,5036張電子卡片。

原始碼在這裡:someecards.com-downloader

編輯:很多人問我我是否可以提供我下載的所有檔案。因為我的網路非常不穩定,所以我不能把檔案上載到一個網路硬碟,但是我已經上傳了相同檔案的種子,你可以在這裡下載它:somecards.com Site Rip torrent

播種並擴散愛!:)

如果你執行指令碼時遇到麻煩請在這裡評論或者發資訊給我。我一向樂於助人。

Python王道\m/

相關文章