예제 #1
0
    def get(self, response, referrer_url, skipEps=False):
        req = Request()
        movie = {
            'group': {},
            'episode': [],
            'links': [],
        }
        # soup = BeautifulSoup(response, "html.parser")
        # get captcha key
        captcha_key = re.search(r"var recaptcha_key='(.*?)';",
                                response).group(1)
        respon = req.get(
            'https://www.google.com/recaptcha/api2/anchor',
            params={
                "ar": 1,
                "k": captcha_key,
                "co": "aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbTo0NDM.",
                # "hl": "en",
                "v": "eWmgPeIYKJsH2R2FrgakEIkq",
                "size": "invisible",
                # "cb": "fo0mghgojurx",
            })

        token = re.search('id="recaptcha-token" value="(.*?)"',
                          respon).group(1)
        m_id = re.search(r'id="watch" data-id="(.*?)"', response).group(1)
        ep_id = re.search(r'data-epid="(.*?)"', response).group(1)
        respon = req.get('https://fmovies.to/ajax/film/servers',
                         params={
                             'id': m_id,
                             'episode': ep_id,
                             'token': token
                         })
        helper.log(respon)
        return movie
예제 #2
0
    def get(self, response, page):

        channel = {'page': page, 'page_patten': None, 'movies': []}

        soup = BeautifulSoup(response, "html.parser")
        # get total page
        last_page = soup.select_one(
            'div.ah-pagenavi > ul.pagination > li.last')
        helper.log("*********************** Get pages ")
        if last_page is not None:
            page = last_page.text.strip()
            channel['page'] = int(page)

        for movie in soup.select(
                'div.ah-row-film > div.ah-col-film > div.ah-pad-film > a'):

            title = movie.select_one('span.name-film').find(
                text=True, recursive=False).strip()
            type = movie.select_one('span.number-ep-film').text.strip()
            label = "[%s] %s" % (type, title)
            thumb = movie.select_one('img').get('src')

            channel['movies'].append({
                'id': movie.get('href'),
                'label': py2_encode(label),
                'title': py2_encode(title),
                'realtitle': py2_encode(title),
                'thumb': thumb,
                'type': py2_encode(type)
            })

        return channel
예제 #3
0
    def get_search(self, response, page=1):

        channel = {
            'page': page,
            'page_patten': None,
            'movies': []
        }

        soup = BeautifulSoup(response, "html.parser")
        # get total page
        last_page = soup.select_one('div.PageNav')
        helper.log("*********************** Get pages ")
        if last_page is not None:
            channel['page'] = int(last_page.get('data-last'))

        for movie in soup.select('li.searchResult'):
            tag = movie.select_one('div.listBlock.main div.titleText > h3.title > a')
            title = py2_encode(tag.text).strip()
            thumb = None

            channel['movies'].append({
                'id': tag.get('href'),
                'label': title,
                'title': title,
                'realtitle': title,
                'thumb': thumb,
                'type': None
            })

        return channel
예제 #4
0
    def get_link(self, response, domain, originURL, request):
        helper.log(
            "***********************Get Movie Link*****************************"
        )
        movie = {
            'group': {},
            'episode': [],
            'links': [],
        }

        # get server list
        soup = BeautifulSoup(response, "html.parser")
        servers = soup.select('div#clicksv > span.btn')
        m_id = re.search(r'var id_ep = (.*)', response).group(1)

        jobs = [{
            'url': '%s/player/player.php' % domain,
            'parser': Parser.extract_link,
            'params': {
                'ID': m_id,
                'SV': i.get('id').replace('sv', '')
            }
        } for i in servers]
        group_links = AsyncRequest(request=request).post(jobs)
        for link in group_links:
            if link:
                movie['links'].append({
                    'link': link,
                    'title': 'Link %s' % 'HD',
                    'type': 'Unknown',
                    'originUrl': originURL,
                    'resolve': False
                })

        return movie
예제 #5
0
    def get_link(self, response, domain, referrer_url, request):
        helper.log(
            "***********************Get Movie Link*****************************"
        )
        movie = {
            'group': {},
            'episode': [],
            'links': [],
        }

        # get server list
        soup = BeautifulSoup(response, "html.parser")

        return movie
예제 #6
0
    def get_link(self, response, domain, referrer_url, request):
        helper.log(
            "***********************Get Movie Link*****************************"
        )
        movie = {
            'group': {},
            'episode': [],
            'links': [],
        }

        # filmInfo.episodeID = parseInt('201326');
        # filmInfo.filmID = parseInt('15586');
        # filmInfo.playTech = 'auto';
        ep_id = re.search(r'''filmInfo.episodeID = parseInt\('(.*?)'\);''',
                          response).group(1)
        film_id = re.search(r'''filmInfo.filmID = parseInt\('(.*?)'\);''',
                            response).group(1)
        play_tech = re.search(r'''filmInfo.playTech = '(.*?)';''',
                              response).group(1)

        response = Request().post('{}/ajax'.format(domain),
                                  params={
                                      'NextEpisode': 1,
                                      'EpisodeID': ep_id,
                                      'filmID': film_id,
                                      'playTech': play_tech
                                  },
                                  headers={'referer': referrer_url})

        link = LinkExtractor.iframe(response)
        if link:
            movie['links'].append({
                'link': link,
                'title': 'Link HD',
                'type': 'stream',
                'resolve': False,
                'originUrl': referrer_url
            })

        # if links:
        #     for link in links:
        #         movie['links'].append({
        #             'link': link.get('file'),
        #             'title': 'Link %s' % link.get('label'),
        #             'type': link.get('label'),
        #             'resolve': False,
        #             'originUrl': referrer_url
        #         })

        return movie
예제 #7
0
    def getChannel(self, channel, page=1):
        channel = channel.replace(self.domain, "")
        helper.log(channel)
        if page > 1:
            if channel.endswith(".html"):
                url = re.sub(r'\d+.html', '{}.html'.format(page), ('%s%s' % (self.domain, channel)))
            else:
                url = '%s/%s&page=%d' % (self.domain, channel, page)

            helper.log(url)
        else:
            url = '%s/%s' % (self.domain, channel)
        response = self.request.get(url, headers=h)
        return Channel().get(response, page)
예제 #8
0
    def get(self, response, page):

        channel = {'page': page, 'page_patten': None, 'movies': []}

        soup = BeautifulSoup(response, "html.parser")
        # get total page
        last_page = soup.select_one('ul.ipsPagination')
        helper.log("*********************** Get pages ")
        if last_page is not None:
            page = last_page.get('data-pages')
            channel['page'] = int(page)

        for movie in soup.select('div.esnList_item > div.esnList_item_border'):
            thumb = movie.select_one('div.esnList_item_img > a > img').get(
                'src')
            title = movie.select_one(
                'ul.ipsDataList > li.ipsDataItem > span > a').get(
                    'title').strip()
            type = ""
            realtitle = ""

            if movie.select_one('div.cfTop') is not None:
                type = movie.select_one('div.cfTop > img').get('src').strip()
                type = re.search('ChatLuong/(.*).png', type).group(1)

            if movie.select_one('div.ipsType_light') is not None:
                realtitle = movie.select_one('div.ipsType_light').text.strip()

            if realtitle is not None:
                label = "[%s] %s - %s" % (type, title, realtitle)
            else:
                label = "[%s] %s" % (type, title)

            channel['movies'].append({
                'id':
                movie.select_one('div.esnList_item_img > a').get('href'),
                'label':
                py2_encode(label),
                'title':
                py2_encode(title),
                'realtitle':
                py2_encode(realtitle),
                'thumb':
                thumb,
                'type':
                py2_encode(type)
            })

        return channel
예제 #9
0
    def get(self, response, page=1, domain=''):

        channel = {
            'page': page,
            'page_patten': None,
            'movies': []
        }

        soup = BeautifulSoup(response, "html.parser")
        # get total page
        last_page = soup.select_one('div.PageNav')
        helper.log("*********************** Get pages ")
        if last_page is not None:
            channel['page'] = int(last_page.get('data-last'))

        jobs = []

        for movie in soup.select('li.discussionListItem'):
            # if 'sticky' in movie.get('class'): continue
            tag = movie.select_one('div.listBlock.main a.PreviewTooltip')
            try:
                title = py2_encode(tag.text.strip())
                thumb = None

                movie = {
                    'id': tag.get('href'),
                    'label': title,
                    'title': title,
                    'intro': title,
                    'realtitle': title,
                    'thumb': thumb,
                    'type': None
                }

                if 'true' in helper.getSetting('hdvietnam.extra'):
                    jobs.append({
                        'url': '%s/%s' % (domain, movie['id']),
                        'parser': Parser.parse_post,
                        'args': movie
                    })
                else:
                    channel['movies'].append(movie)
            except:
                helper.log(tag)

        if 'true' in helper.getSetting('hdvietnam.extra'):
            channel['movies'] = AsyncRequest(thread=10).get(jobs)
        return channel
예제 #10
0
    def get(self, response, url, skipEps=False):
        movie = {
            'group': {},
            'episode': [],
            'links': [],
        }
        soup = BeautifulSoup(response, "html.parser")
        self.originURL = url

        try:
            error = py2_encode(
                soup.select_one(
                    'div.error-not-available div.alert-subheading').find(
                        text=True, recursive=False))
            if error:
                helper.message(error, 'Not Found')
                return movie
        except:
            pass

        # get episode if possible
        servers = soup.select('div.list-server > div.server.clearfix')
        if skipEps is False and len(servers) > 0:
            helper.log(
                "***********************Get Movie Episode*****************************"
            )
            found = False
            items = self.get_server_list(servers)
            if items is not None and len(items) > 0:
                movie['group'] = items
                found = True
            else:
                found = False
            if found is False:
                servers = soup.select('ul.server-list > li.backup-server')
                movie['group'] = self.get_server_list(servers)

        else:
            movie['group']['phimmoi'] = [{
                'link': self.originURL,
                'title': 'Unknown link'
            }]

        return movie
예제 #11
0
    def get(self, response, page):

        channel = {'page': page, 'page_patten': None, 'movies': []}

        soup = BeautifulSoup(response, "html.parser")
        # get total page
        pages = soup.select_one('ul.pagination')

        helper.log("*********************** Get pages ")
        m = re.findall(r'(page)?[/|=](\d+)(.html)?', str(pages))
        if m:
            m = [int(x[1]) for x in m]
            channel['page'] = max(m)

        for movie in soup.select('ul#movie-last-movie > li a'):
            realtitle = ""
            title = movie.select_one('div.movie-title-1').text.strip()
            type = ""
            if movie.select_one('span.ribbon') is not None:
                type = movie.select_one('span.ribbon').text.strip()
            if movie.select_one('span.movie-title-2') is not None:
                realtitle = movie.select_one('span.movie-title-2').text.strip()

            if realtitle:
                label = "[%s] %s - %s" % (type, title, realtitle)
            else:
                realtitle = title
                label = "[%s] %s" % (type, title)

            thumb = re.search(
                r"background-image:url\('(.*)'\)",
                movie.select_one('div.public-film-item-thumb').get(
                    'style')).group(1)

            channel['movies'].append({
                'id': text(movie.get('href')),
                'label': text(label),
                'title': text(title),
                'realtitle': text(realtitle),
                'thumb': thumb,
                'type': text(type)
            })

        return channel
예제 #12
0
    def get(self, response, page):

        channel = {
            'page': page,
            'page_patten': None,
            'movies': []
        }

        soup = BeautifulSoup(response, "html.parser")
        # get total page
        pages = soup.select('ul.pagination > li > a')
        helper.log("*********************** Get pages ")
        for item in pages:
            if item.text.strip() == py2_encode("Trang kế →"): channel['page'] = int(page)+1

        for movie in soup.select('ul.list-movie > li > a'):
            title = movie.select_one('span.movie-title-1').text.strip()
            type = ""
            if movie.select_one('span.ribbon') is not None:
                type = movie.select_one('span.ribbon').text.strip()
            if movie.select_one('span.movie-title-2') is not None:
                realtitle = movie.select_one('span.movie-title-2').text.strip()
            if realtitle is not None:
                label = "[%s] %s - %s" % (type, title, realtitle)
            else:
                label = "[%s] %s" % (type, title)

            thumb = re.search('url\((.*)\);', movie.select_one('div.movie-thumbnail').get('style')).group(1)

            channel['movies'].append({
                'id': py2_encode(movie.get('href')),
                'label': py2_encode(label),
                'title': py2_encode(title),
                'realtitle': py2_encode(realtitle),
                'thumb': thumb,
                'type': py2_encode(type),
            })

        return channel
예제 #13
0
    def decode(self, link):
        r = base64.b64decode(link).decode('utf8')
        helper.log(r)
        r = r.replace("https://bit.ly/2zE7Kmg?test=", "")
        r = r.replace("https://bit.ly/2zE7Kmg?temp=", "")
        r = r.replace("ms.com?test=", "")

        rep_text = re.findall(r'(.*?)(\d)(\d.mp4/)+', r)

        if len(rep_text) > 0:
            rep_text = rep_text[0][0] + rep_text[0][1]

            r = r.replace('%s1.mp4/' % rep_text, 'https://3.bp.blogspot.com/')
            r = r.replace('%s2.mp4/' % rep_text, 'https://video.xx.fbcdn.net/')
            r = r.replace('%s3.mp4/' % rep_text, 'v/t42.9040-2/')
            r = r.replace('%s4.mp4/' % rep_text,
                          'https://lh3.googleusercontent.com/')

            r = r.replace('%s5.mp4/' % rep_text, '=m37')
            r = r.replace('%s6.mp4/' % rep_text, '=m22')
            r = r.replace('%s7.mp4/' % rep_text, '=m18')
        return r
예제 #14
0
    def get(self, response, page):

        channel = {'page': page, 'page_patten': None, 'movies': []}

        soup = BeautifulSoup(response, "html.parser")
        # get total page
        next_page = soup.select_one('a.more-btn.yellow-btn.btn-nav')
        helper.log("*********************** Get pages ")
        if next_page is not None:
            channel['page'] = int(page) + 1

        for movie in soup.select('div.flex-wrap-movielist > a.movie-item'):

            title = movie.select_one('div.pl-carousel-content h6').text.strip()
            realtitle = movie.select_one(
                'div.pl-carousel-content p').text.strip()
            type = movie.select_one('div.badget-eps')
            if type:
                type = type.text.strip()
            elif movie.select_one('div.pl-carousel-badget'):
                type = movie.select_one('div.pl-carousel-badget').text.strip()
            else:
                type = "HD"

            label = "[%s] %s - %s" % (type, title, realtitle)
            thumb = movie.select_one('div.img').get('data-original')

            channel['movies'].append({
                'id': movie.get('href'),
                'label': py2_encode(label),
                'title': py2_encode(title),
                'realtitle': py2_encode(realtitle),
                'thumb': thumb,
                'type': py2_encode(type),
                # 'intro': movie.select_one('div.des > small').text.strip().encode("utf-8"),
            })

        return channel
예제 #15
0
    def extract_link(response, args=None):
        url = LinkExtractor.iframe(response)
        if url and 'short.icu' not in url:
            return url
        elif re.search(r'atob\(', response):
            cipher_text = re.search(r'atob\("(.*?)"\)', response).group(1)
            enc_data = json.loads(base64.b64decode(cipher_text))
            # cipher_text = 'Salted__{}{}'.format(
            #     codecs.decode(enc_data['s'], 'hex'),
            #     base64.b64decode(enc_data['ct'])
            # )

            cipher_text = b'Salted__' + bytearray.fromhex(
                enc_data['s']) + base64.b64decode(enc_data['ct'])
            cipher_text = base64.b64encode(cipher_text)
            url = CryptoAES().decrypt(cipher_text, 'caphedaklak').replace(
                '\\', '').replace('"', '')
            if url:
                return url
        else:
            helper.log(text(response))

        return None
예제 #16
0
    def get(self, response, page):

        channel = {
            'page': page,
            'page_patten': None,
            'movies': []
        }

        soup = BeautifulSoup(response, "html.parser")
        # get total page
        last_page = soup.select('p.pages > a.pagelink')
        helper.log("*********************** Get pages ")
        if len(last_page) > 1:
            channel['page'] = int(last_page[-1].text.strip())

        for movie in soup.select('ul.list-movie > li.movie-item > a.block-wrapper'):
            tag = movie.select_one('div.movie-meta')
            title = tag.select_one('span.movie-title-1').text.strip()
            realtitle = tag.select_one('span.movie-title-2').text.strip()
            thumb = re.search(r':url\((.*?)\);', movie.select_one('div.movie-thumbnail').get('style')).group(1)

            type = tag.select_one('span.movie-title-chap').text.strip()
            label = "[%s] %s" % (type, title)
            intro = ""

            channel['movies'].append({
                'id': movie.get('href'),
                'label': py2_encode(label),
                'title': py2_encode(title),
                'realtitle': py2_encode(realtitle),
                'thumb': thumb,
                'type': py2_encode(type),
                'intro': py2_encode(intro),
            })

        return channel
예제 #17
0
    def get_link(self, response, url, request, domain):
        helper.log(
            "***********************Get Movie Link*****************************"
        )
        movie = {
            'group': {},
            'episode': [],
            'links': [],
        }

        filmid = re.search(r'filmID\s?=\s?parseInt\((\d+)\);',
                           response).group(1)
        epid = re.search(r'episodeID\s?=\s?parseInt\((\d+)\);',
                         response).group(1)
        svid = re.search(r'svID\s?=\s?parseInt\((\d+)\);', response).group(1)

        ajax_url = '{}/ajax/player'.format(domain)
        resp = request.post(ajax_url,
                            params={
                                'id': filmid,
                                'ep': epid,
                                'sv': svid,
                            })

        frame_url = urlparse(LinkExtractor.iframe(resp))

        movie_url = parse_qs(frame_url.query).get('url')[0]
        movie['links'].append({
            'link': movie_url,
            'title': 'Link {}'.format('HD'),
            'type': 'hls',
            'resolve': False,
            'originUrl': url
        })

        return movie
예제 #18
0
    def get_link(self, response, url, request):
        helper.log(
            "***********************Get Movie Link*****************************"
        )
        movie = {
            'group': {},
            'episode': [],
            'links': [],
        }
        self.originURL = url
        url = self.get_token_url(response)
        response = Request().get(url)

        self.key = self.get_decrypt_key(response)

        self.key
        if not self.key:
            return movie

        jsonresponse = re.search("_responseJson='(.*)';", response).group(1)
        jsonresponse = json.loads(py2_decode(jsonresponse))

        # if jsonresponse['medias']:
        #     media = sorted(jsonresponse['medias'], key=lambda elem: elem['resolution'], reverse=True)
        #     for item in media:
        #         url = CryptoAES().decrypt(item['url'], bytes(self.key.encode('utf-8')))
        #         if not re.search('hls.phimmoi.net', url):
        #             movie['links'].append({
        #                 'link': url,
        #                 'title': 'Link %s' % item['resolution'],
        #                 'type': item['resolution'],
        #                 'resolve': False,
        #                 'originUrl': self.originURL
        #             })
        #         else:
        #             # hls.phimmoi.net
        #             movie['links'].append({
        #                 'link': url,
        #                 'title': 'Link hls',
        #                 'type': 'hls',
        #                 'resolve': False,
        #                 'originUrl': self.originURL
        #             })

        # if jsonresponse.get('embedUrls'):
        #     for item in jsonresponse.get('embedUrls'):
        #         url = self.get_url(CryptoAES().decrypt(item, bytes(self.key.encode('utf-8'))))
        #         if not re.search('hydrax', url):
        #             movie['links'].append({
        #                 'link': url,
        #                 'title': 'Link Unknow',
        #                 'type': 'mp4',
        #                 'resolve': False,
        #                 'originUrl': self.originURL
        #             })
        #         else:
        #             movie['links'].append({
        #                 'link': url,
        #                 'title': 'Link hydrax',
        #                 'type': 'hls',
        #                 'resolve': False,
        #                 'originUrl': self.originURL
        #             })

        if jsonresponse['thirdParty']:
            jobs = []
            self.key = "@@@3rd"
            for item in jsonresponse['thirdParty']:
                movie_url = self.get_url(CryptoAES().decrypt(
                    item.get('embed'), self.key))
                if 'hydrax.html' not in movie_url:
                    movie['links'].append({
                        'link':
                        movie_url,
                        'title':
                        'Link {}'.format(item.get('label', 'HD')),
                        'type':
                        item.get('type'),
                        'resolve':
                        False,
                        'originUrl':
                        self.originURL
                    })

        return movie
예제 #19
0
    def get_link(self, response, originUrl):
        movie = {'group': {}, 'episode': [], 'links': []}

        helper.log(
            "***********************Get phimmedia Link*****************************"
        )
        sources = re.findall(r"file:\s?(.*?),\s?label: \"(\d+)\"", response,
                             re.MULTILINE)
        if sources and len(sources) > 0:
            helper.log(
                "***********************Get Movie Link 1*****************************"
            )
            sources = sorted(sources, key=lambda elem: elem[1], reverse=True)
            for source in sources:
                match = re.search(source[0] + "=.*\(\"(.*)\"\);", response)
                if match is not None:
                    link = self.decode(match.group(1))
                    movie['links'].append({
                        'link': link,
                        'title': 'Link %sp' % source[1],
                        'type': source[1],
                        'resolve': False,
                        'originUrl': originUrl
                    })

            return movie

        sources = re.findall(r'file:\s?[\'|"](.*?)[\'|"],\s?label: "(\d+)"',
                             response, re.MULTILINE)
        if sources and len(sources) > 0:
            helper.log(
                "***********************Get Movie Link 2*****************************"
            )
            for source in sources:
                url = self.decode(source[0])

                movie['links'].append({
                    'link': url,
                    'title': 'Link %sp' % source[1],
                    'type': source[1],
                    'resolve': False,
                    'originUrl': originUrl
                })

        sources = re.findall(r'.*\d=define\d+\("(.*)"\);', response)
        if sources and len(sources) > 0:
            helper.log(
                "***********************Get Movie Link 3*****************************"
            )
            for source in sources:
                url = self.decode(source)
                if len(url) > 0:
                    movie['links'].append({
                        'link': url,
                        'title': 'Link %sp' % source[1],
                        'type': source[1],
                        'resolve': False,
                        'originUrl': originUrl
                    })
            movie['links'].reverse()

        return movie
예제 #20
0
    def get_link(self, response, domain, movieurl):
        movie = {
            'group': {},
            'episode': [],
            'links': [],
        }

        videos = json.loads(response)
        subtitle = None
        if 'subtitle' in videos and len(
                videos['subtitle']) > 0 and 'vi' in videos['subtitle']:
            subtitle = '{}/subtitle/{}.vtt'.format(domain,
                                                   videos['subtitle']['vi'])

        videos = videos['sources']
        for videotype in videos:
            if 'm3u8' in videotype:
                continue

            if videos[videotype] and ('hls' in videotype or 'htt' in videotype
                                      or 'hff' in videotype):
                url = self.encodeString(videos[videotype], 69)
                url = url.replace('vdicdn', '8giaitri')
                movie['links'].append({
                    'link': url,
                    'title': 'Link {}'.format(videotype),
                    'type': '1080p',
                    'resolve': False,
                    'subtitle': subtitle,
                    'originUrl': movieurl
                })

            if videos[videotype] and not isinstance(videos[videotype],
                                                    string_types):
                for key in videos[videotype]:
                    try:
                        link = videos[videotype][key]
                    except:
                        link = key

                    print(link)

                    match = re.search(r'(&title=.*)&?', link['src'])
                    if match:
                        link['src'] = link['src'].replace(match.group(1), '')
                    movie['links'].append({
                        'link':
                        link['src'],
                        'title':
                        'Link %s' % py2_encode(link['quality']),
                        'type':
                        py2_encode(link['type']),
                        'resolve':
                        False,
                        'subtitle':
                        subtitle,
                        'originUrl':
                        movieurl
                    })

        helper.log(movie)
        return movie
예제 #21
0
    def get(self, response, page):

        channel = {'page': page, 'page_patten': None, 'movies': []}

        soup = BeautifulSoup(response, "html.parser")
        # get total page
        last_page = soup.select_one('div.wp-pagenavi > a.last')
        helper.log("*********************** Get pages ")
        if last_page is not None:
            page = re.search('/(\d+)/$', last_page.get('href')).group(1)
            channel['page'] = int(page)

        movies = soup.select('ul.list-film > li > div.inner')
        if len(movies) > 0:
            for movie in movies:
                title = movie.select_one('div.name > a').find(
                    text=True, recursive=False).strip()
                type = ""
                realtitle = ""

                if movie.select_one('div.status') is not None:
                    type = movie.select_one('div.status').text.strip()
                if movie.select_one('div.name2') is not None:
                    realtitle = movie.select_one('div.name2').text.strip()
                if realtitle is not None:
                    label = "[%s] %s - %s" % (type, title, realtitle)
                else:
                    label = "[%s] %s" % (type, title)

                thumb = movie.select_one('a img.lazy').get('data-original')

                channel['movies'].append({
                    'id':
                    movie.select_one('div.name > a').get('href'),
                    'label':
                    py2_encode(label),
                    'title':
                    py2_encode(title),
                    'realtitle':
                    py2_encode(realtitle),
                    'thumb':
                    thumb,
                    'type':
                    py2_encode(type),
                })

        movies = soup.select('div.totalService > article.post')
        if len(movies) > 0:
            for movie in movies:
                title = movie.select_one('div.descService > h2 > a').find(
                    text=True, recursive=False).strip()
                type = ""
                realtitle = ""
                label = title
                intro = movie.select_one('div.descService > p').find(
                    text=True, recursive=False).strip()
                thumb = movie.select_one('div.img-item > a > img').get('src')

                channel['movies'].append({
                    'intro':
                    py2_encode(intro),
                    'id':
                    movie.select_one('div.img-item > a').get('href'),
                    'label':
                    py2_encode(label),
                    'title':
                    py2_encode(title),
                    'realtitle':
                    py2_encode(realtitle),
                    'thumb':
                    thumb,
                    'type':
                    py2_encode(type)
                })

        return channel