diff options
author | 2015-08-08 13:49:04 -0700 | |
---|---|---|
committer | 2015-08-08 17:38:18 -0700 | |
commit | 56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch) | |
tree | 3f91093cdb475e565ae857f1c5a7fd339e2d781e /net-misc/pytvshows | |
download | gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2 gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip |
proj/gentoo: Initial commit
This commit represents a new era for Gentoo:
Storing the gentoo-x86 tree in Git, as converted from CVS.
This commit is the start of the NEW history.
Any historical data is intended to be grafted onto this point.
Creation process:
1. Take final CVS checkout snapshot
2. Remove ALL ChangeLog* files
3. Transform all Manifests to thin
4. Remove empty Manifests
5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$
5.1. Do not touch files with -kb/-ko keyword flags.
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests
X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project
X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration
X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn
X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts
X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration
X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging
X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'net-misc/pytvshows')
-rw-r--r-- | net-misc/pytvshows/Manifest | 1 | ||||
-rw-r--r-- | net-misc/pytvshows/files/pytvshows-0.2-ezrss.it.patch | 30 | ||||
-rw-r--r-- | net-misc/pytvshows/files/pytvshows-0.2-feedurl.patch | 279 | ||||
-rw-r--r-- | net-misc/pytvshows/files/pytvshows-0.2-improved-re.patch | 15 | ||||
-rw-r--r-- | net-misc/pytvshows/metadata.xml | 10 | ||||
-rw-r--r-- | net-misc/pytvshows/pytvshows-0.2-r1.ebuild | 33 | ||||
-rw-r--r-- | net-misc/pytvshows/pytvshows-0.2-r2.ebuild | 30 |
7 files changed, 398 insertions, 0 deletions
diff --git a/net-misc/pytvshows/Manifest b/net-misc/pytvshows/Manifest new file mode 100644 index 000000000000..1063144c131d --- /dev/null +++ b/net-misc/pytvshows/Manifest @@ -0,0 +1 @@ +DIST pytvshows-0.2.tar.gz 14156 SHA256 f5714373bedf466313f99ac8bc184c27d824160e0b8ba359c5b7aaa6d2a735d3 SHA512 c4acd9b968dba7af1c787f9a3f5db4986ffbc52bfc43a4b7101070f8e91e80e78be0e59c4a4fbd873e64a6c4862e64abed2396c7140e9165d72e7d3cea267d5f WHIRLPOOL cfa80afa8d0963283b6b2bc054fe95e07e6ae5704f2a137262b3e27c412037d0500728c8f696cb5b609bae3a9a73a69ec57039e544e725f45a381686e747b5f3 diff --git a/net-misc/pytvshows/files/pytvshows-0.2-ezrss.it.patch b/net-misc/pytvshows/files/pytvshows-0.2-ezrss.it.patch new file mode 100644 index 000000000000..d72a35ffa152 --- /dev/null +++ b/net-misc/pytvshows/files/pytvshows-0.2-ezrss.it.patch @@ -0,0 +1,30 @@ +This patch simply alters the feed site since txrss.net was closed/shut down. +Luckily, ezrss.it expects the same arguments and should generally work. You can +find similar details at: +http://sourceforge.net/projects/pytvshows/forums/forum/726961/topic/3309243?message=7544190 + +Yes, this could have been accomplished via the --feed paramater, but this is +more user friendly. + +--- pytvshows.orig 2009-09-15 22:36:34.575002779 -0500 ++++ pytvshows 2009-09-15 22:43:18.283754081 -0500 +@@ -59,7 +59,7 @@ + -cFILE, --config FILE + Path to config file. Default: ~/.pytvshows.cfg + -fFEED, --feed=FEED +- Override the tvrss.net feed. %%s is replaced with the ++ Override the ezrss.it feed. %%s is replaced with the + exact show name. + -h, --help This help message + -oDIR, --output_dir=DIR +@@ -77,8 +77,8 @@ + commands = ['update', 'subscribe', 'unsubscribe', 'run'] + config = { + 'config_file': os.path.expanduser("~/.pytvshows.cfg"), +- 'feed': "http://tvrss.net/search/index.php?show_name=%s&show_name_exact" \ +- "=true&mode=rss", ++ 'feed': "http://www.ezrss.it/search/index.php?show_name=%s" \ ++ "&show_name_exact=true&mode=rss", + 'output_dir': os.path.expanduser("~/"), + 'output_dir2': None, + 'quality_matches': { diff --git a/net-misc/pytvshows/files/pytvshows-0.2-feedurl.patch b/net-misc/pytvshows/files/pytvshows-0.2-feedurl.patch new file mode 100644 index 000000000000..db01c5193258 --- /dev/null +++ b/net-misc/pytvshows/files/pytvshows-0.2-feedurl.patch @@ -0,0 +1,279 @@ +David Reitz writes: + +I created this so that I could specify a feedurl parameter in the config file, +which allows me to use the public RSS feeds at showRSS (http://showrss.karmorra.info/). +This patch will ONLY work for seasonepisode. I made no modifications for other types. + +Simply apply this patch and then modify your config like so: + +[Weeds] +feedurl = http://showrss.karmorra.info/feeds/68.rss +episode = 4 +season = 5 +show_type = seasonepisode +human_name = Weeds + +http://sourceforge.net/tracker/index.php?func=detail&aid=2818315&group_id=203642&atid=986413 + +--- pytvshows.orig 2009-06-20 15:46:23.000000000 -0400 ++++ pytvshows 2009-07-07 20:41:39.000000000 -0400 +@@ -83,11 +83,14 @@ config = { + 'output_dir2': None, + 'quality_matches': { + "[HD": 1, ++ "HDTV": 1, + "[DSRIP": 1, + "[TVRIP": 1, + "[PDTV": 1, + "[DVD": 1, + "[HR": 2, ++ "720p": 3, ++ "720P": 3, + "[720p": 3, + "[720P": 3, + }, +@@ -189,6 +192,7 @@ class Show(object): + self.show_type = args['show_type'] + self.season = args['season'] + self.episode = args['episode'] ++ self.feedurl = args['feedurl'] + #YYYY-MM-DD HH:MM:SS + if args['date']: + self.date = datetime.datetime(*(time.strptime( +@@ -290,7 +294,10 @@ class Show(object): + + def _get_rss_feed(self): + """Gets the feedparser object.""" +- url = config['feed'] % self.exact_name ++ if self.feedurl: ++ url = self.feedurl ++ else: ++ url = config['feed'] % self.exact_name + if config['verbose']: + print "Downloading and processing %s..." % url + r = feedparser.parse(url) +@@ -335,50 +342,21 @@ class Show(object): + if not self.rss: + return False + episodes = {} +- for episode in self.rss['entries']: +- if self.show_type == 'seasonepisode': +- r = re.compile('Season\s*: ([0-9]*?);') +- season_match = r.search(episode.description) +- r = re.compile('Episode\s*:\ ([0-9]*?)$') +- episode_match = r.search(episode.description) +- if not season_match or not episode_match: +- # This might be a special with a title +- r = re.compile('Show\s*Title\s*:\s*(.*?);') +- title_match = r.search(episode.description) +- if title_match and title_match.group(1) != 'n/a' \ +- and title_match.group(1) != '': +- title = title_match.group(1) +- if config["verbose"]: +- print "Found episode with title %s and no " \ +- "season or episode in seasonepisode show." % title +- quality = 0 +- for key, value in config["quality_matches"].items(): +- if key in episode.title: +- quality = value +- break +- date = datetime.datetime(* episode.updated_parsed[:6]) +- obj = EpisodeWithTitle( +- self, +- episode.link, +- date, +- title, +- quality) +- last_key = 0 +- for key in episodes.keys(): +- if key[0] == 0 and key[1] > last_key: +- last_key = key[1] +- episodes[0, last_key] = [obj] +- elif not self.ignoremissingdetails: +- print >> warn, 'W: Could not match season and/or ' \ +- 'episode in %s' % episode.description +- else: ++ # we've defined a feedurl in the config file... ++ if self.feedurl: ++ for episode in self.rss['entries']: ++ if self.show_type == 'seasonepisode': ++ r = re.compile('S([0-9]+)E([0-9]+)') ++ match = r.search( episode.title ) ++ season_num = int(match.group(1)) ++ episode_num = int(match.group(2)) ++ if config["verbose"]: ++ print "Found Show: Season %i, Episode %i" % (season_num, episode_num) + quality = 0 + for key, value in config["quality_matches"].items(): + if key in episode.title: + quality = value + break +- season_num = int(season_match.group(1)) +- episode_num = int(episode_match.group(1)) + if season_num != 0 and episode_num != 0: + obj = EpisodeWithSeasonAndEpisode( + self, +@@ -394,57 +372,117 @@ class Show(object): + elif config['verbose']: + print 'Season or episode number is 0 in %s' \ + % episode.description +- elif self.show_type == 'date': +- r = re.compile('Episode\s*Date:\s*([0-9\-]+)$') +- date_match = r.search(episode.description) +- if not date_match: +- if not self.ignoremissingdetails: +- print >>warn, 'W: Could not match date in %s' % \ +- episode.description +- else: ++ else: ++ for episode in self.rss['entries']: ++ if self.show_type == 'seasonepisode': ++ r = re.compile('Season\s*: ([0-9]*?);') ++ season_match = r.search(episode.description) ++ r = re.compile('Episode\s*:\ ([0-9]*?)$') ++ episode_match = r.search(episode.description) ++ if not season_match or not episode_match: ++ # This might be a special with a title ++ r = re.compile('Show\s*Title\s*:\s*(.*?);') ++ title_match = r.search(episode.description) ++ if title_match and title_match.group(1) != 'n/a' \ ++ and title_match.group(1) != '': ++ title = title_match.group(1) ++ if config["verbose"]: ++ print "Found episode with title %s and no " \ ++ "season or episode in seasonepisode show." % title ++ quality = 0 ++ for key, value in config["quality_matches"].items(): ++ if key in episode.title: ++ quality = value ++ break ++ date = datetime.datetime(* episode.updated_parsed[:6]) ++ obj = EpisodeWithTitle( ++ self, ++ episode.link, ++ date, ++ title, ++ quality) ++ last_key = 0 ++ for key in episodes.keys(): ++ if key[0] == 0 and key[1] > last_key: ++ last_key = key[1] ++ episodes[0, last_key] = [obj] ++ elif not self.ignoremissingdetails: ++ print >> warn, 'W: Could not match season and/or ' \ ++ 'episode in %s' % episode.description ++ else: ++ quality = 0 ++ for key, value in config["quality_matches"].items(): ++ if key in episode.title: ++ quality = value ++ break ++ season_num = int(season_match.group(1)) ++ episode_num = int(episode_match.group(1)) ++ if season_num != 0 and episode_num != 0: ++ obj = EpisodeWithSeasonAndEpisode( ++ self, ++ episode.link, ++ datetime.datetime(* episode.updated_parsed[:6]), ++ season_num, ++ episode_num, ++ quality) ++ try: ++ episodes[season_num, episode_num].append(obj) ++ except KeyError: ++ episodes[season_num, episode_num] = [obj] ++ elif config['verbose']: ++ print 'Season or episode number is 0 in %s' \ ++ % episode.description ++ elif self.show_type == 'date': ++ r = re.compile('Episode\s*Date:\s*([0-9\-]+)$') ++ date_match = r.search(episode.description) ++ if not date_match: ++ if not self.ignoremissingdetails: ++ print >>warn, 'W: Could not match date in %s' % \ ++ episode.description ++ else: ++ quality = 0 ++ for key, value in config["quality_matches"].items(): ++ if key in episode.title: ++ quality = value ++ break ++ date = datetime.datetime(*(time.strptime( ++ date_match.group(1), "%Y-%m-%d")[0:6])).date() ++ obj = EpisodeWithDate( ++ self, ++ episode.link, ++ datetime.datetime(* episode.updated_parsed[:6]), ++ date, ++ quality) ++ try: ++ episodes[date].append(obj) ++ except KeyError: ++ episodes[date] = [obj] ++ elif self.show_type == 'time': ++ r = re.compile('Show\s*Title\s*:\s*(.*?);') ++ title_match = r.search(episode.description) ++ if not title_match: ++ if not self.ignoremissingdetails: ++ print >>warn, 'W: Could not match title in %s' % \ ++ episode.description ++ title = "" ++ else: ++ title = title_match.group(1) + quality = 0 + for key, value in config["quality_matches"].items(): + if key in episode.title: + quality = value + break +- date = datetime.datetime(*(time.strptime( +- date_match.group(1), "%Y-%m-%d")[0:6])).date() +- obj = EpisodeWithDate( ++ date = datetime.datetime(* episode.updated_parsed[:6]) ++ obj = EpisodeWithTitle( + self, + episode.link, +- datetime.datetime(* episode.updated_parsed[:6]), + date, ++ title, + quality) + try: + episodes[date].append(obj) + except KeyError: + episodes[date] = [obj] +- elif self.show_type == 'time': +- r = re.compile('Show\s*Title\s*:\s*(.*?);') +- title_match = r.search(episode.description) +- if not title_match: +- if not self.ignoremissingdetails: +- print >>warn, 'W: Could not match title in %s' % \ +- episode.description +- title = "" +- else: +- title = title_match.group(1) +- quality = 0 +- for key, value in config["quality_matches"].items(): +- if key in episode.title: +- quality = value +- break +- date = datetime.datetime(* episode.updated_parsed[:6]) +- obj = EpisodeWithTitle( +- self, +- episode.link, +- date, +- title, +- quality) +- try: +- episodes[date].append(obj) +- except KeyError: +- episodes[date] = [obj] + self.episodes = episodes + return episodes + +@@ -597,6 +635,7 @@ def main(argv=None): + 'date': None, + 'time': None, + 'ignoremissingdetails': False, ++ 'feedurl': None, + } + for key in args.keys(): + if f.has_option(exact_name, key): diff --git a/net-misc/pytvshows/files/pytvshows-0.2-improved-re.patch b/net-misc/pytvshows/files/pytvshows-0.2-improved-re.patch new file mode 100644 index 000000000000..fbd316a5c3c2 --- /dev/null +++ b/net-misc/pytvshows/files/pytvshows-0.2-improved-re.patch @@ -0,0 +1,15 @@ +Improved regular expression for matching season and episode; see +http://sourceforge.net/tracker/index.php?func=detail&aid=2818315&group_id=203642&atid=986413 + +--- pytvshows.orig 2011-08-17 23:20:16.000000000 +0200 ++++ pytvshows 2011-08-17 23:22:30.000000000 +0200 +@@ -346,7 +346,8 @@ + if self.feedurl: + for episode in self.rss['entries']: + if self.show_type == 'seasonepisode': +- r = re.compile('S([0-9]+)E([0-9]+)') ++ #r = re.compile('S([0-9]+)E([0-9]+)') ++ r = re.compile(r'\bS?([0-9]{1,2})\s*(?:E|x)?\s*([0-9]{1,2})\b') + match = r.search( episode.title ) + season_num = int(match.group(1)) + episode_num = int(match.group(2)) diff --git a/net-misc/pytvshows/metadata.xml b/net-misc/pytvshows/metadata.xml new file mode 100644 index 000000000000..67f1fb4b8163 --- /dev/null +++ b/net-misc/pytvshows/metadata.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer> + <email>maintainer-needed@gentoo.org</email> + </maintainer> + <upstream> + <remote-id type="sourceforge">pytvshows</remote-id> + </upstream> +</pkgmetadata> diff --git a/net-misc/pytvshows/pytvshows-0.2-r1.ebuild b/net-misc/pytvshows/pytvshows-0.2-r1.ebuild new file mode 100644 index 000000000000..a21136afced6 --- /dev/null +++ b/net-misc/pytvshows/pytvshows-0.2-r1.ebuild @@ -0,0 +1,33 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="4" +PYTHON_DEPEND="2" + +inherit distutils eutils + +DESCRIPTION="downloads torrents for TV shows from RSS feeds provided by ezrss.it" +HOMEPAGE="http://sourceforge.net/projects/pytvshows/" +SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 ~ppc x86" +IUSE="" + +DEPEND="" +RDEPEND="dev-python/feedparser" + +pkg_setup() { + python_set_active_version 2 + python_pkg_setup +} + +src_prepare() { + distutils_src_prepare + epatch "${FILESDIR}/${P}-ezrss.it.patch" + epatch "${FILESDIR}/${P}-feedurl.patch" + epatch "${FILESDIR}/${P}-improved-re.patch" + python_convert_shebangs -r 2 . +} diff --git a/net-misc/pytvshows/pytvshows-0.2-r2.ebuild b/net-misc/pytvshows/pytvshows-0.2-r2.ebuild new file mode 100644 index 000000000000..7f86545d0ba2 --- /dev/null +++ b/net-misc/pytvshows/pytvshows-0.2-r2.ebuild @@ -0,0 +1,30 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +PYTHON_COMPAT=( python2_7 ) +DISTUTILS_SINGLE_IMPL=1 + +inherit distutils-r1 + +DESCRIPTION="downloads torrents for TV shows from RSS feeds provided by ezrss.it" +HOMEPAGE="http://sourceforge.net/projects/pytvshows/" +SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" +IUSE="" + +DEPEND="" +RDEPEND="dev-python/feedparser[${PYTHON_USEDEP}]" + +PATCHES=( "${FILESDIR}/${P}-ezrss.it.patch" + "${FILESDIR}/${P}-feedurl.patch" + "${FILESDIR}/${P}-improved-re.patch" ) + +pkg_setup() { + python-single-r1_pkg_setup +} |