如何从Banshee的播放列表中导出所有mp3?


13

我所有的音乐都在/ home / blah / Music /中未排序。它在随机文件夹中,尽管这对我来说并不重要,因为Banshee会处理所有事情。我有一个很大的播放列表,其中包含我的音乐的2/3。如何将播放列表中列出的所有mp3文件复制到新文件夹中?

注意:我不是要导出播放列表,而是要复制播放列表中列出的mp3。

Answers:


13

我用rhythmbox做到了,在桌面上命名一个文件夹。现在,当音乐列表显示出来时,找到您喜欢的播放列表,单击其中一首歌曲,并按住ctrl + a高亮显示,然后将孔列表拖放到桌面上的文件夹中。这应该复制您的音乐。您也可以尝试克莱门汀音乐播放器,它具有一些可帮助您导出的工具。

http://www.clementine-player.org/


4
+1这也适用于女妖。
Sabacon 2011年

1
猜猜它没有变得更直观。在Banshee中,您可以创建智能播放列表,这使您可以精确复制所需内容。
负面形状

谢谢,工作正常,最好使用脚本(我搜索了很多)。您是我的英雄
IndacocheaWachín17年

15

找到了解决方案,可与任何媒体播放器一起使用。

  1. 将您的播放列表导出到m3u文件。我称它为playlist.m3u

  2. 在保存文件的文件夹中打开一个终端。

  3. 复制并粘贴:

    sed "s/#.*//g" < playlist.m3u | sed "/^$/d" | while read line; do cp "${line}" '/path/to/output/folder/'; done
    

切记将路径更改为所需的输出文件夹。

注意:复制文件时,终端不会提供任何输出,请耐心等待;)


1
太棒了!我希望我可以对其进行+1次。
Pratyush

如果您的玩家是女妖,这是最简单的方法。谢谢!
nitins

4

很好的问题,这是一个非常需要的功能,奇怪的是,媒体播放器这么少。

这是一种可以尝试的方法,在您的情况下可能会有局限性,尤其是在您的播放列表很大的情况下,将数据CD与播放列表中的文件一起写入磁盘,将生成的.iso映像保存在所需位置,然后将其提取。

步骤如下:

  • 在左侧选择您的播放列表。确保在右上方窗格中选择了所有艺术家。

  • 在右下方窗格中选择播放列表中的所有曲目。

  • 右键单击,然后单击写CD。

Brasero应该从准备好要刻录到CD的所有曲目开始,默认情况下将要写入音频CD,现在可能会有如此多的曲目可能无法放入音频CD,因此下一步是更改brasero项目。

  • 单击brasero中的项目菜单,然后在弹出菜单中选择“新建数据”项目。

系统将询问您“是否要放弃选择的文件或将其添加到新项目?”

  • 单击保留文件选择按钮。

Brasero现在可以将包含所有播放列表文件的Iso映像写入您选择的任何位置。

  • 单击右下角的刻录按钮,选择您的位置并命名iso映像,由于无需进行转码或规范化,因此写入过程将非常快。

  • 右键单击.iso图像并将其解压缩,这将创建一个包含文件的文件夹。

如果您愿意,可以继续操作,然后将CD刻录为备份,或者需要将副本提供给某人。

查看屏幕截图:

女妖主窗口

女妖写CD菜单

女妖写CD菜单

Brasero Audio CD项目窗口

Brasero Audio CD项目,将此更改为Data项目

Brasero项目选择

Brasero菜单显示如何更改项目类型

Brasero数据CD项目

可以处理大量mp3的数据项目


3

感谢负形状这个伟大的解决方案!我已经对其进行了修改,以便根据文件在播放列表中的位置来重命名文件。

sed "s/#.*//g" < playlist.m3u | sed "/^$/d" | while read line; do (( COUNTER++ )); filename="${line##*/}"; cp "${line}" "/path/to/output/folder/$COUNTER - $filename"; done

2

我还将保留脚本,因为它可能对某人有用。 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,多次运行不会复制歌曲。希望这对某人有帮助=)


0

这是我用来将文件从/home/user/playlist.m3u文件复制到/ home / user / export /文件夹中的脚本,只要您的实际文件位于/ home / user / Music /中(如果不更改),脚本中的一行。

#!/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;

将女妖条目拖到文件夹中的不同之处在于,此脚本将保留/artists/albums/track.mp3的层次结构或您必须完全反映您创建的任何m3u播放列表的层次结构。因此,这种方式不可能重复,并且每条音轨都位于其原来的位置。

我之所以这么做,是因为我的手机只有MTP,而在Ubuntu下它有点朦胧。再加上女妖将非常混乱地同步我的机器人。所以我几乎不得不用它来无线传输我的导出文件夹。


0

我改进了用户给定的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)

请享用!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.