Example #1
0
    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()
Example #2
0
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
Example #3
0
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
Example #4
0
    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()
Example #5
0
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
Example #6
0
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
Example #7
0
    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))
Example #8
0
    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))
Example #9
0
    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()
Example #10
0
    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()
Example #11
0
    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()
Example #12
0
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)
Example #13
0
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)