Index: head/www/py-flexget/Makefile =================================================================== --- head/www/py-flexget/Makefile (revision 502816) +++ head/www/py-flexget/Makefile (revision 502817) @@ -1,70 +1,71 @@ # Created by: Mario Sergio Fujikawa Ferreira # $FreeBSD$ PORTNAME= flexget -PORTVERSION= 2.14.24 +PORTVERSION= 2.21.1 PORTEPOCH= 1 CATEGORIES= www python PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} MAINTAINER= jbeich@FreeBSD.org COMMENT= Program to automate downloading from different sources LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sqlalchemy12>0:databases/py-sqlalchemy12@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}Jinja2>0:devel/py-Jinja2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}Jinja2>=2.10:devel/py-Jinja2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}rebulk>=0.9.0:devel/py-rebulk@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}rpyc>0:devel/py-RPyC@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}apscheduler>=3.2.0:devel/py-apscheduler@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}dateutil>=2.5.3:devel/py-dateutil@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dateutil>0:devel/py-dateutil@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}future>=0.15.2:devel/py-future@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}jsonschema>=2.0:devel/py-jsonschema@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}path.py>=8.1.1:devel/py-path.py@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}path.py<10.6:devel/py-path.py@${PY_FLAVOR} \ ${PY_PATHLIB} \ ${PYTHON_PKGNAMEPREFIX}pyparsing>=2.0.3:devel/py-pyparsing@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}yaml>0:devel/py-yaml@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}progressbar>0:misc/py-progressbar@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}guessit>=2.1.4:multimedia/py-guessit@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}yaml>=3.13:devel/py-yaml@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}progressbar>=2.5:misc/py-progressbar@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}guessit<3.0.0:multimedia/py-guessit@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pynzb>0:news/py-pynzb@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}zxcvbn>0:security/py-zxcvbn@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}plumbum>=1.2:sysutils/py-plumbum@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}colorclass>=2.2.0:textproc/py-colorclass@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}feedparser>=5.2.1:textproc/py-feedparser@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}rss2gen>0:textproc/py-rss2gen@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}terminaltables>=3.1.0:textproc/py-terminaltables@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}beautifulsoup>=4.5:www/py-beautifulsoup@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}cherrypy>=3.7.0:www/py-cherrypy@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}Flask>=0.7:www/py-flask@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}Flask-Compress>=1.2.1:www/py-flask-compress@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}Flask-Cors>=2.1.2:www/py-flask-cors@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}Flask-Login>=0.4.0:www/py-flask-login@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}Flask-RESTful>=0.3.3:www/py-flask-restful@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}flask-restplus>=0.10.1:www/py-flask-restplus@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}html5lib>=0.11:www/py-html5lib@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}requests>=2.8.0:www/py-requests@${PY_FLAVOR} + ${PYTHON_PKGNAMEPREFIX}requests>=2.20.0:www/py-requests@${PY_FLAVOR} TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pytest>=3.3:devel/py-pytest@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}vcrpy>0:devel/py-vcrpy@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}boto3>0:www/py-boto3@${PY_FLAVOR} USE_GITHUB= yes GH_PROJECT= Flexget NO_ARCH= yes USES= python USE_PYTHON= autoplist distutils post-extract: # Unlock dependencies' versions @${MV} ${WRKSRC}/requirements.in ${WRKSRC}/requirements.txt do-test: @(cd ${TEST_WRKSRC} && ${SETENV} ${TEST_ENV} ${PYTHON_CMD} -m pytest) .include .if ${PYTHON_REL} < 3300 TEST_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}mock>0:devel/py-mock@${PY_FLAVOR} .endif .include Index: head/www/py-flexget/distinfo =================================================================== --- head/www/py-flexget/distinfo (revision 502816) +++ head/www/py-flexget/distinfo (revision 502817) @@ -1,3 +1,3 @@ -TIMESTAMP = 1538359480 -SHA256 (flexget-Flexget-2.14.24_GH0.tar.gz) = 3459a600848f7f44f4dc0119f26a30c0959c338a157f957d58d457d3dde9977c -SIZE (flexget-Flexget-2.14.24_GH0.tar.gz) = 6633696 +TIMESTAMP = 1558749819 +SHA256 (flexget-Flexget-2.21.1_GH0.tar.gz) = 9a612657e087229d4f8ca13fd10deb9af39347ba1f96b8a028f3a6ed2ae30a7e +SIZE (flexget-Flexget-2.21.1_GH0.tar.gz) = 7141563 Index: head/www/py-flexget/files/patch-01-guessit-2.1.4 =================================================================== --- head/www/py-flexget/files/patch-01-guessit-2.1.4 (nonexistent) +++ head/www/py-flexget/files/patch-01-guessit-2.1.4 (revision 502817) @@ -0,0 +1,141 @@ +Revert https://github.com/Flexget/Flexget/commit/f6b01c1176ff + +--- flexget/components/imdb/utils.py.orig 2019-05-25 02:03:39 UTC ++++ flexget/components/imdb/utils.py +@@ -96,7 +96,7 @@ class ImdbSearch(object): + parser = plugin.get('parsing', 'imdb_search').parse_movie(raw_name) + name = parser.name + year = parser.year +- if not name: ++ if name == '': + log.critical('Failed to parse name from %s', raw_name) + return None + log.debug('smart_match name=%s year=%s' % (name, str(year))) +--- flexget/components/parsing/parsers/parser_guessit.py.orig 2019-05-25 02:03:39 UTC ++++ flexget/components/parsing/parsers/parser_guessit.py +@@ -40,16 +40,9 @@ _id_regexps = Rebulk().functional( + ) + + +-def rules_builder(config): +- rebulk = rebulk_builder(config) +- rebulk.rebulk(_id_regexps) +- return rebulk ++guessit_api = GuessItApi(rebulk_builder().rebulk(_id_regexps)) + + +-guessit_api = GuessItApi() +-guessit_api.configure(options={}, rules_builder=rules_builder, force=True) +- +- + def normalize_component(data): + if data is None: + return [] +@@ -66,19 +59,6 @@ except AttributeError: + + + class ParserGuessit(object): +- SOURCE_MAP = { +- 'Camera': 'cam', +- 'HD Camera': 'cam', +- 'HD Telesync': 'telesync', +- 'Pay-per-view': 'ppv', +- 'Digital TV': 'dvb', +- 'Video on Demand': 'vod', +- 'Analog HDTV': 'ahdtv', +- 'Ultra HDTV': 'uhdtv', +- 'HD Telecine': 'hdtc', +- 'Web': 'web-dl', +- } +- + @staticmethod + def _guessit_options(options): + settings = { +@@ -87,6 +67,7 @@ class ParserGuessit(object): + 'allowed_countries': ['us', 'uk', 'gb'], + 'single_value': True, + } ++ # 'clean_function': clean_value + options['episode_prefer_number'] = not options.get('identified_by') == 'ep' + if options.get('allow_groups'): + options['expected_group'] = options['allow_groups'] +@@ -114,18 +95,17 @@ class ParserGuessit(object): + else: + version -= 1 + proper_count = guessit_result.get('proper_count', 0) +- fastsub = 'fast subtitled' in normalize_component(guessit_result.values_list.get('other')) ++ fastsub = 'fastsub' in normalize_component(guessit_result.values_list.get('other')) + return version + proper_count - (5 if fastsub else 0) + +- def _source(self, guessit_result): +- other = normalize_component(guessit_result.values_list.get('other')) +- source = self.SOURCE_MAP.get(guessit_result.get('source'), guessit_result.get('source')) +- # special case +- if source == 'web-dl' and 'rip' in other: +- source = 'webrip' ++ def _quality(self, guessit_result): ++ """Generate a FlexGet Quality from a guessit result.""" ++ resolution = normalize_component(guessit_result.values_list.get('screen_size')) ++ other = normalize_component(guessit_result.get('other')) ++ if not resolution and 'hr' in other: ++ resolution.append('hr') + +- source = normalize_component(source) +- ++ source = normalize_component(guessit_result.get('format')) + if 'preair' in other: + source.append('preair') + if 'screener' in other: +@@ -136,17 +116,6 @@ class ParserGuessit(object): + if 'region 5' in other or 'region c' in other: + source.append('r5') + +- return source +- +- def _quality(self, guessit_result): +- """Generate a FlexGet Quality from a guessit result.""" +- resolution = normalize_component(guessit_result.values_list.get('screen_size')) +- other = normalize_component(guessit_result.values_list.get('other')) +- if not resolution and 'high resolution' in other: +- resolution.append('hr') +- +- source = self._source(guessit_result) +- + codec = normalize_component(guessit_result.values_list.get('video_codec')) + if '10bit' in normalize_component(guessit_result.values_list.get('color_depth')): + codec.append('10bit') +@@ -155,11 +124,9 @@ class ParserGuessit(object): + audio_profile = normalize_component(guessit_result.values_list.get('audio_profile')) + audio_channels = normalize_component(guessit_result.values_list.get('audio_channels')) + # unlike the other components, audio can be a bit iffy with multiple codecs, so we limit it to one +- if 'dts' in audio and any(hd in audio_profile for hd in ['hd', 'master audio']): ++ if 'dts' in audio and any(hd in audio_profile for hd in ['HD', 'HDMA']): + audio = ['dtshd'] +- elif '5.1' in audio_channels and 'dolby digital plus' in audio: +- audio = ['dd+5.1'] +- elif '5.1' in audio_channels and 'dolby digital' in audio: ++ elif '5.1' in audio_channels and any(dd in audio for dd in ['ac3', 'dolbydigital']): + audio = ['dd5.1'] + + # Make sure everything are strings (guessit will return lists when there are multiples) +--- flexget/tests/test_seriesparser.py.orig 2019-05-25 02:03:39 UTC ++++ flexget/tests/test_seriesparser.py +@@ -114,7 +114,6 @@ class TestSeriesParser(object): + s = parse(name='Something', data='Something - Season2 Episode2') + assert s.season == 2 and s.episode == 2, 'failed to parse %s' % s + +- @pytest.mark.xfail(reason='Not supported in guessit, works for internal parser') + def test_series_episode(self, parse): + """SeriesParser: series X, episode Y""" + s = parse(name='Something', data='Something - Series 2, Episode 2') +--- requirements.txt.orig 2019-05-25 02:03:39 UTC ++++ requirements.txt +@@ -15,7 +15,7 @@ python-dateutil + jsonschema>=2.0 + path.py>=10.6 + pathlib>=1.0; python_version<'3.4' +-guessit==3.0.3 ++guessit<3.0.0 + rebulk>=0.9.0 + apscheduler>=3.2.0 + terminaltables>=3.1.0 Property changes on: head/www/py-flexget/files/patch-01-guessit-2.1.4 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/www/py-flexget/files/patch-02-path.py-8.1 =================================================================== --- head/www/py-flexget/files/patch-02-path.py-8.1 (nonexistent) +++ head/www/py-flexget/files/patch-02-path.py-8.1 (revision 502817) @@ -0,0 +1,69 @@ +Revert https://github.com/Flexget/Flexget/commit/0a401204a107 + +--- flexget/api/core/server.py.orig 2019-05-25 02:03:39 UTC ++++ flexget/api/core/server.py +@@ -571,6 +571,6 @@ class ServerCrashLogAPI(APIResource): + path = Path(self.manager.config_base) + crashes = [ + {'name': file.name, 'content': file.open().readlines()} +- for file in path.listdir(match='crash_report*.log') ++ for file in path.listdir(pattern='crash_report*.log') + ] + return jsonify(crashes) +--- flexget/plugin.py.orig 2019-05-25 02:03:39 UTC ++++ flexget/plugin.py +@@ -476,7 +476,7 @@ def _load_plugins_from_dirs(dirs): + _f for _f in plugin_path.relpath(plugins_dir).parent.splitall() if _f + ] + module_name = '.'.join( +- [plugins_pkg.__name__] + plugin_subpackages + [plugin_path.stem] ++ [plugins_pkg.__name__] + plugin_subpackages + [plugin_path.namebase] + ) + _import_plugin(module_name, plugin_path) + _check_phase_queue() +@@ -498,7 +498,7 @@ def _load_components_from_dirs(dirs): + _f for _f in component_path.relpath(component_dir).parent.splitall() if _f + ] + package_name = '.'.join( +- [components_pkg.__name__] + plugin_subpackages + [component_path.stem] ++ [components_pkg.__name__] + plugin_subpackages + [component_path.namebase] + ) + _import_plugin(package_name, component_path) + _check_phase_queue() +--- flexget/plugins/input/filesystem.py.orig 2019-05-25 02:03:39 UTC ++++ flexget/plugins/input/filesystem.py +@@ -129,7 +129,7 @@ class Filesystem(object): + entry['url'] = pathlib.Path(filepath).absolute().as_uri() + entry['filename'] = filepath.name + if filepath.isfile(): +- entry['title'] = filepath.stem ++ entry['title'] = filepath.namebase + else: + entry['title'] = filepath.name + try: +--- flexget/tests/test_filesystem.py.orig 2019-05-25 02:03:39 UTC ++++ flexget/tests/test_filesystem.py +@@ -137,10 +137,10 @@ class TestFilesystem(object): + task_name, + file, + ) +- assert task.find_entry(title=file.stem), assertion_error ++ assert task.find_entry(title=file.namebase), assertion_error + else: + assertion_error = 'Failed %s %s test, found %s' % (test_type, task_name, file) +- assert not task.find_entry(title=file.stem), assertion_error ++ assert not task.find_entry(title=file.namebase), assertion_error + + def test_string(self, execute_task): + task_name = 'string' +--- requirements.txt.orig 2019-05-25 02:03:39 UTC ++++ requirements.txt +@@ -13,7 +13,7 @@ jinja2~=2.10 + requests>=2.20.0 + python-dateutil + jsonschema>=2.0 +-path.py>=10.6 ++path.py>=8.1.1,<10.6 + pathlib>=1.0; python_version<'3.4' + guessit==3.0.3 + rebulk>=0.9.0 Property changes on: head/www/py-flexget/files/patch-02-path.py-8.1 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/www/py-flexget/files/patch-requirements.txt =================================================================== --- head/www/py-flexget/files/patch-requirements.txt (revision 502816) +++ head/www/py-flexget/files/patch-requirements.txt (revision 502817) @@ -1,37 +1,29 @@ ---- requirements.txt.orig 2017-06-21 02:13:55 UTC +--- requirements.txt.orig 2019-05-25 02:03:39 UTC +++ requirements.txt -@@ -7,18 +7,15 @@ html5lib>=0.11 +@@ -7,8 +7,8 @@ html5lib>=0.11 PyRSS2Gen pynzb #PY3 progressbar --rpyc==3.3.0 +-rpyc~=4.0 +-jinja2~=2.10 +rpyc - jinja2 ++jinja2 # There is a bug in requests 2.4.0 where it leaks urllib3 exceptions --requests~=2.16.3 --#Guessit requires python-dateutil<=2.5.2 -+requests>=2.8.0, <3.0 - python-dateutil>=2.5.3 - jsonschema>=2.0 - path.py>=8.1.1 - pathlib>=1.0; python_version<'3.4' --guessit<=2.1.4 --# Rebulk changes how guessit works higher than 0.8.2 --rebulk==0.9.0 -+guessit>=2.1.0 - apscheduler>=3.2.0 - terminaltables>=3.1.0 - colorclass>=2.2.0 -@@ -26,10 +23,10 @@ colorclass>=2.2.0 + requests>=2.20.0 + python-dateutil +@@ -24,11 +24,11 @@ colorclass>=2.2.0 cherrypy>=3.7.0 flask>=0.7 flask-restful>=0.3.3 -flask-restplus==0.10.1 +flask-restplus>=0.10.1 flask-compress>=1.2.1 flask-login>=0.4.0 flask-cors>=2.1.2 pyparsing>=2.0.3 -zxcvbn-python +zxcvbn future>=0.15.2 +-progressbar==2.5 +\ No newline at end of file ++progressbar>=2.5