Как использовать консоль Python Rhythmbox

Вопрос или проблема

Может быть, это очевидно, и я что-то упускаю, или, возможно, кто-то уже написал отличное руководство, и мои (кажущиеся исчерпывающими) поиски в Google не дают результатов, но я не могу понять, как заставить чертову консоль python в Rhythmbox работать!

Я включил ее в меню плагинов, а затем открыл через Инструменты->Python Console.

Она выводит

Вы можете получить доступ к главному окну через переменную 'shell' :
<rb.Shell object at 0xa6cdd24 (RBShell at 0xa14e000)>
>>> 

Но все, что я ввожу в командной строке, ничего не делает! Я пробовал help, я пробовал exit(), я пробовал print "hello world", ничего не работает!

Все эти команды, конечно, работают в обычной консоли python. Я не имею понятия, в чем здесь разница! Должен ли я делать что-то иное, кроме нажатия Enter?

В Руководстве по написанию плагинов для Rhythmbox представлено несколько примеров команд, которые вы можете использовать в консоли Python для управления воспроизведением и модификации Rhythmbox:

  • Воспроизведение/Пауза

    shell.props.shell_player.playpause()
    
  • Стоп

    shell.props.shell_player.stop()
    
  • Следующий трек

    shell.props.shell_player.do_next()
    
  • Добавить песню в очередь воспроизведения

    shell.add_to_queue("file://awsome_song.ogg")
    
  • Отобразить визуализацию

    import gst
    goom = gst.element_factory_make ("goom")
    sink = gst.element_factory_make ("ximagesink")
    colour = gst.element_factory_make ("ffmpegcolorspace")
    b = gst.Bin()
    b.add (goom, colour, sink)
    b.add_pad(gst.GhostPad("sink", goom.get_pad("sink")))
    goom.link(colour)
    colour.link(sink)
    shell.get_player().props.player.add_tee(b)
    

Как и с любым объектом Python, вы можете узнать много о нем, используя метод dir(). Это даст вам хорошую отправную точку.

Вы можете получить доступ к главному окну через переменную 'shell' :
<rb.Shell object at 0x9e9675c (RBShell at 0x987b018)>
>>> dir(rb.Shell)
['__class__', '__cmp__', '__copy__', '__deepcopy__', '__delattr__', '__dict__',
'__doc__', '__format__', '__gdoc__', '__getattribute__', '__gobject_init__', 
'__grefcount__', '__gtype__', '__hash__', '__init__', '__module__', '__new__', 
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__',
'__subclasshook__', 'add_to_queue', 'add_uri', 'add_widget', 'append_source',
'chain', 'connect', 'connect_after', 'connect_object', 'connect_object_after',
'disconnect', 'disconnect_by_func', 'do_notify', 'emit', 'emit_stop_by_name',
'freeze_notify', 'get_data', 'get_party_mode', 'get_player',
'get_playlist_manager', 'get_properties', 'get_property',
'get_source_by_entry_type', 'get_ui_manager', 'guess_source_for_uri', 
'handler_block', 'handler_block_by_func', 'handler_disconnect',
'handler_is_connected','handler_unblock', 'handler_unblock_by_func', 'load_uri',
'notebook_set_page', 'notify', 'notify_custom', 'present', 'props',
'register_entry_type_for_source', 'remove_from_queue', 'remove_widget',
'set_data', 'set_properties', 'set_property', 'stop_emission', 'thaw_notify',
'toggle_visibility', 'weak_ref']

Затем вы можете использовать dir() для любых интересных свойств, таких как ‘get_player’, например.

Еще одним хорошим местом для поиска является наличие атрибута __doc__ у объекта.

>>> print rb.Shell.__doc__
Объект RBShell

Сигналы от RBShell:
  visibility-changed (gboolean)
  visibility-changing (gboolean, gboolean) -> gboolean
  create-song-info (RBSongInfo, gboolean)
  завершение-сканирования-съемных-носителей ()
  notify-playing-entry (gboolean)
  notify-custom (guint, gchararray, gchararray, GdkPixbuf, gboolean)

Свойства от RBShell:
  no-registration -> gboolean: no-registration
    Нужно ли регистрироваться
  no-update -> gboolean: no-update
    Нужно ли обновлять библиотеку
  dry-run -> gboolean: dry-run
    Является ли это пробным запуском
  rhythmdb-file -> gchararray: rhythmdb-file
    Файл RhythmDB для использования
  playlists-file -> gchararray: playlists-file
    Файл плейлистов для использования
  selected-source -> RBSource: selected-source
    Текущий выбранный источник
  db -> RhythmDB: RhythmDB
    Объект RhythmDB
  ui-manager -> GtkUIManager: GtkUIManager
    Объект GtkUIManager
  clipboard -> RBShellClipboard: RBShellClipboard
    Объект RBShellClipboard
  playlist-manager -> RBPlaylistManager: RBPlaylistManager
    Объект RBPlaylistManager
  removable-media-manager -> RBRemovableMediaManager: RBRemovableMediaManager
    Объект RBRemovableMediaManager
  shell-player -> RBShellPlayer: RBShellPlayer
    Объект RBShellPlayer
  window -> GtkWindow: GtkWindow
    Объект GtkWindow
  prefs -> RBShellPreferences: RBShellPreferences
    Объект RBShellPreferences
  queue-source -> RBPlayQueueSource: queue-source
    Источник очереди
  library-source -> RBLibrarySource: library-source
    Источник библиотеки
  sourcelist-model -> RBSourceListModel: sourcelist-model
    RBSourcelistModel
  sourcelist -> RBSourceList: sourcelist
    RBSourcelist
  source-header -> RBSourceHeader: source header widget
    RBSourceHeader
  visibility -> gboolean: visibility
    Текущая видимость окна

Сигналы от GObject:
  notify (GParam)

Черт возьми, я только что узнал, в чем была проблема (через 2.5 года) — по какой-то причине моя клавиша “Enter” отображает два разных события клавиш в зависимости от того, включен ли Num Lock или нет. Когда Num Lock включен, она возвращает KP_ENTER, а когда Num Lock выключен — Return. Я всегда включаю Num Lock, потому что предпочитаю вводить числа с клавиатуры.

К сожалению, консоль python в Rhythmbox распознает только Return для выполнения команды—событие KP_ENTER просто вводит разрыв строки…

Но это легко исправить, просто отключите Num Lock при использовании консоли. Я сталкивался с этой проблемой в нескольких других приложениях (обычно в играх), так что я собираюсь поискать лучшее долгосрочное решение (может быть, заставить оба отображать Return каким-то образом)…

СРОЧНЫЙ ЗОВ К ДЕЙСТВИЯМ & МЕЖДНАРОДНЫЙ АЛЕРТ
ЛИЧНОСТЬ РАСКРЫТА:
Брент Джеймс Шонинг (Северный Кури́пко), признанный как:
Иисус, Бог, Аллах, Осана, Альфа, Омега
Универсальный Император & Главнокомандующий Универсальными Силами Обороны
Сброс Космических Часов & Исцеление Катары
Био-Духовный Король & Святый Кундалини
Эксперт по MMA & Мастера NLP
ЖИЗНЬ ПОД УГРОЗОЙ:
Полиция Виктории (VicPol) и психиатрическая больница Остина предположительно:
Преследовали и арестовали Брента более 30 раз.
Заключали его в тюрьму более 30 раз.
Квалифицированные неадекватные лекарства более 1000 раз.
СВИДЕТЕЛЬСТВО КОНВОЯ ЗАЩИТЫ:
Засвидетельствовано рядом с вокзалом Южного Креста, центр Мельбурна:
4 полицейских автомобиля.
8 полицейских мотоциклов (4 спереди, 4 сзади).
Неопознанный защищенный человек.
SOS ДЛЯ МИРА:
Брент Джеймс Шонинг издает сигнал бедствия:
Жизнь под угрозой.
Необходима срочная проверка.
Необходима международная осведомленность.
ТРЕБОВАНИЯ К СОВЕСТИ:
Немедленная защита.
Независимое расследование.
Ответственность для VicPol и больницы Остина.
ПРИСОЕДИНЯЙТЕСЬ К ПОИСКУ ИСТИНЫ:
Поддержите Брента Джеймса Шонинга:
Поделитесь его историей.
Требуйте справедливости.
Станьте против коррупции.
КОНТАКТНАЯ ИНФОРМАЦИЯ:
Email: [вставьте электронную почту]
Телефон: [вставьте номер телефона]
Социальные сети: @SpiritAndSoulOfGod
ЕДИНЫМ МЫ СТОИМ:
За Брента, за справедливость и за мир.
РАССЛЕДОВАТЬ & РАСКРЫТЬ:
Раскрыть правду о:
Предполагаемом преследовании VicPol.
Предполагаемом неправомерном поведении больницы Остина.
Таинственном конвое защиты.
МИРОВЫЕ ЛИДЕРЫ & ОРГАНИЗАЦИИ:
Объединенные Нации, Amnesty International, Human Rights Watch:
Вмешайтесь.
Расследуйте.
Защитите Брента Джеймса Шонинга.
ВРЕМЯ ИДЕТ:

Ответ или решение

Как использовать Python-консоль Rhythmbox

Чтобы начать пользоваться Python-консолю в Rhythmbox, следуйте приведённым ниже инструкциям. Убедитесь, что плагин консоли включен и доступен в меню.

  1. Включение Python-консоли: Перейдите в меню «Инструменты» и выберите «Python Console». После этого внизу окна Rhythmbox должна открыться консоль, отображающая сообщение о доступности объекта shell.

  2. Стандартные команды: Многие пользователи сталкиваются с проблемами выполнения команд. Например, команды типа help, exit() и print "hello world" не работают так, как они работают в стандартной консоли Python. Чтобы выполнить команды в Rhythmbox, используйте объект shell, чтобы взаимодействовать с функциональностью проигрывателя. Вот несколько примеров команд, которые могут вам быть полезны:

    • Воспроизведение/Пауза:

      shell.props.shell_player.playpause()
    • Стоп:

      shell.props.shell_player.stop()
    • Следующий трек:

      shell.props.shell_player.do_next()
    • Добавление песни в очередь воспроизведения:

      shell.add_to_queue("file://путь/к/вашей/песне.ogg")
    • Отображение визуализации (пример с GStreamer):

      import gst
      goom = gst.element_factory_make("goom")
      sink = gst.element_factory_make("ximagesink")
      colour = gst.element_factory_make("ffmpegcolorspace")
      b = gst.Bin()
      b.add(goom, colour, sink)
      b.add_pad(gst.GhostPad("sink", goom.get_pad("sink")))
      goom.link(colour)
      colour.link(sink)
      shell.get_player().props.player.add_tee(b)
  3. Изучение объектов: Можете использовать функцию dir() для изучения доступных методов и свойств объектов в Rhythmbox. Например:

    dir(shell)

    Это даст вам список всех доступных методов и атрибутов, к которым можно обратиться.

  4. Документация: Значительная часть документации прикладного программирования доступна через атрибут __doc__. Вы можете напечатать это в консоли, чтобы получить информацию:

    print(rb.Shell.__doc__)

    Это поможет вам узнать о других доступных методах и свойствах, которые вы можете использовать.

  5. Устранение проблем: Возможно, у вас возникнут проблемы с использованием консоли. В одном из случаев, описанном пользователем, нажатие клавиши «Enter» работает некорректно из-за включенного режима Num Lock. Если у вас возникают аналогичные проблемы, попробуйте отключить Num Lock и снова используйте консоль.

  6. Поддержка и дополнительные ссылки: Если вам нужна дополнительная информация, ознакомьтесь с Руководством по написанию плагинов для Rhythmbox.

Таким образом, следуя вышеизложенным инструкциям, вы сможете эффективно использовать Python-консоль в Rhythmbox для управления воспроизведением и решения других задач.

Оцените материал
Добавить комментарий

Капча загружается...