2016-04-23 64 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;你的腳本沒有通過它。

相關問題