werwolfby / monitorrent

Automatic torrents downloader
Do What The F*ck You Want To Public License
507 stars 71 forks source link

Lostfilm KeyError: 'content' #326

Closed makar0nin closed 1 year ago

makar0nin commented 4 years ago

Посыпалось сегодня

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 813, in _prepare_request download_infos = self.tracker.get_download_info(topic.url, topic.cat, episode.season, episode.number) File "/opt/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 579, in get_download_info meta_content = soup.find('meta').attrs['content'] KeyError: 'content'

Akior commented 4 years ago

Снова подключился clodflare. Но не на весь сайт лоста а на переходе к retre lost https://github.com/werwolfby/monitorrent/issues/292

Akior commented 4 years ago

Возможно ли реализовать https://stackoverflow.com/questions/33247662/how-to-bypass-cloudflare-bot-ddos-protection-in-scrapy ? https://github.com/werwolfby/monitorrent/issues/306

shemanaev commented 4 years ago

@Akior сделал по-быстрому.

P.S.: для cloudscraper, если что, нужен build-essentials или аналогичный пакет вашего дистрибутива.

Akior commented 4 years ago

Спасибо, я делал тоже самое, но не правильно вынес scraper = cloudscraper.create_scraper() Снимаю шляпу.

@Akior сделал по-быстрому.

P.S.: для cloudscraper, если что, нужен build-essentials или аналогичный пакет вашего дистрибутива.

makar0nin commented 4 years ago

@shemanaev оформить может pull request ? Ну а от @werwolfby ждём merge всего что накопилось

shemanaev commented 4 years ago

Я думаю ещё потестить.

On Mon, Dec 30, 2019 at 5:12 PM makar0nin notifications@github.com wrote:

@shemanaev https://github.com/shemanaev оформить может pull request ? Ну а от @werwolfby https://github.com/werwolfby ждём merge всего что накопилось

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/werwolfby/monitorrent/issues/326?email_source=notifications&email_token=AAICN2JL5KYSFNJDAKN6YWDQ3H6UHA5CNFSM4KARAVH2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEH2MIXI#issuecomment-569689181, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAICN2IFORKAEV62ZSMG3W3Q3H6UHANCNFSM4KARAVHQ .

makar0nin commented 4 years ago

Я думаю ещё потестить. On Mon, Dec 30, 2019 at 5:12 PM makar0nin @.***> wrote: @shemanaev https://github.com/shemanaev оформить может pull request ? Ну а от @werwolfby https://github.com/werwolfby ждём merge всего что накопилось — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#326?email_source=notifications&email_token=AAICN2JL5KYSFNJDAKN6YWDQ3H6UHA5CNFSM4KARAVH2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEH2MIXI#issuecomment-569689181>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAICN2IFORKAEV62ZSMG3W3Q3H6UHANCNFSM4KARAVHQ .

Может чем помочь ?

shemanaev commented 4 years ago

Установить, пользоваться и праздновать 🎉

Sent with GitHawk

k0st1kLOL commented 4 years ago

Такая же бяда Exception while execute topic

Traceback (most recent call last): File "C:\Program Files (x86)\Monitorrent\monitorrent\plugins\trackers\lostfilm.py", line 736, in execute episodes = self._prepare_request(topic) File "C:\Program Files (x86)\Monitorrent\monitorrent\plugins\trackers\lostfilm.py", line 813, in _prepare_request download_infos = self.tracker.get_download_info(topic.url, topic.cat, episode.season, episode.number) File "C:\Program Files (x86)\Monitorrent\monitorrent\plugins\trackers\lostfilm.py", line 579, in get_download_info meta_content = soup.find('meta').attrs['content'] KeyError: 'content'

makar0nin commented 4 years ago

Установить, пользоваться и праздновать

Sent with GitHawk

3 дня полет нормальный. Спасибо

kekal commented 4 years ago

Установить, пользоваться и праздновать 🎉

Sent with GitHawk

У меня нубский вопрос. У меня запуск происходит в качестве вендового сервиса. Если я накатываю поверху изменения для Lostfilm прямо в папку установки, то сервис перестаёт запускаться (выходит в кодом 1). А если я сервис запускаю не от System, а от своего локального юзера, то всё работает. Переустанавливать сервис скриптом пробовал. Никто не в курсе, что за загадочное поведение? Спасибо.

shemanaev commented 4 years ago

@kekal инсталлятор же тащит свой отдельный питон? Нужно туда доставить пакет cloudscraper тогда.

kekal commented 4 years ago

@kekal инсталлятор же тащит свой отдельный питон? Нужно туда доставить пакет cloudscraper тогда.

Да, похоже проблема в этом. Не ясно, как запустить локальную установку. Как не ставлю PATH, локальный pip пишет в в глобальную папку.

shemanaev commented 4 years ago

Так не помогает? Может прокатит просто скопировать нужные пакеты?)

Leliil commented 4 years ago

Я так полагаю, что для тех, кто пользуется docker`ом решения пока нет?

shemanaev commented 4 years ago

@Leliil я для себя решил просто: подготовил архив со своими фиксами и собираю образ через Portainer. Через консольку, соответственно, через docker build -t monitorrent:fixed . с файлами из архива и пересоздание контейнера из нужного тега. monitorrent.tar.gz

Leliil commented 4 years ago

@Leliil я для себя решил просто: подготовил архив со своими фиксами и собираю образ через Portainer. Через консольку, соответственно, через docker build -t monitorrent:fixed . с файлами из архива и пересоздание контейнера из нужного тега. monitorrent.tar.gz

А подробнее можете подсказать? Portainer установлен upd. Экспортировал образ, в него закинул файлы из вашего архива, затем устанавливаю? (сделал под другим именем, вдруг скоро обновится monitorrent)

shemanaev commented 4 years ago

Как-то так. Только сначала распаковать .gz, например 7zip'ом. Portainer хочет только .tar. Чтобы вернуться на оф. образ нужно будет только recreate контейнера сделать. portainer

ivan-masich commented 4 years ago

Установить, пользоваться и праздновать

Sent with GitHawk

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

Arch Linux (Linux 5.4.6-1-ARCH)
Cubietruck (ARMv7 Cortex-A7)
Python 3.8.1
Leliil commented 4 years ago

А кто как решил проблему с lostfilm + proxy? используете платное? я сперва поставил контейнер с http proxy, но в последнее время не срабатывает в monitorrent, хотя через браузер все работает, так же было куплено https, с ним все заработало :/ вроде дешево, но насколько надежно все это?

jMurr commented 4 years ago

@Akior сделал по-быстрому.

Накатил поверх оригинального 1.1.11 и существующей базой, вот такие ошибки сыпятся при запуске:

Traceback (most recent call last):
  File "/opt/monitorrent/server.py", line 233, in <module>
    main()
  File "/opt/monitorrent/server.py", line 181, in main
    load_plugins()
  File "/opt/monitorrent/monitorrent/plugin_managers.py", line 26, in load_plugins
    __import__(module_name)
  File "/opt/monitorrent/monitorrent/plugins/clients/qbittorrent.py", line 14, in <module>
    from qbittorrentapi import Client
ModuleNotFoundError: No module named 'qbittorrentapi'
shemanaev commented 4 years ago

@jMurr pip install qbittorrent-api

jMurr commented 4 years ago

@jMurr pip install qbittorrent-api

Это помогло, спасибо!!! А кто-то может выложить архив с готовой рабочей версией с фиксами!!! А то у меня только такое получается (( Не умею я нормально с гитом и фиксами.

Traceback (most recent call last):
  File "/opt/monitorrent/server.py", line 233, in <module>
    main()
  File "/opt/monitorrent/server.py", line 181, in main
    load_plugins()
  File "/opt/monitorrent/monitorrent/plugin_managers.py", line 26, in load_plugins
    __import__(module_name)
  File "/opt/monitorrent/monitorrent/plugins/clients/test_qbittorrent.py", line 3, in <module>
    import pytest
ModuleNotFoundError: No module named 'pytest'
nafanz commented 4 years ago

@jMurr pip install pytest

jMurr commented 4 years ago

В итоге, чтобы запустить понадобилось ставить такие модули. pip3 install ddt requests_mock vcrpy mock qbittorrent-api pytest Может добавить в readme ? Лостфильм заработал отлично

makar0nin commented 4 years ago

@jMurr так там вроде файл requirements.txt корректный. и если читать wiki то там в установке описанно как он используется

syicidnic commented 4 years ago

прошу помощи при установке в докер :

brotli как можно победить?

shemanaev commented 4 years ago

@syicidnic взять мой образ

syicidnic commented 4 years ago

поставил. сериалы от лоста добавляются, но к трекеру лоста добавить не могу. И добавленные не проверяет lost

shemanaev commented 4 years ago

Возможно, у вас тоже проблема из-за капчи. Тут мои полномочия всё.

Akior commented 4 years ago

поставил. сериалы от лоста добавляются, но к трекеру лоста добавить не могу. И добавленные не проверяет lost

В файле lostfilm.py попробуйте отключить авторизацию и прописать куки которые можете взять из браузере при авторизации на лосте (lf_session)

def login(self, email, password):
params = {"act": "users", "type": "login", "mail": email, "pass": password, "rem": 1}
#        response = scraper.post("http://www.lostfilm.tv/ajaxik.php", params, verify=False)
#        result = response.json()
#        if 'error' in result:
#            raise LostFilmTVLoginFailedException(result['error'])
#        self.session = response.cookies['lf_session']
self.session = "1232234234234234234234234234"

И закоментировать

 #            self.tracker.login(username, password)
jMurr commented 4 years ago

@jMurr так там вроде файл requirements.txt корректный. и если читать wiki то там в установке описанно как он используется

запускал, как написано в инструкции, на всякий случай и под 2.7 выполнил pip3 install -r requirements.txt && pip install -r requirements.txt

syicidnic commented 4 years ago

self.tracker.login(username, password)

выполнил все в точности. ошибка таже . влияет ли то , что прописана прокся для рутрекера?

Akior commented 4 years ago

self.tracker.login(username, password)

выполнил все в точности. ошибка таже . влияет ли то , что прописана прокся для рутрекера?

После выполненного он вроде не должен делать login чтобы писать об этом в логах. После редактирования контейнер перезапускали ?

syicidnic commented 4 years ago

self.tracker.login(username, password)

выполнил все в точности. ошибка таже . влияет ли то , что прописана прокся для рутрекера?

После выполненного он вроде не должен делать login чтобы писать об этом в логах. После редактирования контейнер перезапускали ?

да, конечно перезапускал. Traceback (most recent call last): File "server.py", line 233, in main() File "server.py", line 181, in main load_plugins() File "/var/www/monitorrent/monitorrent/plugin_managers.py", line 26, in load_plugins import(module_name) File "/var/www/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 475 self.session = "63cd250726fc70bea920a06bc39ef23c.5285504" ^ IndentationError: unexpected indent

Akior commented 4 years ago

self.tracker.login(username, password)

выполнил все в точности. ошибка таже . влияет ли то , что прописана прокся для рутрекера?

После выполненного он вроде не должен делать login чтобы писать об этом в логах. После редактирования контейнер перезапускали ?

да, конечно перезапускал. Traceback (most recent call last): File "server.py", line 233, in main() File "server.py", line 181, in main load_plugins() File "/var/www/monitorrent/monitorrent/plugin_managers.py", line 26, in load_plugins import(module_name) File "/var/www/monitorrent/monitorrent/plugins/trackers/lostfilm.py", line 475 self.session = "63cd250726fc70bea920a06bc39ef23c.5285504" ^ IndentationError: unexpected indent

Похоже на ошибку табуляции, я выше неправильно отформатировал

 def login(self, email, password):
      params = {"act": "users", "type": "login", "mail": email, "pass": password, "rem": 1}
      #        response = scraper.post("http://www.lostfilm.tv/ajaxik.php", params, verify=False)
      #        result = response.json()
      #        if 'error' in result:
      #            raise LostFilmTVLoginFailedException(result['error'])
      #        self.session = response.cookies['lf_session']
      self.session = "1232234234234234234234234234"

На одном уровне должны быть

jMurr commented 4 years ago

Пришёл с работы и лостфильм даёт ошибку: Connection failed перезапись логина пароля ничего не даёт. Вручную править данные в пайтоновских файлах, вставляя данные из куков?

Akior commented 4 years ago

Пришёл с работы и лостфильм даёт ошибку: Connection failed перезапись логина пароля ничего не даёт. Вручную править данные в пайтоновских файлах, вставляя данные из куков?

Да, и отключить попытку авторизации, а то будет падать с login failed

jMurr commented 4 years ago

Да, и отключить попытку авторизации, а то будет падать с login failed

Менял файл /opt/monitorrent/plugins/trackers/lostfilm.py (мониторент установлен в /opt) Отключить логин это закоментировать строку? self.tracker.login(username, password) Тперь у меня выпадает в консоли:

/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py:847: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)

В самой же вебморде в логе: Can't login: Unknown Правда lf_session значение я брал из мозиловского cookies.sqlite и с другого компьютера - это имеет значение или без разницы?

Akior commented 4 years ago

Да, и отключить попытку авторизации, а то будет падать с login failed

Менял файл /opt/monitorrent/plugins/trackers/lostfilm.py (мониторент установлен в /opt) Отключить логин это закоментировать строку? self.tracker.login(username, password) Тперь у меня выпадает в консоли:

/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py:847: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)

В самой же вебморде в логе: Can't login: Unknown Правда lf_session значение я брал из мозиловского cookies.sqlite и с другого компьютера - это имеет значение или без разницы?

Подмена https сертификата, у вас провайдер с dpi балуется, и лост заблокировал

И ещё, для исключения cloudflare, рекомендую все requests. заменить на scraper.

jMurr commented 4 years ago

Подмена https сертификата, у вас провайдер с dpi балуется, и лост заблокировал

Но в браузерах на компьютере всё отлично. И при просмотре сертификата на страничке вроде всё нормально.

И ещё, для исключения cloudflare, рекомендую все requests. заменить на scraper.

В тупую в через nano заменить по всему lostfilm.py ?

Akior commented 4 years ago

Подмена https сертификата, у вас провайдер с dpi балуется, и лост заблокировал

Но в браузерах на компьютере всё отлично. И при просмотре сертификата на страничке вроде всё нормально.

И ещё, для исключения cloudflare, рекомендую все requests. заменить на scraper.

В тупую в через nano заменить по всему lostfilm.py ?

Ну да, я так делал

jMurr commented 4 years ago

те же ошибки что в консоль что на веб:

/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py:847: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning
FAILED
Can't login: Unknown

Akior, можно ваш файлик lostfilm.py, может я где-то что-то налажал?

Akior commented 4 years ago

те же ошибки что в консоль что на веб:

/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py:847: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning
FAILED
Can't login: Unknown

Akior, можно ваш файлик lostfilm.py, может я где-то что-то налажал?

Попробуйте, только свою ls_session впишите

lostfilm.zip

shemanaev commented 4 years ago

Обновил фикс, теперь везде используется cloudscraper. Заодно добавил логгирование запроса капчи (наверное. попасть на капчу мне не удавалось).

ivan-masich commented 4 years ago

Обновил фикс, теперь везде используется cloudscraper. Заодно добавил логгирование запроса капчи (наверное. попасть на капчу мне не удавалось).

Спасибо, проблема Can't login: Unknown ушла.

jMurr commented 4 years ago

Попробуйте, только свою ls_session впишите

вообще ничего не понимаю, тот же результат.

Обновил фикс, теперь везде используется cloudscraper. Заодно добавил логгирование запроса капчи (наверное. попасть на капчу мне не удавалось).

а вот эта установка помогла!!! перезаписал просто поверху хотя там разницы между файлами lostfilm.py почти нет:

shemanaev>                     redirect_url = u'https://www.lostfilm.tv/{0}'.format(redirect_url)
Akior>                         redirect_url = u'http://www.lostfilm.tv/{0}'.format(redirect_url)
---
shemanaev>         params = {"act": "users", "type": "login", "mail": email, "pass": password, "rem": 1, "need_captcha": "", "captcha": ""}
shemanaev>         response = scraper.post("https://www.lostfilm.tv/ajaxik.php", params)
shemanaev> 
shemanaev>         result = response.json()
shemanaev>         if 'error' in result:
shemanaev>             raise LostFilmTVLoginFailedException(result['error'])
shemanaev>         if 'need_captcha' in result:
shemanaev>             raise LostFilmTVLoginFailedException('Captcha requested. Nothing can do about it for now, sorry :(')
shemanaev> 
shemanaev>         self.session = response.cookies['lf_session']
---
Akior>         params = {"act": "users", "type": "login", "mail": email, "pass": password, "rem": 1}
Akior> #ЗАМЕНИТЬ ls_session
Akior>         self.session = "хххххххххх.хххх"

shemanaev>         my_settings_url = 'https://www.lostfilm.tv/my_settings'
Akior>             my_settings_url = 'http://www.lostfilm.tv/my_settings'
---
shemanaev>             self.tracker.login(username, password)
Akior>    #            self.tracker.login(username, password)
syicidnic commented 4 years ago

Обновил фикс, теперь везде используется cloudscraper. Заодно добавил логгирование запроса капчи (наверное. попасть на капчу мне не удавалось).

докер тоже обновлен, можно перезакачивать?

shemanaev commented 4 years ago

Да

Отправлено с Apple Watch

15 янв. 2020 г., в 12:40, syicidnic notifications@github.com написал(а):

Обновил фикс, теперь везде используется cloudscraper. Заодно добавил логгирование запроса капчи (наверное. попасть на капчу мне не удавалось).

докер тоже обновлен, можно перезакачивать?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

syicidnic commented 4 years ago

не понятно, но здорово. при добавление трекера пишет connection failed, но при этом серии проверяет, новых серий нет, позже отпишусь добавляет ли на закачку.