From 0cd235eef674540b7001f15681c97d7dd8e6cb13 Mon Sep 17 00:00:00 2001 From: Philipp Hagemeister Date: Tue, 29 Nov 2011 20:13:06 +0100 Subject: [PATCH] Use freedesktop.org mandated user config file location (Suggested by Tyll in #231) --- youtube-dl | 36 ++++++++++++++++++++++++------------ youtube_dl/__init__.py | 7 ++++++- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/youtube-dl b/youtube-dl index d7e9c50c00..fa2bd4fca5 100755 --- a/youtube-dl +++ b/youtube-dl @@ -699,15 +699,32 @@ class FileDownloader(object): self.trouble(u'ERROR: invalid system charset or erroneous output template') return None + def _match_entry(self, info_dict): + """ Returns None iff the file should be downloaded """ + + title = info_dict['title'] + matchtitle = self.params.get('matchtitle', False) + if matchtitle and not re.search(matchtitle, title, re.IGNORECASE): + return u'[download] "' + title + '" title did not match pattern "' + matchtitle + '"' + rejecttitle = self.params.get('rejecttitle', False) + if rejecttitle and re.search(rejecttitle, title, re.IGNORECASE): + return u'"' + title + '" title matched reject pattern "' + rejecttitle + '"' + return None + def process_info(self, info_dict): """Process a single dictionary returned by an InfoExtractor.""" + reason = self._match_entry(info_dict) + if reason is not None: + self.to_screen(u'[download] ' + reason) + return + max_downloads = self.params.get('max_downloads') if max_downloads is not None: if self._num_downloads > int(max_downloads): self.to_screen(u'[download] Maximum number of downloads reached. Skipping ' + info_dict['title']) return - + filename = self.prepare_filename(info_dict) # Forced printings @@ -731,16 +748,6 @@ class FileDownloader(object): if filename is None: return - matchtitle=self.params.get('matchtitle',False) - rejecttitle=self.params.get('rejecttitle',False) - title=info_dict['title'].encode(preferredencoding(), 'xmlcharrefreplace') - if matchtitle and not re.search(matchtitle, title, re.IGNORECASE): - self.to_screen(u'[download] "%s" title did not match pattern "%s"' % (title, matchtitle)) - return - if rejecttitle and re.search(rejecttitle, title, re.IGNORECASE): - self.to_screen(u'[download] "%s" title matched reject pattern "%s"' % (title, rejecttitle)) - return - if self.params.get('nooverwrites', False) and os.path.exists(filename): self.to_stderr(u'WARNING: file exists and will be skipped') return @@ -4118,7 +4125,12 @@ def parseOpts(): parser.add_option_group(authentication) parser.add_option_group(postproc) - argv = _readOptions('/etc/youtube-dl.conf') + _readOptions(os.path.expanduser('~/.youtube-dl.conf')) + sys.argv[1:] + xdg_config_home = os.environ.get('XDG_CONFIG_HOME') + if xdg_config_home: + userConf = os.path.join(xdg_config_home, 'youtube-dl.conf') + else: + userConf = os.path.join(os.path.expanduser('~'), '.config', 'youtube-dl.conf') + argv = _readOptions('/etc/youtube-dl.conf') + _readOptions(userConf) + sys.argv[1:] opts, args = parser.parse_args(argv) return parser, opts, args diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index 3fba08fa48..fa2bd4fca5 100755 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -4125,7 +4125,12 @@ def _find_term_columns(): parser.add_option_group(authentication) parser.add_option_group(postproc) - argv = _readOptions('/etc/youtube-dl.conf') + _readOptions(os.path.expanduser('~/.youtube-dl.conf')) + sys.argv[1:] + xdg_config_home = os.environ.get('XDG_CONFIG_HOME') + if xdg_config_home: + userConf = os.path.join(xdg_config_home, 'youtube-dl.conf') + else: + userConf = os.path.join(os.path.expanduser('~'), '.config', 'youtube-dl.conf') + argv = _readOptions('/etc/youtube-dl.conf') + _readOptions(userConf) + sys.argv[1:] opts, args = parser.parse_args(argv) return parser, opts, args