![]() |
|
![]() |
#1 |
Senior Member
Регистрация: 18.10.2015
Адрес: Donetsk, Russia
Сообщений: 1,076
|
![]()
Скрипт предназначен для загрузки программы телепередач с ресурса https://tv.mail.ru/
Скачать скрипт можно из репозитория ТУТ Для оптимизации загружаемых данных, скрипт грузит программу только для избранных телеканалов. Поэтому нам понадобиться учетная запись на сервисе @mail.ru. Список избранных каналов привязывается к текущему региону (городу), поэтому желательно указать свой регион вручную, при настройке скрипта. Основная задача скрипта - получение телепрограммы для Tvheadend 4, установленного на NAS сервере. Скрипт писался для своей системы, на которой и отлаживался. Решил выложить скрипт в массы, может кому-то еще пригодиться. Не смотря на то, что скрипт писался под Tvheadend 4, он должен быть совместим с другими приложениями, получающими информацию из tv_grab_* скриптов. Для обеспечения совместимости с другими системами, старался соответствовать требованиям к tv_grab_* скриптам, которые опубликованы тут: http://wiki.xmltv.org/index.php/XmltvCapabilities Скрипт писался на Python'e, поэтому для запуска скрипта требуются:
Все дополнительные бибилиотеки одним архивом можно скачать ТУТ Скрипт писался и тестировался под 2.7, поэтому совместимость с 3.x не гарантируется. Установка и настройка для работы с Tvheadend Руководство писалось в надежде, что Вы знакомы с линуксом. Для добавления скрипта в Tvheadend необходимо:
После выполнения настройки, в домашнем каталоге будет создан файл '/.xmltv/tv_mail_ru.conf' Описание операции настройки В процессе настройки скрипта, пользователю будет задан ряд вопросов, при ответе на которые будет сформирован файл с конфигурацией скрипта. Код:
tv_grab_tv_mail_ru.py --configure --config-file test.conf Enter e-mail: my@mail.ru - e-mail от учетной записи Enter password: p@ssword - пароль от учетной записи Do you want to configure the list of regions manually? [Y/n] y - на данный момент у меня возникло 2 случая, когда необходимо вручную указывать регион: 1. Когда сервис постоянно переключает регион при автоопределении. У меня он постоянно скачет между Донецком и Киевом 2. Когда необходимо получить программу для канала, отсутствующего в твоем регионе Enter region name: moskva - указываем город, желательно транслитом, т.к. кириллицу не понимает Россия: id: 70 , name: Москва (Россия) - результат поиска Enter region id: 70 - указываем идентификатор искомого региона Do you want to add another region? [Y/n] - добавляем еще один регион Enter region name: donetsk Россия: id: 3867 , name: Донецк (Ростовская область, Россия) Другие города: id: 260 , name: Донецк (Украина) Enter region id: 260 Do you want to add another region? [Y/n] n - закончили выбор региона Selected regions: 70, 260 Get the description of the program for a week? [Y/n] n - получать описание программы телепередач на всю неделю Get the program description for today? [Y/n] - получать описание программы телепередач на сегодня Get the description of the program for tomorrow? [Y/n] - получать описание программы телепередач на завтра Always enable quiet argument? Need for TVHeadend 4.0 [y/N] - принудительно отключить вывод сообщений. Мне понадобился при работе с TVHeadend 4.0.9, т.к. сама программа не передает параметр '--quiet', а в этой версии отсутствует возможность указать параметры командной строки для запуска скрипта Код:
[general] conf_ver = 2 [account] email = my@mail.ru password = p@ssword [settings] date_delay = 0 event_delay = 0.1 region_ids = 70, 260 des_week = 0 des_today = 1 des_tommorow = 1 force_quiet = 1 Желательно не включать получение описания на всю неделю, т.к. это длительный процесс. Например на получение описания программы телепередач на сегодня-завтра для 119 каналов у меня ушло 42 минуты. Для получения списка передач без описания, уходит около 3-х минут Последний раз редактировалось vl.maksime; 25.04.2019 в 08:41. |
![]() |
![]() |
![]() |
#2 |
Junior Member
Регистрация: 25.12.2016
Сообщений: 1
|
![]()
python tv_grab_tv_mail_ru.py --configure --config-file test.conf
Код:
Traceback (most recent call last): File "tv_grab_tv_mail_ru.py", line 850, in <module> tv_grab.configure() File "tv_grab_tv_mail_ru.py", line 99, in configure config_file = open(self.__get_config_path(config_file), "w") UnboundLocalError: local variable 'config_file' referenced before assignment |
![]() |
![]() |
![]() |
#3 |
Senior Member
Регистрация: 18.10.2015
Адрес: Donetsk, Russia
Сообщений: 1,076
|
![]()
v0.2.2
Исправил ошибку. В файл конфигурации добавил новый параметр 'force_quiet', который выключает вывод в лог любой отладочной информации. Мне понадобился для отключения вывода посторонней информации в tvheadend 4.0.9. Параметр подгружается, если версия файла конфигурации больше '1' Дополнил описание в шапке. Последний раз редактировалось vl.maksime; 12.07.2017 в 08:51. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Регистрация: 18.10.2015
Адрес: Donetsk, Russia
Сообщений: 1,076
|
![]()
v0.2.3
Для описания реализовал подмену спец-символов html, удаление html тегов |
![]() |
![]() |
![]() |
#5 |
Member
Регистрация: 21.07.2016
Сообщений: 93
|
![]()
Установил ваш скрипт, tvheadend в логе пишет вот это, подскажите в чем проблема:
2018-09-10 22:55:54.000 xmltv: /usr/bin/tv_grab_tv_mail_ru.py: grab /usr/bin/tv_grab_tv_mail_ru.py 2018-09-10 22:55:54.004 spawn: Executing "/usr/bin/tv_grab_tv_mail_ru.py" 2018-09-10 22:55:59.732 spawn: Traceback (most recent call last): 2018-09-10 22:55:59.732 spawn: File "/usr/bin/tv_grab_tv_mail_ru.py", line 967, in 2018-09-10 22:55:59.733 spawn: tv_grab.main() 2018-09-10 22:55:59.733 spawn: File "/usr/bin/tv_grab_tv_mail_ru.py", line 570, in main 2018-09-10 22:55:59.733 spawn: self.__load_program(region_id) 2018-09-10 22:55:59.733 spawn: File "/usr/bin/tv_grab_tv_mail_ru.py", line 672, in __load_program 2018-09-10 22:55:59.734 spawn: for event in events: 2018-09-10 22:55:59.734 spawn: TypeError: 'NoneType' object is not iterable |
![]() |
![]() |
![]() |
#6 |
Member
Регистрация: 21.07.2016
Сообщений: 93
|
![]()
Не совсем понятно как добавить канал из другого региона (часового пояса). Например канал "Первый HD" вещает у меня по московской сетке вещания а программу передач подтягивает по времени моего региона.
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Регистрация: 18.10.2015
Адрес: Donetsk, Russia
Сообщений: 1,076
|
![]()
Необходимо в шапке сайта выбрать другой город, который соответствует требуемому часовому поясу. После этого отображен список телеканалов этого региона, при этом все пометки избранного будут сброшены, т.к. для каждого региона они настраиваются отдельно. В текущем регионе найдите нужные каналы и добавьте их в избранное. После этого, регион надо будет добавить в конфиг.
Для добавления региона, можно повторно инициализировать формирование конфига и добавить несколько регионов. Или же запустить поиск телеканала в нужном регионе, тогда код региона можно будет увидеть в адресной строке: Код:
https://tv.mail.ru/search/?region_id=70&q=Россия+1 Мне пришлось использовать 3 региона, чтоб собрать телепрограмму по максимуму.
__________________
Репозиторий: https://vlmaksime.github.io/repository.vlmaksime/ |
![]() |
![]() |
![]() |
#8 |
Junior Member
Регистрация: 20.12.2018
Сообщений: 3
|
![]()
Не отрабатывает скрипт.
Выдает следующее: Код:
2018-12-20 20:01:46.035 xmltv: /usr/bin/tv_grab_tv_mail_ru.py: grab /usr/bin/tv_grab_tv_mail_ru.py 2018-12-20 20:01:46.357 spawn: Executing "/usr/bin/tv_grab_tv_mail_ru.py" 2018-12-20 20:01:52.061 spawn: Traceback (most recent call last): 2018-12-20 20:01:52.061 spawn: File "/usr/bin/tv_grab_tv_mail_ru.py", line 976, in 2018-12-20 20:01:52.062 spawn: tv_grab.main() 2018-12-20 20:01:52.062 spawn: File "/usr/bin/tv_grab_tv_mail_ru.py", line 587, in main 2018-12-20 20:01:52.063 spawn: writer.write(args.output, pretty_print=True) 2018-12-20 20:01:52.063 spawn: TypeError: write() got an unexpected keyword argument 'pretty_print' 2018-12-20 20:01:52.226 xmltv: /usr/bin/tv_grab_tv_mail_ru.py: no output detected 2018-12-20 20:01:52.226 xmltv: /usr/bin/tv_grab_tv_mail_ru.py: grab returned no data |
![]() |
![]() |
![]() |
#9 |
Senior Member
Регистрация: 18.10.2015
Адрес: Donetsk, Russia
Сообщений: 1,076
|
![]()
У Вас последняя версия библиотеки https://pypi.org/project/python-xmltv/ ?
Попробуйте в 587 строке удалить параметр pretty_print=True. Должна получиться строка Код:
writer.write(args.output)
__________________
Репозиторий: https://vlmaksime.github.io/repository.vlmaksime/ |
![]() |
![]() |
![]() |
#10 |
Junior Member
Регистрация: 20.12.2018
Сообщений: 3
|
![]()
Версия библиотеки:
Код:
Package: python-xmltv Version: 1.3-2 Priority: optional Section: python Maintainer: Andrew Gee <andrew@andrewgee.org> Installed-Size: 70.7 kB Depends: python (>= 2.7), python (<< 2.8) Код:
Traceback (most recent call last): File "./tv_grab_tv_mail_ru.py", line 976, in <module> tv_grab.main() File "./tv_grab_tv_mail_ru.py", line 585, in main writer.addProgramme(event) File "/usr/lib/python2.7/dist-packages/xmltv.py", line 529, in addProgramme self.settext(v, programme['star-rating']['value'], with_lang=False) TypeError: list indices must be integers, not str Консольный вывод: Может что-то делаю не так? upd: обновил python-xmltv до последней версии, теперь сообщение об ошибке другое: Код:
File "./tv_grab_tv_mail_ru.py", line 976, in <module> tv_grab.main() File "./tv_grab_tv_mail_ru.py", line 587, in main writer.write(args.output) File "/usr/local/lib/python2.7/dist-packages/xmltv.py", line 608, in write et.write(file, self.encoding, xml_declaration=True) File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 820, in write serialize(write, self._root, encoding, qnames, namespaces) File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 939, in _serialize_xml _serialize_xml(write, e, encoding, qnames, None) File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 939, in _serialize_xml _serialize_xml(write, e, encoding, qnames, None) File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 939, in _serialize_xml _serialize_xml(write, e, encoding, qnames, None) File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 937, in _serialize_xml write(_escape_cdata(text, encoding)) File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1075, in _escape_cdata _raise_serialization_error(text) File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1052, in _raise_serialization_error "cannot serialize %r (type %s)" % (text, type(text).__name__) TypeError: cannot serialize 4 (type int) Последний раз редактировалось reverse24; 21.12.2018 в 18:35. Причина: Дополнение: |
![]() |
![]() |
![]() |
Метки |
tv.mail.ru, tvheadend, tv_grab, xmltv |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | |
Опции просмотра | |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Tvheadend EPG xmltv tv_grab_ru | MATPOC | Подсказки, описания и FAQ по XBMC | 61 | 17.09.2014 22:58 |
XMLTV на linuks NAS | aisman | Off-Topic | 1 | 17.12.2012 19:24 |