这是我在 Python 中的第一个项目之一,我遇到了这个问题。代码:
def get_sub(path):
server = xmlrpclib.Server(url)
token = server.LogIn('', '', 'en', 'OSTestUserAgent')['token']
print server.LogIn('', '', 'en', 'OSTestUserAgent')
sub_id = get_hash(path)
print sub_id
resp = server.DownloadSubtitles(token, [sub_id])
print resp
data = resp['data'][0]['data']
print data
变量“data”应该是一个base64编码和gzip压缩的数据,但它输出“H4sIAAAAAAAAAwMAAAAAAAAAAAA=”(200 OK状态代码),这基本上是一个空白数据。尝试使用 API 中的示例检查哈希函数,没有问题。我无法理解这个问题,任何帮助将不胜感激。您可以在此处查看API。
您将
sub_id
设置为什么?它看起来像是一个哈希值,但是,它应该是一个表示字幕文件 ID 的整数(请参阅文档)。
示例字幕文件 ID 为 1951894257。
import xmlrpclib, io, gzip
url = 'https://api.opensubtitles.org/xml-rpc'
server = xmlrpclib.Server(url)
token = server.LogIn('', '', 'en', 'OSTestUserAgent')['token']
sub_id = 1951894257
resp = server.DownloadSubtitles(token, [1951894257])
if resp['status'] == '200 OK':
compressed_data = resp['data'][0]['data'].decode('base64')
sub_text = gzip.GzipFile(fileobj=io.BytesIO(compressed_data)).read()
print sub_text
为了新用户的利益,请注意 api.opensubtitles.org 已弃用。
您可以访问新的 API 文档:https://api.opensubtitles.com/。
此外,可以在 https://github.com/dusking/opensubtitles-com 找到该服务的官方 Python 包装器。