def test_no_changed_signals_on_initial_created(self): cm1 = test_utils.mock_handler(signals.title_changed) cm2 = test_utils.mock_handler(signals.duration_changed) cm3 = test_utils.mock_handler(signals.language_changed) with cm1 as handler1, cm2 as handler2, cm3 as handler3: video = Video() video.primary_audio_language_code = 'en' video.title = 'foo' video.duration = 123 video.save() assert_equal(handler1.call_count, 0) assert_equal(handler2.call_count, 0) assert_equal(handler3.call_count, 0)
def save_obj_from_entry(response): """ Takes response object and stores it into db """ v = Video() v.title = response['snippet']['title'] v.ytid = response['id'] unique_slugify(v, v.title) v.published_on = isodate.parse_datetime(response['snippet']['publishedAt']) # get duration of video duration = response["contentDetails"]["duration"] v.duration = int(isodate.parse_duration(duration).total_seconds()) # get description of video try: v.description = response['snippet']['description'] except: pass # get category try: category_response = youtube_api.videoCategories().list( part="snippet", id=response['snippet']['categoryId']).execute() v.category = category_response.get("items", [])[0]['snippet']['title'] except: pass # get thumbnail - "default" try: v.thumbnail = response['snippet']['thumbnails']['default']['url'] except: pass # get view count try: v.views = int(response['statistics']['viewCount']) except: pass v.save() return v
def save_obj_from_entry(entry): """ Takes entry(gdata) object and stores it into db """ v = Video() v.title = entry.media.title.text v.ytid = getid(entry) unique_slugify(v, v.title) v.duration = int(entry.media.duration.seconds) v.description = entry.media.description.text v.published_on = get_date(entry.published.text) v.category = entry.media.category[0].text if entry.rating is not None: v.rating = float(entry.rating.average) if entry.media.thumbnail is not None: v.thumbnail = entry.media.thumbnail[0].url try: v.views = int(entry.statistics.view_count) except: v.views = 0 v.save() return v
def _import_video(self, video_url, videoid, title, description, thumbnail, videosrt): videoid_match = VIDEOID_RE.search(videoid) videoid = videoid_match.group(1) video_type = YoutubeVideoType( 'http://www.youtube.com/watch?v={0}'.format(videoid)) try: video_url_obj = VideoUrl.objects.get( url=video_type.convert_to_video_url()) video = video_url_obj.video except ObjectDoesNotExist: video_url_obj = None video = Video() video.youtube_videoid = videoid video.title = title video.description = description if video_type.entry.media.duration: video.duration = int(video_type.entry.media.duration.seconds) video.thumbnail = thumbnail video.save() Action.create_video_handler(video) if videosrt: self._import_srt(video, videosrt) else: SubtitleLanguage(video=video, language='en', is_original=True, is_forked=True).save() if not video_url_obj: video_url_obj = VideoUrl( videoid=videoid, url=video_type.convert_to_video_url(), type=video_type.abbreviation, original=True, primary=True, video=video) video_url_obj.save() self._save_alternate_url(video, video_url)
def upload_video(request): if request.method == 'POST' and request.FILES['video_file']: video_file = request.FILES['video_file'] user_id = request.user title = request.POST['title'] desc = request.POST['description'] tags = request.POST['tags'] category = request.POST['category'] cat = VideoCategory.objects.get(id=category) vid = Video(video_id=1, uid=user_id, title=title, description=desc, tags=tags, category=cat, videofile='video_file', thumb='img_output_path') vid.save() video_id = vid.pk vid = Video.objects.get(id=video_id) img_output_path = '%s/thumbnails/%s' % (settings.MEDIA_ROOT, video_id) img_output_path_url = '%sthumbnails/%s' % (settings.MEDIA_URL, video_id) vid.video_id = video_id vid.videofile = video_file vid.save() duration = get_video_length(vid.videofile.path) pertime = duration / 20 ff = FFmpeg(inputs={vid.videofile.path: None}, outputs={ img_output_path + '_%d.jpg': ['-vf', 'fps=1/' + str(pertime), '-vframes', '20'] }) ff.run() vid.thumb = img_output_path + '_1.jpg' vid.thumb_url = img_output_path_url + '_1.jpg' vid.duration = duration vid.save() # Proses Tagging list_tags = tags.split(',') list_tags = [i.strip().lower() for i in list_tags] for tg in list_tags: if VideoTag.objects.filter(tag=tg).exists(): current_tag = VideoTag.objects.filter(tag=tg).first() current_tag.videos.add(vid) else: create_tag = VideoTag(uid=user_id, tag=tg) create_tag.save() create_tag.videos.add(vid) vc_list = VideoCategory.objects.all() context = {'vc_list': vc_list} #return render(request, 'upload-video.html', context) else: vc_list = VideoCategory.objects.all() form = VideoForm() context = {'form': form, 'vc_list': vc_list} #return render(request, 'upload-video.html', context) return render(request, 'upload-video.html', context)