Pythonを学び理解するyoutube-dlに基づいてスクリプトを作成して、プレイリストをダウンロードして特定のディレクトリにあるすべてのflvビデオを移動します。Python - ディレクトリを作成して特定のファイルを移動する
これは、これまでの私のコードです:次のように
import shutil
import os
import sys
import subprocess
# Settings
root_folder = 'C:/Users/Robert/Videos/YouTube/Playlists/$s'
def download():
files = open('Playlists.txt').readlines()
for playlist in files:
p = playlist.split(';')
# Create the directory for the playlist if it does not exist yet
if not os.path.exists (root_folder % p[0]):
os.makedirs(root_folder % p[0])
# Download every single video from the given playlist
download_videos = subprocess.Popen([sys.executable, 'youtube-dl.py', ['-cit'], [p[1]]])
download_videos.wait()
# Move the video into the playlist folder once it is downloaded
shutil.move('*.flv', root_folder % p[0])
download()
私Playlists.txtの構造が見えます:
Playlist name with spaces;http://www.youtube.com/playlist?list=PLBECF255AE8287C0F&feature=view_all
は、私は2つの問題に実行します。まず文字列の書式設定は機能しません。
私はエラーを取得する:
Playlist name with spaces
Traceback (most recent call last):
File ".\downloader.py", line 27, in <module>
download()
File ".\downloader.py", line 16, in download
if not os.path.exists (root_folder % p[0]):
TypeError: not all arguments converted during string formatting
誰が私に理由を説明できますか?私がp [0]を印刷すると、すべてがうまく見えます。
第2に、正しいshutil.moveコマンドを設定して、ダウンロードしたばかりのflvビデオだけを移動する方法を知りません。それをどのようにフィルタリングできますか?
ありがとうございました!
あなたのコードがあなたのシステム上で正しくインデントされていれば幸いです。そうでなければ 'p = playlist.split( ';')'行はあなたが望むことをしません。 –
もちろんです。私は上記のコードを編集しました。通知ありがとう! – orschiro
質問を編集するだけで、より多くの情報や改善が得られます(改善のために、書式の改善、タイプの修正などが含まれます)。他の変更があれば質問が変わるので、あなたがすでに持っている答えは意味をなさないでしょう。あなたを最も助けてくれた答えを前の[編集]に戻してください。あなたの新しい問題を述べる新しい質問を開くことを歓迎します:) –