Bagaimana cara mengimpor / mengekspor daftar Rhythmbox?


10

Apakah ada cara untuk mengimpor / mengekspor daftar Rhythmbox?

Jika tidak, bisakah Anda menyarankan saya pemutar musik bagus yang memiliki fungsi serupa seperti Rhythmbox?

Terima kasih!


1
Maksud Anda stasiun radio?
Javier Gonzalez

Ya, maksud saya stasiun radio
Bakhtiyor

Jawaban:


7

rhythmbox menyimpan informasi tentang semua file musik di ~ / .local / share / rhythmbox / rhythmdb.xml

Entri mengenai radiostasi dimulai dengan "tipe entri iradio".


Ya kamu benar, aku tahu itu sebelumnya. Tetapi saya mencari cara yang lebih mudah, jika ada.
Bakhtiyor

3

inilah skrip python untuk melakukan hal yang sama, yaitu mengekstrak nama dan lokasi stasiun radio internet dari basis data xml yang digunakan oleh 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()

(Saya mulai dengan tutorial ini tentang cara bekerja dengan basis data XML dari dalam python: http://oreilly.com/catalog/pythonxml/chapter/ch01.html )


2

Anda dapat menggunakan xmlstarlet untuk menarik data penting dari file XML Anda. Lihat di sini untuk detail:

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


bagus menunjuk ke xmlstarlet tutorial untuk ini
Sabacon

1
Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Marco Ceppi

Maaf soal itu. Saya baru saja mengeditnya untuk memasukkan ide utama. (Terima kasih atas tautannya. Saya khawatir bahwa pengeposan ulang info lain akan menggandakan data web yang tidak perlu.)
colan

0

untuk mengekspor membaca file ~/.local/share/rhythmbox/rhythmdb.xml
jika Anda ingin mengimpor Buat sebuah file playlist M3U sebagai:

#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

dan buka dengan kotak ritme

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.