web-dev-qa-db-fra.com

Importer des stations de radio dans Rhythmbox

Je sais que Rhythmbox stocke toutes sortes d'informations dans ~/.local/share/rhythmbox/rhythmdb.xml.

Toutes les entrées avec type="iradio" sont des stations de radio.

Je voudrais importer des stations de radio de TuneIn .

Ma question est: existe-t-il une API que je peux utiliser pour manipuler cette base de données XML?

Je veux dire, je peux le faire à la main, mais comme Rhythmbox le manipule déjà et qu'il prend en charge les plugins, je suppose qu'il existe un meilleur moyen de le mettre à jour que de le faire en dehors de l'application.

[~ # ~] mise à jour [~ # ~]

J'ai fini par le mettre à jour à la main https://github.com/umpirsky/rhytmbox-tunein-import .

1
umpirsky

Rhythmbox a une [[# #]] c [~ # ~] / Python API que vous pouvez utiliser pour ajouter et modifier les détails des pistes/chansons/stations de radio/podcasts etc.

Vous n'écrivez pas directement dans le fichier local rythdb.xml - il s'agit d'un format XML interne susceptible de changer entre les versions.

Dans l'exemple suivant, les éléments clés sont les suivants:

  • "iradio" est le type d'entrée qui correspond aux stations de radio Internet stockées dans la base de données interne
  • vous créez de nouvelles entrées via RB.RhythmDBEntry.new
  • vous devez valider l'entrée dans la base de données avant de modifier des détails supplémentaires tels que le titre de la station de radio et le genre de la station
 de gi.repository import GObject, Peas 
 de gi.repository import RB 
 
 classe 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 ("activation de l'échantillon python") 
 
 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 (entrée, RB.RhythmDBPropType.TITLE, url) 
 db.entry_set (entrée, RB.RhythmDBPropType.GENRE, "Unknown") 
 
 def do_deactivate (self): 
 print ("désactivation de l'échantillon python plugin ") 
 
2
fossfreedom