mirror of
https://github.com/SickGear/SickGear.git
synced 2024-11-25 06:15:04 +00:00
Merge branch 'main' into dev
This commit is contained in:
commit
29dd2e84c6
4 changed files with 26 additions and 20 deletions
6
.github/workflows/unittest.yml
vendored
6
.github/workflows/unittest.yml
vendored
|
@ -15,7 +15,7 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- windows-latest
|
- windows-latest
|
||||||
python-version: ['3.8', '3.9', '3.10', '3.11']
|
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
|
||||||
steps:
|
steps:
|
||||||
- name: 'Set up Python ${{ matrix.python-version }}'
|
- name: 'Set up Python ${{ matrix.python-version }}'
|
||||||
uses: actions/setup-python@v4
|
uses: actions/setup-python@v4
|
||||||
|
@ -34,7 +34,7 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- ubuntu-latest
|
- ubuntu-latest
|
||||||
python-version: ['3.8', '3.9', '3.10', '3.11']
|
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
|
||||||
steps:
|
steps:
|
||||||
- name: 'Set up Python ${{ matrix.python-version }}'
|
- name: 'Set up Python ${{ matrix.python-version }}'
|
||||||
uses: actions/setup-python@v4
|
uses: actions/setup-python@v4
|
||||||
|
@ -55,7 +55,7 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- macos-latest
|
- macos-latest
|
||||||
python-version: ['3.8', '3.9', '3.10', '3.11']
|
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
|
||||||
steps:
|
steps:
|
||||||
- name: 'Set up Python ${{ matrix.python-version }}'
|
- name: 'Set up Python ${{ matrix.python-version }}'
|
||||||
uses: actions/setup-python@v4
|
uses: actions/setup-python@v4
|
||||||
|
|
|
@ -24,6 +24,13 @@
|
||||||
* Fix media process being ignored by Plex extras
|
* Fix media process being ignored by Plex extras
|
||||||
|
|
||||||
|
|
||||||
|
### 3.30.6 (2024-01-02 11:05:00 UTC)
|
||||||
|
|
||||||
|
* Fix Shows IMDb cards to new layout at IMDb
|
||||||
|
* Change update fallback zoneinfo to 2023d
|
||||||
|
* Change add Python 3.12 to the unit tests
|
||||||
|
|
||||||
|
|
||||||
### 3.30.5 (2023-12-10 05:00:00 UTC)
|
### 3.30.5 (2023-12-10 05:00:00 UTC)
|
||||||
|
|
||||||
* Change allow Python 3.12.1
|
* Change allow Python 3.12.1
|
||||||
|
|
Binary file not shown.
|
@ -4709,7 +4709,7 @@ class AddShows(Home):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def parse_imdb_overview(tag):
|
def parse_imdb_overview(tag):
|
||||||
paragraphs = tag.select('.lister-item-content p')
|
paragraphs = tag.select('.dli-plot-container .ipc-html-content-inner-div')
|
||||||
filtered = []
|
filtered = []
|
||||||
for item in paragraphs:
|
for item in paragraphs:
|
||||||
if not (item.select('span.certificate') or item.select('span.genre') or
|
if not (item.select('span.certificate') or item.select('span.genre') or
|
||||||
|
@ -4724,7 +4724,7 @@ class AddShows(Home):
|
||||||
filtered = [item_lines]
|
filtered = [item_lines]
|
||||||
elif len(item_lines) == least_lines:
|
elif len(item_lines) == least_lines:
|
||||||
filtered.append(item_lines)
|
filtered.append(item_lines)
|
||||||
overview = None
|
overview = ''
|
||||||
for item_lines in filtered:
|
for item_lines in filtered:
|
||||||
text = ' '.join([item_lines.strip() for item_lines in item_lines]).strip()
|
text = ' '.join([item_lines.strip() for item_lines in item_lines]).strip()
|
||||||
if len(text) and (not overview or (len(text) > len(overview))):
|
if len(text) and (not overview or (len(text) > len(overview))):
|
||||||
|
@ -4799,19 +4799,19 @@ class AddShows(Home):
|
||||||
img_size = re.compile(r'(?im)(V1[^XY]+([XY]))(\d+)(\D+)(\d+)(\D+)(\d+)(\D+)(\d+)(\D+)(\d+)(.*?)$')
|
img_size = re.compile(r'(?im)(V1[^XY]+([XY]))(\d+)(\D+)(\d+)(\D+)(\d+)(\D+)(\d+)(\D+)(\d+)(.*?)$')
|
||||||
|
|
||||||
with BS4Parser(html, features=['html5lib', 'permissive']) as soup:
|
with BS4Parser(html, features=['html5lib', 'permissive']) as soup:
|
||||||
show_list = soup.select('.lister-list')
|
show_list = soup.select('.detailed-list-view ')
|
||||||
shows = [] if not show_list else show_list[0].select('.lister-item')
|
shows = [] if not show_list else show_list[0].select('li')
|
||||||
oldest, newest, oldest_dt, newest_dt = None, None, 9999999, 0
|
oldest, newest, oldest_dt, newest_dt = None, None, 9999999, 0
|
||||||
|
|
||||||
for row in shows:
|
for row in shows:
|
||||||
try:
|
try:
|
||||||
title = row.select('.lister-item-header a[href*=title]')[0]
|
title = re.sub(r'\d+\.\s(.*)', r'\1', row.select('.ipc-title__text')[0].get_text(strip=True))
|
||||||
url_path = title['href'].strip('/')
|
url_path = re.sub(r'(.*?)(\?ref_=.*)?', r'\1', row.select('.ipc-title-link-wrapper')[0]['href'])
|
||||||
ids = dict(imdb=helpers.parse_imdb_id(url_path))
|
ids = dict(imdb=helpers.parse_imdb_id(url_path))
|
||||||
year, ended = 2 * [None]
|
year, ended = 2 * [None]
|
||||||
first_aired = row.select('.lister-item-header .lister-item-year')
|
first_aired = row.select('.dli-title-metadata .dli-title-metadata-item')
|
||||||
if len(first_aired):
|
if len(first_aired):
|
||||||
years = re.findall(r'.*?(\d{4})(?:.*?(\d{4}))?.*', first_aired[0].get_text())
|
years = re.findall(r'.*?(\d{4})(?:.*?(\d{4}))?.*', first_aired[0].get_text(strip=True))
|
||||||
year, ended = years and years[0] or 2 * [None]
|
year, ended = years and years[0] or 2 * [None]
|
||||||
ord_premiered = 0
|
ord_premiered = 0
|
||||||
started_past = False
|
started_past = False
|
||||||
|
@ -4821,15 +4821,15 @@ class AddShows(Home):
|
||||||
|
|
||||||
genres = row.select('.genre')
|
genres = row.select('.genre')
|
||||||
images = {}
|
images = {}
|
||||||
img = row.select('.lister-item-image img')
|
img = row.select('img.ipc-image')
|
||||||
overview = self.parse_imdb_overview(row)
|
overview = self.parse_imdb_overview(row)
|
||||||
rating = row.find('meta', attrs={'itemprop': 'ratingValue'})
|
rating = row.select_one('.ipc-rating-star').get_text()
|
||||||
rating = None is not rating and rating.get('content') or ''
|
rating = rating and rating.split()[0] or ''
|
||||||
voting = row.find('meta', attrs={'itemprop': 'ratingCount'})
|
voting = row('span', text=re.compile(r'(?i)vote'))
|
||||||
voting = None is not voting and voting.get('content') or ''
|
voting = voting and re.sub(r'\D', '', voting[0].find_parent('div').get_text()) or ''
|
||||||
img_uri = None
|
img_uri = None
|
||||||
if len(img):
|
if len(img):
|
||||||
img_uri = img[0].get('loadlate')
|
img_uri = img[0].get('src')
|
||||||
match = img_size.search(img_uri)
|
match = img_size.search(img_uri)
|
||||||
if match and 'tv_series.gif' not in img_uri and 'nopicture' not in img_uri:
|
if match and 'tv_series.gif' not in img_uri and 'nopicture' not in img_uri:
|
||||||
scale = (lambda low1, high1: int((float(450) / high1) * low1))
|
scale = (lambda low1, high1: int((float(450) / high1) * low1))
|
||||||
|
@ -4849,13 +4849,12 @@ class AddShows(Home):
|
||||||
str_premiered=year or 'No year',
|
str_premiered=year or 'No year',
|
||||||
ended_str=ended or '',
|
ended_str=ended or '',
|
||||||
started_past=started_past, # air time not poss. 16.11.2015
|
started_past=started_past, # air time not poss. 16.11.2015
|
||||||
genres=('No genre yet' if not len(genres) else
|
genres='',
|
||||||
genres[0].get_text().strip().lower().replace(' |', ',')),
|
|
||||||
ids=ids,
|
ids=ids,
|
||||||
images='' if not img_uri else images,
|
images='' if not img_uri else images,
|
||||||
overview='No overview yet' if not overview else helpers.xhtml_escape(overview[:250:]),
|
overview='No overview yet' if not overview else helpers.xhtml_escape(overview[:250:]),
|
||||||
rating=0 if not len(rating) else int(helpers.try_float(rating) * 10),
|
rating=0 if not len(rating) else int(helpers.try_float(rating) * 10),
|
||||||
title=title.get_text().strip(),
|
title=title,
|
||||||
url_src_db='https://www.imdb.com/%s/' % url_path.strip('/'),
|
url_src_db='https://www.imdb.com/%s/' % url_path.strip('/'),
|
||||||
votes=0 if not len(voting) else helpers.try_int(voting, 'TBA')))
|
votes=0 if not len(voting) else helpers.try_int(voting, 'TBA')))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue