[GH-ISSUE #247] lostfilm.tv ошибка закачки #190

Closed
opened 2026-10-13 19:51:05 +00:00 by bsakaguchi · 15 comments
Owner

Originally created by @greatbao on GitHub (Feb 13, 2018).
Original GitHub issue: https://github.com/werwolfby/monitorrent/issues/247

Сегодня перестала идти закачка с лостфильма по всем раздачам.
Debian 9, обновлений пакетов не производилось
лог ошибок:

FAILED
Exception while execute topic
Traceback (most recent call last):
  File "/opt/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 736, in execute
    episodes = self._prepare_request(topic)
  File "/opt/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 799, in _prepare_request
    show = self.tracker.parse_url(topic.url, True)
  File "/opt/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 515, in parse_url
    for season in self._parse_series(soup):
  File "/opt/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 544, in _parse_series
    episode_number = int(play_episode_match.group('episode'))
AttributeError: 'NoneType' object has no attribute 'group'

до этого все работало исправно

Originally created by @greatbao on GitHub (Feb 13, 2018). Original GitHub issue: https://github.com/werwolfby/monitorrent/issues/247 Сегодня перестала идти закачка с лостфильма по всем раздачам. Debian 9, обновлений пакетов не производилось лог ошибок: ``` FAILED Exception while execute topic Traceback (most recent call last): File "/opt/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 736, in execute episodes = self._prepare_request(topic) File "/opt/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 799, in _prepare_request show = self.tracker.parse_url(topic.url, True) File "/opt/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 515, in parse_url for season in self._parse_series(soup): File "/opt/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 544, in _parse_series episode_number = int(play_episode_match.group('episode')) AttributeError: 'NoneType' object has no attribute 'group' ``` до этого все работало исправно
Author
Owner

@omeshcheryakov commented on GitHub (Feb 13, 2018):

Такая же проблема

<!-- gh-comment-id:365332654 --> @omeshcheryakov commented on GitHub (Feb 13, 2018): Такая же проблема
Author
Owner

@greatbao commented on GitHub (Feb 13, 2018):

Лостфильм добавил функционал. Теперь во время закачки серий, можно поставить галку что-бы скаченная серия помечалась просмотренной.
Думаю все дело в некорректной работе парсера из за этого изменения.

<!-- gh-comment-id:365333892 --> @greatbao commented on GitHub (Feb 13, 2018): Лостфильм добавил функционал. Теперь во время закачки серий, можно поставить галку что-бы скаченная серия помечалась просмотренной. Думаю все дело в некорректной работе парсера из за этого изменения.
Author
Owner

@kolayuk commented on GitHub (Feb 13, 2018):

идем на 446 строку в plugins/trackers/lostfilm.py и меняем регулярку на
^PlayEpisode\('(?P<cat>\d\d\d)\s*(?P<season>\d\d\d)\s*(?P<episode>\d\d\d)'\)$
(в переменной _play_episode_re )

UPD более правильная версия
^PlayEpisode\('(?P<cat>\d{2,3})\s*(?P<season>\d\d\d)\s*(?P<episode>\d\d\d)'\)$

<!-- gh-comment-id:365356845 --> @kolayuk commented on GitHub (Feb 13, 2018): идем на 446 строку в plugins/trackers/lostfilm.py и меняем регулярку на ` ^PlayEpisode\('(?P<cat>\d\d\d)\s*(?P<season>\d\d\d)\s*(?P<episode>\d\d\d)'\)$ ` (в переменной _play_episode_re ) UPD более правильная версия `^PlayEpisode\('(?P<cat>\d{2,3})\s*(?P<season>\d\d\d)\s*(?P<episode>\d\d\d)'\)$`
Author
Owner

@greatbao commented on GitHub (Feb 13, 2018):

правка актуальная, спасибо

<!-- gh-comment-id:365380185 --> @greatbao commented on GitHub (Feb 13, 2018): правка актуальная, спасибо
Author
Owner

@degorychev commented on GitHub (Feb 14, 2018):

Инструкция для тех, кто использует docker-контейнер:
0) Подключаемся к серверу по ssh

  1. Получаем список контейнеров:

#docker ps
8a9ab19deb65 werwolfby/alpine-monitorrent:latest "python server.py"

  1. Первый столбец - нужный нам container id, получаем не сокращенный вид:

#docker ps -q --no-trunc | grep 8a9ab19deb65
8a9ab19deb650e7693c11452b2b0ac3b2fb1d8a0f5236b4b3f13cc780f76d058

  1. Копируем этот id и подключаемся к командной строке внутри контейнера:

#docker exec -it 8a9ab19deb650e7693c11452b2b0ac3b2fb1d8a0f5236b4b3f13cc780f76d058 sh
/var/www/monitorrent #

  1. В нашем распоряжении имеется пакетный менеджер apk, Устанавливаем и запускам mc

#apk update
#apk add mc
#mc

  1. Переходим в папку /var/www/monitorrent/monitorrent/plugins/trackers, выделяем файл lostfilm.py и жмем f4, попадая в режим редактора файла

6)На 446 строке меняем регулярное выражение на
^PlayEpisode\('(?P<cat>\d{2,3})\s*(?P<season>\d\d\d)\s*(?P<episode>\d\d\d)'\)$

  1. Сохраняем клавишей f2, выходим из mc клавишей f10, выходим из консоли контейнера командой:

#exit

  1. Перезапускаем контейнер

#docker restart 8a9ab19deb650e7693c11452b2b0ac3b2fb1d8a0f5236b4b3f13cc780f76d058

<!-- gh-comment-id:365567580 --> @degorychev commented on GitHub (Feb 14, 2018): Инструкция для тех, кто использует docker-контейнер: 0) Подключаемся к серверу по ssh 1) Получаем список контейнеров: > #docker ps > 8a9ab19deb65 werwolfby/alpine-monitorrent:latest "python server.py" 2) Первый столбец - нужный нам container id, получаем не сокращенный вид: > #docker ps -q --no-trunc | grep 8a9ab19deb65 > 8a9ab19deb650e7693c11452b2b0ac3b2fb1d8a0f5236b4b3f13cc780f76d058 3) Копируем этот id и подключаемся к командной строке внутри контейнера: > #docker exec -it 8a9ab19deb650e7693c11452b2b0ac3b2fb1d8a0f5236b4b3f13cc780f76d058 sh > /var/www/monitorrent # 4) В нашем распоряжении имеется пакетный менеджер apk, Устанавливаем и запускам mc >#apk update >#apk add mc >#mc 5) Переходим в папку /var/www/monitorrent/monitorrent/plugins/trackers, выделяем файл lostfilm.py и жмем f4, попадая в режим редактора файла 6)На 446 строке меняем регулярное выражение на `^PlayEpisode\('(?P<cat>\d{2,3})\s*(?P<season>\d\d\d)\s*(?P<episode>\d\d\d)'\)$` 7) Сохраняем клавишей f2, выходим из mc клавишей f10, выходим из консоли контейнера командой: > #exit 8) Перезапускаем контейнер > #docker restart 8a9ab19deb650e7693c11452b2b0ac3b2fb1d8a0f5236b4b3f13cc780f76d058
Author
Owner

@gudvindll commented on GitHub (Feb 19, 2018):

UPD более правильная версия
^PlayEpisode('(?P\d{2,3})\s*(?P\d\d\d)\s*(?P\d\d\d)')$

Работает без проблем.

<!-- gh-comment-id:366634979 --> @gudvindll commented on GitHub (Feb 19, 2018): > UPD более правильная версия > ^PlayEpisode\('(?P<cat>\d{2,3})\s*(?P<season>\d\d\d)\s*(?P<episode>\d\d\d)'\)$ Работает без проблем.
Author
Owner

@werwolfby commented on GitHub (Feb 20, 2018):

@greatbao @kolayuk @omeshcheryakov @degorychev @tezdal Всё новые контейнеры выпущены, можно пользоваться 😄 без воркэраундов

@kolayuk спасибо за ПР
@degorychev спасибо за воркэраунд

<!-- gh-comment-id:366843569 --> @werwolfby commented on GitHub (Feb 20, 2018): @greatbao @kolayuk @omeshcheryakov @degorychev @tezdal Всё новые контейнеры выпущены, можно пользоваться 😄 без воркэраундов @kolayuk спасибо за ПР @degorychev спасибо за воркэраунд
Author
Owner

@hillout commented on GitHub (Feb 20, 2018):

К сожалению на последней версии в docker'e не работает:

Exception while execute topic
Traceback (most recent call last):
File "/var/www/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 736, in execute
episodes = self._prepare_request(topic)
File "/var/www/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 799, in _prepare_request
show = self.tracker.parse_url(topic.url, True)
File "/var/www/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 515, in parse_url
for season in self._parse_series(soup):
File "/var/www/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 544, in _parse_series
episode_number = int(play_episode_match.group('episode'))
AttributeError: 'NoneType' object has no attribute 'group'

<!-- gh-comment-id:366947057 --> @hillout commented on GitHub (Feb 20, 2018): К сожалению на последней версии в docker'e не работает: Exception while execute topic Traceback (most recent call last): File "/var/www/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 736, in execute episodes = self._prepare_request(topic) File "/var/www/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 799, in _prepare_request show = self.tracker.parse_url(topic.url, True) File "/var/www/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 515, in parse_url for season in self._parse_series(soup): File "/var/www/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 544, in _parse_series episode_number = int(play_episode_match.group('episode')) AttributeError: 'NoneType' object has no attribute 'group'
Author
Owner

@werwolfby commented on GitHub (Feb 20, 2018):

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

<!-- gh-comment-id:366975157 --> @werwolfby commented on GitHub (Feb 20, 2018): @hillout а поделитесь ссылкой на сериал, потому что я не могу воспроизвести.
Author
Owner

@hillout commented on GitHub (Feb 20, 2018):

Да, конечно: https://www.lostfilm.tv/series/Homeland/seasons

<!-- gh-comment-id:366984096 --> @hillout commented on GitHub (Feb 20, 2018): Да, конечно: https://www.lostfilm.tv/series/Homeland/seasons
Author
Owner

@n0rmed commented on GitHub (Feb 20, 2018):

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

<!-- gh-comment-id:367140572 --> @n0rmed commented on GitHub (Feb 20, 2018): У меня появилась такая же ошибка при первом запуске на сериале Counterpart. Но сейчас все ок, и даже ночью скачалась новая серия этого сериала.
Author
Owner

@hillout commented on GitHub (Feb 21, 2018):

Очень странно, но сейчас всё заработало. Спасибо anyway.

<!-- gh-comment-id:367256584 --> @hillout commented on GitHub (Feb 21, 2018): Очень странно, но сейчас всё заработало. Спасибо anyway.
Author
Owner

@hillout commented on GitHub (Feb 21, 2018):

А такой вопрос - если я выбрал определённый сезон и эпизод , то moniutorrent будет парсить только этот эпизод или дальше по списку пойдёт? Или же надо каждый раз выбирать следующую по порядковому номеру серию, чтобы он её скачивал?

<!-- gh-comment-id:367260246 --> @hillout commented on GitHub (Feb 21, 2018): А такой вопрос - если я выбрал определённый сезон и эпизод , то moniutorrent будет парсить только этот эпизод или дальше по списку пойдёт? Или же надо каждый раз выбирать следующую по порядковому номеру серию, чтобы он её скачивал?
Author
Owner

@gudvindll commented on GitHub (Feb 21, 2018):

если был выбран сезон 3 серия 5
то будет качаться
сезон 3 серии 6,7,8,9,10
сезон 4 серии 1,2,3,4,5,6,7,8,9,10

Если же выбран Сезон 1 Cерии 0 то будут скачаны все сезоны и серии доступные.
Автоматизация monitorrent как раз таки и построена на том что бы ручками не надо было выбирать следующую, все это автоматизированно проверяется и закачивается.

<!-- gh-comment-id:367261120 --> @gudvindll commented on GitHub (Feb 21, 2018): если был выбран сезон 3 серия 5 то будет качаться сезон 3 серии 6,7,8,9,10 сезон 4 серии 1,2,3,4,5,6,7,8,9,10 Если же выбран Сезон 1 Cерии 0 то будут скачаны все сезоны и серии доступные. Автоматизация monitorrent как раз таки и построена на том что бы ручками не надо было выбирать следующую, все это автоматизированно проверяется и закачивается.
Author
Owner

@hillout commented on GitHub (Feb 21, 2018):

Понятно, спасибо!

<!-- gh-comment-id:367262372 --> @hillout commented on GitHub (Feb 21, 2018): Понятно, спасибо!
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
werwolfby/monitorrent#190
No description provided.