#from youtube_dl.utils import htmlentity_transform
from youtube_dl.utils import (
- timeconvert,
- sanitize_filename,
- unescapeHTML,
- orderedSet,
DateRange,
- unified_strdate,
+ encodeFilename,
find_xpath_attr,
get_meta_content,
- xpath_with_ns,
- smuggle_url,
- unsmuggle_url,
+ orderedSet,
+ sanitize_filename,
shell_quote,
- encodeFilename,
+ smuggle_url,
str_to_int,
+ timeconvert,
+ unescapeHTML,
+ unified_strdate,
+ unsmuggle_url,
+ url_basename,
+ xpath_with_ns,
)
if sys.version_info < (3, 0):
self.assertEqual(str_to_int('123,456'), 123456)
self.assertEqual(str_to_int('123.456'), 123456)
+ def test_url_basename(self):
+ self.assertEqual(url_basename(u'http://foo.de/'), u'')
+ self.assertEqual(url_basename(u'http://foo.de/bar/baz'), u'baz')
+ self.assertEqual(url_basename(u'http://foo.de/bar/baz?x=y'), u'baz')
+ self.assertEqual(url_basename(u'http://foo.de/bar/baz#x=y'), u'baz')
+ self.assertEqual(url_basename(u'http://foo.de/bar/baz/'), u'baz')
if __name__ == '__main__':
unittest.main()
subtitles_filename,
takewhile_inclusive,
UnavailableVideoError,
+ url_basename,
write_json_file,
write_string,
YoutubeDLHandler,
{
'extractor': ie.IE_NAME,
'webpage_url': url,
+ 'webpage_url_basename': url_basename(url),
'extractor_key': ie.ie_key(),
})
if process:
'playlist_index': i + playliststart,
'extractor': ie_result['extractor'],
'webpage_url': ie_result['webpage_url'],
+ 'webpage_url_basename': url_basename(ie_result['webpage_url']),
'extractor_key': ie_result['extractor_key'],
}
{
'extractor': ie_result['extractor'],
'webpage_url': ie_result['webpage_url'],
+ 'webpage_url_basename': url_basename(ie_result['webpage_url']),
'extractor_key': ie_result['extractor_key'],
})
return r
if s.startswith(start):
return s[len(start):]
return s
+
+
+def url_basename(url):
+ m = re.match(r'(?:https?:|)//[^/]+/(?:[^/?#]+/)?([^/?#]+)/?(?:[?#]|$)', url)
+ if not m:
+ return u''
+ return m.group(1)