Example #1
0
class Fcine:
    domain = "https://fcine.net"
    token = None
    member_id = None

    def __init__(self):
        self.request = Request(header={
            'User-Agent': 'Mozilla/5.0',
            'origin': 'https://fcine.net',
            'referer': 'https://fcine.net/login/',
        }, session=True)


    def get_token(self, response=None):
        if not response:
            response = self.request.get('%s/page/help/' % self.domain)

        self.token = re.search('csrfKey: "(.*)",', response).group(1)
        self.member_id = re.search('memberID: (\d+)', response).group(1)

        return self.token, self.member_id

    def login(self, username, password, header):
        params = {
            'login__standard_submitted': 1,
            'csrfKey': self.token,
            'auth': username,
            'password': password,
            'remember_me': 1,
            'remember_me_checkbox': 1
        }
        return self.request.post('%s/login/' % self.domain, params, headers=header)

    def getCategory(self):
        response = self.request.get(self.domain)
        return Category().get(response)

    def getChannel(self, channel, page=1):
        url = '%s?alphabet=all&page=%d' % (channel, page)
        response = self.request.get(url)
        return Channel().get(response, page)

    def getMovie(self, id):
        self.get_token()
        response = self.login(
            helper.getSetting('fcine.username'),
            helper.getSetting('fcine.password'),
            {'referer': id})
        return Movie().get(response)

    def getLink(self, url):
        response = self.request.get(url)
        return Movie().get_link(response)

    def search(self, text):
        url = "%s/findContent/" % (self.domain)
        params = {
            'term': text
        }
        response = self.request.post(url, params)
        return Channel().get(response, 1)
Example #2
0
class Hdvietnam:
    domain = "http://www.hdvietnam.com"

    def __init__(self):
        if not helper.getSetting('hdvietnam.username'):
            self.username = '******'
            self.password = '******'
        else:
            self.username = helper.getSetting('hdvietnam.username')
            self.password = helper.getSetting('hdvietnam.password')

        self.request = Request(session=True)

    def login(self, redirect=None):
        params = {
            'login': self.username,
            'password': self.password,
            'register': 0,
            'cookie_check': 1,
            '_xfToken': '',
            'redirect': redirect
        }
        self.request.get('%s/login' % self.domain)
        response = self.request.post('%s/login/login' % self.domain, params)
        return response

    def thank(self, id, token, postLink):
        params = {
            '_xfRequestUri': id,
            '_xfToken': token,
            '_xfNoRedirect': 0,
            '_xfResponseType': 'json'
        }
        map(lambda v: self.request.post('%s/%s' % (self.domain, v), params),
            postLink)

    def getCategory(self):
        return Category().get(), None

    def getChannel(self, channel, page=1):
        channel = channel.replace(self.domain, "")
        if page > 1:
            url = '%s%spage-%d' % (self.domain, channel, page)
        else:
            url = '%s%s' % (self.domain, channel)
        response = Request().get(url)
        return Channel().get(response, page=page, domain=self.domain)

    def getMovie(self, movie):
        url = '%s/%s' % (self.domain, movie)
        response = self.login(redirect=url)
        parser = Movie()
        result, postLinks = parser.is_block(response)
        if result is True:
            token = re.findall(r'name="_xfToken"\svalue="(.*?)"\s', response)
            self.thank(movie, token[0], postLinks)
            response = self.request.get(url)

        result = parser.get(response, url)
        return result

    def search(self, text):
        text = urllib.quote_plus(text)
        params = {
            'keywords': text,
            'nodes[]': [337, 116, 150, 33, 57, 123],
            'type': 'post',
            'order': 'date',
            'child_nodes': 1
        }

        url = "%s/search/search" % self.domain
        response = Request().post(url, params=params)
        # print('77777777777777777777777777777777777777')
        # print(helper.write_file('test.html', response.encode('utf-8')))
        return Channel().get_search(response)
Example #3
0
class Fcine:
    domain = "https://fcine.net"
    token = None
    member_id = None

    def __init__(self):
        if not helper.getSetting('fcine.username'):
            # helper.message('Please login to fcine.net', 'Login Required')
            self.username = '******'
            self.password = '******'
        else:
            self.username = helper.getSetting('fcine.username'),
            self.password = helper.getSetting('fcine.password'),

        self.request = Request(header={
            'User-Agent': 'Mozilla/5.0',
            'origin': 'https://fcine.net',
            'referer': 'https://fcine.net/login/',
        },
                               session=True)

        if helper.has_file_path(
                'fcine.bin'
        ) and helper.get_last_modified_time_file('fcine.bin') + 43200 < int(
                time.time()):
            helper.remove_file('fcine.bin')

        if helper.has_file_path('fcine.bin'):
            self.request.set_session(
                pickle.loads(helper.read_file('fcine.bin', True)))
        else:
            self.login()

    def updateSession(self):
        helper.write_file('fcine.bin',
                          pickle.dumps(self.request.get_request_session()),
                          True)

    def get_token(self, response=None):
        if not response:
            response = self.request.get('%s/page/help/' % self.domain)

        self.token = re.search('csrfKey: "(.*)",', response).group(1)
        self.member_id = re.search('memberID: (\d+)', response).group(1)

        return self.token, self.member_id

    def login(self):
        self.get_token()

        params = {
            'login__standard_submitted': 1,
            'csrfKey': self.token,
            'auth': self.username,
            'password': self.password,
            'remember_me': 1,
            'remember_me_checkbox': 1
        }
        response = self.request.post('%s/login/' % self.domain, params)
        self.updateSession()
        return response

    def getCategory(self):
        response = self.request.get(self.domain)
        movies = Channel().get(response, 1)
        movies['page'] = 1
        return Category().get(response), movies

    def getChannel(self, channel, page=1):
        url = '%s?alphabet=all&page=%d' % (channel, page)
        response = self.request.get(url)
        return Channel().get(response, page)

    def getMovie(self, url):
        # self.get_token()
        # response = self.login(
        #     self.username,
        #     self.password,
        #     {'referer': id})
        return Movie().get(self.request.get(url))

    def getLink(self, url):
        response = self.request.get(url)
        return Movie().get_link(response)

    def search(self, text):
        url = "%s/findContent/" % self.domain
        params = {'term': text}
        response = self.request.post(url, params)
        return Channel().get(response, 1)
Example #4
0
class Hdvietnam:
    domain = "http://www.hdvietnam.com"

    def __init__(self):
        if not helper.getSetting('hdvietnam.username'):
            self.username = '******'
            self.password = '******'
        else:
            self.username = helper.getSetting('hdvietnam.username')
            self.password = helper.getSetting('hdvietnam.password')

        self.request = Request(header={
            'User-Agent': 'Mozilla/5.0',
            'Origin': self.domain,
            'Referer': self.domain
        },
                               session=True)

        if helper.has_file_path(
                'hdvietnam.bin'
        ) and helper.get_last_modified_time_file('hdvietnam.bin') + 3600 < int(
                time.time()):
            helper.remove_file('hdvietnam.bin')

        if helper.has_file_path('hdvietnam.bin'):
            self.request.set_session(
                pickle.loads(helper.read_file('hdvietnam.bin', True)))
        else:
            self.login()

    def login(self, redirect='/'):
        params = {
            'login': self.username,
            'register': 0,
            'password': self.password,
            'remember': 1,
            'cookie_check': 1,
            '_xfToken': '',
            'redirect': redirect
        }
        response = self.request.post('%s/login/login' % self.domain, params)
        helper.write_file('hdvietnam.bin',
                          pickle.dumps(self.request.get_request_session()),
                          True)
        return response

    def thank(self, mid, token, postLink):
        params = {
            '_xfRequestUri': '/%s' % mid,
            '_xfToken': token,
            '_xfNoRedirect': 1,
            '_xfResponseType': 'json'
        }

        for v in postLink:
            url = '{}/{}'.format(self.domain, v)
            url = url.replace('likes', 'like')
            self.request.post(url, params=params)

    def getCategory(self):
        return Category().get(), None

    def getChannel(self, channel, page=1):
        channel = channel.replace(self.domain, "")
        if page > 1:
            url = '%s%spage-%d' % (self.domain, channel, page)
        else:
            url = '%s%s' % (self.domain, channel)
        response = Request().get(url)
        return Channel().get(response, page=page, domain=self.domain)

    def getMovie(self, movie):
        url = '%s/%s' % (self.domain, movie)
        self.login(url)
        response = self.request.get(url)
        parser = Movie()
        result, postLinks = parser.is_block(response)
        if result is True:
            token = re.findall(r'name="_xfToken"\svalue="(.*?)"\s', response)
            self.thank(movie, token[0], postLinks)
            response = self.request.get(url)
            parser.is_block(response)

        result = parser.get(response, url)
        return result

    def search(self, text):
        text = quote_plus(text)
        params = {
            'keywords': text,
            'nodes[]': [337, 116, 150, 33, 57, 123],
            'type': 'post',
            'order': 'date',
            'child_nodes': 1
        }

        url = "%s/search/search" % self.domain
        response = Request().post(url, params=params)
        return Channel().get_search(response)
Example #5
0
    def get_link(self, response, originUrl):
        movie = {
            'group': {},
            'episode': [],
            'links': [],
        }

        sources = re.findall(r"<iframe.*?src=['|\"](http.*?)['|\"]\s?",
                             response)
        if len(sources) > 0:
            for source in sources:
                if source in 'http://lb.animehay.tv/play/' and len(
                        source) == len('http://lb.animehay.tv/play/'):
                    continue

                movie['links'].append({
                    'link': source,
                    'title': 'Link direct',
                    'type': 'mp4',
                    'resolve': False
                })

        sources = re.search(r'player.setup.*"sources":\s?(\[.*?\])', response,
                            re.DOTALL)

        if sources:
            sources = json.loads(sources.group(1))
            if sources and len(sources) > 0:
                for source in sources:
                    movie['links'].append({
                        'link': source['file'],
                        'title': 'Link %s' % source['label'],
                        'type': source['type'],
                        'resolve': False
                    })

        sources = re.search(
            r"<iframe.*?src=['|\"](.*animehay.tv/play/{5,}.*?)['|\"]\s?",
            response)
        if sources:
            res = Request()
            if 'key=' in sources.group(1):
                vkey = re.search('key=(.*)', sources.group(1)).group(1)
                # http://vl.animehay.tv/initPlayer/f555b31844becd2e378d4978457014521af38ab8e66834ade1062b44827ef642
                resp = res.post('http://vl.animehay.tv/initPlayer/%s' % vkey)
                resp = json.loads(resp)
                if 'availablePlayers' not in resp:
                    return movie

                if 'p2pdrive' in resp['availablePlayers']:
                    data = json.loads(
                        res.post('http://vl.animehay.tv/getDataPlayer/%s/%s' %
                                 ('p2pdrive', vkey)))
                    source = data['data']

                    if source:
                        movie['links'].append({
                            'link': source,
                            'title': 'Link p2pdrive',
                            'type': 'hls',
                            'resolve': False
                        })

                if 'gphoto' in resp['availablePlayers']:
                    data = json.loads(
                        res.post('http://vl.animehay.tv/getDataPlayer/%s/%s' %
                                 ('gphoto', vkey)))
                    data = res.get(data['data'])
                    sources = json.loads(
                        re.search(r"var\s?sources\s?=\s?(\[.*?\])",
                                  data).group(1))
                    if sources and len(sources) > 0:
                        for source in sources:
                            movie['links'].append({
                                'link':
                                source['file'],
                                'title':
                                'Link %s' % source['label'],
                                'type':
                                'mp4',
                                'resolve':
                                False
                            })

                if 'fembed' in resp['availablePlayers']:
                    data = json.loads(
                        res.post('http://vl.animehay.tv/getDataPlayer/%s/%s' %
                                 ('fembed', vkey)))
                    data = res.get(data['data'])
                    source = re.search(r"<iframe.*?src=['|\"](.*?)['|\"]\s?",
                                       data).group(1)
                    if source:
                        movie['links'].append({
                            'link': source,
                            'title': 'Link fembed',
                            'type': 'mp4',
                            'resolve': False
                        })

                if 'okru' in resp['availablePlayers']:
                    data = json.loads(
                        res.post('http://vl.animehay.tv/getDataPlayer/%s/%s' %
                                 ('okru', vkey)))
                    data = res.get(data['data'])
                    source = re.search(r"<iframe.*?src=['|\"](.*?)['|\"]\s?",
                                       data).group(1)
                    if source:
                        movie['links'].append({
                            'link': source,
                            'title': 'Link okru',
                            'type': 'mp4',
                            'resolve': False
                        })

                if 'openload' in resp['availablePlayers']:
                    data = json.loads(
                        res.post('http://vl.animehay.tv/getDataPlayer/%s/%s' %
                                 ('openload', vkey)))
                    data = res.get(data['data'])
                    source = re.search(r"<iframe.*?src=['|\"](.*?)['|\"]\s?",
                                       data).group(1)
                    if source:
                        movie['links'].append({
                            'link': source,
                            'title': 'Link openload',
                            'type': 'mp4',
                            'resolve': False
                        })
                return movie
            else:
                res.get(sources.group(1))
                link = res.get_request().url
                vkey = re.search('id=(.*)', link)
                if vkey:
                    vkey = vkey.group(1)
                    base_url = urlparse(link)
                    base_url = base_url.scheme + '://' + base_url.netloc
                    urlVideo = "{}/hls/{}/{}.playlist.m3u8".format(
                        base_url, vkey, vkey)

                    movie['links'].append({
                        'link': urlVideo,
                        'title': 'Link p2pdrive',
                        'type': 'hls',
                        'resolve': False,
                        'originUrl': originUrl
                    })

        sources = re.search(r'player.setup\((.*?)\);', response, re.DOTALL)
        if sources:
            source = sources.group(1)
            source = re.search(r'"file":\s"(.*?)",', source)
            movie['links'].append({
                'link': source.group(1),
                'title': 'Link direct',
                'type': 'mp4',
                'resolve': False
            })

        sources = re.search(r"var\s?source\s?=\s?(\[.*?\]);", response)
        if sources:
            sources = helper.convert_js_2_json(sources.group(1))
            for source in sources:
                movie['links'].append({
                    'link':
                    source.get('file'),
                    'title':
                    'Link %s' % source.get('label').encode('utf-8'),
                    'type':
                    source.get('type').encode('utf-8'),
                    'originUrl':
                    originUrl,
                    'resolve':
                    False
                })

        sources = re.search(r'var\s?source\s?=\s?"(\[.*?\])";', response)
        if sources:
            sources = helper.convert_js_2_json(
                sources.group(1).replace('\\', ''))
            for source in sources:
                movie['links'].append({
                    'link':
                    source.get('file'),
                    'title':
                    'Link %s' % source.get('label').encode('utf-8'),
                    'type':
                    source.get('type').encode('utf-8'),
                    'originUrl':
                    originUrl,
                    'resolve':
                    False
                })
        # sources = re.search('<script rel="nofollow" src="(.*)" async>', response)
        # if sources:
        #     response = Request().get(sources.group(1))
        #     if 'links:' in response:
        #         sources = json.loads(re.search('links: (.*?),', response).group(1))
        #         for key, value in sources.items():
        #             if value:
        #                 label = key[1:].encode('utf-8')
        #                 movie['links'].append({
        #                     'link': value,
        #                     'title': 'Link %s' % label,
        #                     'type': label,
        #                     'resolve': True
        #                 })
        #
        #         movie['links'] = sorted(movie['links'], key=lambda elem: int(elem['type']), reverse=True)

        return movie
Example #6
0
class FShareVN:
    def __init__(self, url, username="", password=""):
        self.url = url
        self.username = username
        self.password = password
        self.request = Request(session=True)

    @staticmethod
    def get_info(url=None, content=None):
        if url:
            content = Request().get(url)

        name = False
        size = '0'
        soup = BeautifulSoup(content, "html.parser")
        title = soup.select_one('title').text.encode('utf-8')

        if 'Not Found' in title or '503' in title:
            raise Exception('Fshare', 'link die')

        info = soup.select_one('div.info')
        if info:
            name = info.select_one('div.name').get('title').encode('utf-8')
            print(name)

            size = info.select_one('div.size').get_text().strip()\
                .replace(" ", "")\
                .replace("\n", "")\
                .replace("save", "").encode('utf-8')

        return name, size

    def login(self, token):
        url = 'https://www.fshare.vn/site/login'
        r = self.request.post(
            url, {
                '_csrf-app': token,
                'LoginForm[email]': self.username,
                'LoginForm[password]': self.password,
                'LoginForm[rememberMe]': 1
            })

        return r

    def get_token(self):
        r = self.request.get('https://www.fshare.vn/')
        if not re.search(r'id="form-signup"', r):
            print('Fashare: already login')
            return self.extract_token(r)
        else:
            print('Fashare: try to login')
            r = self.login(self.extract_token(r))
            return self.extract_token(r)

    def extract_token(self, response):
        return re.search(r'name="csrf-token" content="(.*)">',
                         response).group(1)

    def get_link(self):
        if re.search(r'/folder/([^\?]+)', self.url):
            code = self.handleFolder(self.url)
            if not code:
                return None
        else:
            code = re.search(r'/file/([^\?]+)', self.url).group(1)

        token = self.get_token()

        r = self.request.post('https://www.fshare.vn/download/get', {
            '_csrf-app': token,
            'linkcode': code,
            'withFcode5': 0,
            'fcode': ''
        })

        item = json.loads(r)
        # self.logout()
        if 'errors' in item:
            helper.message("Fshare error: %s" % item['errors']['linkcode'][0])
            raise Exception('Fshare', 'error')
            return
        # should block ui to wait until able retrieve a link
        return item[u'url']

    def logout(self):
        self.request.get('https://www.fshare.vn/site/logout')

    def is_folder(self, url):
        return not re.search(r'/folder/([^\?]+)', url) and False or True

    def handleFolder(self, url=None, code=None):
        if not code:
            code = re.search(r'/folder/([^\?]+)', url).group(1)

        r = self.request.get(
            'https://www.fshare.vn/api/v3/files/folder?linkcode=%s&sort=type,name'
            % code)
        r = json.loads(r)

        listitems = []
        if 'items' in r and len(r['items']) > 0:
            listitems = [
                "[%s] %s" % (i['type'] == 1 and helper.humanbytes(i["size"])
                             or 'Folder', i["name"]) for i in r['items']
            ]
        else:
            raise Exception('Fshare', 'link die')

        index = helper.create_select_dialog(listitems)
        if index == -1: return None
        if r['items'][index]['type'] == 1:
            return r['items'][index]['linkcode']
        else:
            return self.handleFolder(code=r['items'][index]['linkcode'])