Skip to content

Instantly share code, notes, and snippets.

@agusmakmun
Forked from kmonsoor/get_yt_video_id.py
Last active November 19, 2017 22:47
Show Gist options
  • Save agusmakmun/9b275b4d173e0de324955849e6640462 to your computer and use it in GitHub Desktop.
Save agusmakmun/9b275b4d173e0de324955849e6640462 to your computer and use it in GitHub Desktop.
Extract Video-ID from a Youtube url
# initial version: http://stackoverflow.com/a/7936523/617185 \
# by Mikhail Kashkin(http://stackoverflow.com/users/85739/mikhail-kashkin)
def get_yt_video_id(url):
"""Returns Video_ID extracting from the given url of Youtube
Examples of URLs:
Valid:
'http://youtu.be/_lOT2p_FCvA',
'www.youtube.com/watch?v=_lOT2p_FCvA&feature=feedu',
'http://www.youtube.com/embed/_lOT2p_FCvA',
'http://www.youtube.com/v/_lOT2p_FCvA?version=3&hl=en_US',
'https://www.youtube.com/watch?v=rTHlyTphWP0&index=6&list=PLjeDyYvG6-40qawYNR4juzvSOg-ezZ2a6',
'youtube.com/watch?v=_lOT2p_FCvA',
'https://www.youtube.com/watch?v=S6q41Rfltsk'
Invalid:
'youtu.be/watch?v=_lOT2p_FCvA',
"""
try:
# python 3
from urllib.parse import urlparse, parse_qs
except ImportError:
# python 2
from urlparse import urlparse, parse_qs
if url.startswith(('youtu', 'www')):
url = 'http://' + url
query = urlparse(url)
if 'youtube' in query.hostname:
if query.path == '/watch':
return parse_qs(query.query)['v'][0]
elif query.path.startswith(('/embed/', '/v/')):
return query.path.split('/')[2]
elif 'youtu.be' in query.hostname:
return query.path[1:]
else:
raise ValueError
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment