ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python:如何通过xml-rpc从文件块中获取数据

2019-11-22 08:05:47  阅读:390  来源: 互联网

标签:xml-rpc python-3-x xmlrpcclient python


我正在创建一个使用Python中的OpenSubtitle API下载电影字幕的软件.

该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,[data]是base64和gzip格式的字幕字节.

每当我下载字幕时,我都会面临的问题是:

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

我得到这样的结果:

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

在这里,数据值应该是base64编码的二进制字幕数据,但是这么少的数据怎么可能是字幕.

我认为必须以某种方式从服务器上大块下载数据,或者也许我丢失了一些东西.

解决方法:

只是稍微放大@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

标签:xml-rpc,python-3-x,xmlrpcclient,python
来源: https://codeday.me/bug/20191122/2058397.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有