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
classRhythmboxPlaylistHandler(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 =Trueelif name =="location"and self.entrytype =="iradio":
self.inRLocation =Truedef characters(self, data):if self.inRTitle:
self.titlebuffer += data
elif self.inRLocation:
self.locationbuffer += data
def endElement(self, name):if name =="title":
self.inRTitle =Falseelif name =="location":
self.inRLocation =Falseelif 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()
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
Jawaban:
rhythmbox menyimpan informasi tentang semua file musik di ~ / .local / share / rhythmbox / rhythmdb.xml
Entri mengenai radiostasi dimulai dengan "tipe entri iradio".
sumber
inilah skrip python untuk melakukan hal yang sama, yaitu mengekstrak nama dan lokasi stasiun radio internet dari basis data xml yang digunakan oleh Rhythmbox:
(Saya mulai dengan tutorial ini tentang cara bekerja dengan basis data XML dari dalam python: http://oreilly.com/catalog/pythonxml/chapter/ch01.html )
sumber
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
sumber
untuk mengekspor membaca file
~/.local/share/rhythmbox/rhythmdb.xml
jika Anda ingin mengimpor Buat sebuah file playlist M3U sebagai:
dan buka dengan kotak ritme
sumber