来自 opensubtitles api 的 DownloadSubtitle 方法返回空白数据

问题描述 投票:0回答:2

这是我在 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。

python subtitle xmlrpclib
2个回答
1
投票

您将

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

0
投票

为了新用户的利益,请注意 api.opensubtitles.org 已弃用。

您可以访问新的 API 文档:https://api.opensubtitles.com/

此外,可以在 https://github.com/dusking/opensubtitles-com 找到该服务的官方 Python 包装器。

© www.soinside.com 2019 - 2024. All rights reserved.