私の音楽はすべて/ home/blah/Music /に分類されていません。ランダムなフォルダにありますが、Bansheeがすべてを処理するので、私にとっては重要ではありません。私は自分の音楽の2/3を含む大きなプレイリストを持っています。プレイリストにリストされているすべてのmp3ファイルを新しいフォルダーにコピーするにはどうすればよいですか?
注:プレイリストをエクスポートしようとはしていませんが、プレイリストにリストされているmp3をコピーします。
私はこれをリズムボックスで行い、デスクトップにフォルダに名前を付けます。音楽リストが曲の1つをクリックして、Ctrlキーを押しながらホールリストを強調表示し、デスクトップ上のフォルダーにドラッグアンドドロップすると、好きなプレイリストが見つかります。これにより、音楽のコピーが作成されます。また、クレメンタインミュージックプレーヤーを試すこともできます。これには、エクスポートに役立つツールがいくつかあります。
ソリューションを見つけ、あらゆるメディアプレーヤーで動作します。
プレイリストをm3uファイルにエクスポートします。私はそれをplaylist.m3uと呼びました
ファイルを保存したフォルダーでターミナルを開きます。
これをコピーして貼り付けます:
sed "s/#.*//g" < playlist.m3u | sed "/^$/d" | while read line; do cp "${line}" '/path/to/output/folder/'; done
目的の出力フォルダーへのパスを忘れずに変更してください。
注:ターミナルは、ファイルがコピーされている間は出力しません。ただ我慢してください;)
良い質問です。これは非常に必要な機能です。メディアプレーヤーがほとんどないのは奇妙です。
ここに試すことができる方法があります。特にプレイリストが非常に大きい場合、ケースに制限がある可能性があります。プレイリストのファイルを使用してデータCDをディスクに書き込み、結果の.isoイメージを必要な場所に保存してから抽出します。
手順は次のとおりです
左側でプレイリストを選択します。右上のペインですべてのアーティストが選択されていることを確認してください。
右下のペインでプレイリストのすべてのトラックを選択します。
右クリックして、[CDに書き込む]をクリックします。
Braseroは、すべてのトラックをCDに書き込む準備ができた状態で開始する必要があります。デフォルトでは、オーディオCDに書き込みを行います。オーディオCDに収まらないトラックが非常に多くなるため、次のステップは、 braseroプロジェクト。
「選択したファイルを破棄するか、新しいプロジェクトに追加しますか?」という質問が表示されます。
Braseroは、選択した任意の場所にすべてのプレイリストのファイルを含むIsoイメージを書き込む準備ができました。
右下の書き込みボタンをクリックし、場所を選択してisoイメージに名前を付けます。トランスコーディングや正規化が行われないため、書き込みプロセスはかなり高速になります。
.isoイメージを右クリックして展開すると、ファイルを含むフォルダーが作成されます。
希望する場合は、先に進んでCdをバックアップとして書き込むか、コピーを誰かに渡す必要があります。
スクリーンショットを見る:
BansheeがCDメニューを書き込む
BraseroオーディオCDプロジェクト、これをデータプロジェクトに変更
プロジェクトタイプの変更方法を示すBraseroメニュー
かなりの量のmp3を処理できるデータプロジェクト
この素晴らしいソリューションを提供してくれたネガティブシェイプに感謝します!プレイリスト内の位置に応じてファイルの名前が変更されるように変更しました。
sed "s/#.*//g" < playlist.m3u | sed "/^$/d" | while read line; do (( COUNTER++ )); filename="${line##*/}"; cp "${line}" "/path/to/output/folder/$COUNTER - $filename"; done
また、スクリプトは誰かの役に立つかもしれないので、そのままにします。 https://Gist.github.com/CRImier/9777606
import os
import shutil
directory_name = "playlist/"
playlist_name = "playlist.m3u"
f = open(playlist_name, "r")
files = []
for line in f:
line = line.strip().strip("\n").strip("\r")
if line and not line.startswith("#"):
files.append(line)
dir_contents = os.listdir(directory_name)
for file in files:
try:
filename = os.path.basename(file)
if filename not in dir_contents:
shutil.copy(file, "playlist/")
print filename
else:
print ".", #File already there
except Exception as e:
print str(e)
純粋なPythonであり、複数回実行しても曲を2回コピーしません。これが誰かを助けることを願っています=)
以下は、実際のファイルである限り、/ home/user/playlist.mファイルから/ home/user/export /フォルダーにファイルをコピーするために使用するスクリプトです。 / home/user/Music /にあるのは、スクリプトの1行を変更するだけではない場合です。
#!/bin/bash
m3u=$(sed /#.*/d "/home/user/playlist.m3u"|sed 's/\.\.\/\.\./\/home\/user/g');
echo "$m3u" | while read line; do
newFile=$(echo $line| sed 's/\/home\/user\/Music\//\/home\/user\/export\//');
newPath=$(echo "$newFile" | grep -o .*\\/);
mkdir -p "$newPath";
cp "$line" "$newFile";
done;
exit 0;
Bansheeエントリをフォルダにドラッグすることとの違いは、このスクリプトが/artists/albums/track.mp3の階層または作成したm3uプレイリストを正確に反映する必要がある階層を保持することです。したがって、この方法では複製は不可能であり、すべてのトラックは以前の場所にあります。
私の携帯電話にはMTPしかなく、Ubuntuでは少しかすんでいるので、これを作りました。さらに、bansheeは私のAndroidを非常に無秩序に同期します。だから私はほとんどこれを使用してエクスポートフォルダを無線LANで転送する必要があります。
ユーザーが指定したpythonスクリプト「АрсенийПичугин」を改善して、ファイルを新しい場所にコピーするときにディレクトリ構造が保持されるようにしました。これにより、.m3uファイルとターゲットの音楽ファイルを新しいデバイスにコピーできます。リンクが壊れることはないため、プレイリストはMP3プレーヤーや電話のように実際に再生されます。このスクリプトは、音楽ファイルが見つかり、.m3uファイルが存在する最上位フォルダーにあると想定しています。
import os
import shutil
#here, add the name of the dir where the playlist files will be copied
directory_name = "/home/username/Desktop/Music/"
playlist_name = "Test_Favorites.m3u"
f = open(playlist_name, "r")
files = []
for line in f:
line = line.strip().strip("\n").strip("\r")
if line and not line.startswith("#"):
files.append(line)
dir_contents = os.listdir(directory_name)
#print dir_contents
for file in files:
try:
filename = os.path.basename(file)
filepath = os.path.dirname(file)
newpath = directory_name + "" + filepath
newname = newpath + "/" + filename
if os.path.exists(newname):
print filename + " already existed, not copied."
else:
if not os.path.exists(newpath):
os.makedirs(newpath)
shutil.copy(file,newpath)
print newname
except Exception as e:
print str(e)
楽しい!