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