diff --git a/HISTORY.rst b/HISTORY.rst index 004bae9..77fedbc 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -7,6 +7,8 @@ History - `screen_size` property `540p` was added. - Fix `audio_channel` detection for `6.0` - Fix common words being detected as language +- `streaming_service` is now configurable in advanced options +- Add `DC Universe` to `streaming_service` 3.0.3 (2018-10-23) diff --git a/docs/properties.rst b/docs/properties.rst index 0b8e5ea..663cc66 100644 --- a/docs/properties.rst +++ b/docs/properties.rst @@ -76,18 +76,18 @@ Main properties ``Amazon Prime``, ``Animal Planet``, ``AnimeLab``, ``AOL``, ``ARD``, ``BBC iPlayer``, ``BravoTV``, ``Canal+``, ``Cartoon Network``, ``CBC``, ``CBS``, ``Channel 4``, ``CHRGD``, ``Cinemax``, ``CNBC``, ``Comedy Central``, ``Comedians in Cars Getting Coffee``, ``Country Music Television``, ``Crackle``, ``Crunchy Roll``, ``CSpan``, - ``CTV``, ``CuriosityStream``, ``CWSeed``, ``Daisuki``, ``Deadhouse Films``, ``Digiturk Diledigin Yerde``, - ``Discovery``, ``DIY Network``, ``Disney``, ``Doc Club``, ``DPlay``, ``E!``, ``ePix``, ``El Trece``, ``ESPN``, - ``Esquire``, ``Family``, ``Family Jr``, ``Food Network``, ``Fox``, ``Freeform``, ``FYI Network``, ``Global``, - ``GloboSat Play``, ``Hallmark``, ``HBO Go``, ``HGTV``, ``History``, ``Hulu``, ``Investigation Discovery``, ``IFC``, - ``iTunes``, ``ITV``, ``Knowledge Network``, ``Lifetime``, ``Motor Trend OnDemand``, ``MSNBC``, ``MTV``, - ``National Geographic``, ``NBA TV``, ``NBC``, ``Netflix``, ``NFL``, ``NFL Now``, ``NHL GameCenter``, - ``Nickelodeon``, ``Norsk Rikskringkasting``, ``PBS``, ``PBS Kids``, ``Playstation Network``, ``Pluzz``, ``RTE One``, - ``SBS (AU)``, ``SeeSo``, ``Shomi``, ``Spike``, ``Spike TV``, ``Sportsnet``, ``Sprout``, ``Stan``, ``Starz``, - ``Sveriges Television``, ``SwearNet``, ``Syfy``, ``TBS``, ``TFou``, ``The CW``, ``TLC``, ``TubiTV``, - ``TV3 Ireland``, ``TV4 Sweeden``, ``TV Land``, ``UFC``, ``UKTV``, ``Univision``, ``USA Network``, ``Velocity``, - ``VH1``, ``Viceland``, ``Vimeo``, ``VRV``, ``W Network``, ``WatchMe``, ``WWE Network``, ``Xbox Video``, ``Yahoo``, - ``YouTube Red``, ``ZDF`` + ``CTV``, ``CuriosityStream``, ``CWSeed``, ``Daisuki``, ``DC Universe``, ``Deadhouse Films``, + ``Digiturk Diledigin Yerde``, ``Discovery``, ``DIY Network``, ``Disney``, ``Doc Club``, ``DPlay``, ``E!``, ``ePix``, + ``El Trece``, ``ESPN``, ``Esquire``, ``Family``, ``Family Jr``, ``Food Network``, ``Fox``, ``Freeform``, + ``FYI Network``, ``Global``, ``GloboSat Play``, ``Hallmark``, ``HBO Go``, ``HGTV``, ``History``, ``Hulu``, + ``Investigation Discovery``, ``IFC``, ``iTunes``, ``ITV``, ``Knowledge Network``, ``Lifetime``, + ``Motor Trend OnDemand``, ``MSNBC``, ``MTV``, ``National Geographic``, ``NBA TV``, ``NBC``, ``Netflix``, ``NFL``, + ``NFL Now``, ``NHL GameCenter``, ``Nickelodeon``, ``Norsk Rikskringkasting``, ``PBS``, ``PBS Kids``, + ``Playstation Network``, ``Pluzz``, ``RTE One``, ``SBS (AU)``, ``SeeSo``, ``Shomi``, ``Spike``, ``Spike TV``, + ``Sportsnet``, ``Sprout``, ``Stan``, ``Starz``, ``Sveriges Television``, ``SwearNet``, ``Syfy``, ``TBS``, ``TFou``, + ``The CW``, ``TLC``, ``TubiTV``, ``TV3 Ireland``, ``TV4 Sweeden``, ``TV Land``, ``UFC``, ``UKTV``, ``Univision``, + ``USA Network``, ``Velocity``, ``VH1``, ``Viceland``, ``Vimeo``, ``VRV``, ``W Network``, ``WatchMe``, + ``WWE Network``, ``Xbox Video``, ``Yahoo``, ``YouTube Red``, ``ZDF`` Episode properties diff --git a/guessit/config/options.json b/guessit/config/options.json index 6b91ca8..9945a63 100644 --- a/guessit/config/options.json +++ b/guessit/config/options.json @@ -390,6 +390,180 @@ "prefixes": [ "from" ] + }, + "streaming_service": { + "A&E": [ + "AE", + "A&E" + ], + "ABC": "AMBC", + "ABC Australia": "AUBC", + "Al Jazeera English": "AJAZ", + "AMC": "AMC", + "Amazon Prime": [ + "AMZN", + "Amazon", + "re:Amazon-?Prime" + ], + "Adult Swim": [ + "AS", + "re:Adult-?Swim" + ], + "America's Test Kitchen": "ATK", + "Animal Planet": "ANPL", + "AnimeLab": "ANLB", + "AOL": "AOL", + "ARD": "ARD", + "BBC iPlayer": [ + "iP", + "re:BBC-?iPlayer" + ], + "BravoTV": "BRAV", + "Canal+": "CNLP", + "Cartoon Network": "CN", + "CBC": "CBC", + "CBS": "CBS", + "CNBC": "CNBC", + "Comedy Central": [ + "CC", + "re:Comedy-?Central" + ], + "Channel 4": "4OD", + "CHRGD": "CHGD", + "Cinemax": "CMAX", + "Country Music Television": "CMT", + "Comedians in Cars Getting Coffee": "CCGC", + "Crunchy Roll": [ + "CR", + "re:Crunchy-?Roll" + ], + "Crackle": "CRKL", + "CSpan": "CSPN", + "CTV": "CTV", + "CuriosityStream": "CUR", + "CWSeed": "CWS", + "Daisuki": "DSKI", + "DC Universe": "DCU", + "Deadhouse Films": "DHF", + "Digiturk Diledigin Yerde": "DDY", + "Discovery": [ + "DISC", + "Discovery" + ], + "Disney": [ + "DSNY", + "Disney" + ], + "DIY Network": "DIY", + "Doc Club": "DOCC", + "DPlay": "DPLY", + "E!": "ETV", + "ePix": "EPIX", + "El Trece": "ETTV", + "ESPN": "ESPN", + "Esquire": "ESQ", + "Family": "FAM", + "Family Jr": "FJR", + "Food Network": "FOOD", + "Fox": "FOX", + "Freeform": "FREE", + "FYI Network": "FYI", + "Global": "GLBL", + "GloboSat Play": "GLOB", + "Hallmark": "HLMK", + "HBO Go": [ + "HBO", + "re:HBO-?Go" + ], + "HGTV": "HGTV", + "History": [ + "HIST", + "History" + ], + "Hulu": "HULU", + "Investigation Discovery": "ID", + "IFC": "IFC", + "iTunes": "iTunes", + "ITV": "ITV", + "Knowledge Network": "KNOW", + "Lifetime": "LIFE", + "Motor Trend OnDemand": "MTOD", + "MSNBC": "MNBC", + "MTV": "MTV", + "National Geographic": [ + "NATG", + "re:National-?Geographic" + ], + "NBA TV": [ + "NBA", + "re:NBA-?TV" + ], + "NBC": "NBC", + "Netflix": [ + "NF", + "Netflix" + ], + "NFL": "NFL", + "NFL Now": "NFLN", + "NHL GameCenter": "GC", + "Nickelodeon": [ + "NICK", + "Nickelodeon" + ], + "Norsk Rikskringkasting": "NRK", + "PBS": "PBS", + "PBS Kids": "PBSK", + "Playstation Network": "PSN", + "Pluzz": "PLUZ", + "RTE One": "RTE", + "SBS (AU)": "SBS", + "SeeSo": [ + "SESO", + "SeeSo" + ], + "Shomi": "SHMI", + "Spike": "SPIK", + "Spike TV": [ + "SPKE", + "re:Spike-?TV" + ], + "Sportsnet": "SNET", + "Sprout": "SPRT", + "Stan": "STAN", + "Starz": "STZ", + "Sveriges Television": "SVT", + "SwearNet": "SWER", + "Syfy": "SYFY", + "TBS": "TBS", + "TFou": "TFOU", + "The CW": [ + "CW", + "re:The-?CW" + ], + "TLC": "TLC", + "TubiTV": "TUBI", + "TV3 Ireland": "TV3", + "TV4 Sweeden": "TV4", + "TV Land": [ + "TVL", + "re:TV-?Land" + ], + "UFC": "UFC", + "UKTV": "UKTV", + "Univision": "UNIV", + "USA Network": "USAN", + "Velocity": "VLCT", + "VH1": "VH1", + "Viceland": "VICE", + "Vimeo": "VMEO", + "VRV": "VRV", + "W Network": "WNET", + "WatchMe": "WME", + "WWE Network": "WWEN", + "Xbox Video": "XBOX", + "Yahoo": "YHOO", + "YouTube Red": "RED", + "ZDF": "ZDF" } } } \ No newline at end of file diff --git a/guessit/rules/properties/streaming_service.py b/guessit/rules/properties/streaming_service.py index 423f043..3f5646c 100644 --- a/guessit/rules/properties/streaming_service.py +++ b/guessit/rules/properties/streaming_service.py @@ -25,133 +25,13 @@ def streaming_service(config): # pylint: disable=too-many-statements,unused-arg rebulk = rebulk.string_defaults(ignore_case=True).regex_defaults(flags=re.IGNORECASE, abbreviations=[dash]) rebulk.defaults(name='streaming_service', tags=['source-prefix']) - rebulk.string('AE', 'A&E', value='A&E') - rebulk.string('AMBC', value='ABC') - rebulk.string('AUBC', value='ABC Australia') - rebulk.string('AJAZ', value='Al Jazeera English') - rebulk.string('AMC', value='AMC') - rebulk.string('AMZN', 'Amazon', value='Amazon Prime') - rebulk.regex('Amazon-?Prime', value='Amazon Prime') - rebulk.string('AS', value='Adult Swim') - rebulk.regex('Adult-?Swim', value='Adult Swim') - rebulk.string('ATK', value="America's Test Kitchen") - rebulk.string('ANPL', value='Animal Planet') - rebulk.string('ANLB', value='AnimeLab') - rebulk.string('AOL', value='AOL') - rebulk.string('ARD', value='ARD') - rebulk.string('iP', value='BBC iPlayer') - rebulk.regex('BBC-?iPlayer', value='BBC iPlayer') - rebulk.string('BRAV', value='BravoTV') - rebulk.string('CNLP', value='Canal+') - rebulk.string('CN', value='Cartoon Network') - rebulk.string('CBC', value='CBC') - rebulk.string('CBS', value='CBS') - rebulk.string('CNBC', value='CNBC') - rebulk.string('CC', value='Comedy Central') - rebulk.string('4OD', value='Channel 4') - rebulk.string('CHGD', value='CHRGD') - rebulk.string('CMAX', value='Cinemax') - rebulk.string('CMT', value='Country Music Television') - rebulk.regex('Comedy-?Central', value='Comedy Central') - rebulk.string('CCGC', value='Comedians in Cars Getting Coffee') - rebulk.string('CR', value='Crunchy Roll') - rebulk.string('CRKL', value='Crackle') - rebulk.regex('Crunchy-?Roll', value='Crunchy Roll') - rebulk.string('CSPN', value='CSpan') - rebulk.string('CTV', value='CTV') - rebulk.string('CUR', value='CuriosityStream') - rebulk.string('CWS', value='CWSeed') - rebulk.string('DSKI', value='Daisuki') - rebulk.string('DHF', value='Deadhouse Films') - rebulk.string('DDY', value='Digiturk Diledigin Yerde') - rebulk.string('DISC', 'Discovery', value='Discovery') - rebulk.string('DSNY', 'Disney', value='Disney') - rebulk.string('DIY', value='DIY Network') - rebulk.string('DOCC', value='Doc Club') - rebulk.string('DPLY', value='DPlay') - rebulk.string('ETV', value='E!') - rebulk.string('EPIX', value='ePix') - rebulk.string('ETTV', value='El Trece') - rebulk.string('ESPN', value='ESPN') - rebulk.string('ESQ', value='Esquire') - rebulk.string('FAM', value='Family') - rebulk.string('FJR', value='Family Jr') - rebulk.string('FOOD', value='Food Network') - rebulk.string('FOX', value='Fox') - rebulk.string('FREE', value='Freeform') - rebulk.string('FYI', value='FYI Network') - rebulk.string('GLBL', value='Global') - rebulk.string('GLOB', value='GloboSat Play') - rebulk.string('HLMK', value='Hallmark') - rebulk.string('HBO', value='HBO Go') - rebulk.regex('HBO-?Go', value='HBO Go') - rebulk.string('HGTV', value='HGTV') - rebulk.string('HIST', 'History', value='History') - rebulk.string('HULU', value='Hulu') - rebulk.string('ID', value='Investigation Discovery') - rebulk.string('IFC', value='IFC') - rebulk.string('iTunes', value='iTunes') - rebulk.string('ITV', value='ITV') - rebulk.string('KNOW', value='Knowledge Network') - rebulk.string('LIFE', value='Lifetime') - rebulk.string('MTOD', value='Motor Trend OnDemand') - rebulk.string('MNBC', value='MSNBC') - rebulk.string('MTV', value='MTV') - rebulk.string('NATG', value='National Geographic') - rebulk.regex('National-?Geographic', value='National Geographic') - rebulk.string('NBA', value='NBA TV') - rebulk.regex('NBA-?TV', value='NBA TV') - rebulk.string('NBC', value='NBC') - rebulk.string('NF', 'Netflix', value='Netflix') - rebulk.string('NFL', value='NFL') - rebulk.string('NFLN', value='NFL Now') - rebulk.string('GC', value='NHL GameCenter') - rebulk.string('NICK', 'Nickelodeon', value='Nickelodeon') - rebulk.string('NRK', value='Norsk Rikskringkasting') - rebulk.string('PBS', value='PBS') - rebulk.string('PBSK', value='PBS Kids') - rebulk.string('PSN', value='Playstation Network') - rebulk.string('PLUZ', value='Pluzz') - rebulk.string('RTE', value='RTE One') - rebulk.string('SBS', value='SBS (AU)') - rebulk.string('SESO', 'SeeSo', value='SeeSo') - rebulk.string('SHMI', value='Shomi') - rebulk.string('SPIK', value='Spike') - rebulk.string('SPKE', value='Spike TV') - rebulk.regex('Spike-?TV', value='Spike TV') - rebulk.string('SNET', value='Sportsnet') - rebulk.string('SPRT', value='Sprout') - rebulk.string('STAN', value='Stan') - rebulk.string('STZ', value='Starz') - rebulk.string('SVT', value='Sveriges Television') - rebulk.string('SWER', value='SwearNet') - rebulk.string('SYFY', value='Syfy') - rebulk.string('TBS', value='TBS') - rebulk.string('TFOU', value='TFou') - rebulk.string('CW', value='The CW') - rebulk.regex('The-?CW', value='The CW') - rebulk.string('TLC', value='TLC') - rebulk.string('TUBI', value='TubiTV') - rebulk.string('TV3', value='TV3 Ireland') - rebulk.string('TV4', value='TV4 Sweeden') - rebulk.string('TVL', value='TV Land') - rebulk.regex('TV-?Land', value='TV Land') - rebulk.string('UFC', value='UFC') - rebulk.string('UKTV', value='UKTV') - rebulk.string('UNIV', value='Univision') - rebulk.string('USAN', value='USA Network') - rebulk.string('VLCT', value='Velocity') - rebulk.string('VH1', value='VH1') - rebulk.string('VICE', value='Viceland') - rebulk.string('VMEO', value='Vimeo') - rebulk.string('VRV', value='VRV') - rebulk.string('WNET', value='W Network') - rebulk.string('WME', value='WatchMe') - rebulk.string('WWEN', value='WWE Network') - rebulk.string('XBOX', value='Xbox Video') - rebulk.string('YHOO', value='Yahoo') - rebulk.string('RED', value='YouTube Red') - rebulk.string('ZDF', value='ZDF') + for value, items in config.items(): + patterns = items if isinstance(items, list) else [items] + for pattern in patterns: + if pattern.startswith('re:'): + rebulk.regex(pattern, value=value) + else: + rebulk.string(pattern, value=value) rebulk.rules(ValidateStreamingService) diff --git a/guessit/test/episodes.yml b/guessit/test/episodes.yml index 9cb28f1..fcf193e 100644 --- a/guessit/test/episodes.yml +++ b/guessit/test/episodes.yml @@ -4570,4 +4570,19 @@ screen_size: 1080p release_group: grp container: mkv - type: episode \ No newline at end of file + type: episode + +? Titans.2018.S01E09.Hank.And.Dawn.720p.DCU.WEB-DL.AAC2.0.H264-NTb +: title: Titans + year: 2018 + season: 1 + episode: 9 + episode_title: Hank And Dawn + screen_size: 720p + streaming_service: DC Universe + source: Web + audio_codec: AAC + audio_channels: '2.0' + video_codec: H.264 + release_group: NTb + type: episode