Merge pull request #64 from JackDandy/feature/FixArticleSort

Fix article sorting for Coming Eps, Manage, Show List, and Trending Shows
This commit is contained in:
JackDandy 2014-11-27 03:39:54 +00:00
commit b1d7de9714
8 changed files with 24 additions and 18 deletions

View file

@ -1,4 +1,4 @@
### 0.4.0 (2014-11-26 13:30:00 UTC) ### 0.4.0 (2014-11-27 03:30:00 UTC)
* Change footer stats to not add newlines when copy/pasting from them * Change footer stats to not add newlines when copy/pasting from them
* Remove redundant references from Config/Help & Info * Remove redundant references from Config/Help & Info
@ -50,6 +50,7 @@
* Fix reduces time API endpoint Shows takes to return results * Fix reduces time API endpoint Shows takes to return results
* Fix Coming Eps Page to include shows +/- 1 day for time zone corrections * Fix Coming Eps Page to include shows +/- 1 day for time zone corrections
* Fix season jumping dropdown menu for shows with over 15 seasons on Display Show * Fix season jumping dropdown menu for shows with over 15 seasons on Display Show
* Fix article sorting for Coming Eps, Manage, Show List, and Trending Shows
### 0.3.1 (2014-11-19 16:40:00 UTC) ### 0.3.1 (2014-11-19 16:40:00 UTC)

View file

@ -82,7 +82,7 @@
if (0 == s.indexOf('Loading...')) if (0 == s.indexOf('Loading...'))
return s.replace('Loading...', '000') return s.replace('Loading...', '000')
#if not $sickbeard.SORT_ARTICLE: #if not $sickbeard.SORT_ARTICLE:
return (s || '').replace(/^(The|A|An)\s/i, '') return (s || '').replace(/^(?:(?:A(?!\s+to)n?)|The)\s(\w)/i, '$1')
#else: #else:
return (s || '') return (s || '')
#end if #end if

View file

@ -58,7 +58,7 @@
return s.replace('Loading...','000'); return s.replace('Loading...','000');
else else
#if not $sickbeard.SORT_ARTICLE: #if not $sickbeard.SORT_ARTICLE:
return (s || '').replace(/^(The|A|An)\s/i,''); return (s || '').replace(/^(?:(?:A(?!\s+to)n?)|The)\s(\w)/i, '$1');
#else: #else:
return (s || ''); return (s || '');
#end if #end if
@ -162,7 +162,7 @@
name: function( itemElem ) { name: function( itemElem ) {
var name = \$( itemElem ).attr('data-name'); var name = \$( itemElem ).attr('data-name');
#if not $sickbeard.SORT_ARTICLE: #if not $sickbeard.SORT_ARTICLE:
return (name || '').replace(/^(The|A|An)\s/i,''); return (name || '').replace(/^(?:(?:A(?!\s+to)n?)|The)\s(\w)/i, '$1');
#else: #else:
return (name || ''); return (name || '');
#end if #end if

View file

@ -36,7 +36,7 @@
name: function( itemElem ) { name: function( itemElem ) {
var name = \$( itemElem ).attr('data-name') || ''; var name = \$( itemElem ).attr('data-name') || '';
#if not $sickbeard.SORT_ARTICLE: #if not $sickbeard.SORT_ARTICLE:
name = name.replace(/^(The|A|An)\s/i, ''); name = name.replace(/^(?:(?:A(?!\s+to)n?)|The)\s(\w)/i, '$1');
#end if #end if
return name.toLowerCase(); return name.toLowerCase();
}, },

View file

@ -18,7 +18,7 @@
}, },
format: function(s) { format: function(s) {
#if not $sickbeard.SORT_ARTICLE: #if not $sickbeard.SORT_ARTICLE:
return (s || '').replace(/^(The|A|An)\s/i,''); return (s || '').replace(/^(?:(?:A(?!\s+to)n?)|The)\s(\w)/i, '$1');
#else: #else:
return (s || ''); return (s || '');
#end if #end if

View file

@ -1428,3 +1428,6 @@ def get_size(start_path='.'):
total_size += ek.ek(os.path.getsize, fp) total_size += ek.ek(os.path.getsize, fp)
return total_size return total_size
def remove_article(text=''):
return re.sub(r'(?i)/^(?:(?:A(?!\s+to)n?)|The)\s(\w)', r'\1', text)

View file

@ -37,6 +37,7 @@ from sickbeard import processTV
from sickbeard import network_timezones, sbdatetime from sickbeard import network_timezones, sbdatetime
from sickbeard.exceptions import ex from sickbeard.exceptions import ex
from sickbeard.common import SNATCHED, SNATCHED_PROPER, DOWNLOADED, SKIPPED, UNAIRED, IGNORED, ARCHIVED, WANTED, UNKNOWN from sickbeard.common import SNATCHED, SNATCHED_PROPER, DOWNLOADED, SKIPPED, UNAIRED, IGNORED, ARCHIVED, WANTED, UNKNOWN
from sickbeard.helpers import remove_article
from common import Quality, qualityPresetStrings, statusStrings from common import Quality, qualityPresetStrings, statusStrings
try: try:
@ -766,22 +767,22 @@ class CMD_ComingEpisodes(ApiCall):
sorts = { sorts = {
'date': (lambda a, b: cmp( 'date': (lambda a, b: cmp(
(a['parsed_datetime'], (a['parsed_datetime'],
(a['show_name'], re.sub(r'(?i)^(The|A|An)\s', '', a['show_name']))[not sickbeard.SORT_ARTICLE], (a['show_name'], remove_article(a['show_name']))[not sickbeard.SORT_ARTICLE],
a['season'], a['episode']), a['season'], a['episode']),
(b['parsed_datetime'], (b['parsed_datetime'],
(b['show_name'], re.sub(r'(?i)^(The|A|An)\s', '', b['show_name']))[not sickbeard.SORT_ARTICLE], (b['show_name'], remove_article(b['show_name']))[not sickbeard.SORT_ARTICLE],
b['season'], b['episode']))), b['season'], b['episode']))),
'show': (lambda a, b: cmp( 'show': (lambda a, b: cmp(
((a['show_name'], re.sub(r'(?i)^(The|A|An)\s', '', a['show_name']))[not sickbeard.SORT_ARTICLE], ((a['show_name'], remove_article(a['show_name']))[not sickbeard.SORT_ARTICLE],
a['parsed_datetime'], a['season'], a['episode']), a['parsed_datetime'], a['season'], a['episode']),
((b['show_name'], re.sub(r'(?i)^(The|A|An)\s', '', b['show_name']))[not sickbeard.SORT_ARTICLE], ((b['show_name'], remove_article(b['show_name']))[not sickbeard.SORT_ARTICLE],
b['parsed_datetime'], b['season'], b['episode']))), b['parsed_datetime'], b['season'], b['episode']))),
'network': (lambda a, b: cmp( 'network': (lambda a, b: cmp(
(a['network'], a['parsed_datetime'], (a['network'], a['parsed_datetime'],
(a['show_name'], re.sub(r'(?i)^(The|A|An)\s', '', a['show_name']))[not sickbeard.SORT_ARTICLE], (a['show_name'], remove_article(a['show_name']))[not sickbeard.SORT_ARTICLE],
a['season'], a['episode']), a['season'], a['episode']),
(b['network'], b['parsed_datetime'], (b['network'], b['parsed_datetime'],
(b['show_name'], re.sub(r'(?i)^(The|A|An)\s', '', b['show_name']))[not sickbeard.SORT_ARTICLE], (b['show_name'], remove_article(b['show_name']))[not sickbeard.SORT_ARTICLE],
b['season'], b['episode']))) b['season'], b['episode'])))
} }

View file

@ -52,6 +52,7 @@ from sickbeard.common import Quality, Overview, statusStrings, qualityPresetStri
from sickbeard.common import SNATCHED, UNAIRED, IGNORED, ARCHIVED, WANTED, FAILED from sickbeard.common import SNATCHED, UNAIRED, IGNORED, ARCHIVED, WANTED, FAILED
from sickbeard.common import SD, HD720p, HD1080p from sickbeard.common import SD, HD720p, HD1080p
from sickbeard.exceptions import ex from sickbeard.exceptions import ex
from sickbeard.helpers import remove_article
from sickbeard.scene_exceptions import get_scene_exceptions from sickbeard.scene_exceptions import get_scene_exceptions
from sickbeard.scene_numbering import get_scene_numbering, set_scene_numbering, get_scene_numbering_for_show, \ from sickbeard.scene_numbering import get_scene_numbering, set_scene_numbering, get_scene_numbering_for_show, \
get_xem_numbering_for_show, get_scene_absolute_numbering_for_show, get_xem_absolute_numbering_for_show, \ get_xem_numbering_for_show, get_scene_absolute_numbering_for_show, get_xem_absolute_numbering_for_show, \
@ -394,22 +395,22 @@ class MainHandler(RequestHandler):
sorts = { sorts = {
'date': (lambda a, b: cmp( 'date': (lambda a, b: cmp(
(a['localtime'], (a['localtime'],
(a['show_name'], re.sub(r'(?i)^(The|A|An)\s', '', a['show_name']))[not sickbeard.SORT_ARTICLE], (a['show_name'], remove_article(a['show_name']))[not sickbeard.SORT_ARTICLE],
a['season'], a['episode']), a['season'], a['episode']),
(b['localtime'], (b['localtime'],
(b['show_name'], re.sub(r'(?i)^(The|A|An)\s', '', b['show_name']))[not sickbeard.SORT_ARTICLE], (b['show_name'], remove_article(b['show_name']))[not sickbeard.SORT_ARTICLE],
b['season'], b['episode']))), b['season'], b['episode']))),
'show': (lambda a, b: cmp( 'show': (lambda a, b: cmp(
((a['show_name'], re.sub(r'(?i)^(The|A|An)\s', '', a['show_name']))[not sickbeard.SORT_ARTICLE], ((a['show_name'], remove_article(a['show_name']))[not sickbeard.SORT_ARTICLE],
a['localtime'], a['season'], a['episode']), a['localtime'], a['season'], a['episode']),
((b['show_name'], re.sub(r'(?i)^(The|A|An)\s', '', b['show_name']))[not sickbeard.SORT_ARTICLE], ((b['show_name'], remove_article(b['show_name']))[not sickbeard.SORT_ARTICLE],
b['localtime'], b['season'], b['episode']))), b['localtime'], b['season'], b['episode']))),
'network': (lambda a, b: cmp( 'network': (lambda a, b: cmp(
(a['network'], a['localtime'], (a['network'], a['localtime'],
(a['show_name'], re.sub(r'(?i)^(The|A|An)\s', '', a['show_name']))[not sickbeard.SORT_ARTICLE], (a['show_name'], remove_article(a['show_name']))[not sickbeard.SORT_ARTICLE],
a['season'], a['episode']), a['season'], a['episode']),
(b['network'], b['localtime'], (b['network'], b['localtime'],
(b['show_name'], re.sub(r'(?i)^(The|A|An)\s', '', b['show_name']))[not sickbeard.SORT_ARTICLE], (b['show_name'], remove_article(b['show_name']))[not sickbeard.SORT_ARTICLE],
b['season'], b['episode']))) b['season'], b['episode'])))
} }