Use freedesktop.org mandated user config file location (Suggested by Tyll in #231)
authorPhilipp Hagemeister <phihag@phihag.de>
Tue, 29 Nov 2011 19:13:06 +0000 (20:13 +0100)
committerPhilipp Hagemeister <phihag@phihag.de>
Tue, 29 Nov 2011 19:13:13 +0000 (20:13 +0100)
youtube-dl
youtube_dl/__init__.py

index d7e9c50c0076016d2dcabfec86d49c8cdab1b04e..fa2bd4fca5a9d887d6c0b1276f47c07f9d8e27ef 100755 (executable)
@@ -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
index 3fba08fa48f5e8e3909e3dc302d22e83e17b48c1..fa2bd4fca5a9d887d6c0b1276f47c07f9d8e27ef 100755 (executable)
@@ -4125,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