Beispiel #1
0
	def json(self, argv):
		self.manager 	= MovieManager(self.site, self.module)
		action 			= self.site.get_argument('action', None)
		if action == 'setting':
			post_id 	= self.site.get_argument('post', None)
			if post_id:
				if type(post_id) == str and re.match(r'[a-z0-9]{24}', post_id):
					post_id 		= ObjectId(post_id)

				mv_setting = self.site.get_argument('setting', None)

				if mv_setting == "complete":
					mv_setting = "mvc"
				elif mv_setting == "remove":
					mv_setting = "mvd"
				result = yield self.manager.set_user_view_post(post_id, mv_setting)
				if result:
					return '{"error":0,"success":1}'
		else:
			post_id 	= self.site.get_argument('post', None)
			if not post_id:
				posts_view 	= yield self.manager.get_user_view_post()
				if posts_view:
					post_id = []
					for p in posts_view:
						if 'post_id' in p:
							post_id.append(p['post_id'])
			###
			posts = yield self.post_json(post_id)
			posts_argv 	= []
			for post in posts:
				posts_argv.append(self.post_argv(post))
					
			return {"post": posts_argv}
		return '{"error":1,"success":0}'
Beispiel #2
0
    def json(self, argv):
        self.manager = MovieManager(self.site, self.module)
        # action 			= self.site.get_argument('action', None)
        # get cache store
        cache_string = "%s" % str(self.module['_id'])
        result = yield self.site.cache.get(cache_string)
        if result and 'data' in result:
            return result['data']
        else:
            posts = yield self.post_json()
            result = {"post": posts}

            # set cache store
            self.site.cache.set(cache_string, result, self.cache_time)
            return result
Beispiel #3
0
    def json(self, argv):
        self.manager = MovieManager(self.site, self.module)

        action = self.site.get_argument('action', None)
        post_id = self.site.get_argument('post', None)

        if post_id == None:
            try:
                post_id = argv[0]
            except:
                pass

        if type(post_id) == str and re.match(r'[a-z0-9]{24}', post_id):
            post_id = ObjectId(post_id)

        if post_id:
            # update movie track
            post_track = self.site.get_argument('track', None)
            if post_track:
                if len(post_track) == 24:
                    track_id = ObjectId(post_track)
                self.manager.set_user_view_post(track_id)

                # set movie view count
                self.manager.set_post_view(post_id)

            # part view
            if action == "part":
                # lock some request failure
                if self.site.request.headers.get(
                        'X-Requested-With'
                ) == 'XMLHttpRequest' and self.site.site_db['domain'][
                        0] in self.site.request.headers.get('Referer')[:50]:
                    mv_chap_index = self.site.get_argument('c-i', 0)
                    mv_server_index = self.site.get_argument('s-i', 0)
                    result = yield self.manager.get_movie_part(
                        post_id, mv_chap_index, mv_server_index)
                    if result:
                        return {"post": result}

            # save last viewing movie chap/server/part
            elif action == "viewing":
                mv_chap = self.site.get_argument('mv-chap', -1)
                mv_server = self.site.get_argument('mv-server', -1)
                mv_part = self.site.get_argument('mv-part', -1)
                mv_seek = self.site.get_argument('mv-seek', 0)
                ###
                try:
                    mv_chap = int(mv_chap)
                except:
                    mv_chap = -1
                ###
                try:
                    mv_server = int(mv_server)
                except:
                    mv_server = -1
                ###
                try:
                    mv_part = int(mv_part)
                except:
                    mv_part = -1
                ###
                try:
                    mv_seek = float(mv_seek)
                except:
                    mv_seek = -1
                ###
                # print(post_id, mv_chap, mv_server, mv_part, mv_seek)
                self.manager.get_user_view_post_lasted(post_id, mv_chap,
                                                       mv_server, mv_part,
                                                       mv_seek)
                return '{"error":0,"success":1}'
            elif action == "rating":
                mv_rate = self.site.get_argument('rate', None)
                if mv_rate:
                    # print('rate', mv_rate)
                    mv_rate = int(mv_rate)
                    self.manager.set_post_rating(post_id, mv_rate)
                    return '{"error":0,"success":1}'
            elif action == "report":
                mv_report = self.site.get_argument('report', None)
                mv_content = self.site.get_argument('content', None)
                obj = report.SiteReport(self.site)
                # fork
                obj.set(mv_report, mv_content)
                return '{"error":0,"success":1}'
            else:
                post = yield self.post_json(argv[0])
                if post:
                    argv = self.post_argv(post)

                    # facebook graph
                    self.site.graph['og:url'] = argv['link']
                    self.site.graph['og:title'] = "%s - %s - %s" % (
                        argv['title'], self.site.site_db['setting']['title'],
                        self.site.site_db['domain'])
                    if len(argv['description']) > 10:
                        self.site.graph[
                            'og:description'] = escape.xhtml_escape(
                                "Xem Phim %s, %s" %
                                (argv['title'], argv['description'][:300]))

                    if 'poster' in argv:
                        image = argv['poster']
                    # elif 'trailer' in post['post']['trailer']:
                    # 	image 		= "http://i1.ytimg.com/vi/%s/hqdefault.jpg" % post['post']['content']['video'].split('youtube.com/watch?v=',2)[1].split(r'/[#|\?]/', 1)[0]
                    else:
                        image = None
                    if image:
                        self.site.graph['og:image'] = [
                            ["og:image", image], ["og:image:width", "1500"],
                            ["og:image:height", "1500"]
                        ]

                else:
                    argv = None
                return {"post": argv}
        return '{"error":1,"success":0}'
Beispiel #4
0
	def json(self, argv):
		self.manager 	= MovieManager(self.site, self.module)
		
		action 		= self.site.get_argument('action', None)
		search 		= self.site.get_argument('search', None)
		post_skip 	= self.site.get_argument('skip', None)
		post_tab 	= self.site.get_argument('tab', None)
		post_count 	= int(self.site.get_argument('count', 0))
		post_sort 	= False
		
		if search:
			post_id 	= yield self.manager.search_title_seo(search, post_count)
			post_sort 	= True
		else:
			post_id 	= self.site.get_argument('post', None)
			if post_id == None:
				try:
					post_id = argv[0]
				except:
					pass
			if type(post_id) == str and len(post_id) == 24:
				post_id 	= ObjectId(post_id)

		if action == "info":
			output = {
				'post.title':1,
				'post.subtitle':1,
				'post.poster':1,
				'post.director':1,
				'post.stars':1,
				'post.description':1,
				'post.country':1,
				'post.year':1,
				'post.length':1,
				'post.category':1,
				'post.title_seo':1,
				'post.trailer':1,
				'post.imdb':1,
				# 'view.count':1,
			}
		else:
			output = {
				'post.title':1,
				'post.subtitle':1,
				'post.title_seo':1,
				'post.poster':1,
				'post.year':1,
				'post.imdb':1,
				'post.length':1,
				# 'rating.count': 1,
				# 'rating.average': 1,
				'view.count':1,
			}

		posts 	= yield self.post_json(
			post_id		= post_id,
			post_skip	= post_skip,
			post_tab 	= post_tab,
			post_count 	= post_count,
			post_sort 	= post_sort,
			output 		= output,
		)
		posts_argv 	= []
		if action == "info":
			for post in posts:
				posts_argv.append(self.info_argv(post))
		else:
			for post in posts:
				posts_argv.append(self.post_argv(post))
		return {"post": posts_argv, "form": {'search': search}}
Beispiel #5
0
    def json(self, argv):
        self.manager = MovieManager(self.site, self.module)
        post_id = self.site.get_argument('post', None)

        if not post_id and argv and len(argv) > 0:
            post_id = argv[0]

        if type(post_id) == str and len(post_id) == 24:
            post_id = ObjectId(post_id)

        action = self.site.get_argument('action', None)

        if action == "findgroup":
            g_name = self.site.get_argument('g_name', None)
            groups = yield self.manager.search_post_group(g_name)
            if groups:
                result = []
                for g in groups:
                    result.append({
                        "id": str(g['_id']),
                        "name": g['name'],
                        "post": [str(p) for p in g['post']]
                    })
                return {"post": result}
        elif action == "groupofpost":
            if post_id:
                groups = yield self.manager.get_post_group(post_id=post_id,
                                                           output={
                                                               "_id": 1,
                                                               "name": 1,
                                                               "post": 1
                                                           })
                # print(groups)
                result = []
                for g in groups:
                    result.append({
                        "id": str(g['_id']),
                        "name": g['name'],
                        "post": [str(p) for p in g['post']]
                    })
                return {"post": result}
        elif action == "postofgroup":
            g_id = self.site.get_argument('g_id', None)
            if g_id:
                groups = yield self.manager.get_post_group(group_id=g_id,
                                                           output={
                                                               "_id": 1,
                                                               "name": 1,
                                                               "post": 1
                                                           })
                if groups and 'post' in groups[0]:
                    posts = yield self.post_json(post_id=groups[0]['post'])
                    posts_argv = []
                    for post in posts:
                        posts_argv.append(self.post_argv(post))
                    return {"post": posts_argv}

        elif action == "channelofpost":
            if post_id:
                post = yield self.site.db.post.find_one({"_id": post_id},
                                                        {"channel": 1})
                result = []
                if post and 'channel' in post:
                    channel = yield self.site.db.channel.find(
                        {
                            '_id': {
                                "$in": post['channel']
                            }
                        }, {
                            "name": 1
                        }).to_list(length=30)
                    for c in channel:
                        result.append({
                            "id": str(c['_id']),
                            "name": c['name'],
                        })
                return {"post": result}
        elif action == "findchannel":
            c_name = self.site.get_argument('c_name', None)

            query = {'site_id': self.site.site_db['_id']}
            if c_name:
                query['name'] = c_name

            channel = yield self.site.db.channel.find(query, {
                "name": 1
            }).to_list(length=30)
            result = []
            for c in channel:
                result.append({
                    "id": str(c['_id']),
                    "name": c['name'],
                })
            return {"post": result}

        elif type(post_id) == ObjectId:
            ### public/private/trash/restore post
            if action == "manager":
                post_is = self.site.get_argument('is', 'private')
                # public post
                if post_is in ["public", "private", "trash", "restore"]:
                    timestep = int(self.site.get_argument('timestep', 0))
                    update = yield self.manager.set_post_access(
                        post_id, access=post_is, timestep=timestep)
                    if update:
                        return '{"error": 0, "success": "%s successful!"}' % post_is
                #  finished post
                elif post_is == "finished":
                    update = yield self.manager.set_movie_finished(post_id)
                    if update:
                        return '{"error": 0, "success": "%s successful!"}' % post_is
                # unfinished post
                elif post_is == "unfinished":
                    update = yield self.manager.set_movie_unfinished(post_id)
                    if update:
                        return '{"error": 0, "success": "%s successful!"}' % post_is
                # edit post
                elif post_is == "edit":
                    json = self.site.get_argument('movie', None)
                    if json:
                        json = escape.json_decode(json)
                        if 'chap' in json:
                            update = yield self.manager.set_movie_chaps(
                                json['chap'], post_id)
                        else:
                            update = yield self.manager.set_movie_info(
                                json, post_id)

                        if update:
                            return '{"error": 0, "success": "edit successful!"}'

                # delete post
                elif post_is == "delete":
                    post = yield self.manager.db.remove({
                        "_id":
                        post_id,
                        'site_id':
                        self.site.site_db['_id'],
                        'post.format':
                        "mv",
                        "type":
                        "trash"
                    })
                    if post:
                        post = yield self.manager.db.remove({
                            "parent_id":
                            post_id,
                            'site_id':
                            self.site.site_db['_id'],
                            'post.format':
                            "mvc"
                        })
                        if post:
                            return '{"error": 0, "success": "delete successful!"}'

                # join group
                elif post_is == "joingroup":
                    group_id = self.site.get_argument('g_id', None)
                    group_name = self.site.get_argument('g_name', None)
                    yield self.manager.set_post_group(post_id, group_id,
                                                      group_name)

                # join group
                elif post_is == "leavegroup":
                    group_id = self.site.get_argument('g_id', None)
                    yield self.manager.leave_post_group(post_id, group_id)

                elif post_is == "joinchannel":
                    channel_id = self.site.get_argument('c_id', None)
                    if type(channel_id) == str and len(channel_id) == 24:
                        channel_id = ObjectId(channel_id)

                    result = yield self.site.db.post.update(
                        {"_id": post_id}, {"$push": {
                            "channel": channel_id
                        }},
                        upsert=True)
                    if result and 'n' in result and result['n'] > 0:
                        return '{"error": 0, "success": "edit successful!"}'
                elif post_is == "removechannel":
                    channel_id = self.site.get_argument('c_id', None)
                    if type(channel_id) == str and len(channel_id) == 24:
                        channel_id = ObjectId(channel_id)

                    post = yield self.site.db.post.find_one({'_id': post_id},
                                                            {"channel": 1})
                    if post and 'channel' in post and channel_id in post[
                            'channel']:
                        channels = [
                            x for x in post['channel'] if x != channel_id
                        ]
                        result = yield self.site.db.post.update(
                            {"_id": post_id}, {"$set": {
                                "channel": channels
                            }},
                            upsert=True)
                        if result and 'n' in result and result['n'] > 0:
                            return '{"error": 0, "success": "edit successful!"}'
            # get post information for editor
            elif action == "edit":
                post = yield self.manager.db.find_one({'_id': post_id},
                                                      {'post': 1})
                if post:
                    return {"post": post['post']}
            # join search list post
            elif action == "search":
                search = self.site.get_argument('search', None)
                if search:
                    try:
                        post_count = int(self.site.get_argument('count', 10))
                    except Exception as e:
                        post_count = 10
                    # tim danh sach post
                    posts_id = yield self.manager.search_title_seo(search)
                    # ko trung voi post hien co
                    posts_id = [x for x in posts_id if x != post_id]
                    posts = yield self.post_json(post_id=posts_id,
                                                 post_tab="search",
                                                 post_count=post_count)
                    posts_argv = {p['_id']: self.post_argv(p) for p in posts}
                    post_result = [
                        posts_argv[p] for p in posts_id
                        if p in list(posts_argv.keys())
                    ]
                    return {"post": post_result}
        ### get post content
        if not action:
            post_skip = self.site.get_argument('skip', None)
            # post_view 	= self.site.get_argument('view', None)
            post_tab = self.site.get_argument('tab', "new")
            post_count = int(self.site.get_argument('count', 10))

            posts = yield self.post_json(post_id=post_id,
                                         post_skip=post_skip,
                                         post_tab=post_tab,
                                         post_count=post_count)
            # print(posts)
            posts_argv = []
            for post in posts:
                posts_argv.append(self.post_argv(post))
            # print(post_argv)
            return {"post": posts_argv, "tab": post_tab}

        return '{"error":1,"success":0}'