# script adapted from https://github.com/phillychi3/nhentai-favorites/
### fix 'set.yaml'
# open https://nhentai.net/favorites/
# open developer tools (F12)
# switch to network tab
# find favorites/ and click it
# find 'cookie' and 'useragent' in request headers
# copypaste into respective fields
# cookie should look something like this
# cookie: 'cf_clearance=xxxxx; csrftoken=xxxxx; sessionid=xxxxx'
### requirements
# pip install beautifulsoup4 PyYAML requests
# OR
# conda install beautifulsoup4 PyYAML requests
from bs4 import BeautifulSoup
import yaml
import requests
import os
import json
if not os.path.isfile("set.yaml"):
with open("set.yaml", "w") as f:
yaml.dump({"cookie": "", "useragent": ""}, f)
print("Please edit set.yaml")
exit()
with open("set.yaml", "r") as f:
data = yaml.load(f, Loader=yaml.CLoader)
cookie = data["cookie"]
useragent = data["useragent"]
if cookie == "":
print("Please edit set.yaml")
exit()
# setting
URL = "https://nhentai.net/favorites/"
APIURL = "https://nhentai.net/api/gallery/"
now = 1
allnumbers = []
def get_session(url, method="get", data=None):
session = requests.Session()
session.headers = {
"Referer": "https://nhentai.net/login/",
"User-Agent": useragent,
"Cookie": cookie,
"Accept-Language": "zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6",
"Accept-Encoding": "gzip, deflate",
}
if method == "get":
r = session.get(url)
elif method == "post":
r = session.post(url, data=data)
r.encoding = "utf-8"
return r
def check_pass():
res = get_session("https://nhentai.net/")
if res.status_code == 403:
print("403 error, maby block by cloudflare , please check if the cookie is correct")
exit()
check_pass()
while True:
data = get_session(f"{URL}?page={now}")
if "Abandon all hope, ye who enter here" in data.text:
print("No login, please login first")
exit()
soup = BeautifulSoup(data.text, "html.parser")
book = soup.find_all("div", class_="gallery-favorite")
if book == []:
break
numbers = [t.get("data-id") for t in book]
allnumbers.extend(numbers)
now += 1
print(len(allnumbers))
with open("downloadme.txt", "w", encoding="utf8") as f:
for k in allnumbers:
f.write(k + "\n")
print("Done!")