YouTube-API上关键字/标签的字符错误无效(当没有无效字符时)

时间:2014-03-01 22:13:08

标签: python youtube youtube-api gdata-api

我一直在尝试制作一个将YouTube视频上传到我的频道的脚本,我想在上传中设置一个进度条,而不是直接使用YouTube API,我一直在尝试修改此脚本:{{ 3}}允许直接从另一个脚本而不是命令行调用。

您可以在此处查看我当前的脚本版本:http://code.google.com/p/youtube-upload/wiki/Readme

我得到的错误:

Traceback (most recent call last):
  File "youtube_upload.py", line 606, in <module>
    print upload_youtube_video("youtube@email.com", "password", "This is a test title", "this is a test description", "Games", "test tag, I like tagging, tagging is fun", "/root/test video.mp4")
  File "youtube_upload.py", line 594, in upload_youtube_video
    url = upload_from_script(email, password, title, description, category, keywords, file_path)
  File "youtube_upload.py", line 588, in upload_from_script
    return run_main(parser, options, args)
  File "youtube_upload.py", line 454, in run_main
    url = upload_video(youtube, options, video_path, len(args), index)
  File "youtube_upload.py", line 371, in upload_video
    data = youtube.get_upload_form_data(*args, **kwargs)
  File "youtube_upload.py", line 204, in get_upload_form_data
    post_url, token = self.service.GetFormUploadToken(entry)
  File "/usr/local/lib/python2.7/dist-packages/gdata/youtube/service.py", line 721, in GetFormUploadToken
    raise YouTubeError(e.args[0])
gdata.youtube.service.YouTubeError: {'status': 400, 'body': "<?xml version='1.0' encoding='UTF-8'?><errors><error><domain>yt:validation</domain><code>invalid_character</code><location type='xpath'>media:group/media:keywords/text()</location></error></errors>", 'reason': 'Validation Failed'}

我一直在试图弄清楚它有什么问题,而且我从错误信息中收集的内容中,关键字中存在无效字符,但打印关键字值只是按照您的预期显示标记。没有无效字符(Youtube文档说明允许所有有效的UTF-8字符)

我认为这可能与编码有关。虽然我尝试将字符串转换为UTF-8并没有区别(但也许我做错了?我使用了unicode(关键字,“UTF-8”)

我认为可能与编码有关的另一个原因是我昨天在我的Windows机器上完全运行了脚本,但它在我现在使用的Linux机器上不起作用(我不是我可以访问我的Windows机器几天,所以我无法确认它是否仍然可以在Windows机器上运行,我可能不小心编辑了代码?我不认为我做了)。所以我想也许这与Linux编码的东西相比有什么关系?只是一个疯狂的猜测。

P.S我在pastebin上编辑脚本的唯一事情就是用户名和密码,所以所有其他数据仍然与标题,描述和关键字相同。

如果您需要我提供更多信息,请随时与我们联系。

1 个答案:

答案 0 :(得分:0)

想出来,只需要剥去引号。