LINUX.ORG.RU

Простой способ работы с DBus в Python?

 ,


0

3

Привет всем!

Задача - простая работа с готовыми MPRIS-интерфейсами у медиаплееров: чтение атрибутов, вызов методов.

Что успел понять. Есть три пути:
1) dbus-python: старый неподдерживаемый биндинг к libdbus
2) биндинги для Glib
3) биндинги для Qt

Первый вариант не рекомендуют сами создатели либы, третий, признаюсь, еще не смотрел, изучал что там с рекомендуемым Glib. И чет приуныл в результате. Конкретно по работе с DBus не могу найти туториалов, по биндингам к этому модулю документация околонулевая, есть только сишная по отдельным классам, а как их вместе использовать - непонятно мне.

Гхм, в общем, вопрос - кто какой путь посоветует, как сами делали подобные вещи?

Я ничего не понимаю в вопросе, но вот тут смотрел? https://www.freedesktop.org/wiki/Software/DBusBindings/

Там рекомендуют pydbus который основан на интроспекции GDBus. Вроде как это достаточно современный способ «делать» (я так понимаю что ничего и делать-то не надо) биндинги к питону.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

Читал эту страницу, видел эту библиотеку. Не знаю, не внушает она мне доверия. Рандомный проект на гытхабчике из 20 коммитов годичной давности, и все равно для работы придется обмазаться глибовскими объектами, не?

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

robert_foster ★★ ()
Ответ на: комментарий от robert_foster

придется обмазаться глибовскими объектами, не?

Какой смысл ты вкладываешь в слово «обмазаться»? Питон наконец-то научился нормально работать с glib-овскими библиотеками и теперь не надо городить велосипеды каждый раз когда нужен очередной биндинг. Я бы назвал это win, но если ты считаешь что раньше мир был лучше...

Рандомный проект на гытхабчике из 20 коммитов

Есть какие-то объективные претензии к проекту или ты просто перенял моду молодых дуреней ругать гитхаб и всё что на нём лежит? Ну, лежало бы тоже самое в svn/ftp на gnu.org, ты бы по-другому воспринимал проект?

Я пробежался по исходникам, читаются легко и непринуждённо. Не вижу проблем если оно работает.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

Бро, ты извини, конечно, вроде помочь хочешь, а я тут выступаю.

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

Что касается гитхабчика - тут моя профобласть наложилась, извините. На хлеб зарабатываю js-frontend'ом, и уже устал от продуктов жизнедеятельности хипстеров и сопутствующей шумихи. Выложат корявую библиотечку, статейку на хабр тиснут и радости полные штаны. И не дай бог это неподдерживаемое чудо тебе в проект притащат коллеги.

robert_foster ★★ ()
Ответ на: комментарий от robert_foster

с соответсвующим качеством кода

Хы-хы-хы :)

и документации.

У тебя есть конкретные вопросы на которые не нашлось ответа в документации? Задавай. Правда, dbus я в последний раз видел в году 2008-м...

Выложат корявую библиотечку

Всё так и есть, надо тщательно выбирать что тащить. Вне зависимости гитхаб это или нет. Зато с гитхабом относительно простой воркфлоу — и баг легко создать, и фикс отправить... Мир разработки полон боли, каждый день в этом убеждаюсь. И на гитхаб иногда больно смотреть, но дело-то не в гитхабе.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

У тебя есть конкретные вопросы на которые не нашлось ответа в документации? Задавай. Правда, dbus я в последний раз видел в году 2008-м...

Да ну, это будут вопросы уровня «сделай все за меня», я такое сам не люблю. Общий подход непонятен мне, какие объекты создавать, зачем. Но спасибо, что предложил.

Походу мне надо не быстрые пути искать, «фигак-фигак по туториалу», а вникнуть надо в суть дбаса и глиба. Сейчас длинные выходные будут, вот и займусь пожалуй.

Мир разработки полон боли

Хоть кто-то меня понимает :)

И на гитхаб иногда больно смотреть, но дело-то не в гитхабе.

Ну ды, дело было не в бобине, а в долбаных хипстерах возомнивших себя программными инженерами.

robert_foster ★★ ()
Ответ на: комментарий от robert_foster

Я недоволен качеством документации гномьих биндингов

Там же однозначное отображение на сишный интерфейс. Поэтому документацию ты не там пытаешься увидеть.

основной ipc-шиной в линуксах

Гомерический хохот в зале.

anonymous ()
Ответ на: комментарий от anonymous

Там же однозначное отображение на сишный интерфейс. Поэтому документацию ты не там пытаешься увидеть.

Увы, мои скромные знания Си не позволяют так вот просто взять и «отобразить». Иначе бы на Си и писал. Вот здесь я бывал уже: https://developer.gnome.org/gio/2.46/gdbus-convenience.html Там есть список типа «классов». Но как ими пользоваться, опять же, что вызвать, в каком порядке. Ни туториала, ничего. А вот референс по биндингам, упомянутый на гномовики: http://lazka.github.io/pgi-docs/ Там вообще про DBus чуть более чем ничего. Ну бесит же, ну.

Гомерический хохот в зале.

А что не так? Весь десктоп, а теперь еще и системДе завязаны на него. Грозились чуть ли не в ядро затащить.

robert_foster ★★ ()
Ответ на: комментарий от robert_foster

Увы, мои скромные знания Си не позволяют так вот просто взять и «отобразить». Иначе бы на Си и писал.

Ой-ой-ой, так это не работает. Надо сначала в общих чертах сам dbus изучить. Это не тот инструмент из разряда sdelai_mne_zashibis(). Док для pydbus и нету потому что они не нужны, там на 90% тот же интерфейс что и в сях.

Расскажи что ты вообще пытаешься сделать. Возможно, dbus тебе не нужен.

true_admin ★★★★★ ()
Ответ на: комментарий от robert_foster

А что не так? Весь десктоп

Не весь, далеко не весь. А если ты вспомнишь про нотификашки, то у них есть стандартный libnotify, и то что там dbus, просто деталь реализации. Интеграция линуксячих приложений между собой просто аховая и угребищность dbus как ipc не последняя причина в этой грустной истории.

а теперь еще и системДе

Почитай ради интереса lkml. Эти идиоты почему-то решили что интерфейс dbus (абсолютно дырявый в плане безопасности) можно использовать в качестве шины для синхронизации кусков systemd, потом поняли что он медленный и изобрели kdbus, потом пришел Линус и сказал что идиоты из systemd мерили юзерспейс, тогда они сказали что в рамках kdbus они залатали дыры в безопасности, в общем продолжают натягивать лягушку на слона, а PR так и висит непринятым уже несколько релизов ядра подряд. А то что идиоты из федорки уже полностью обмазались kdbus в своем тупом дистре, ну блин, кто ж им запретит.

anonymous ()
Ответ на: комментарий от anonymous

Кстати, походу труп kdbus перестали насиловать и начали пилить https://github.com/bus1/bus1, с нуля спроектированный исключительно ядреный ipc. Так что важность dbus немного преувеличена.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.