2016-04-15 10 views
2

さて、私が書いているbashスクリプトでこの小さな問題が発生しました。youtube-dlの問題(スクリプティング)

このスクリプトは次のように実行されるようになっている:

bash script.sh https://www.youtube.com/user/<channel name> 

OR

bash script.sh https://www.youtube.com/user/<random characters that make up a youtube channel ID> 

それは

<uploader>{<uploader_id>}/ 

あるいは、少なくとも、という名前のフォルダに全体のYouTubeチャンネルをダウンロードそれはすべきです...

私が得ている問題は、youtube-dlが作成するarchive.txtファイルがビデオと同じディレクトリに作成されないということです。スクリプトが実行されるディレクトリに作成されます。

archive.txtファイルをビデオフォルダに取得するために使用できるgrepまたはsedコマンドはありますか?

FIRSTフォルダを作成してからcdして、そこからコマンドを実行することはできますか?私はここで

を知らん は私のスクリプトです:

#!/bin/bash 
pwd 
sleep 1 
echo "You entered: $1 for the URL" 
sleep 1 
echo "Now downloading all videos from URL "$1"" 
youtube-dl -iw \ 
--no-continue $1 \ 
-f bestvideo+bestaudio --merge-output-format mkv \ 
-o "%(uploader)s{%(uploader_id)s}/[%(upload_date)s] %(title)s" \ 
--add-metadata --download-archive archive.txt 
exit 0 
+0

アーカイブを 'archive.txt'として作成するように指示しているので、それは現在のディレクトリで起こります。 'youtube-dl'がその引数に'%(uploader)s'などをサポートしていない限り、あなたは他の方法がない限り、ここで一つのコマンド(またはコマンドのセット)アップローダーの名前とIDをどうにかして取得する)。 –

+0

@EtanReisner、ええ、%(アップローダ)s、&tcはyoutube-dlが使用する変数です。 youtube-dlをbash変数としてエクスポートしただけで簡単な "cd"を実行することができれば、これはずっと簡単です – TheSqrtMinus1

+0

それはできません。それだけでは不可能です。しかし、 '--download-archive'引数でフォーマットをサポートすることはできます。ダウンロードしたファイルを適切なディレクトリに手動で移動する必要があります。これは何かを提出する価値があるかもしれないが、youtube-dlについて。 –

答えて

0

私はこれでそれを解決することになった:

uploader="$(youtube-dl -i -J $URL --playlist-items 1 | grep -Po '(?<="uploader": ")[^"]*')" 
uploader_id="$(youtube-dl -i -J $URL --playlist-items 1 | grep -Po '(?<="uploader_id": ")[^"]*')" 
uploaderandid="$uploader{$uploader_id}" 
echo "Uploader: $uploader" 
echo "Uploader ID: $uploader_id" 
echo "Folder Name: $uploaderandid" 
echo "Now downloading all videos from URL "$URL" to the folder "$DIR/$uploaderandid"" 

基本的に私はユーチューブ-dlの開発者から、grepのでJSONをパースする必要がありました他の変数に-oタイプの変数を実装すると、コードが詰まり、膨大になるという。

関連する問題