Радиостанции импорта в Rhythmbox

Я знаю, что Rhythmbox хранит весь вид информации в ~/.local/share/rhythmbox/rhythmdb.xml.

Все записи с type="iradio" радиостанции.

Я хотел бы импортировать радиостанции из TuneIn.

Мой вопрос: есть ли какой-либо API, который я могу использовать для управления этой xml базой данных?

Я имею в виду, я могу сделать это вручную, но так как Rhythmbox уже управляет им, и это имеет сменную поддержку, я предполагаю, что существует некоторый лучший способ обновить его, затем делая его за пределами приложения.

ОБНОВЛЕНИЕ

Я закончил тем, что обновил его вручную https://github.com/umpirsky/rhytmbox-tunein-import.

1
задан 10 October 2014 в 16:40

1 ответ

Rhythmbox действительно имеет C / API Python , который можно использовать, чтобы добавить и изменить детали дорожек / песни / радиостанции / подкасты и т.д.

, Вы не пишете непосредственно в локальный rhythmdb.xml - это - внутренний формат XML, подлежащий изменению между версиями.

В следующем образце ключевые роли следующие:

  • "iradio" является entry_type, который соответствует интернет-радиостанциям, сохраненным во внутренней базе данных
  • , Вы создаете новые записи через RB.RhythmDBEntry.new
  • , необходимо передать запись в базу данных прежде, чем изменить дополнительные детали, такие как заголовок радиостанции и жанр станции
from gi.repository import GObject, Peas
from gi.repository import RB

class SamplePython(GObject.Object, Peas.Activatable):
    __gtype_name = 'SamplePythonPlugin'
    object = GObject.property(type=GObject.GObject)

    def __init__(self):
        GObject.Object.__init__(self)

    def do_activate(self):
        print("activating sample python plugin")

        shell = self.object
        db = shell.props.db

        entry_type = db.entry_type_get_by_name("iradio")

        url = "http://bbc.co.uk/radio/listen/live/r1.asx"
        entry = RB.RhythmDBEntry.new(db, entry_type, url)
        db.commit()
        db.entry_set(entry, RB.RhythmDBPropType.TITLE, url)
        db.entry_set(entry, RB.RhythmDBPropType.GENRE, "Unknown")

    def do_deactivate(self):
        print("deactivating sample python plugin")

2
ответ дан 11 November 2019 в 09:31

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

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