Поиск по блогу

среда, 1 мая 2019 г.

Обновил конвертер JTV в XMLTV

Несколько лет назад интернет-провайдер, который первым в нашем доме предложил интернет через Ethernet, предоставлял программу передач для IPTV только в формате JTV.
Формат JTV появился в одноименной программе польского разработчика Ярослава Ковальского для ТВ-тюнеров на базе чипов bt8x8. Это двоичный формат, база телепрограмм JTV обычно является архивом ZIP или RAR, содержащим пары файлов (с расширением NDX и PDT) для каждого телеканала.
Программа передач в формате XMLTV тогда провайдером не предоставлялась и собирать EPG из разных источников было проблемой. Я поискал в интернете и не найдя готового конвертера из JTV в XMLTV написал свой.

Спустя три года я подтянул свои знания в Python и решил в качестве практического упражнения обновить утилиту. Несколько часов ушло на рефакторинг кода и добавление тестов. Благодаря одному из них я нашел ошибку, которую не замечал несколько лет - в результирующем XML отстутствовала самая последняя передача.

Добавил tox для запуска проверок в изолированных окружениях. Последним штрихом реализовал поддержку python 3.x, которая стоила мне нескольких часов отладки проблем с кодировками в zipfile. Согласно .ZIP File Format Specification (Appendix D) при кодировании имен файлов допускается использовать cp437 либо UTF-8, но многие реализации zip отступают от стандарта и используют другие кодировки. В частности русскоязычная Windows использует cp866 для имен файлов содержащих кириллицу. А поскольку в JTV имя файла задает название канала, то важно правильно декодировать его.

В итоге я добавил поддержку python 3.x, тесты и пакет для Debian/Ubuntu. Пакет jtv2xmltv версии 0.1.1 для Debian/Ubuntu можно скачать из моего репозитария или с GitHub.

Комментариев нет:

Отправить комментарий