Как импортировать / экспортировать список радиостанций Rhythmbox?

Можно ли каким-либо образом импортировать / экспортировать список радиостанций Rhythmbox?

Если нет, можете ли вы предложить мне какой-нибудь хороший музыкальный плеер, который имеет аналогичные функции, такие как Rhythmbox?

Спасибо!

10
задан 15 January 2011 в 15:54

44 ответа

здесь скрипт 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)

3
ответ дан 25 July 2018 в 22:37

Вы можете использовать xmlstarlet, чтобы вытащить основные данные из вашего XML-файла. Подробнее см. Здесь:

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

2
ответ дан 25 July 2018 в 22:37
  • 1
    Хороший указатель на учебник xmlstarlet для этого – Sabacon 8 February 2012 в 06:16
  • 2
    Хотя это теоретически может ответить на вопрос , было бы предпочтительно включить здесь основные части ответа и предоставить ссылку для справки. – Marco Ceppi♦ 8 February 2012 в 06:39
  • 3
    Извини за это. Я только что отредактировал его, включив в него основную идею. (Спасибо за ссылку. Я был обеспокоен тем, что повторная публикация другой информации будет дублировать веб-данные без необходимости.) – colan 8 February 2012 в 10:55

для экспорта читать файл ~/.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

0
ответ дан 25 July 2018 в 22:37

rhythmbox хранит информацию обо всех музыкальных файлах в ~ / .local / share / rhythmbox / rhythmdb.xml

Записи, касающиеся радиостанций, начинаются с «типа ввода iradio».

7
ответ дан 25 July 2018 в 22:37
  • 1
    Да, ты прав, я знал это раньше. Но я ищу более простой способ, если он существует. – Bakhtiyor 15 January 2011 в 15:56

здесь скрипт 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)

3
ответ дан 26 July 2018 в 23:06

Вы можете использовать xmlstarlet, чтобы вытащить основные данные из вашего XML-файла. Подробнее см. Здесь:

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

2
ответ дан 26 July 2018 в 23:06
  • 1
    Хороший указатель на учебник xmlstarlet для этого – Sabacon 8 February 2012 в 06:16
  • 2
    Хотя это теоретически может ответить на вопрос , было бы предпочтительно включить здесь основные части ответа и предоставить ссылку для справки. – Marco Ceppi♦ 8 February 2012 в 06:39
  • 3
    Извини за это. Я только что отредактировал его, включив в него основную идею. (Спасибо за ссылку. Я был обеспокоен тем, что повторная публикация другой информации будет дублировать веб-данные без необходимости.) – colan 8 February 2012 в 10:55

для экспорта читать файл ~/.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

0
ответ дан 26 July 2018 в 23:06

rhythmbox хранит информацию обо всех музыкальных файлах в ~ / .local / share / rhythmbox / rhythmdb.xml

Записи, касающиеся радиостанций, начинаются с «типа ввода iradio».

7
ответ дан 26 July 2018 в 23:06
  • 1
    Да, ты прав, я знал это раньше. Но я ищу более простой способ, если он существует. – Bakhtiyor 15 January 2011 в 15:56

здесь скрипт 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)

3
ответ дан 31 July 2018 в 10:50

Вы можете использовать xmlstarlet, чтобы вытащить основные данные из вашего XML-файла. Подробнее см. Здесь:

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

2
ответ дан 31 July 2018 в 10:50
  • 1
    Хороший указатель на учебник xmlstarlet для этого – Sabacon 8 February 2012 в 06:16
  • 2
    Хотя это теоретически может ответить на вопрос , было бы предпочтительно включить здесь основные части ответа и предоставить ссылку для справки. – Marco Ceppi♦ 8 February 2012 в 06:39
  • 3
    Извини за это. Я только что отредактировал его, включив в него основную идею. (Спасибо за ссылку. Я был обеспокоен тем, что повторная публикация другой информации будет дублировать веб-данные без необходимости.) – colan 8 February 2012 в 10:55

для экспорта читать файл ~/.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

0
ответ дан 31 July 2018 в 10:50

rhythmbox хранит информацию обо всех музыкальных файлах в ~ / .local / share / rhythmbox / rhythmdb.xml

Записи, касающиеся радиостанций, начинаются с «типа ввода iradio».

7
ответ дан 31 July 2018 в 10:50
  • 1
    Да, ты прав, я знал это раньше. Но я ищу более простой способ, если он существует. – Bakhtiyor 15 January 2011 в 15:56

здесь скрипт 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)

3
ответ дан 31 July 2018 в 10:56

Вы можете использовать xmlstarlet, чтобы вытащить основные данные из вашего XML-файла. Подробнее см. Здесь:

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

2
ответ дан 31 July 2018 в 10:56
  • 1
    Хороший указатель на учебник xmlstarlet для этого – Sabacon 8 February 2012 в 06:16
  • 2
    Хотя это теоретически может ответить на вопрос , было бы предпочтительно включить здесь основные части ответа и предоставить ссылку для справки. – Marco Ceppi♦ 8 February 2012 в 06:39
  • 3
    Извини за это. Я только что отредактировал его, включив в него основную идею. (Спасибо за ссылку. Я был обеспокоен тем, что повторная публикация другой информации будет дублировать веб-данные без необходимости.) – colan 8 February 2012 в 10:55

для экспорта читать файл ~/.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

0
ответ дан 31 July 2018 в 10:56

rhythmbox хранит информацию обо всех музыкальных файлах в ~ / .local / share / rhythmbox / rhythmdb.xml

Записи, касающиеся радиостанций, начинаются с «типа ввода iradio».

7
ответ дан 31 July 2018 в 10:56
  • 1
    Да, ты прав, я знал это раньше. Но я ищу более простой способ, если он существует. – Bakhtiyor 15 January 2011 в 15:56

здесь скрипт 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)

3
ответ дан 31 July 2018 в 11:55

Вы можете использовать xmlstarlet, чтобы вытащить основные данные из вашего XML-файла. Подробнее см. Здесь:

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

2
ответ дан 31 July 2018 в 11:55
  • 1
    Хороший указатель на учебник xmlstarlet для этого – Sabacon 8 February 2012 в 06:16
  • 2
    Хотя это теоретически может ответить на вопрос , было бы предпочтительно включить здесь основные части ответа и предоставить ссылку для справки. – Marco Ceppi♦ 8 February 2012 в 06:39
  • 3
    Извини за это. Я только что отредактировал его, включив в него основную идею. (Спасибо за ссылку. Я был обеспокоен тем, что повторная публикация другой информации будет дублировать веб-данные без необходимости.) – colan 8 February 2012 в 10:55

для экспорта прочитайте файл ~/.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

0
ответ дан 31 July 2018 в 11:55

rhythmbox хранит информацию обо всех музыкальных файлах в ~ / .local / share / rhythmbox / rhythmdb.xml

Записи, касающиеся радиостанций, начинаются с «типа ввода iradio».

7
ответ дан 31 July 2018 в 11:55
  • 1
    Да, ты прав, я знал это раньше. Но я ищу более простой способ, если он существует. – Bakhtiyor 15 January 2011 в 15:56

здесь скрипт 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)

3
ответ дан 2 August 2018 в 04:03

Вы можете использовать xmlstarlet, чтобы вытащить основные данные из вашего XML-файла. Подробнее см. Здесь:

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

2
ответ дан 2 August 2018 в 04:03
  • 1
    Хороший указатель на учебник xmlstarlet для этого – Sabacon 8 February 2012 в 06:16
  • 2
    Хотя это теоретически может ответить на вопрос , было бы предпочтительно включить здесь основные части ответа и предоставить ссылку для справки. – Marco Ceppi♦ 8 February 2012 в 06:39
  • 3
    Извини за это. Я только что отредактировал его, включив в него основную идею. (Спасибо за ссылку. Я был обеспокоен тем, что повторная публикация другой информации будет дублировать веб-данные без необходимости.) – colan 8 February 2012 в 10:55

для экспорта читать файл ~/.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

0
ответ дан 2 August 2018 в 04:03

rhythmbox хранит информацию обо всех музыкальных файлах в ~ / .local / share / rhythmbox / rhythmdb.xml

Записи, касающиеся радиостанций, начинаются с «типа ввода iradio».

7
ответ дан 2 August 2018 в 04:03
  • 1
    Да, ты прав, я знал это раньше. Но я ищу более простой способ, если он существует. – Bakhtiyor 15 January 2011 в 15:56

здесь скрипт 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)

3
ответ дан 4 August 2018 в 20:07

Вы можете использовать xmlstarlet, чтобы вытащить основные данные из вашего XML-файла. Подробнее см. Здесь:

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

2
ответ дан 4 August 2018 в 20:07
  • 1
    Хороший указатель на учебник xmlstarlet для этого – Sabacon 8 February 2012 в 06:16
  • 2
    Хотя это теоретически может ответить на вопрос , было бы предпочтительно включить здесь основные части ответа и предоставить ссылку для справки. – Marco Ceppi♦ 8 February 2012 в 06:39
  • 3
    Извини за это. Я только что отредактировал его, включив в него основную идею. (Спасибо за ссылку. Я был обеспокоен тем, что повторная публикация другой информации будет дублировать веб-данные без необходимости.) – colan 8 February 2012 в 10:55

для экспорта читать файл ~/.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

0
ответ дан 4 August 2018 в 20:07

rhythmbox хранит информацию обо всех музыкальных файлах в ~ / .local / share / rhythmbox / rhythmdb.xml

Записи, касающиеся радиостанций, начинаются с «типа ввода iradio».

7
ответ дан 4 August 2018 в 20:07
  • 1
    Да, ты прав, я знал это раньше. Но я ищу более простой способ, если он существует. – Bakhtiyor 15 January 2011 в 15:56

здесь скрипт 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)

3
ответ дан 6 August 2018 в 04:08

Вы можете использовать xmlstarlet, чтобы вытащить основные данные из вашего XML-файла. Подробнее см. Здесь:

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

2
ответ дан 6 August 2018 в 04:08
  • 1
    Хороший указатель на учебник xmlstarlet для этого – Sabacon 8 February 2012 в 06:16
  • 2
    Хотя это теоретически может ответить на вопрос , было бы предпочтительно включить здесь основные части ответа и предоставить ссылку для справки. – Marco Ceppi♦ 8 February 2012 в 06:39
  • 3
    Извини за это. Я только что отредактировал его, включив в него основную идею. (Спасибо за ссылку. Я был обеспокоен тем, что повторная публикация другой информации будет дублировать веб-данные без необходимости.) – colan 8 February 2012 в 10:55

Другие вопросы по тегам:

Похожие вопросы: