alternativshik / vk_search

Listen music from Vk.com in Amarok
10 stars 3 forks source link

Не работает #10

Open trufanov-nok opened 8 years ago

trufanov-nok commented 8 years ago

В чем проблема пофиксить баг с libwebkit.so?

ilya-ilya commented 8 years ago

Тогда нужно отказываться от загрузки интерфейса из *ui, как например здесь https://github.com/ilya-ilya/vk_search . Это проблема, насколько я понимаю, в самом байндинге для js.

trufanov-nok commented 8 years ago

Я поковырялся и выяснил следующее. 1 . Ваш вариант из коробки тоже не заработал. На Importer.loadQtBinding("qt.webkit"); Amarok утверждал, что такого в системе нет. У меня Kubuntu 16.04 с Qt 5.5.1. Я погуглил - они теперь считают QtWebKit depricated модулем и переезжают на QtWebEngine. Попробовал в скрипте тупо перебить один класс на другой в расчете на одинаковый интерфейс - хрен. Amarok заявил, что необходимый модуль qt.webenginewidgets запрещен. Выяснилось что в штатном Amarok 2.8 (брал с Muon) захардкожены 7 старых модулей, которые он позволяет грузить. Это тут в ScriptImporter::loadQtBinding( const QString& binding ) и никаких qt.webenginewidgets он знать не хочет. Но недавно вышла бета Amarok 2.9 и там этой проверки нет. В бинарниках его не раздают. Я полез собирать исходники - обплевался и бросил это дело. Так что возможен ли будет переезд на QWebEngine в сл версии Amarok мне выяснить не удалось. Проблему с отсутсвующим биндингом к qt.webkit в своей системе я в итоге решил через

sudo apt-get install libqtscript4-webkit

2 . Потом вернулся ковырять оригинальный скрипт. Как известно, он не работает, т.к. в папке /usr/lib/x86_64-linux-gnu/qt4/plugins/designer отсутствует libqwebview.so и, судя по всему, из нормальных репозиториев ее не достать. Но зато там есть kdewebkitwidgets.so. Я посмотрел, что умеет QUILoader через availableWidgets() и он не умеет QWebView, но умеет [KWebView](Inherits QWebView), который от QWebView порожден. Я полез в auth.ui, стер все что в тегах <customwidgets>, и заменил в единственно оставшемся месте QWebView на KWebView - и все заработало. Мне кажется, что решение на KWebView работало даже лучще QWebView. Через QWebView у меня список песен кривоватый был и аватарки друзей вроде не грузились.

Amarok - продукт KDE, и зависит от kde-runtime, а тот от kdelibs5-plugins, который и тащит за собой /qt4/plugins/designer/kdewebkitwidgets.so. Поэтому вероятность иметь доступ к KWebView на линуксе должна быть высокой.

Так что я предлагаю решение, не требующее доустановки пакетов - проверять в main.js у UIloader::availableWidgets() знает ли он QWebView. Если нет - то знает ли KWebView. И если да - то налету в памяти менять auth.ui. Думаю, достаточно будет заменить одну букву в одном месте.