def test_get_title(self): """ get_title() should return the title of the uStream video. """ self.assertEquals( ustream.get_title(BASE_URL), "Prospects in Public Health: " "a Conversation with Gail Rosseau & John Harwood (Part 2 of 2)")
def set_values(self, video_obj): video_obj.title = ustream.get_title(self.url) video_obj.description = ustream.get_description(self.url) video_obj.thumbnail = ustream.get_thumbnail_url(self.url) return video_obj
def get_or_create_for_url(cls, video_url): parsed_url = urlparse(video_url) if 'youtube.com' in parsed_url.netloc: yt_video_id = get_video_id(video_url) video, created = Video.objects.get_or_create( youtube_videoid=yt_video_id, defaults={'video_type': VIDEO_TYPE_YOUTUBE, 'allow_community_edits': True}) if created: entry = yt_service.GetYouTubeVideoEntry(video_id=video.youtube_videoid) video.title = entry.media.title.text video.duration = entry.media.duration.seconds if entry.media.thumbnail: video.thumbnail = entry.media.thumbnail[-1].url video.save() video._get_subtitles_from_youtube() elif 'blip.tv' in parsed_url.netloc and blip.BLIP_REGEX.match(video_url): bliptv_fileid = blip.BLIP_REGEX.match(video_url).groupdict()['file_id'] video, created = Video.objects.get_or_create( bliptv_fileid=bliptv_fileid, defaults={'video_type': VIDEO_TYPE_BLIPTV, 'allow_community_edits': True}) if created: video.title = blip.scrape_title(video_url) video.bliptv_flv_url = videos_blip.scrape_best_file_url(video_url) video.video_url = video.bliptv_flv_url video.thumbnail = blip.get_thumbnail_url(video_url) video.save() elif 'video.google.com' in parsed_url.netloc and google_video.GOOGLE_VIDEO_REGEX.match(video_url): video, created = Video.objects.get_or_create( video_url=video_url, defaults={'video_type': VIDEO_TYPE_GOOGLE, 'allow_community_edits': True}) if created: video.title = google_video.scrape_title(video_url) video.save() elif 'ustream.tv' in parsed_url.netloc and ustream.USTREAM_REGEX.match(video_url): video, created = Video.objects.get_or_create( video_url=ustream.get_flash_enclosure_url(video_url), defaults={'video_type': VIDEO_TYPE_USTREAM, 'allow_community_edits': True}) if created: video.title = ustream.get_title(video_url) video.thumbnail = ustream.get_thumbnail_url(video_url) video.save() elif 'vimeo.com' in parsed_url.netloc and vimeo.VIMEO_REGEX.match(video_url): vimeo_videoid = vimeo.VIMEO_REGEX.match(video_url).group(2) video, created = Video.objects.get_or_create( vimeo_videoid = vimeo_videoid, defaults={'video_type': VIDEO_TYPE_VIMEO, 'allow_community_edits': True}) # TODO: title and thumbnail -- we can't get them without # an application oauth key/secret elif 'dailymotion.com' in parsed_url.netloc and dailymotion.DAILYMOTION_REGEX.match(video_url): metadata = dailymotion.get_metadata(video_url) stream_flv_mini_url = metadata.get('stream_flv_mini_url', '') if stream_flv_mini_url and stream_flv_mini_url != '': dailymotion_videoid = dailymotion.get_video_id(video_url) video, created = Video.objects.get_or_create( dailymotion_videoid = dailymotion_videoid, defaults={'video_type': VIDEO_TYPE_DAILYMOTION, 'allow_community_edits': True}) if created: video.title = metadata.get('title') or dailymotion_videoid video.thumbnail = metadata.get('thumbnail_url') or '' video.save() else: # not hosted by dailymotion and uses a different player # TODO: error message / specific exception type? raise Exception("dailymotion video actually hosted by partner -- we can't handle this") elif FLV_REGEX.match(video_url): video, created = Video.objects.get_or_create( video_url=video_url, defaults={'video_type': VIDEO_TYPE_FLV, 'allow_community_edits': True}) else: video, created = Video.objects.get_or_create( video_url=video_url, defaults={'video_type': VIDEO_TYPE_HTML5, 'allow_community_edits': True}) return video, created