Como importar / exportar a lista de estações de rádio da Rhythmbox?

10

Existe alguma maneira de importar / exportar a lista de estações de rádio da Rhythmbox?

Caso contrário, você poderia me sugerir um bom reprodutor de música com funcionalidade semelhante ao Rhythmbox?

Obrigado!

Bakhtiyor
fonte
1
Você quer dizer estações de rádio?
Javier Gonzalez
Sim, refiro-me a estações de rádio
Bakhtiyor

Respostas:

7

O rhythmbox armazena informações sobre todos os arquivos de música em ~ / .local / share / rhythmbox / rhythmdb.xml

As entradas relativas às radiostações começam com "tipo de entrada iradio".

Produnis
fonte
Sim, você está certo, eu sabia disso antes. Mas estou procurando uma maneira mais fácil, se houver.
Bakhtiyor
3

aqui está um script python para fazer a mesma coisa, ou seja, extrair nomes e locais de estações de rádio da Internet a partir da base de dados xml usada pelo Rhythmbox:

import xml.sax.handler
import xml.sax
import pprint

class RhythmboxPlaylistHandler(xml.sax.handler.ContentHandler):
    def __init__(self):
        self.inRTitle = False
        self.inRLocation = False
        self.entrytype = "undefined"
        self.titlebuffer = ""
        self.locationbuffer = ""
        self.radiostations = {}

    def startElement(self, name, attributes):
        if name == "entry":
            self.entrytype = attributes["type"]  # we're interested in type="iradio"
        elif name == "title" and self.entrytype == "iradio":
            self.inRTitle = True
        elif name == "location" and self.entrytype == "iradio":
            self.inRLocation = True

    def characters(self, data):
        if self.inRTitle:
            self.titlebuffer += data
        elif self.inRLocation:
            self.locationbuffer += data

    def endElement(self, name):
        if name == "title":
            self.inRTitle = False
        elif name == "location":
            self.inRLocation = False
        elif name == "entry" and self.entrytype == "iradio":
            self.radiostations[self.titlebuffer] = self.locationbuffer
            self.titlebuffer=""
            self.locationbuffer=""

parser = xml.sax.make_parser(  )
handler = RhythmboxPlaylistHandler(  )
parser.setContentHandler(handler)
parser.parse("work_copy_of_rhythmdb.xml")
pprint.pprint(handler.radiostations)

rstations=handler.radiostations

rskeys=[key for key in rstations]
rskeys.sort()

ofile=open("rhytmbox_current_internet_radiostations.txt","w")
ofile.write("#   {0:41}  -->  {1}\r\n".format('radio station name','location'))
ofile.write("#"+120*'-'+"\r\n")
for key in rskeys:
    ofile.write("{0:45}  -->  {1}\r\n".format(key,rstations[key]))
ofile.close()

(Comecei com este tutorial sobre como trabalhar com bases de dados XML de python: http://oreilly.com/catalog/pythonxml/chapter/ch01.html )

Markus
fonte
2

Você pode usar o xmlstarlet para extrair os dados essenciais do seu arquivo XML. Veja aqui para detalhes:

http://steffen67.blogspot.com/2011/05/how-to-export-rhythmbox-radio-stations.html

colan
fonte
bom apontar para o tutorial xmlstarlet para isso
Sabacon
1
Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Marco Ceppi
Me desculpe por isso. Eu apenas editei para incluir a ideia principal. (. Obrigado pelo link Eu estava preocupado que repostagem outra informação seria duplicação de dados web desnecessariamente.)
Colan
0

para exportar, leia o arquivo ~/.local/share/rhythmbox/rhythmdb.xml
se desejar importar Crie uma lista de reprodução de arquivos M3U como:

#EXTM3U
#EXTINF:-1,Quran - Eman City  Quran & Islam Talk
http://206.72.199.180:9990/;stream.nsv

#EXTINF:-1,Quran - Radio Quraan
http://66.45.232.131:9994/;stream.nsv

#EXTINF:-1,Quran - Allahu Akbar Radio
http://66.45.232.1ls32:10196/;stream.nsv

#EXTINF:-1,Quran - izlam
http://66.45.232.133:9998/;stream.nsv

#EXTINF:-1,Quran - tafsir Al Sheikh Mohammad Ratib Al Nabulsi & Sheikh Muhammad Mitwalli Al Sharawi
http://206.72.199.179:9992/;stream.nsv

#EXTINF:-1,Quran - radioislamico
http://66.45.232.134:9996/;stream.nsv

e abra com rhythmbox

m3asmi
fonte