Private
Public Access
1
0

Video ID from URL

This commit is contained in:
Sander Roosendaal
2019-11-05 13:44:25 +01:00
parent c2a8a8a6c5
commit ee69d6b537

View File

@@ -8,16 +8,52 @@ import rowers.teams as teams
import numpy
from urllib.parse import urlparse, parse_qs
def default(o):
if isinstance(o, numpy.int64): return int(o)
raise TypeError
def get_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',
Invalid:
'youtu.be/watch?v=_lOT2p_FCvA',
"""
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
# Show a video compared with data
@user_passes_test(ispromember,login_url="/rowers/paidplans/",
message="This functionality requires a Pro plan or higher",
redirect_field_name=None)
def workout_video_view(request,id=0):
# get workout
w = get_workout_permitted(request.user,id)
# get data
df = getsmallrowdata_db(['time','velo'],ids=[w.id])
df['time'] = (df['time']-df['time'].min())/1000.
df.sort_values(by='time',inplace=True)
@@ -31,6 +67,10 @@ def workout_video_view(request,id=0):
latitude = coordinates['latitude']
longitude = coordinates['longitude']
# get video
url = "https://www.youtube.com/watch?time_continue=496&v=9dLFC2q9RWc"
video_id = get_video_id(url)
# create map
mapscript, mapdiv = leaflet_chart_video(latitude,longitude,
w.name)
@@ -48,6 +88,7 @@ def workout_video_view(request,id=0):
'data': json.dumps(data,default=default),
'mapscript': mapscript,
'mapdiv': mapdiv,
'video_id': video_id,
})
# Show the EMpower Oarlock generated Stroke Profile