diff --git a/common/lib/xmodule/xmodule/video_module/video_handlers.py b/common/lib/xmodule/xmodule/video_module/video_handlers.py index bde727a7ea1a54a81f536b0cd78cf3d01e15eb5f..7acab232c14666df227f8f0faaf99dbe1ef21fd4 100644 --- a/common/lib/xmodule/xmodule/video_module/video_handlers.py +++ b/common/lib/xmodule/xmodule/video_module/video_handlers.py @@ -391,7 +391,7 @@ class VideoStudentViewHandlers(object): runtime uses a similar REST API that's not an XBlock handler. """ from lms.djangoapps.courseware.views.views import load_metadata_from_youtube - metadata, status_code = load_metadata_from_youtube(video_id=self.youtube_id_1_0) + metadata, status_code = load_metadata_from_youtube(video_id=self.youtube_id_1_0, request=request) response = Response(json.dumps(metadata), status=status_code) response.content_type = 'application/json' return response diff --git a/lms/djangoapps/courseware/views/views.py b/lms/djangoapps/courseware/views/views.py index 6118beceae8d7a3d7ceafc22f90a4ad8bbd127f0..d7356e4c476b375e88b6e1a2874820a80eafaf3c 100644 --- a/lms/djangoapps/courseware/views/views.py +++ b/lms/djangoapps/courseware/views/views.py @@ -289,11 +289,11 @@ def yt_video_metadata(request): :return: youtube video metadata """ video_id = request.GET.get('id', None) - metadata, status_code = load_metadata_from_youtube(video_id) + metadata, status_code = load_metadata_from_youtube(video_id, request) return Response(metadata, status=status_code, content_type='application/json') -def load_metadata_from_youtube(video_id): +def load_metadata_from_youtube(video_id, request): """ Get metadata about a YouTube video. @@ -306,9 +306,15 @@ def load_metadata_from_youtube(video_id): yt_api_key = settings.YOUTUBE_API_KEY yt_metadata_url = settings.YOUTUBE['METADATA_URL'] yt_timeout = settings.YOUTUBE.get('TEST_TIMEOUT', 1500) / 1000 # converting milli seconds to seconds + + headers = {} + http_referer = request.META.get('HTTP_REFERER') + if http_referer: + headers['Referer'] = http_referer + payload = {'id': video_id, 'part': 'contentDetails', 'key': yt_api_key} try: - res = requests.get(yt_metadata_url, params=payload, timeout=yt_timeout) + res = requests.get(yt_metadata_url, params=payload, timeout=yt_timeout, headers=headers) status_code = res.status_code if res.status_code == 200: try: