如何从女妖迁移到Rhythmbox?


13

根据决定,Ubuntu Precise 12.04将以Rhythmbox作为默认音乐播放器。我知道,这并不意味着我将无法使用Banshee,但是我想切换到该版本。

我很久以来一直是Rhythmbox的粉丝,但是在Natty切换到Banshee之后,我决定尝试一下并完全迁移到它。但是,我对此不太满意,这对我来说很滞后,并且还有其他一些问题。

我想将所有Banshee数据导出到Rhythmbox。那包含着:

  • 曲库
  • 播放清单
  • 最好是播放次数和评分
  • 广播电台
  • 封面图片

我应该怎么做才能将所有这些数据移至Rhythmbox,使其成为默认的音乐播放器,然后平稳地完全切换到它?

Answers:


12

我的2美分,适用于Banshee 2.3.3 / Rhythmbox 2.95:

  1. 音乐库:只需将您的音乐文件夹指定到Rhythmbox,它将被导入
  2. 播放清单
    • 动态播放列表:据我所知,您将不得不重新创建它们。不好玩,由于每个播放器的功能不同,还会带来额外的复杂性。
    • 静态播放列表:只需在Banshee中将它们导出为.m3u,然后在Rhythmbox中重新导入即可
  3. 播放次数和评分
    • 播放次数:我不知道
    • 等级:为每个星星创建一个动态播放列表(即创建“ rating1,rating2,rating3,rating4,rating5”动态播放列表,然后将它们导出为.m3u,然后将它们导入Rhythmbox。我刚刚对其进行了测试,两个玩家都使用文件名相对于〜,所以您会没事的。
    • 两者的一种解决方案是实施#538549-使用ID3v2流行度表进行评分(可能是播放次数)
  4. 广播电台:我不知道
  5. 封面图片:Rhythmbox 2.9x / 3虽然不是“迁移”选项,但在处理封面方面做得更好。通过启用中的Cover ArtCover Art Search插件进行尝试Edit / Plugins。就我而言(将艺术品以.jpg的形式存储在文件夹中,或以ID3的形式存储),就可以很好地识别它们

希望有帮助!祝好运 :)


@rafalcieslak欢迎:)。我也非常喜欢Rhythmbox,而2.95确实是令人鼓舞的一步!
罗南·乔谢

糟透了 无法轻松导入/导出播放列表,播放次数或封面艺术以及其他内容。这阻止了我更新到12.04,因为据我所知,升级将删除女妖,因此以上所有内容将在升级中丢失。我现在也才意识到,女妖没有播放列表(复数)导出功能。您需要分别导出每个播放列表!我应该在一开始就抛弃女妖,并使用节奏盒。(我从v11.10开始使用Ubuntu)
Gerard Roche

@BullfrogBlues:你错了。升级到12.04 不会删除Banshee,因此您可以放心进行!:)另外,请记住,即使删除了Banshee,在重新安装后,所有数据也都将保持原样!太好了,不是吗?但是无论如何,如果您更喜欢当前的音乐播放器,则可以继续在12.04中使用Banshee,而无需转到Rhythmbox。因此,继续升级到12.04!
拉斐尔·西耶拉克

我不喜欢女妖。我已经尝试进行升级,并提示某些软件包将被删除,而女妖就在其中。现在,也许我误解了提示信息,但是它说女妖将被删除,因为它不是12.04中受支持的软件包。无论哪种方式,我都没有信心继续进行升级。但是您应该是对的,~/username/.config/banshee-1/*因为包含banshee db 的banshee配置文件在升级期间应该可以。
Gerard Roche

@rafalcieslak仅供参考,某些应用程序删除,女妖是其中之一,askubuntu.com / questions / 111163 /…
Gerard Roche

3

Rhythmbox音乐播放器-女妖-导入脚本将迁移播放次数收视率。感谢@xiphosurus。但是,要使脚本起作用,您需要告诉它女妖和节奏盒数据库在哪里。

准备脚本

找到您的rhythmbox和banshee db文件。默认位置为:

/home/YOUR_USERNAME/.local/share/rhythmbox/rhythmdb.xml
/home/YOUR_USERNAME/.config/banshee-1/banshee.db

支持他们!我再说一遍。进行备份。

现在,将banshee.db文件复制到rhythmbox-banshee-import脚本所在的文件夹中。然后修改rhythmbox-banshee-import脚本,其中该行显示:

RB_DB = 'rhythmdb.xml'

插入路径/到/您的/rhythmboxdb.xml文件,例如:

RB_DB = '/home/YOUR_USERNAME/.local/share/rhythmbox/rhythmdb.xml'

现在运行脚本,所有播放计数和播放列表都将更新。

故障排除

  • 没有名为lxml的模块

    如果遇到错误... ImportError: No module named lxml ...,则需要安装Python Xml Parsers

    sudo apt-get install python-lxml
    
  • 没有权限

    如果您收到“权限被拒绝”,则是由于您没有足够的权限来访问其他用户目录中的文件,或者是因为该文件不可执行。要使其可执行,请运行:

    chmod +x /path/to/your/rhythmbox-banshee-import-script
    

附录

rhythmbox-banshee-import脚本
#!/usr/bin/python

"""
Copyright (c) 2009 Wolfgang Steitz

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA

"""

import sys
import sqlite3
from lxml import etree

RB_DB = 'rhythmdb.xml'
BA_DB = 'banshee.db'

class banshee_db():
    def __init__(self, file):
        self.con = sqlite3.connect(file)

    def get_song_info(self, url):
        try:
            res = self.con.execute('select Rating, Playcount from CoreTracks where uri = ?', (url,) ).fetchone()
            if res is None:
                return None, None
            else:
                return res
        except:
            return None, None


banshee = banshee_db(BA_DB)

tree = etree.parse(RB_DB)
root = tree.getroot()
for song in root:
    if song.get("type") == 'song':
        rating = None
        playcount = None
        for attr in song:
            if attr.tag == 'location':
                location = attr.text
            if attr.tag == 'rating':
                rating = attr.text
            if attr.tag == 'play-count':
                playcount = int(attr.text)
                song.remove(attr)

        rating_banshee, playcount_banshee = banshee.get_song_info(location)
        if rating is None:# noch kein rating in db
            if not (rating_banshee == 0 or rating_banshee is None):
                rating = rating_banshee

        if not (playcount_banshee == 0 or playcount_banshee is None):
            if playcount is None:
                playcount = playcount_banshee
            else:
                playcount += playcount_banshee

        #insert rating into rb db
        if rating is not None:
            element = etree.Element('rating')
            element.text = str(rating)
            song.append( element)
        #update playcount
        if playcount is not None:
            element = etree.Element('play-count')
            element.text = str(playcount)
            song.append( element)


tree.write(RB_DB)

2

要导入评分和播放次数,请使用此脚本!为我工作!

http://code.google.com/p/rhythmbox-banshee-import/


当我看一眼代码时,我对此抱有很高的期望,但是,我却遇到了一个错误ImportError: No module named lxml。如果解决方案像apt-get install lxml在快乐时光一样容易,那么这里是安装指南lxml.de/installation.html。当我不知道实际安装或正在做的事情时,我不喜欢安装东西。通常是这样。我经常不知道自己在做什么。
Gerard Roche

1

尚未实际调查Rhythmbox和Banshee详细信息的一些一般想法:

  1. 导入音乐数据库应该就像让Rhythmbox再次扫描所有文件一样容易。

  2. 如果您已配置Banshee将播放次数和评分存储到音频文件的标签中,并且Rhythmbox支持导入Banshee评分(许多应用程序以或多或少的“标准化”格式存储评分,则易于转换,甚至无需在音乐播放器上进行转换即可使用,而且我知道Banshee支持这一点,但是我不确定Rhythmbox是否支持),那么重新扫描也不应该成为问题。

  3. 封面图片通常与音乐文件一起存储,并且也应在重新扫描时进行检测。我不确定女妖是否还会在其他地方存放封面?

  4. 我希望Banshee可以将播放列表导出为某些标准的播放列表格式(例如.m3u / .pls文件),而Rhythmbox可以导入该格式?


我刚刚在Rhythmbox中找到了一个保存/读取FMPS兼容评级的插件(这些评级是Banshee也使用的)。这篇文章是用法语撰写的,但插件本身似乎是用英语撰写的。也许有人可以打包...


有一个Banshee扩展名banshee-extension-albumartwriter,可以将下载的专辑封面写到包含音乐的目录中(默认情况下,它仅保存在缓存目录中),这也应该有助于使它们进入Rhythmbox。


Banshee可以将播放列表导出到.m3u.pls.xspf,Rhythmbox可以导入这样的播放列表(但是,如果您有很多播放列表,则可能需要很多工作...)。


我告诉Banshee将计数和等级存储在媒体文件中,但没有将它们导入rhythmbox。我目前正在查看导入脚本。女妖的版本:2.9.0 + really2.6.2-2ubuntu2.1
isaaclw 2015年
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.