def editVideoTags(vid, tags, user, edit_behaviour='replace', not_found_behaviour='ignore', user_lang='ENG'): log( obj={ 'tags': tags, 'vid': vid, 'edit_behaviour': edit_behaviour, 'not_found_behaviour': not_found_behaviour }) filterOperation('editVideoTags', user, vid) if edit_behaviour not in ['replace', 'append', 'remove']: raise UserError('INCORRECT_edit_behaviour') if not_found_behaviour not in ['ignore', 'error', 'append']: raise UserError('INCORRECT_non_found_behaviour') if edit_behaviour == 'remove' and not_found_behaviour == 'append': raise UserError('INCORRECT_REQUEST') filterSingleVideo(vid, user) if len(tags) > VideoConfig.MAX_TAGS_PER_VIDEO: raise UserError('TAGS_LIMIT_EXCEEDED') item = tagdb.db.videos.find_one({'_id': ObjectId(vid)}) if item is None: raise UserError('ITEM_NOT_EXIST') if not_found_behaviour == 'append': tags = editTags_append_impl(tags, user, user_lang) else: tags = tagdb.filter_tags(tags) return editTags_impl(item, tags, user, edit_behaviour)
def updatePlaylistCoverVID(pid, vid, page, page_size, user): log(obj={'pid': pid, 'vid': vid}) with redis_lock.Lock(rdb, "playlistEdit:" + str(pid)), MongoTransaction(client) as s: list_obj = db.playlists.find_one({'_id': ObjectId(pid)}) log(obj={'playlist': list_obj}) if list_obj is None: raise UserError('PLAYLIST_NOT_EXIST') filterOperation('editPlaylist', user, list_obj) video_obj = filterSingleVideo(vid, user) if video_obj is None: raise UserError('VIDEO_NOT_EXIST') cover = video_obj['item']['cover_image'] db.playlists.update_one({'_id': ObjectId(pid)}, {'$set': { "cover": cover }}, session=s()) db.playlists.update_one({'_id': ObjectId(pid)}, { '$set': { 'meta.modified_by': makeUserMeta(user), 'meta.modified_at': datetime.now() } }, session=s()) #video_page, video_count = listPlaylistVideos(pid, page - 1, page_size, user) s.mark_succeed()
def editVideoTags(vid, tags, user): log(obj={'tags': tags, 'vid': vid}) filterOperation('editVideoTags', user, vid) filterSingleVideo(vid, user) if len(tags) > VideoConfig.MAX_TAGS_PER_VIDEO: raise UserError('TAGS_LIMIT_EXCEEDED') tagdb.verify_tags(tags) item = tagdb.db.items.find_one({'_id': ObjectId(vid)}) if item is None: raise UserError('ITEM_NOT_EXIST') if len(tags) > VideoConfig.MAX_TAGS_PER_VIDEO: raise UserError('TOO_MANY_TAGS') with redis_lock.Lock( rdb, "videoEdit:" + item['item']['unique_id']), MongoTransaction(client) as s: tagdb.update_item_tags(item, tags, makeUserMeta(user), session=s()) s.mark_succeed()
def getVideoDetail(vid, user, raise_error=False): try: vid = ObjectId(vid) except: raise UserError("INCORRECT_VIDEO_ID") video_obj = filterSingleVideo(vid, user, raise_error) if video_obj is None: raise UserError('VIDEO_NOT_EXIST') return video_obj
def getVideoDetailWithTags(vid, language, user): try: vid = ObjectId(vid) except: raise UserError("INCORRECT_VIDEO_ID") video_obj = filterSingleVideo(vid, user) if video_obj is None: raise UserError('VIDEO_NOT_EXIST') return db.retrive_item_with_tag_category_map(video_obj, language)
def createPlaylistFromSingleVideo(language, vid, user) : log(obj = {'vid': vid}) filterOperation('createPlaylist', user) video_obj = filterSingleVideo(vid, user) if video_obj is None : raise UserError('VIDEO_NOT_EXIST') new_playlist_id = createPlaylist(language, video_obj['item']['title'], video_obj['item']['desc'], video_obj['item']['cover_image'], user) log(obj = {'pid': new_playlist_id}) addVideoToPlaylist(new_playlist_id, vid, user) return new_playlist_id
def refreshVideoDetail(vid, user): log(obj={'vid': vid}) filterOperation('refreshVideoDetail', user, vid) filterSingleVideo(vid, user) item = tagdb.retrive_item(vid) if item is None: raise UserError('ITEM_NOT_EXIST') json_str = dumps({ 'url': item['item']['url'], 'tags': [], 'dst_copy': '', 'dst_playlist': '', 'dst_rank': -1, 'other_copies': [], 'user': user, 'playlist_ordered': None, 'update_video_detail': True, 'event_id': getEventID() }) postTask(json_str)
def updatePlaylistCoverVID(pid, vid, offset, limit, user): log(obj={'pid': pid, 'vid': vid}) with redis_lock.Lock(rdb, "playlistEdit:" + str(pid)), MongoTransaction(client) as s: list_obj = playlist_db.retrive_item(pid) log(obj={'playlist': list_obj}) if list_obj is None: raise UserError('PLAYLIST_NOT_EXIST') filterOperation('editPlaylist', user, list_obj) video_obj = filterSingleVideo(vid, user) if video_obj is None: raise UserError('VIDEO_NOT_EXIST') cover = video_obj['item']['cover_image'] playlist_db.update_item_query(list_obj, {'$set': { "item.cover": cover }}, user=makeUserMeta(user), session=s()) #video_page, video_count = listPlaylistVideos(pid, page - 1, page_size, user) s.mark_succeed()
def getVideoDetail(vid, user, raise_error=False): return filterSingleVideo(vid, user, raise_error)
def getVideoDetailWithTags(vid, language, user): video_obj = filterSingleVideo(vid, user) return db.retrive_item_with_tag_category_map(video_obj, language)
def getVideoTags(vid, user_language, user): filterSingleVideo(vid, user) item, tags, category_tag_map, tag_category_map = tagdb.retrive_item_with_tag_category_map( vid, user_language) return tags