web-dev-qa-db-ja.com

Rhythmboxにラジオ局をインポートする

Rhythmboxはあらゆる種類の情報を~/.local/share/rhythmbox/rhythmdb.xmlに保存することを知っています。

type="iradio"の付いたエントリはすべてラジオ局です。

TuneIn からラジオ局をインポートしたい。

私の質問は:このxmlデータベースを操作するために使用できるAPIはありますか?

つまり、私は手でそれを行うことができますが、Rhythmboxはすでにそれを操作しており、プラグインをサポートしているので、アプリの外でそれを更新するより良い方法があると思います。

[〜#〜]更新[〜#〜]

私はそれを手動で更新してしまいました https://github.com/umpirsky/rhytmbox-tunein-import

1
umpirsky

Rhythmboxには [〜#〜] c [〜#〜] / Python APIがあり、トラック/曲/ラジオステーション/ポッドキャストの詳細を追加および変更できます等.

ローカルの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プラグイン ")
 
2
fossfreedom