2016-04-23 6 views
1

https://github.com/tokland/youtube-upload私は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" 

Iは、説明の途中でエスケープシーケンス\\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)を変更してこの問題を解決しました。

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

は、このように新しい行が作成されなかった、削除エスケープ文字をデコードするようになっています 特定の場所は、ライン103〜106でした。

私がこれらの交換した:

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は以下に追加した場合:だから、その

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

:数行は、あなたも、このセクションを編集する必要がありますダウン

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

読み込み:

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

別の変数を作成した理由は、画面にダンプできるようにするためです改行が正しく表示されています。

とにかく、それは非常に単純な変更でした。私はそれを徹底的にテストし、YouTube APIを完全に通過します。独自のメソッドを試してみたい場合でも、説明変数をダンプするだけで、\ nが別の方法で動作しない理由をすぐに知ることができます。YouTubeは説明に\ nを受け入れるん。スクリプトはそれを渡していません。

関連する問題