วิธีการนำเข้า / ส่งออกรายการสถานีวิทยุของ Rhythmbox


10

จะมีวิธีการนำเข้า / ส่งออกรายการสถานีวิทยุของ Rhythmbox หรือไม่?

ถ้าไม่คุณช่วยแนะนำเครื่องเล่นเพลงที่มีฟังก์ชั่นคล้าย ๆ กับ Rhythmbox ได้มั้ย

ขอบคุณ!


1
คุณหมายถึงสถานีวิทยุเหรอ?
Javier Gonzalez

ใช่ฉันหมายถึงสถานีวิทยุ
Bakhtiyor

คำตอบ:


7

rhythmbox จัดเก็บข้อมูลเกี่ยวกับไฟล์เพลงทั้งหมดใน ~ / .local / share / rhythmbox / rhythmdb.xml

รายการที่เกี่ยวข้องกับ radiostations เริ่มต้นด้วย "รายการประเภท iradio"


ใช่คุณพูดถูกฉันรู้มาก่อนแล้ว แต่ฉันกำลังมองหาวิธีที่ง่ายกว่าถ้ามีอยู่
Bakhtiyor

3

นี่คือสคริปต์ python ที่จะทำสิ่งเดียวกันเช่นแยกชื่อและที่ตั้งของสถานีวิทยุอินเทอร์เน็ตจากฐานข้อมูล xml ที่ใช้โดย 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()

(ฉันเริ่มต้นด้วยบทช่วยสอนนี้เกี่ยวกับการทำงานกับฐานข้อมูล XML จากภายใน python: http://oreilly.com/catalog/pythonxml/chapter/ch01.html )


2

คุณสามารถใช้ xmlstarlet เพื่อดึงข้อมูลสำคัญออกจากไฟล์ XML ของคุณ ดูรายละเอียดที่นี่:

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


ดีชี้ไปที่การสอน xmlstarlet สำหรับเรื่องนี้
Sabacon

1
ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Marco Ceppi

ขอโทษด้วยกับเรื่องนั้น. ฉันเพิ่งแก้ไขเพื่อรวมแนวคิดหลัก (. ขอบคุณสำหรับการเชื่อมโยงที่ผมกังวลว่า reposting ข้อมูลอื่น ๆ จะมีการทำซ้ำข้อมูลเว็บโดยไม่จำเป็น.)
Colan

0

สำหรับการส่งออกอ่านไฟล์ ~/.local/share/rhythmbox/rhythmdb.xml
ถ้าคุณต้องการที่จะนำเข้าสร้างแฟ้มรายการ M3Uเป็น:

#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

และเปิดด้วย rhythmbox

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.