vlmaksime / plugin.video.filmix

Видеодополнение "Filmix" для медиацентра XBMC/KODI
33 stars 6 forks source link

Масштабирование/Отображение постеров Kodi > v18 #8

Open AKotov-dev opened 1 year ago

AKotov-dev commented 1 year ago

Здравствуйте, уважаемый vlmaksime. Большое спасибо за Вашу работу над плагином Filmix. Если это не слишком обременит Вас, хотел бы обратиться к Вам за консультацией...

Начиная с Kodi-19-Matrix и в Kodi-20-Nexus некоторые постеры/обложки у меня не отображаются. C питоном я не работаю, однако по следам Ваших изменений я предпринял скромную попытку выяснить, в чем дело и в качестве эксперимента исправил для себя кое что здесь:

~/.kodi/addons/plugin.video.filmix/recources/libs/listitems.py

Заменил return self._item_info['poster'].replace('thumbs/w220', 'orig') на return self._item_info['poster'].replace('thumbs/w221', 'orig') или на return self._item_info['poster'].replace('100', 'orig')

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

Другие плагины, например seasonvar постеры кажут верно.

Разрешение экрана моего TV - 1360x768, карта NVidia GeForce-6200 AGP/SSE2, Linux Mageia-6.1_i586, Python-3.9.

Вопрос: Как правильно масштабировать постеры в моём случае? Спасибо.

С уважением, Алексей

vlmaksime commented 1 year ago

Приветствую! Изначально, в API сервера возвращает ссылки на постеры в низком разрешении. Строка кода return self._item_info['poster'].replace('thumbs/w220', 'orig') выполняет подмену части ссылки, чтоб всегда использовался постер в оригинальном разрешении. Ваши изменения в коде приводят к тому, что все постеры выводятся в низком разрешении. Возможно постер в высоком качестве просто долго подгружается, из-за этого он у Вас не отображается.

Попробуйте в модуле код функции

    def get_poster(self):
        return self._item_info['poster'].replace('thumbs/w220', 'orig')

заменить на код

    def get_poster(self):
        from .web import Filmix
        api = Filmix()

        poster_url = self._item_info['poster'].replace('thumbs/w220', 'orig')
        if not api.url_available(poster_url):
            poster_url = self._item_info['poster']

        return poster_url

Это изменение добавить проверку на доступность постера. Если по какой-то причине постер в высоком качестве не доступен, будет использоваться постер в низком качестве.

AKotov-dev commented 1 year ago

Благодарю. Сейчас применил изменения. Эффект такой, что теперь категория "Фильмы" открывается с паузой ~2 мин (у меня скорость канала 6Мбит/Сек), а после открытия - как и прежде: какие-то постеры отображаются (в хорошем качестве), а какие-то замещены черной картинкой с кинокамерой, т.е. не отображаются. Видно, что он пытается его показать (присутствует пауза, т.е. он куда-то там лазает), но такое ощущение, что по причине того, что не может смасштабировать полученное, соответственно не может и запихать его в правый фрейм (не знаю, как правильно назвать часть окна, где размещается постер Коди).

vlmaksime commented 1 year ago

Скорей всего, KODI просто не успевает подгрузить картинку. Попробуйте сделать получение постеров только низком качестве, установив функцию с кодом

    def get_poster(self):
        return self._item_info['poster']

Все постеры будут в низком качестве и должны будут быстро прогружаться

AKotov-dev commented 1 year ago

Большое спасибо, так заработало. :) Пожалуй так и оставлю.

Мой "крутой" медиа-центр - это компьютер с P4, возрастом около 17 лет + пульт от старого TV. К нему уже привык и готовлю "слепки ОС" со всем предустановленным и обновлённым софтом на виртуалке на другом компе, затем обычным способом ставлю с флешки. Недавно 2 дня обновлял OpenSSL-3.0.9, Python-3.9 и GCC-12.3, а то Kodi Nexus не собирался, сейчас всё работает. Странно то, что на виртуалке нет таких проблем с постерами. Теперь подозреваю, что проблема тянется от железа.

Ок. В любом случае я очень Вам признателен за помощь. Желаю успехов Вам и Вашим замечательным проектам.

С уважением, Алексей

vlmaksime commented 1 year ago

Давно хотел в настройку добавить пункт с выбором качества постеров, но руки никак не доходили. Будет повод

Мой "крутой" медиа-центр - это компьютер с P4, возрастом около 17 лет + пульт от старого TV.

Зачем над собой так издеваться, когда можно купить X96Max Plus Ultra за $35, поставить на него CoreELEC и радоваться жизни. Маленький, не шумит, экономит электроэнергию.

AKotov-dev commented 1 year ago

купить X96Max Plus Ultra

А как же получить удовольствие? Ведь согласитесь, - куда интересней заменить взорванные электролиты в обвязке процессора, обновить термопасту, кулеры, перепрошить биос, спаять ик-приёмник, повесить его на com-порт, настроить lirc с пультом и собрать нужный софт из исходников? Впрочем, вероятно Вы правы - это тоже на любителя. Но за совет спасибо, обязательно воспользуюсь (в перспективе). :)

AKotov-dev commented 1 year ago

Здравствуйте, vlmaksime. Похоже, что проблема была в этом:

Kodi version updates From v18, the 1920x1080 resolution limitation has been removed. Using the following code in your advancedsettings.xml will allow caching artwork at original size.

Оказалось, что нужно создать файл ~/.kodi/userdata/advancedsettings.xml

<advancedsettings version="1.0">
    <imageres>9999</imageres>
    <fanartres>9999</fanartres>
</advancedsettings>

...и перезапустить Kodi. Теперь постеры масштабируются так же, как в предыдущих (до v18 включительно) версиях.

Уже обновился до Kodi-v21.0a2-Omega. Полёт нормальный.

Полезные ссылки:

Благодарю Вас за консультацию.

С уважением, Алексей