Command line 通过YouTube数据API v3在视频描述中添加新行
我使用上传视频,但是,我无法在视频描述中打断一行。有什么办法可以做到吗 例如,我在以下方面取得了成功:Command line 通过YouTube数据API v3在视频描述中添加新行,command-line,youtube,youtube-api,escaping,Command Line,Youtube,Youtube Api,Escaping,我使用上传视频,但是,我无法在视频描述中打断一行。有什么办法可以做到吗 例如,我在以下方面取得了成功: C:\Python35\youtube-upload-master\bin>youtube-upload --title="Title" \ --description="This is one line" --category=Music "video.mp4" 我尝试添加转义序列 \\n\/COD>, \n, \r\n>代码>在描述的中间,但是它们是在不逃避的情况下添加的(例如这是
C:\Python35\youtube-upload-master\bin>youtube-upload --title="Title" \
--description="This is one line" --category=Music "video.mp4"
我尝试添加转义序列<代码> \\n\/COD>,<代码> \n,<代码> \r\n>代码>在描述的中间,但是它们是在不逃避的情况下添加的(例如<代码>这是一行< /代码>)。还尝试了
,但不允许使用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."
}
}
我通过修改源文件()克服了这个问题。 具体位置为第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
)序列来模拟新行的开头。
在进行预处理时,我需要将此序列包含在描述文本中。
\\n
是正确的,并且正在工作,不需要任何特殊技巧这花了我很长时间才弄清楚,所以我想我应该在这里帮助一些人。我几乎可以肯定的是,这对某些人有效而对其他人无效的原因与实际将数据传递到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。即使您想尝试自己的方法,也只需转储description变量,您将很快看到\n无法正常工作的原因。YouTube不接受描述中的\n;您的脚本只是没有通过。您应该回答,而不是回答,因为您是正确的,
\\n
是这里的解决方案。在我的情况下,这个解决方案不起作用,因为我从txt文件导入描述,出于某种原因,它被作为列表处理。不过,逻辑是正确的。我使用description=[item.replace(“#n”,“\r\n”)将列表中\r\n
的每个实例替换为\r\n