Flexget / Flexget

The official FlexGet repository
http://www.flexget.com
MIT License
1.71k stars 472 forks source link

AttributeError: 'NoneType' object has no attribute 'find' #3014

Closed jacobkossman closed 3 years ago

jacobkossman commented 3 years ago

Expected behaviour:

Properly rename movie files from imdb_lookup

Actual behaviour:

Steps to reproduce:

flexget --test inject "The.Iron.Giant.1999.Signature.Edition.1080p.BluRay.x264.AC3.mp4" execute --tasks movies_rename

Config:

--- config from task: movies_rename
accept_all: true
deluge:
  content_filename: '{% if imdb_name is defined %}{{imdb_name|replace('':'','''')}}
    ({{imdb_year}}) {% else %}{{title}} {% endif %}{{quality.resolution}}'
  host: XXXX
  label: movies_renamed
  main_file_only: true
  move_completed_path: ~/torrents/completed/_Movies/_renamed
  password: XXXX
  port: 2134
  username: XXXX
from_deluge:
  filter:
    label: movies
    state: Seeding
  host: XXXX
  password: XXXX
  port: 2134
  username: XXXX
if:
  - imdb_url == None: reject
imdb_lookup: true
no_entries_ok: true
require_field: imdb_id
template: no_global

---

Log:

(click to expand) ``` 2021-05-26 07:31:18 DEBUG imdb.utils movies_rename SUCCESS: only one movie remains 2021-05-26 07:31:18 VERBOSE imdb_lookup movies_rename Found https://www.imdb.com/title/tt0129167/ 2021-05-26 07:31:18 VERBOSE imdb_lookup movies_rename Parsing imdb for `The.Iron.Giant.1999.Signature.Edition.1080p.BluRay.x264.AC3-PxHD.mp4` 2021-05-26 07:31:18 DEBUG utils.requests movies_rename Waiting 2.26 seconds until next request to imdb.com 2021-05-26 07:31:20 DEBUG utils.requests movies_rename GETing URL https://www.imdb.com/title/tt0129167/ with args () and kwargs {'allow_redirects': True, 'timeout': 30} 2021-05-26 07:31:22 DEBUG imdb.utils movies_rename No year found for tt0129167 2021-05-26 07:31:22 ERROR lazy_lookup movies_rename Unhandled error in lazy lookup plugin: 'NoneType' object has no attribute 'find' Traceback (most recent call last): File "/usr/local/lib/python3.6/dist-packages/flexget/utils/lazy_dict.py", line 41, in __getitem__ callee.func(self.store, *(callee.args or []), **(callee.kwargs or {})) File "/usr/local/lib/python3.6/dist-packages/flexget/components/imdb/imdb_lookup.py", line 69, in lazy_loader self.lookup(entry) File "/usr/local/lib/python3.6/dist-packages/flexget/plugin.py", line 126, in wrapped_func return func(*args, **kwargs) File "/usr/local/lib/python3.6/dist-packages/flexget/utils/database.py", line 30, in wrapper return func(*args, **kwargs) File "/usr/local/lib/python3.6/dist-packages/flexget/components/imdb/imdb_lookup.py", line 222, in lookup movie = self._parse_new_movie(entry['imdb_url'], session) File "/usr/local/lib/python3.6/dist-packages/flexget/components/imdb/imdb_lookup.py", line 267, in _parse_new_movie parser.parse(imdb_url) File "/usr/local/lib/python3.6/dist-packages/flexget/components/imdb/utils.py", line 327, in parse original_name_elem = title_wrapper.find('div', {'class': 'originalTitle'}) AttributeError: 'NoneType' object has no attribute 'find' ```

Additional information:

I think IMDb updated their HTML again as that page doesn't have the originalTitle tag or the title_wrapper class that: https://github.com/Flexget/Flexget/blob/97ca6d2219c43f723be67bfb7ef2021dbe3c1f72/flexget/components/imdb/utils.py#L327 is looking for. Let me know if there's any more info you need.

soloam commented 3 years ago

Imdb changed the layout again, I updated the parser to try the new layout if the old failed! Pushed a PR and should be reviewed in the next hours