Video ID from URL
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user