Skip to content

Commit

Permalink
added get_youtube_video_id
Browse files Browse the repository at this point in the history
  • Loading branch information
agusmakmun committed Nov 21, 2017
1 parent 4654ed7 commit 520f5b7
Showing 1 changed file with 41 additions and 2 deletions.
43 changes: 41 additions & 2 deletions common/templatetags/common_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@

try:
# Python 3
from urllib.parse import urlencode
from urllib.parse import (urlencode, urlparse, parse_qs)
except ImportError:
# Python 2
from urllib import urlencode
from urllib import (urlencode, urlparse, parse_qs)

register = template.Library()

Expand Down Expand Up @@ -164,3 +164,42 @@ def markdown_find_images(markdown_text):
# findgex = r"[^(\s]+\.(?:jpeg|jpg|png|gif)(?=\b[+^\)])"
findgex = r"[^(\s]+\.(?:jpeg|jpg|png|gif)(?=\))"
return re.findall(findgex, markdown_text)


@register.filter
def get_youtube_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'
usage:
{{ youtube_url|get_youtube_video_id }}
Source: https://gist.github.com/kmonsoor/2a1afba4ee127cce50a0
"""
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

0 comments on commit 520f5b7

Please sign in to comment.