Esempio n. 1
0
    def _get_sources(self):
        #You can get multiple sources from this
        soup = helpers.soupify(helpers.get(self.url))
        regex = r"data-video-link=\"//[^\"]*"
        url = 'https:' + re.search(regex, str(soup)).group().replace(
            'data-video-link="', '')

        soup = helpers.soupify(helpers.get(url))
        url = (soup.select('div > iframe')[0].get('src'))

        soup = helpers.soupify(helpers.get(url))
        url = re.search(r'https://vidstreaming\.io/download\?[^"]*',
                        str(soup)).group()

        soup = helpers.soupify(helpers.get(url))
        url = soup.select('div.dowload > a')[0].get('href')

        return [(
            'no_extractor',
            url,
        )]
Esempio n. 2
0
 def search(self, query):
     headers = {
     'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.46 Safari/537.36'
     }
     soup = helpers.soupify(helpers.get('https://twist.moe/', allow_redirects=True, headers=headers))
     if 'being redirected' in soup.text:
         cookie = get_cookie(soup)
         with requests_cache.disabled():
             headers['cookie'] = cookie
             # XXX: Can't use helpers.get here becuse that one is cached. Investigate
             r = requests.get('https://twist.moe/', headers=headers)
             soup = helpers.soupify(r)
     all_anime = soup.select_one('nav.series').select('li')
     animes = []
     for anime in all_anime:
         animes.append(SearchResult(
             title=anime.find('span').contents[0].strip(),
             url='https://twist.moe' + anime.find('a')['href'],
         ))
     animes = [ani[0] for ani in process.extract(query, animes)]
     return animes
Esempio n. 3
0
    def search(cls, query):
        soup = helpers.soupify(helpers.get("https://ryuanime.com/browse-anime", params={"search": query}))
        result_data = soup.select("li.list-inline-item:has(p.anime-name):has(a.ani-link)")

        search_results = [
            SearchResult(
                title=result.select("p.anime-name")[0].text,
                url='https://ryuanime.com' + result.select("a.ani-link")[0].get("href")
            )
            for result in result_data
        ]
        return search_results
Esempio n. 4
0
        def _get_sources(self):
            version = self.config['version']
            servers = self.config['servers']

            server_links = {
                'mp4upload':'https://www.mp4upload.com/embed-{}.html',
                'trollvid': 'https://trollvid.net/embed/{}',
                'mp4sh': 'https://mp4.sh/embed/{0}{1}',
                'vidstreaming':'https://vidstreaming.io/download?id={}'
            }

            soup = str(helpers.soupify(helpers.get(self.url)))
            x = re.search(r"xuath = '([^']*)", soup).group(1)
            episode_regex = r'var episode = (.*?});'
            api = json.loads(re.search(episode_regex,soup).group(1))
            slug = api['slug']
            sources = api['videos']
            vidstream = helpers.get(f'https://vid.xngine.com/api/episode/{slug}',referer = self.url).json()
            for a in vidstream:
                if a['host'] == 'vidstreaming' and 'id' in a and 'type' in a:
                    sources.append(a)

            for a in servers: #trying all supported servers in order using the correct language
                for b in sources:
                    if b['type'] == version:
                        if b['host'] == a:
                            if get_extractor(a) == None:
                                continue
                            else:
                                provider = a[:]
                            embed = server_links.get(provider,'{}').format(b['id'],x)
                            return [(provider, embed,)]
            
            logger.debug('No servers found in selected language. Trying all supported servers')

            for a in servers: #trying all supported servers in order
                for b in sources:
                    if b['host'] == a:
                        if get_extractor(a) == None:
                            continue
                        else:
                            provider = a[:]
                        embed = server_links.get(provider,'{}').format(b['id'],x)
                        return [(provider, embed,)]

            logger.debug('No supported servers found, trying mp4sh')
            if re.search(r'"trollvid","id":"([^"]*)', soup):
                token = re.search(r'"trollvid","id":"([^"]*)', soup).group(1)
                embed = server_links.get('mp4sh','{}').format(token,x)
                return [('mp4sh', embed,)]
            else:
                logger.debug('No servers found')
                return [('no_extractor', '',)]
Esempio n. 5
0
    def search(cls, query):
        # Due to how search works some titles cannot get found by the search.
        # For example the one piece movies only shows up while in the once piece tab.
        soup = helpers.soupify(
            helpers.get('https://animetake.tv/search', params={'key': query}))

        return [
            SearchResult(title=x.find('center').text.strip(),
                         url='https://animetake.tv{}'.format(x.a['href']),
                         meta_info={'version_key_dubbed': '(Dubbed)'})
            for x in soup.select('div.thumbnail')
        ]
Esempio n. 6
0
    def _scrape_episodes(self):
        soup = helpers.soupify(helpers.get(self.url))
        eps = soup.select('a.episode_well_link')
        # Sometimes the episodes are listed in reverse (One Piece)
        # Will reverse movies, but shouldn't matter.
        reverse = "Episode 1" not in eps[0].text
        eps = ['https://animetake.tv{}'.format(x['href']) for x in eps]

        if reverse:
            eps.reverse()

        return eps
Esempio n. 7
0
 def search_filler_episodes(query, page):
     url = 'https://animefillerlist.com/search/node/'
     search_results = helpers.soupify(helpers.get(
         url + query, params={'page': page})).select('h3.title > a')
     urls = [a.get('href') for a in search_results if a.get(
         'href').split('/')[-2] == 'shows']
     search_results = [
         [
             search_results[a].text]
         for a in range(len(search_results)) if search_results[a].get('href').split('/')[-2] == 'shows'
     ]
     return search_results, urls
Esempio n. 8
0
    def search(cls, query):
        search_results = helpers.soupify(
            helpers.get("https://animekisa.tv/search", params={"q": query}))
        search_results = search_results.select('div.similarbox > a.an')
        search_results = [
            SearchResult(title=i.select(
                'div > div > div > div > div.similardd')[0].text,
                         url='https://www.animekisa.tv' + i.get('href'))
            for i in search_results if i.get('href') != '/'
        ]

        return search_results
Esempio n. 9
0
 def search(cls, query):
     # Only uses the first page of search results, but it's sufficent.
     search_results = helpers.soupify(
         helpers.get(cls.url, params={'keyword': query})).select('a.name')
     return [
         SearchResult(title=i.text,
                      url=i.get('href'),
                      meta_info={
                          'version_key_dubbed': '(Dub)',
                          'version_key_subbed': ''
                      }) for i in search_results
     ]
Esempio n. 10
0
 def search(cls, query):
     soup = helpers.soupify(
         helpers.post('https://vostfree.com',
                      data={
                          'do': 'search',
                          'subaction': 'search',
                          'story': query
                      }))
     return [
         SearchResult(title=re.sub('\s+?FRENCH(\s+)?$', '', x.text.strip()),
                      url=x['href']) for x in soup.select('div.title > a')
     ]
Esempio n. 11
0
    def search(cls, query):
        search_results = helpers.soupify(
            helpers.get(cls._search_url, params={'keyword': query}))
        search_results = search_results.select('ul.items > li > p > a')

        search_results = [
            SearchResult(title=i.get('title'),
                         url='https://gogoanime.io' + i.get('href'),
                         meta_info={'version_key_dubbed': '(Dub)'})
            for i in search_results
        ]
        return search_results
Esempio n. 12
0
    def _get_sources(self):
        server = self.config['server']

        soup = helpers.soupify(helpers.get(self.url))

        regex = r'var json = ([^;]*)'
        sources = json.loads(re.search(
            regex, str(soup)).group(1))  #Lots of sources can be found here

        for a in sources:  #Testing sources with selected language and provider
            if a['type'] == self.config['version']:
                if a['host'] == self.config['server']:
                    if get_extractor(a['host']) == None:
                        server = 'no_extractor'
                    else:
                        server = (a['host'])

                    embed = re.search(r"src=['|\"]([^\'|^\"]*)",
                                      str(a['player']), re.IGNORECASE).group(1)
                    return [(
                        server,
                        embed,
                    )]

        logger.debug(
            'Preferred server %s not found. Trying all supported servers in selected language.',
            server)

        for a in sources:  #Testing sources with selected language
            if a['type'] == self.config['version']:
                if get_extractor(a['host']) == None: server = 'no_extractor'
                else: server = (a['host'])

                embed = re.search(r"src=['|\"]([^\'|^\"]*)", str(a['player']),
                                  re.IGNORECASE).group(1)
                return [(
                    server,
                    embed,
                )]

        logger.debug('No %s servers found, trying all servers',
                     self.config['version'])

        if get_extractor(sources[0]['host']) == None: server = 'no_extractor'
        else: server = (sources[0]['host'])

        embed = re.search(r"src=['|\"]([^\'|^\"]*)", str(sources[0]['player']),
                          re.IGNORECASE).group(1)
        return [(
            server,
            embed,
        )]
Esempio n. 13
0
    def search(cls, query):
        response = helpers.get('https://animebinge.net/search', params={'term': query})
        soup = helpers.soupify(response)
        results = soup.select('a#epilink')

        search_results = [
            SearchResult(
                title=x.text,
                url=x['href']
            )
            for x in results
        ]
        return search_results
Esempio n. 14
0
    def _scrape_episodes(self):
        soup = helpers.soupify(helpers.get(self.url))
        ret = [
            str(a['href'])
            for a in soup.find_all('a', {'class': 'list-group-item'})
        ]
        if ret == []:
            err = 'No Episodes Found in url "{}"'.format(self.url)
            args = [self.url]
            raise NotFoundError(err, *args)

        # Could be reversed
        return ret
Esempio n. 15
0
    def _get_sources(self):
        soup = helpers.soupify(helpers.get(self.url))
        iframes = soup.select('iframe')
        logger.debug('Iframes: {}'.format(iframes))
        for i in iframes:
            # Simple check in case there's advertising iframes.
            if 'streaming.php' in i.get('src'):
                return [(
                    'vidstream',
                    i.get('src'),
                )]

        return ''
Esempio n. 16
0
 def _get_sources(self):
     server = self.config.get("server", "trollvid")
     soup = helpers.soupify(helpers.get(self.url))
     hosts = json.loads(soup.find("div", {"class":"spatry"}).previous_sibling.previous_sibling.text[21:-2])["videos"]
     type = hosts[0]["type"]
     host = list(filter(lambda video: video["host"] == server and video["type"] == type, hosts))[0]
     name = host["host"]
     _id = host["id"]
     if name == "trollvid":
         link = "https://trollvid.net/embed/" + _id
     elif name == "mp4upload":
         link = f"https://mp4upload.com/embed-{_id}.html"
     return [(name, link)]
Esempio n. 17
0
    def search(cls, query):
        results = helpers.get("https://www4.ryuanime.com/search",
                              params={
                                  "term": query
                              }).text
        soup = helpers.soupify(results)
        result_data = soup.find("ul", {"class": "list-inline"}).find_all("a")

        search_results = [
            SearchResult(title=result.text, url=result.get("href"))
            for result in result_data
        ]
        return search_results
Esempio n. 18
0
 def search(cls, query):
     results = helpers.get(f"http://justdubs.org/search/node/{query}").text
     soup = helpers.soupify(results)
     results_data = soup.select("li.search-result a[href*='http://justdubs.org/watch-']")
     logger.debug(results_data)
     search_results = [
         SearchResult(
             title=result.text,
             url=result.get("href")
         )
         for result in results_data
     ]
     return search_results
Esempio n. 19
0
    def search(cls, query):
        base_url = 'https://www.anitube.site'
        html = helpers.soupify(helpers.get(base_url, params={'s': query}))
        results = html.select('div.aniItem > a')

        return [
            SearchResult(title=x['title'].split('Temporada')[0].split(
                '– Todos')[0].split('Todos os')[0],
                         url=x['href'],
                         meta_info={'version_key_dubbed': '(Dublado)'})
            for x in html.select('div.aniItem > a')
        ]
        return results
Esempio n. 20
0
    def search(cls, query):
        search_url = "http://putlockers.fm/search-movies/{}.html".format(
            quote_plus(query))
        soup = helpers.soupify(helpers.get(search_url))

        search_results = [
            SearchResult(title=x.find("img").get("alt"),
                         url=x.get("href"),
                         meta_info={'version_key_dubbed': '(dub)'})
            for x in soup.select("div.item > a")
        ]

        return search_results
Esempio n. 21
0
    def _scrape_episodes(self):
        version = self.config.get("version", "subbed")
        soup = helpers.soupify(helpers.get(self.url))
        ep_list = [
            x for x in soup.select("div.col-sm-6")
            if x.find("h5").text == version.title()
        ][0].find_all("a")
        episodes = [x.get("href") for x in ep_list]

        if len(episodes) == 0:
            logger.warning("No episodes found")

        return episodes[::-1]
Esempio n. 22
0
 def search(cls, query):
     search_results = helpers.soupify(
         helpers.get(cls.url, params={'q': query}))
     regex = r'\[{[\W\w]*?}]'
     search_results = json.loads(
         re.search(regex, str(search_results)).group()) if re.search(
             regex, str(search_results)) else ''
     search_results = [
         SearchResult(title=a['name'],
                      url=f'https://kickassanime.rs{a["slug"]}')
         for a in search_results
     ]
     return (search_results)
Esempio n. 23
0
 def search(cls, query):
     soup = helpers.soupify(
         helpers.get('https://app.darkanime.stream/api/v1/animes',
                     params={
                         'term': query
                     }).json()['animesHtml'])
     soup = soup.find_all('a', href=True)
     return [
         SearchResult(
             title=x.find('h3').text.strip(),
             url='https://app.darkanime.stream' + x['href'],
         ) for x in soup
     ]
Esempio n. 24
0
    def search(cls, query):
        soup = helpers.soupify(
            helpers.post("https://genoanime.com/data/searchdata.php",
                         data={"anime": query}))

        search_results = [
            SearchResult(title=x.text,
                         url=x.get("href").replace("./",
                                                   "https://genoanime.com/"))
            for x in soup.select("h5 > a[href]")
        ]

        return search_results
Esempio n. 25
0
 def _scrape_episodes(self):
     version = self.config.get("version", "subbed")
     soup = helpers.soupify(helpers.get(self.url))
     subbed = []
     dubbed = []
     _all = soup.find_all("div", {"class":"episode-wrap"})
     for i in _all:
         ep_type = i.find("div", {"class":re.compile("ep-type type-.* dscd")}).text
         if ep_type == 'Sub':
             subbed.append(i.find("a").get("data-src"))
         elif ep_type == 'Dub':
             dubbed.append(i.find("a").get("href"))
     return eval(version)
Esempio n. 26
0
    def search(cls, query):
        soup = helpers.soupify(
            helpers.get('https://www.egyanime.com/a.php',
                        params={
                            'term': query
                        }).text)

        search_results = [
            SearchResult(title=i.text,
                         url="https://www.egyanime.com/" + i['href'])
            for i in soup.find_all('a', href=True)
        ]
        return search_results
Esempio n. 27
0
    def _scrape_episodes(self):
        # This is retarded, you need to replace the url, otherwise it will go to the kissanime site because the links are similar
        _referer = self.url.replace("_anime", "kissanime")
        _id = helpers.soupify(
            helpers.get(_referer)).select("li.addto-later")[0].get("data-id")

        #data = self.url.split(",")
        #_id = data[1]
        #_referer = data[0].replace("_anime", "kissanime")
        for i in range(1, 100):
            d = helpers.get("https://kissanimefree.xyz/load-list-episode/",
                            params={
                                "pstart": i,
                                "id": _id,
                                "ide": ""
                            })
            if not d.text:  # MOVIES
                maxEp = 1
                break
            maxEp = int(helpers.soupify(d).select("li")[0].text)
            if not maxEp == i * 100:
                break
        return [f"{i},{_id},{_referer}" for i in range(1, maxEp + 1)]
Esempio n. 28
0
 def search(cls, query):
     search_results = helpers.soupify(helpers.get(cls.url+'/search.html',params={'keyword': query})).select('a.videoHname')
     
     search_results = [
         SearchResult(
             title=i.get('title'),
             url=cls.url+i.get('href'),
             meta_info = {
                 'version_key_dubbed':'(Dub)',
                 }
             )
         for i in search_results
     ]
     return search_results
Esempio n. 29
0
    def search(cls, query):
        soup = helpers.soupify(
            helpers.get("https://animesuge.io/ajax/anime/search",
                        params={
                            "keyword": query
                        }).json()['html'])

        search_results = [
            SearchResult(title=x.find("div").text,
                         url="https://animesuge.io" + x.get('href'))
            for x in soup.select("a:not(.more)")
        ]

        return search_results
Esempio n. 30
0
 def search(cls, query):
     search_results = helpers.soupify(helpers.get(cls.url, params={'s': query})).select('h3.post-title > a')
     # Removes the unneded metadata from the title
     # Used by MAL matcher
     clean_title_regex = r'\(.*?\)'
     return [
         SearchResult(
             title=i.text,
             url=i.get('href'),
             meta_info={
                 'title_cleaned': re.sub(clean_title_regex, "", i.text).strip()
             })
         for i in search_results
     ]