def _get_subtitles_from_youtube(self, video_obj): from videos.models import SubtitleLanguage, SubtitleVersion, Subtitle url = 'http://www.youtube.com/watch_ajax?action_get_caption_track_all&v=%s' % video_obj.youtube_videoid h = httplib2.Http() resp, content = h.request(url, "GET") if resp.status < 200 or resp.status >= 400: logger.warning("Youtube subtitles error", extra={ 'data': { "url": url, "video_id": video_obj.youtube_videoid, "status_code": resp.status, "response": content } }) return parser = YoutubeSubtitleParser(content) if not parser: return language, create = SubtitleLanguage.objects.get_or_create( video=video_obj, language=parser.language) language.is_original = False language.is_forked = True language.save() try: version_no = language.subtitleversion_set.order_by('-version_no')[:1] \ .get().version_no + 1 except SubtitleVersion.DoesNotExist: version_no = 0 version = SubtitleVersion(language=language) version.version_no = version_no version.datetime_started = datetime.now() version.user = User.get_youtube_anonymous() version.note = u'From youtube' version.is_forked = True version.save() for i, item in enumerate(parser): subtitle = Subtitle(**item) subtitle.version = version subtitle.subtitle_id = int(random.random() * 10e12) subtitle.subtitle_order = i + 1 subtitle.save() version.finished = True version.save() language.had_version = True language.is_complete = True language.save()
def user_videos_activity(context, user=None): user = user or context['user'] if user.is_authenticated(): context['users_actions'] = Action.objects.select_related('video', 'language', 'language__video', 'user') \ .filter(video__customuser=user) \ .exclude(user=user) \ .exclude(user=User.get_youtube_anonymous())[:ACTIONS_ON_PAGE] else: context['users_actions'] = Action.objects.none() return context
def user_videos_activity(context, user=None): user = user or context['user'] if user.is_authenticated(): context['users_actions'] = Action.objects.select_related('video', 'language', 'language__video', 'user') \ .filter(video__customuser=user) \ .exclude(user=user) \ .exclude(user=User.get_youtube_anonymous())[:ACTIONS_ON_PAGE] else: context['users_actions'] = Action.objects.none() return context
def _get_subtitles_from_youtube(self, video_obj): from videos.models import SubtitleLanguage, SubtitleVersion, Subtitle url = 'http://www.youtube.com/watch_ajax?action_get_caption_track_all&v=%s' % video_obj.youtube_videoid h = httplib2.Http() resp, content = h.request(url, "GET") if resp.status < 200 or resp.status >= 400: logger.warning("Youtube subtitles error", extra={ 'data': { "url": url, "video_id": video_obj.youtube_videoid, "status_code": resp.status, "response": content } }) return parser = YoutubeSubtitleParser(content) if not parser: return language, create = SubtitleLanguage.objects.get_or_create(video=video_obj, language = parser.language) language.is_original = False language.is_forked = True language.save() try: version_no = language.subtitleversion_set.order_by('-version_no')[:1] \ .get().version_no + 1 except SubtitleVersion.DoesNotExist: version_no = 0 version = SubtitleVersion(language=language) version.version_no = version_no version.datetime_started = datetime.now() version.user = User.get_youtube_anonymous() version.note = u'From youtube' version.is_forked = True version.save() for i, item in enumerate(parser): subtitle = Subtitle(**item) subtitle.version = version subtitle.subtitle_id = int(random.random()*10e12) subtitle.subtitle_order = i+1 subtitle.save() version.finished = True version.save() language.had_version = True language.is_complete = True language.save()
def user_videos_activity(context, user=None): user = user or context['user'] if user.is_authenticated(): videos_ids = Video.objects.filter(subtitlelanguage__subtitleversion__user=user).distinct() \ .values_list('id', flat=True) context['users_actions'] = Action.objects.filter(Q(video__pk__in=videos_ids)| \ Q(action_type=Action.ADD_VIDEO, user=user)) \ .exclude(user=user) \ .exclude(user=User.get_youtube_anonymous())[:ACTIONS_ON_PAGE] else: context['users_actions'] = Action.objects.none() return context
def user_videos_activity(context, user=None): user = user or context['user'] if user.is_authenticated(): videos_ids = Video.objects.filter(subtitlelanguage__subtitleversion__user=user).distinct() \ .values_list('id', flat=True) context['users_actions'] = Action.objects.select_related('video', 'language', 'language__video', 'user').filter(Q(video__pk__in=videos_ids)| \ Q(action_type=Action.ADD_VIDEO, user=user)) \ .exclude(user=user) \ .exclude(user=User.get_youtube_anonymous())[:ACTIONS_ON_PAGE] else: context['users_actions'] = Action.objects.none() return context
def _import_srt(self, video, videosrt_url): h = httplib2.Http() resp, content = h.request(videosrt_url, "GET") if resp.status == 200: data = {'video': video.id, 'language': 'en', 'video_language': 'en', 'is_complete': True } file_data = {'subtitles': SimpleUploadedFile('subs.srt', content)} form = SubtitlesUploadForm( CustomUser.get_youtube_anonymous(), data, file_data) if form.is_valid(): form.save() else: print('url {0} did not return valid srt data'.format(videosrt_url))
def _import_srt(self, video, videosrt_url): h = httplib2.Http() resp, content = h.request(videosrt_url, "GET") if resp.status == 200: data = { 'video': video.id, 'language': 'en', 'video_language': 'en', 'is_complete': True } file_data = {'subtitles': SimpleUploadedFile('subs.srt', content)} form = SubtitlesUploadForm(CustomUser.get_youtube_anonymous(), data, file_data) if form.is_valid(): form.save() else: print('url {0} did not return valid srt data'.format( videosrt_url))
def _get_subtitles_from_youtube(self, video_obj): from videos.models import SubtitleLanguage, SubtitleVersion, Subtitle url = 'http://www.youtube.com/watch_ajax?action_get_caption_track_all&v=%s' % video_obj.youtube_videoid d = urllib.urlopen(url) parser = YoutubeSubtitleParser(d.read()) if not parser: return language, create = SubtitleLanguage.objects.get_or_create( video=video_obj, language=parser.language) language.is_original = False language.is_forked = True language.save() try: version_no = language.subtitleversion_set.order_by('-version_no')[:1] \ .get().version_no + 1 except SubtitleVersion.DoesNotExist: version_no = 0 version = SubtitleVersion(language=language) version.version_no = version_no version.datetime_started = datetime.now() version.user = User.get_youtube_anonymous() version.note = u'From youtube' version.is_forked = True version.save() for i, item in enumerate(parser): subtitle = Subtitle(**item) subtitle.version = version subtitle.subtitle_id = int(random.random() * 10e12) subtitle.subtitle_order = i + 1 subtitle.save() version.finished = True version.save() language.had_version = True language.is_complete = True language.save()
def _get_subtitles_from_youtube(self, video_obj): from videos.models import SubtitleLanguage, SubtitleVersion, Subtitle url = 'http://www.youtube.com/watch_ajax?action_get_caption_track_all&v=%s' % video_obj.youtube_videoid d = urllib.urlopen(url) parser = YoutubeSubtitleParser(d.read()) if not parser: return language, create = SubtitleLanguage.objects.get_or_create(video=video_obj, language = parser.language) language.is_original = False language.is_forked = True language.save() try: version_no = language.subtitleversion_set.order_by('-version_no')[:1] \ .get().version_no + 1 except SubtitleVersion.DoesNotExist: version_no = 0 version = SubtitleVersion(language=language) version.version_no = version_no version.datetime_started = datetime.now() version.user = User.get_youtube_anonymous() version.note = u'From youtube' version.is_forked = True version.save() for i, item in enumerate(parser): subtitle = Subtitle(**item) subtitle.version = version subtitle.subtitle_id = int(random.random()*10e12) subtitle.subtitle_order = i+1 subtitle.save() version.finished = True version.save() language.was_complete = True language.is_complete = True language.save()
def _get_subtitles_from_youtube(self): if not self.youtube_videoid: return url = 'http://www.youtube.com/watch_ajax?action_get_caption_track_all&v=%s' % self.youtube_videoid d = urllib.urlopen(url) parser = YoutubeSubtitleParser(d.read()) if not parser: return language = SubtitleLanguage(video=self) language.is_original = False language.is_forked = True language.language = parser.language language.save() version = SubtitleVersion(language=language) version.datetime_started = datetime.now() version.user = User.get_youtube_anonymous() version.note = u'From youtube' version.save() for i, item in enumerate(parser): subtitle = Subtitle(**item) subtitle.version = version subtitle.subtitle_id = int(random.random()*10e12) subtitle.sub_order = i+1 subtitle.save() version.finished = True version.save() language.was_complete = True language.is_complete = True language.save()
def save_subtitles_for_lang(lang, video_pk, youtube_id): from videos.models import Video lc = lang.get('lang_code') if not lc in SUPPORTED_LANGUAGES_DICT: return try: video = Video.objects.get(pk=video_pk) except Video.DoesNotExist: return from videos.models import SubtitleLanguage, SubtitleVersion, Subtitle url = u'http://www.youtube.com/api/timedtext?v=%s&lang=%s&name=%s' url = url % (youtube_id, lc, urlquote(lang.get('name', u''))) xml = YoutubeVideoType._get_response_from_youtube(url) if not xml: return parser = YoutubeXMLParser(xml) if not parser: return language, create = SubtitleLanguage.objects.get_or_create(video=video, language=lc) language.is_original = False language.is_forked = True language.save() try: version_no = language.subtitleversion_set.order_by('-version_no')[:1] \ .get().version_no + 1 except SubtitleVersion.DoesNotExist: version_no = 0 version = SubtitleVersion(language=language) version.version_no = version_no version.datetime_started = datetime.now() version.user = User.get_youtube_anonymous() version.note = u'From youtube' version.is_forked = True version.save() for i, item in enumerate(parser): subtitle = Subtitle() subtitle.subtitle_text = item['subtitle_text'] subtitle.start_time = item['start_time'] subtitle.end_time = item['end_time'] subtitle.version = version subtitle.subtitle_id = int(random.random() * 10e12) subtitle.subtitle_order = i + 1 subtitle.save() assert subtitle.start_time or subtitle.end_time, item['subtitle_text'] version.finished = True version.save() language.has_version = True language.had_version = True language.is_complete = True language.save() from videos.tasks import video_changed_tasks video_changed_tasks.delay(video.pk)
def save_subtitles_for_lang(lang, video_pk, youtube_id): from videos.models import Video lc = lang.get('lang_code') if not lc in SUPPORTED_LANGUAGES_DICT: return try: video = Video.objects.get(pk=video_pk) except Video.DoesNotExist: return from videos.models import SubtitleLanguage, SubtitleVersion, Subtitle url = u'http://www.youtube.com/api/timedtext?v=%s&lang=%s&name=%s' url = url % (youtube_id, lc, urlquote(lang.get('name', u''))) xml = YoutubeVideoType._get_response_from_youtube(url) if not xml: return parser = YoutubeXMLParser(xml) if not parser: return language, create = SubtitleLanguage.objects.get_or_create(video=video, language=lc) language.is_original = False language.is_forked = True language.save() try: version_no = language.subtitleversion_set.order_by('-version_no')[:1] \ .get().version_no + 1 except SubtitleVersion.DoesNotExist: version_no = 0 version = SubtitleVersion(language=language) version.version_no = version_no version.datetime_started = datetime.now() version.user = User.get_youtube_anonymous() version.note = u'From youtube' version.is_forked = True version.save() for i, item in enumerate(parser): subtitle = Subtitle() subtitle.subtitle_text = item['subtitle_text'] subtitle.start_time = item['start_time'] subtitle.end_time = item['end_time'] subtitle.version = version subtitle.subtitle_id = int(random.random()*10e12) subtitle.subtitle_order = i+1 subtitle.save() assert subtitle.start_time or subtitle.end_time, item['subtitle_text'] version.finished = True version.save() language.has_version = True language.had_version = True language.is_complete = True language.save() from videos.tasks import video_changed_tasks video_changed_tasks.delay(video.pk)