Example #1
0
def get_link(url, media, include_header=True):
    base_url = urlparse(media.get('originUrl'))
    base_url = base_url.scheme + '://' + base_url.netloc
    host_url = urlparse(url)

    r = Request()
    r.head(url)
    if include_header:
        return cors.get_link(r.get_request().history[0].headers['Location'],
                             media)

    return r.get_request().history[0].headers['Location'], host_url.netloc
Example #2
0
class Motphim:
    domain = "https://motphim.net"
    api = "https://api.motphim.net"

    def __init__(self):
        self.request = Request(session=True)
        # if helper.has_file_path('motphim.bin'):
        #     with open(helper.get_file_path('motphim.bin')) as f:
        #         self.request.set_session(pickle.load(f))

    def updateSession(self):
        with open(helper.get_file_path('motphim.bin'), 'wb') as f:
            pickle.dump(self.request.get_request_session(), f)

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

    def getChannel(self, channel, page=1):
        channel = channel.replace(self.domain, "")
        if page > 1:
            url = '%s%s/%d' % (self.domain, channel, page)
        else:
            url = '%s%s' % (self.domain, channel)

        response = self.request.get(url)
        return Channel().get(response)

    def getMovie(self, url):
        response = self.request.get("%s%s" % (self.domain, url))
        url = Movie().get_movie_link(response)
        response = self.request.get("%s%s" % (self.domain, url))
        # self.updateSession()
        return Movie().get(response)

    def getLink(self, movie):
        url = "%s%s" % (self.domain, movie['link'])
        response = self.request.get(url)
        print self.request.get_request().cookies
        # self.updateSession()
        return Movie().get_link(response, self.request, self.api, self.domain,
                                url)

    def search(self, text, page=1):
        url = "%s/tim-kiem/%s/" % (self.domain, urllib.quote_plus(text))
        response = self.request.get(url)
        return Channel().get(response)
Example #3
0
    def parse_link(self, url):
        r = re.search('getLinkSimple', url)
        if r:
            res = Request()
            res.get(url)
            url = res.get_request().url

        return url
Example #4
0
def get_stream(url, header):
    if 'fvs.io' in url:
        request = Request()
        request.head(url, headers=header)
        req = request.get_request()
        if req.history:
            return req.url + "|%s" % urlencode(header)
    return url
Example #5
0
    def parse_link(self, url):
        r = re.search('getLinkSimple', url)
        if r:
            res = Request()
            res.get(url)
            url = res.get_request().url

        return url
Example #6
0
def get_link(url, movie):
    base_url = urlparse(url)
    base_url = base_url.scheme + '://' + base_url.netloc
    request = Request()

    if 'embedplay' in url:
        return iframeembed.get_link(url, movie)

    if url.endswith('m3u8'):
        header = {
            'Origin': 'http://www.vtv16.com',
            'User-Agent': "Chrome/59.0.3071.115 Safari/537.36",
            'Referer': movie.get('originUrl')
        }
        return url + "|%s" % urlencode(header), base_url

    # method 1
    try:
        mid = re.search(r'\?id=(.*)', url).group(1)
        hosturl = '%s/getHost/%s' % (base_url, mid)
        response = Request().post(hosturl,
                                  headers={
                                      'origin': base_url,
                                      'referer': url
                                  })

        movie_url = base64.b64decode(response)

        header = {
            'Origin': 'http://www.vtv16.com',
            'User-Agent': "Chrome/59.0.3071.115 Safari/537.36",
            'Referer': movie.get('originUrl')
        }
        return movie_url + "|%s" % urlencode(header), base_url
    except:
        pass

    # method 2
    request.get(url)

    location = request.get_request().history[0].headers['Location']
    base_url = urlparse(location)
    base_url = base_url.scheme + '://' + base_url.netloc

    # https://vip4.movie3s.net/public/dist/index.html?id=0676953662683db3977a8d30e4084414
    mid = re.search(r'\?id=(.*)', location).group(1)

    return '%s/hls/%s/%s.playlist.m3u8' % (base_url, mid, mid), base_url

    # method 3
    medias = json.loads(request.post('%s/vl/%s' % (base_url, mid)))

    if '720p' in medias:
        return create_stream(medias['720p'], base_url)

    return url, base_url
Example #7
0
def get_link(url):
    req = Request()

    req.get(url, redirect=True)
    response = req.get_request()
    location = response.history[0].headers['Location']

    id = re.search('id=(.*)', location).group(1)
    base_url = urlparse(location)
    base_url = base_url.scheme + '://' + base_url.netloc

    return '%s/hls/%s/%s.playlist.m3u8' % (base_url, id, id)
Example #8
0
    def parse_link(self, url):
        r = re.search('getLinkSimple', url)
        if r:
            res = Request()
            res.get(url)
            url = res.get_request().url

        r = re.search('128.199.198.106/video\?url=(.*)', url)
        if r:
            url = urllib.unquote(r.group(1))

        return url
Example #9
0
    def parse_link(url):
        r = re.search('getLinkSimple', url)
        if r:
            res = Request()
            res.get(url)
            url = res.get_request().url

        r = re.search('128.199.198.106/video\?url=(.*)', url)
        if r:
            url = urllib.unquote(r.group(1))
        if 'error' in url.encode('utf-8'):
            return None

        return url
Example #10
0
def get_link(url):
    req = Request()

    req.get(url, redirect=True)
    response = req.get_request()
    location = response.history[0].headers['Location']
    id = re.search('id=(.*)', location).group(1)
    # POST http://sl2.animehay.tv/vl/{id}
    response = json.loads(
        req.post('http://sl2.animehay.tv/vl/%s' % id,
                 headers={'Referer': location}))
    if '720p' in response:
        create_playlist(response['720p'])

    return None
Example #11
0
def get_link(url, media):
    request = Request()
    base_url = urlparse(media.get('originUrl'))
    base_url = base_url.scheme + '://' + base_url.netloc
    header = {
        'Referer': url,
        'User-Agent': "Chrome/59.0.3071.115 Safari/537.36",
        'Origin': base_url
    }

    print "Apply iframeembed url %s" % url

    resp = request.get(url, headers=header)
    req = request.get_request()
    if req.history:
        r_url = req.url
        rurl = urlparse(r_url)
        rurl = rurl.scheme + '://' + rurl.netloc
        rid = re.search(r'id=(.*)', r_url).group(1)
        rurl = "{}/getLinkStreamMd5/{}".format(rurl, rid)
        sources = request.get(rurl, headers=header)
        sources = json.loads(sources)
        print 11111111111111111111111111
        print sources
    else:
        sources = re.search(r'sources\s?[=:]\s?(\[.*?\])', resp, re.DOTALL)
        if sources:
            sources = "".join([s for s in sources.group(1).splitlines() if s.strip("\r\n")])
            sources = re.sub(r'\s+', '', sources)
            sources = helper.convert_js_2_json(sources)
            print 2222222222222222222222222
        print sources

    if sources:
        if len(sources) > 1:
            listitems = []
            for i in sources:
                listitems.append("%s (%s)" % (i.get('label'), i.get('file')))
            index = xbmcgui.Dialog().select("Select stream", listitems)
            if index == -1:
                return None, None
            else:
                return sources[index].get('file') + "|%s" % urlencode(header), sources[index].get('label')
        else:
            return sources[0].get('file') + "|%s" % urlencode(header), sources[0].get('label')

    return None, None
Example #12
0
    def parse_link(url):
        r = re.search('getLinkSimple', url)
        if r:
            res = Request()
            res.get(url)
            url = res.get_request().url

        r = re.search('128.199.198.106/video\?url=(.*)', url)
        if r:
            url = urllib.unquote(r.group(1))
        if 'error' in url.encode('utf-8'):
            return None

        r = re.search(r'^/iframe.*?ref=(.*)', url)
        if r:
            base_url = r.group(1)
            base_url = urlparse(base_url)
            base_url = base_url.scheme + '://' + base_url.netloc
            url = base_url + url

        return url
Example #13
0
def get_link(url, media):
    request = Request()
    base_url = urlparse(media.get('originUrl'))
    base_url = base_url.scheme + '://' + base_url.netloc
    header = {
        'Referer': media.get('originUrl'),
        'User-Agent': "Chrome/59.0.3071.115 Safari/537.36",
        'Origin': base_url
    }

    resp = request.get(url, headers=header)
    req = request.get_request()
    if req.history:
        r_url = req.url
        rurl = urlparse(r_url)
        rurl = rurl.scheme + '://' + rurl.netloc
        rid = re.search(r'id=(.*)', r_url).group(1)
        rurl = "{}/getLinkStreamMd5/{}".format(rurl, rid)
        sources = request.get(rurl, headers=header)
        sources = json.loads(sources)
    else:
        sources = re.search(r'sources\s?[=:]\s?(\[.*?\])', resp)
        sources = json.loads(sources.group(1))

    if sources:
        if len(sources) > 1:
            listitems = []
            for i in sources:
                listitems.append("%s (%s)" % (i.get('label'), i.get('file')))
            index = xbmcgui.Dialog().select("Select stream", listitems)
            if index == -1:
                return None, None
            else:
                return sources[index].get('file') + "|%s" % urlencode(
                    header), sources[index].get('label')
        else:
            return sources[0].get(
                'file') + "|%s" % urlencode(header), sources[0].get('label')

    return None, None
Example #14
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
            })

            return movie

        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.*?)['|\"]\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('<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