def do_task(worker, job): from wanx.base.log import print_log from wanx.base import const from wanx.models.video import Video from wanx.models.user import User from wanx.models.game import Game data = job.data # 记录日志 print_log('create_live_video', data) data = json.loads(data) # 记录日志 print_log('create_live_video', '%s ==========================> Start' % (data['event_id'])) user = User.get_one(data['user_id'], check_online=False) if not user: return '' game = Game.get_one(data['game_id'], check_online=False) if not game: return '' video_id = Video.get_video_by_event_id(data['event_id'], str(user._id)) video = Video.get_one(str(video_id), check_online=False) if not video: video = Video.init() video.author = ObjectId(data['user_id']) video.game = ObjectId(data['game_id']) video.title = data['title'] video.duration = data['duration'] video.ratio = data['ratio'] video.cover = data['cover'] video.url = data['url'] video.event_id = data['event_id'] video.status = const.ONLINE video.create_model() else: data['author'] = ObjectId(data.pop('user_id')) data['game'] = ObjectId(data.pop('game_id')) video.update_model({'$set': data}) # 记录日志 print_log('create_live_video', '%s ==========================> Finished' % (data['event_id'])) from wanx.models.activity import Battle battle = Battle.get_live_battle( data['user_id'], data['title'].decode('unicode-escape').encode('utf-8'), None) if battle: Battle.set_video_id(battle['_id'], video_id) return ''
def create_video(): """创建视频 (POST&LOGIN) :uri: /videos/new-video :param game_id: 视频所属游戏id :param title: 视频标题 :param duration: 视频时长 :param ratio: 视频尺寸 :returns: object """ user = request.authed_user gid = request.values['game_id'] game = Game.get_one(gid) if not game: return error.GameNotExist video = Video.init() video.author = ObjectId(user._id) video.game = ObjectId(gid) video.title = request.values['title'] # 敏感词检查 if Spam.filter_words(video.title, 'video'): return error.InvalidContent try: duration = int(request.values['duration']) except: return error.InvalidArguments video.duration = duration video.ratio = request.values['ratio'] # 设置为文件上传状态, 文件上传成功之后更改为上线状态 video.status = const.UPLOADING vid = video.create_model() # 任务检查 if user: UserTask.check_user_tasks(str(user._id), CREATE_VIDEO, 1) return Video.get_one(vid, check_online=False).format()