2014-01-10 80 views
3

我正在使用Python中的OpenSubtitle API創建下載電影字幕的軟件。Python:如何通過xml-rpc從文件塊中獲取數據

該API實現XML-RPC協議。據API documentation,下載從站點數據庫字幕,則使用下面的方法:

array DownloadSubtitles($token, array($IDSubtitleFile, $IDSubtitleFile,...)) 

它的輸出是:

[data] => Array 
    (
     [0] => Array 
      (
       [idsubtitlefile] => 10 
       [data] => MQ0KMDA6MDA6MzgsMzAwIC0tPiAwMDowMDo0MSwwMDA... 
      ) 
     [1] => Array 
      (
       [idsubtitlefile] => 20 
       [data] => MQ0KMDA6MDA6MjYsMjgzIC0tPiAwMD... 
      ) 

其中[idsubtitlefile]是subtitle_id和[數據]是字幕字節在base64和gzip格式。

我現在面臨的問題是,每當我下載的字幕:

idsubtitlefile='513de0ea27d63b9d631d769a492d72dc' 
token='a1t49trievitmjda4ija7dif44' 
xmlrpclib.DownloadSubtitles(token,[(idsubtitlefile)]) 

我得到這樣一個結果:

[{'data': 'H4sIAAAAAAAAAwMAAAAAAAAAAAA=',\  
    'idsubtitlefile':'513de0ea27d63b9d631d769a492d72dc'}] 

這裏,data值應該是base64編碼的二進制字幕數據,但如何才能將這麼少的數據作爲副標題。

我想某種程度上數據必須從服務器下載塊,或者我錯過了一些東西。

+1

您收到的迴應基本上是一個壓縮的空文件。我不希望有任何更多的塊,從您收到的回覆和API文檔。 –

回答

3

只是爲了擴大@的Martijn的評論一點 - 響應確實是一個空文件,通過它可以驗證使用這樣的代碼:

>>> raw = 'H4sIAAAAAAAAAwMAAAAAAAAAAAA=' 
>>> import base64 
>>> decoded = base64.b64decode(raw) 
>>> import zlib 
>>> decompressed_data=zlib.decompress(decoded, 16+zlib.MAX_WBITS) 
>>> print decompressed_data 

>>> len(decompressed_data) 
0 

基礎上沒有什麼暗示什麼更多的是需要你API文檔。你可以重試一個已知有副標題的例子嗎?你在檢查錯誤嗎? http://trac.opensubtitles.org/projects/opensubtitles/wiki/XmlRpcStatusCode

編輯:有萬一這裏列出了一些開源的Python API的用戶,他們是有幫助的: http://trac.opensubtitles.org/projects/opensubtitles/wiki/ProgramsUsingAPI

相關問題