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