Spaces:
Running
Running
import cloudscraper | |
from curl_cffi import requests | |
from bs4 import BeautifulSoup | |
from urllib.parse import urlparse | |
from others import * | |
scraper = cloudscraper.create_scraper() | |
# ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
def info_nekopoi(soup): | |
# Get title | |
title = soup.find('title').text | |
# Get thumbnail_url | |
thumbnail_url = soup.select_one('div.imgdesc img')['src'] | |
# Get producers | |
producers_element = soup.find_all('li') | |
for li in producers_element: | |
if li.find('b', string='Produser'): | |
producers = li.text.split(': ')[1] | |
# Get genre | |
genres = [] | |
genre_elements = soup.find_all('li') | |
for li in genre_elements: | |
if li.find('b', string='Genres'): | |
genres.extend([a.text for a in li.find_all('a', rel='tag')]) | |
genre = ', '.join(genres) | |
# Get sinopsis | |
sinopsis_element = soup.select_one('span.desc') | |
sinopsis = sinopsis_element.find('p').text | |
return title, thumbnail_url, producers, genre, sinopsis | |
# ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
def episode_nekopoi(resolusi, soup): | |
judul = soup.find('title').text.replace('[NEW Release] ','') | |
if 'Episode' in judul: | |
episode = judul.split('Episode')[1].split()[0] | |
if len(episode) == 1: | |
episode = '0' + episode | |
else: | |
episode = '' | |
if "PV" in judul: | |
episode = episode + " PV" | |
link_info = soup.find('div', class_='name', string=lambda t: t and f'[{resolusi}p]' in t) | |
if link_info: | |
link_eps = link_info.find_next('a', string=lambda x: x and ('Mirror [ouo]' in x or 'MC [ouo]' in x or 'Mirror[ouo]' in x or 'MC[ouo]' in x))['href'] | |
else: | |
link_eps = '' | |
return judul, episode, link_eps | |
# ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
def get_genre(): | |
url = 'https://nekopoi.care/genre-list/' | |
genres = [] | |
response = scraper.get(url) | |
html = response.text | |
soup = BeautifulSoup(html, 'html.parser') | |
links = soup.find_all('a') | |
for link in links: | |
href = link.get('href') | |
if href and 'https://nekopoi.care/genres/' in href: | |
genre = href.split('/')[-2].replace('-',' ').title() | |
genres.append(genre) | |
return genres | |
# ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
def info_series(resolution, series): | |
episode = [] | |
for url in series: | |
response = scraper.get(url) | |
html = response.text | |
soup = BeautifulSoup(html, 'html.parser') | |
links = soup.find_all('a') | |
episode_links = [] | |
for link in links: | |
href = link.get('href') | |
if href and 'https://nekopoi.care/' in href and ('episode' in href and 'subtitle-indonesia' in href) and 'pv' not in href: | |
if link.parent.get('class') != ['latestnow']: | |
episode_links.append(href) | |
episode.append(episode_links) | |
info = "" | |
for i, url in enumerate(series): | |
response = scraper.get(url) | |
soup = BeautifulSoup(response.text, 'html.parser') | |
# Get the variables | |
title, thumbnail, producers, genre, sinopsis = info_nekopoi(soup) | |
info += f"Judul : {title.replace(' – NekoPoi','')}\n" | |
info += f"Thumbnail : {thumbnail}\n" | |
info += f"Producer : {producers}\n" | |
info += f"Genre : {genre}\n" | |
info += f"Sinopsis : \n" | |
info += f"{sinopsis}\n" | |
info += "==================================================================================\n" | |
for url in episode[i]: | |
response = scraper.get(url) | |
soup = BeautifulSoup(response.text, 'html.parser') | |
# Get the variables | |
judul, eps, link = episode_nekopoi(resolution, soup) | |
if link != '': | |
link = ouo_bypass(link) | |
link = mirrored(link) | |
info += f"Link Episode {eps} : {link}\n" | |
info += "==================================================================================\n" | |
return info | |
# ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
def judul(cari, resolution, halaman): | |
search = 'https://nekopoi.care/search/' + cari.replace(' ', '+') + '/page/{}/' | |
# Create an empty list to store the series links | |
series = [] | |
# Iterate over the pages | |
for page in range(1, halaman+1): | |
# Set the URL of the current page | |
url = search.format(page) | |
# Send a GET request to the website and get the HTML response | |
response = scraper.get(url) | |
html = response.text | |
# Parse the HTML using BeautifulSoup | |
soup = BeautifulSoup(html, 'html.parser') | |
# Find all links in the HTML | |
links = soup.find_all('a') | |
# Iterate over the links | |
for link in links: | |
# Get the href attribute of the link | |
href = link.get('href') | |
# Check if the href attribute | |
if href and 'https://nekopoi.care/hentai/' in href: | |
# Add the link to the list of series links | |
series.append(href) | |
# Reverse the order of the series links in the list | |
# series.reverse() | |
info = info_series(resolution, series) | |
lokasi_file = simpan_txt(cari, info) | |
return info, lokasi_file | |
# ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
def beranda(resolution): | |
url = 'https://nekopoi.care/' | |
series = [] | |
response = scraper.get(url) | |
html = response.text | |
soup = BeautifulSoup(html, 'html.parser') | |
links = soup.find_all('a') | |
h1 = soup.find('h1') | |
for a in h1.find_all_next('a', href=True): | |
if 'https://nekopoi.care/hentai/' in a['href']: | |
series.append(a['href']) | |
if len(series) == 5: | |
break | |
info = info_series(resolution, series) | |
lokasi_file = simpan_txt('Beranda', info) | |
return info, lokasi_file | |
# ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
def acak(resolution): | |
url = 'https://nekopoi.care/random' | |
series = [] | |
response = scraper.get(url) | |
series.append(response.url) | |
info = info_series(resolution, series) | |
lokasi_file = simpan_txt('Acak', info) | |
return info, lokasi_file | |
# ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
def genre(cari, resolution, halaman): | |
search = 'https://nekopoi.care/genres/' + cari.lower().replace(' ', '-') + '/page/{}/' | |
# Create an empty list to store the series links | |
series = [] | |
# Iterate over the pages | |
for page in range(1, halaman+1): | |
# Set the URL of the current page | |
url = search.format(page) | |
# Send a GET request to the website and get the HTML response | |
response = scraper.get(url) | |
html = response.text | |
# Parse the HTML using BeautifulSoup | |
soup = BeautifulSoup(html, 'html.parser') | |
# Find all links in the HTML | |
links = soup.find_all('a') | |
# Iterate over the links | |
for link in links: | |
# Get the href attribute of the link | |
href = link.get('href') | |
# Check if the href attribute | |
if href and 'https://nekopoi.care/hentai/' in href: | |
# Add the link to the list of series links | |
series.append(href) | |
# Reverse the order of the series links in the list | |
# series.reverse() | |
info = info_series(resolution, series) | |
lokasi_file = simpan_txt(cari, info) | |
return info, lokasi_file | |
# ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
def bulk_nekopoi(cari, resolution, halaman, choice): | |
info = "" | |
# Create an empty list to store the series links | |
links_list = [] | |
if 'https://nekopoi.care' in cari: | |
links_list.append(cari) | |
else: | |
search = 'https://nekopoi.care/search/' + cari.replace(' ', '+') + '/page/{}/' | |
# ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
# Iterate over the pages | |
for page in range(1, halaman+1): | |
# Set the URL of the current page | |
url = search.format(page) | |
# Send a GET request to the website and get the HTML response | |
response = scraper.get(url) | |
html = response.text | |
# Parse the HTML using BeautifulSoup | |
soup = BeautifulSoup(html, 'html.parser') | |
# Find all links in the HTML | |
links = soup.find_all('a') | |
# Iterate over the links | |
for link in links: | |
# Get the href attribute of the link | |
href = link.get('href') | |
# Check if the href attribute | |
if 'new-release' in choice or 'uncensored' in choice: | |
if href and 'https://nekopoi.care/' in href and ('episode' in href and 'subtitle-indonesia' in href) and not ('jadwal' in href or 'genres' in href or 'list' in href or 'category' in href or 'search' in href) : | |
# Check if the link is already in the list of links | |
if href not in links_list: | |
# Add the link to the list of links | |
links_list.append(href) | |
elif '2d' in choice or '3d' in choice: | |
if href and 'https://nekopoi.care/' in href and ('2d' in href or '3d' in href) and not ('jadwal' in href or 'genres' in href or 'list' in href or 'category' in href or 'search' in href) : | |
# Check if the link is already in the list of links | |
if href not in links_list: | |
# Add the link to the list of links | |
links_list.append(href) | |
elif 'jav' in choice: | |
if href and 'https://nekopoi.care/' in href and ('jav' in href) and not ('jadwal' in href or 'genres' in href or 'list' in href or 'category' in href or 'search' in href) : | |
# Check if the link is already in the list of links | |
if href not in links_list: | |
# Add the link to the list of links | |
links_list.append(href) | |
x = 0 | |
# Iterate over the links | |
for url in links_list: | |
# Send a GET request to the website and get the HTML response | |
response = scraper.get(url) | |
html = response.text | |
# Parse the HTML using BeautifulSoup | |
soup = BeautifulSoup(html, 'html.parser') | |
# Dapatkan variabel | |
judul, eps, link = episode_nekopoi(resolution, soup) | |
if link != '': | |
link = ouo_bypass(link) | |
link = mirrored(link) | |
info += f"Judul : {judul.replace(' – NekoPoi','')}\n" | |
info += f"Link : {link}\n" | |
x += 1 | |
if x % 10 == 0: | |
info += "==================================================================================\n" | |
info += "==================================================================================\n" | |
lokasi_file = simpan_txt(cari, info) | |
return info, lokasi_file | |
# ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |