2016-04-23 141 views
1

我使用https://github.com/tokland/youtube-upload来上传视频,但是,我无法在视频描述中打破一行。任何方式可以做到这一点?通过YouTube Data API v3在视频描述中添加新行

例如,我成功与:

C:\Python35\youtube-upload-master\bin>youtube-upload --title="Title" \ 
--description="This is one line" --category=Music "video.mp4" 

我曾尝试添加转义序列\\n\n\r\n中描述的中间,但它们被加入而不逸出(例如This is \\n one line)。也试过<br />,但HTML标签是不允许的。

[RequestError] Server response: { 
"error": { 
    "errors": [ 
    { 
    "domain": "youtube.video", 
    "reason": "invalidDescription", 
    "message": "The request metadata specifies an invalid video description.", 
    "locationType": "other", 
    "location": "body.snippet.description" 
    } 
    ], 
    "code": 400, 
    "message": "The request metadata specifies an invalid video description." 
} 
} 

回答

0

我已经通过修改源文件(https://github.com/tokland/youtube-upload/blob/master/youtube_upload/main.py)克服了这个问题。 特定地点是线103-106:

if hasattr(u('string'), 'decode'): 
    description = u(options.description or "").decode("string-escape") 
else: 
    description = options.description 

看起来像解码除去转义字符,从而没有新的行被创建。

我已经替换为这些:

description = description.replace('#n', '\r\n') 

我将使用这个特殊字符(#n)序列类似于开始一个新行。 这个序列在做预处理时需要包含在描述文本中。

+0

'\\ n'为我工作,无需更改代码 – michabbb

+0

您应该回答,而不是回答正确,''\\ n''是这里的解决方案。 –

1

\\n是正确的,是工作,没有必要进行特别的技巧

0

这花了我很长的时间来弄清楚,所以我想我会帮助一些人在这里。之所以这样,是为了某些人,而不是为其他人工作,我几乎是积极的,与你实际将数据传递到Python脚本的方式有关。

大多数找到upload_video.py文件的人都是从命令行执行的。不幸的是,当描述数据被传递到Python时,它将\ n更改为文字斜杠和'n'而不是换行符。

上述响应者的做法是将Bash输入中的换行符更改为#n。我继续使用\ n。可以将其更改为任何您希望提供的内容,使其与Python脚本中的修改保持一致。

如果编辑upload_video.py和周围线94中添加以下内容:

formattedDescription = options.description.replace('\\n', '\n') 

几行下来,你还需要编辑本段:所以它

title=options.title, 
    description=options.description, 
    tags=tags, 
    categoryId=options.category 

读取:

title=options.title, 
    description=formattedDescription, 
    tags=tags, 
    categoryId=options.category 

我创建一个单独的变量的原因是,我可以将它转储到屏幕上,并确保新行正在正确显示。

无论如何,这是一个非常简单的修改;我对它进行了彻底测试,它完美地通过了YouTube API。即使你想尝试自己的方法,只需转储描述变量,你很快就会明白为什么\ n不能正常工作。YouTube是否接受描述中的\ n;你的脚本没有通过它。

相关问题