stash
This commit is contained in:
233
stash/config/scrapers/community/AniDB/AniDB.yml
Normal file
233
stash/config/scrapers/community/AniDB/AniDB.yml
Normal file
@@ -0,0 +1,233 @@
|
||||
name: AniDB
|
||||
|
||||
# ~~~~~~ GETTING STARTED ~~~~~~
|
||||
# Store this file in the ~/stash/scrapers/AniDB.yml
|
||||
# - If the scrapers directory is not there, you must create it first
|
||||
#
|
||||
# ~~~~~~ SETTING COOKIES ~~~~~~
|
||||
# Note: I recommend creating a new account just for this scraper
|
||||
# 1. Access the anidb.net website > login > right button > inspect > find cookies storage
|
||||
# 2. Copy the "Value" of "adbsess" and "adbuin" and replace in the cookies category of this document
|
||||
# 3. If your account is new, you need to access any NSFW anime and confirm that you want to see 18+ content
|
||||
# 4. Do not change the order of the columns, as it can make it stop working
|
||||
#
|
||||
# ~~~~~~ SETTING USER AGENT ~~~~~~
|
||||
# - Go to your Stash > Settings > Metadata Providers > Scraping > Scraper User Agent
|
||||
# - Use the User Agent of your choice
|
||||
# - For example: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0
|
||||
#
|
||||
# ~~~~~ RECOMMENDED WORKFLOW ~~~~~
|
||||
# 1. Scrape scene by fragment (for performers, tags, artwork, etc)
|
||||
# - If this fails, scrape by anime URL
|
||||
# 2. Scrape by episode URL (for title, date)
|
||||
# 3. Manually set movie scene number on scene page
|
||||
# 3. Navigate to each performer's page & scrape by URL
|
||||
# 4. Navigate to movie page & scrape by URL
|
||||
#
|
||||
# ~~~~~~ HOW TO USE (detailed) ~~~~~~
|
||||
# tl;dr when in doubt, use the URL scrapers
|
||||
# - For scenes: anidb.net/episode/XXX, anidb.net/anime/XXX
|
||||
# - For performers: anidb.net/character/XXX
|
||||
# - For movies: anidb.net/anime/XXX
|
||||
#
|
||||
# SCENES (by anime):
|
||||
# - The Scraper by Fragment will usually work, assuming a filename like "[XX] My Lewd Anime - 01 (720p) (x264).mkv"
|
||||
# - This regex expression strips underscores, dashes, content containing brackets and parentheses, and two digit numbers
|
||||
# - For example, the above filename is stripped to "My Lewd Anime"
|
||||
# - If this does not work, I recommend scraping with the episode URL, the anime URL, or the name scraper
|
||||
# - By default, the scene scraper does not set the title, as the episode scraper serves this purpose better
|
||||
# - However, if you'd like to enable this functionality, uncomment the "Title" line in sceneScraperAnime > scene
|
||||
# - The scene (by anime) scraper automatically creates a new movie (i.e., series) entry,
|
||||
# but unfortunately you will have to set the movie scene (i.e., episode) number manually
|
||||
#
|
||||
# SCENES (by episode):
|
||||
# - This scraper is only accessible by scraping the episode URL (anidb.net/episode/XXX)
|
||||
# - The scene episode scraper sets the episode title, the anime URL (if missing), and the original airing date
|
||||
# - By default, the regex expression strips the episode number when setting the title
|
||||
# - If you want to keep the episode number, delete the second regex replacement in
|
||||
# sceneScraperEpisode > scene > Title > postProcess > replace
|
||||
#
|
||||
# MOVIES:
|
||||
# - The scene (by anime) scraper automatically creates a new movie entry using the anime title and anime URL
|
||||
# - On the movie page, you can scrape by URL
|
||||
#
|
||||
# PERFORMERS:
|
||||
# - Performers need to be individually scraped by name or URL
|
||||
# - I recommend creating them by scraping the anime URL, then navigating to the performer page.
|
||||
# The performer URL should already be set, so you just need to press the scrape by URL button.
|
||||
#
|
||||
# ~~~~~ TROUBLESHOOTING ~~~~~
|
||||
# - If you find that the scraper has suddenly stopped working, RESET YOUR COOKIES!
|
||||
#
|
||||
# ~~~~~ ANYTHING ELSE? ~~~~~
|
||||
# THAT'S IT, ENJOY!
|
||||
# Made by @escargotbuffed, further improvements by @symptom6186
|
||||
|
||||
performerByURL:
|
||||
- action: scrapeXPath
|
||||
url:
|
||||
- https://anidb.net
|
||||
scraper: performerScraper
|
||||
performerByName:
|
||||
action: scrapeXPath
|
||||
queryURL: https://anidb.net/search/anime/?adb.search={}&entity.chartb=1
|
||||
scraper: performerSearch
|
||||
|
||||
sceneByFragment:
|
||||
action: scrapeXPath
|
||||
queryURL: https://anidb.net/anime/?adb.search={filename}
|
||||
queryURLReplace:
|
||||
filename:
|
||||
- regex: '\[.*?\]|\(.*?\)|\d\d|\..*'
|
||||
with:
|
||||
- regex: '\-|\_'
|
||||
with: " "
|
||||
- regex: \s+
|
||||
with: "%20"
|
||||
scraper: sceneScraperAnime
|
||||
sceneByURL:
|
||||
- action: scrapeXPath
|
||||
url:
|
||||
- https://anidb.net/episode/
|
||||
scraper: sceneScraperEpisode
|
||||
- action: scrapeXPath
|
||||
url:
|
||||
- https://anidb.net/anime/
|
||||
scraper: sceneScraperAnime
|
||||
sceneByName:
|
||||
action: scrapeXPath
|
||||
queryURL: https://anidb.net/search/anime/?adb.search={}&entity.animetb=1
|
||||
scraper: sceneSearch
|
||||
sceneByQueryFragment:
|
||||
action: scrapeXPath
|
||||
queryURL: "{url}"
|
||||
scraper: sceneScraperAnime
|
||||
|
||||
movieByURL:
|
||||
- action: scrapeXPath
|
||||
url:
|
||||
- https://anidb.net/
|
||||
scraper: sceneScraperAnime
|
||||
|
||||
xPathScrapers:
|
||||
performerSearch:
|
||||
performer:
|
||||
Name: //td[@class="relid"]/a
|
||||
URL:
|
||||
selector: //td[@class="relid"]/a/@href
|
||||
postProcess:
|
||||
- replace:
|
||||
- regex: ^
|
||||
with: https://anidb.net
|
||||
performerScraper:
|
||||
common:
|
||||
$info: //div[@class="g_section info"]
|
||||
$tab_1_pane: //div[@class="g_section info"]//div[@id="tab_1_pane"]
|
||||
$looks: //div[@class="g_section info"]//div[@id="tab_1_pane"]//tr[contains(@class, 'looks')]
|
||||
performer:
|
||||
Name: $tab_1_pane//tr[contains(@class, 'mainname')]//span[@itemprop="name"]
|
||||
Aliases: $tab_1_pane//tr[contains(@class, 'official')]//label[@itemprop="alternateName"]
|
||||
Disambiguation: $tab_1_pane//tr[contains(@class, 'mainname')]//a[@class='shortlink']
|
||||
Gender: $tab_1_pane//tr[contains(@class, 'gender')]//span[@itemprop="gender"]
|
||||
Ethnicity: $tab_1_pane//tr[contains(@class, 'entity')]//span[@class="tagname"]
|
||||
HairColor: $looks//span[contains(@class, 'tagname') and contains(text(), 'hair')]
|
||||
EyeColor: $looks//span[contains(@class, 'tagname') and contains(text(), 'eyes')]
|
||||
Height: $tab_1_pane//tr[contains(@class, 'height')]//span[@itemprop="height"]
|
||||
Weight: $tab_1_pane//tr[contains(@class, 'weight')]//span[@itemprop="weight"]
|
||||
#Measurements: Todo
|
||||
URL: //link[@rel="canonical"]/@href
|
||||
Details:
|
||||
selector: //div[@itemprop="description"]//text()
|
||||
concat: "\n"
|
||||
Tags:
|
||||
Name: $tab_1_pane//span[@class="g_tag"]//span[@class="tagname"]
|
||||
Image: $info//div[@class="image"]//img/@src
|
||||
|
||||
sceneSearch:
|
||||
scene:
|
||||
Title: //td[@class="relid"]/a
|
||||
URL:
|
||||
selector: //td[@class="relid"]/a/@href
|
||||
postProcess:
|
||||
- replace:
|
||||
- regex: ^
|
||||
with: https://anidb.net
|
||||
Image: //td[@class="thumb anime"]//img/@src
|
||||
sceneScraperEpisode:
|
||||
scene:
|
||||
Title:
|
||||
selector: //div[@id="layout-main"]//h1[@class="ep"]
|
||||
postProcess:
|
||||
- replace:
|
||||
- regex: ^.{0,9}
|
||||
with: ""
|
||||
- regex: \- \d+ \-
|
||||
with: "/"
|
||||
URL:
|
||||
selector: //ul[@class="main-tabs"]//li[@class="g_odd anime"]//span/a/@href
|
||||
postProcess:
|
||||
- replace:
|
||||
- regex: ^
|
||||
with: https://anidb.net
|
||||
Date: //div[@id="layout-main"]//span[@itemprop="datePublished"]/@content
|
||||
sceneScraperAnime:
|
||||
common:
|
||||
$info: //div[@class="g_section info"]
|
||||
$title: //div[@class="g_section info"]//div[@id="tab_1_pane"]//span[@itemprop="name"]
|
||||
$en_title: //div[@class="g_section info"]//div[@id="tab_1_pane"]//tr[contains(@class, "official verified") and contains(.//span, 'en')]//label[@itemprop="alternateName"]
|
||||
$character: //div[@id="characterlist"]//div[contains(@class, 'main character') or contains(@class, 'secondary cast')]//div[@itemprop="character"]
|
||||
scene:
|
||||
#Title: $en_title or $title
|
||||
#Date:
|
||||
# selector: $info//div[@id="tab_1_pane"]//span[contains(@itemprop, "datePublished") or contains(@itemprop, "startDate")]
|
||||
# parseDate: 02.01.2006
|
||||
Details:
|
||||
selector: //div[@itemprop="description"]//text()
|
||||
concat: " "
|
||||
Tags:
|
||||
Name: $info//div[@id="tab_1_pane"]//span[@class="tagname"]
|
||||
Performers:
|
||||
Name: $character/a/span
|
||||
URL:
|
||||
selector: $character/a/@href
|
||||
postProcess:
|
||||
- replace:
|
||||
- regex: ^
|
||||
with: https://anidb.net
|
||||
Movies:
|
||||
Name: $title
|
||||
URL: //link[@rel="canonical"]/@href
|
||||
Studio:
|
||||
Name: $info//table[@id="staffoverview"]//tr[last()]/td[@class="name creator"]/a
|
||||
Image: $info//div[@class="image"]//img/@src
|
||||
URL: //link[@rel="canonical"]/@href
|
||||
movie:
|
||||
Name: $title
|
||||
Aliases: $en_title
|
||||
Date:
|
||||
selector: $info//div[@id="tab_1_pane"]//span[contains(@itemprop, "datePublished") or contains(@itemprop, "startDate")]
|
||||
postProcess:
|
||||
- parseDate: 02.01.2006
|
||||
Synopsis:
|
||||
selector: //div[@itemprop="description"]//text()
|
||||
concat: " "
|
||||
Studio:
|
||||
Name: $info//table[@id="staffoverview"]//tr[last()]/td[@class="name creator"]/a
|
||||
FrontImage: $info//div[@class="image"]//img/@src
|
||||
URL: //link[@rel="canonical"]/@href
|
||||
|
||||
driver:
|
||||
cookies:
|
||||
- CookieURL: "https://anidb.net/"
|
||||
Cookies:
|
||||
# Access adult content requires a anidb account
|
||||
# Replace value field
|
||||
- Name: "adbsess"
|
||||
Domain: "anidb.net"
|
||||
Value: "" # Enter the value of the 'adbsess' here
|
||||
Path: "/"
|
||||
- Name: "adbuin"
|
||||
Domain: "anidb.net"
|
||||
Value: "" # Enter the value of the 'adbuin' here
|
||||
Path: "/"
|
||||
# Last Updated Dec 20, 2023
|
||||
Reference in New Issue
Block a user