init
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
---
|
||||
id: animetosho-xyz
|
||||
name: Anime Tosho
|
||||
description: "Anime Tosho is a Semi-Private Torrent Tracker for ANIME"
|
||||
language: en-US
|
||||
type: semi-private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://animetosho.xyz/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: Anime, cat: TV/Anime, desc: "Anime"}
|
||||
# all results are currently returned as both 5070 & 2020
|
||||
# # from https://animetosho.xyz/api/torznab?apikey=YOUR-API-KEY&t=caps
|
||||
# - {id: 5070, cat: TV/Anime, desc: "Anime (TV)"}
|
||||
# - {id: 2020, cat: Movies/Other, desc: "Anime (Movies)"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings:
|
||||
- name: apikey
|
||||
type: text
|
||||
label: API Key
|
||||
- name: info_key
|
||||
type: info
|
||||
label: About your API key
|
||||
default: "You can find or generate a new API Key by accessing the <a href=\"https://animetosho.xyz/profile\" target=\"_blank\">Anime Tosho profile</a> page."
|
||||
- name: sonarr_compatibility
|
||||
type: checkbox
|
||||
label: Improve Sonarr compatibility by trying to add Season information into Release Titles
|
||||
default: false
|
||||
- name: strip_s01
|
||||
type: checkbox
|
||||
label: Remove first season keywords (S1/S01/Season 1), as some results do not include this for first/single season releases
|
||||
default: false
|
||||
- name: radarr_compatibility
|
||||
type: checkbox
|
||||
label: Improve Radarr compatibility by removing year information from keywords and adding it to Release Titles
|
||||
default: false
|
||||
|
||||
login:
|
||||
# returns "401 Unauthorized, check your credentials" if apikey is invalid
|
||||
path: api/torznab
|
||||
method: get
|
||||
inputs:
|
||||
apikey: "{{ .Config.apikey }}"
|
||||
t: search
|
||||
limit: 1
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: api/torznab
|
||||
response:
|
||||
type: xml
|
||||
|
||||
inputs:
|
||||
apikey: "{{ .Config.apikey }}"
|
||||
t: "{{ .Query.Type }}"
|
||||
q: "{{ .Keywords }}"
|
||||
# all results are currently returned as both 5070 & 2020
|
||||
# cat: "{{ join .Categories \",\" }}"
|
||||
season: "{{ .Query.Season }}"
|
||||
ep: "{{ .Query.Ep }}"
|
||||
limit: 100
|
||||
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: [" *\\b((?:19|20)\\d{2})\\b", "{{ if .Config.radarr_compatibility }}{{ else }} $1{{ end }}"]
|
||||
- name: re_replace
|
||||
args: ["(?i) *\\b(S(?:0|eason *)?1)\\b", "{{ if .Config.strip_s01 }}{{ else }} $1{{ end }}"]
|
||||
|
||||
rows:
|
||||
selector: rss > channel > item
|
||||
|
||||
fields:
|
||||
category:
|
||||
text: Anime
|
||||
title_keyword_year:
|
||||
text: "{{ .Query.Keywords }}"
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "\\b((19|20)\\d{2})\\b"
|
||||
title_default:
|
||||
selector: title
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["^(\\[.+?\\] ?)?(\\[.+?\\] ?)?(.+?)(\\[)", "$1$2$3{{ if and (.Config.radarr_compatibility) (.Result.title_keyword_year) }} {{ .Result.title_keyword_year }} $4{{ else }}$4{{ end }}"]
|
||||
title_has_season:
|
||||
text: "{{ .Result.title_default }}"
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "(?i)(S\\d{1,3}([Ev]\\d+)?)"
|
||||
- name: append
|
||||
args: "NULL"
|
||||
title_has_episode:
|
||||
text: "{{ .Result.title_default }}"
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "\\b(.+? - ?)(\\d+([-v]\\d+)?) ([\\[\\(])\\b"
|
||||
- name: append
|
||||
args: "NULL"
|
||||
title_has_movie_ova:
|
||||
text: "{{ .Result.title_default }}"
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "(?i)(?<![A-Za-z0-9])(Movies?|OVA|OAV)(?![A-Za-z0-9])"
|
||||
- name: re_replace
|
||||
args: ["(?i)(Movies?|OVA|OAV)", "YES"]
|
||||
title_optional:
|
||||
text: "{{ .Result.title_default }}"
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["^(\\[.+?].+?)\\s*(?<![\\]\\)])((?:\\[|\\(| - ).+)", "{{ if and (ne .Result.title_has_movie_ova \"YES\") (and (eq .Result.title_has_season \"NULL\") (eq .Result.title_has_episode \"NULL\")) }}$1 S01 $2{{ else }}$1 $2{{ end }}"]
|
||||
title_live_action:
|
||||
text: "{{ .Result.title_optional }}"
|
||||
filters:
|
||||
# Insert S01 after year for Live Action titles without season/episode info
|
||||
# e.g. Hotel.del.Luna.2019.1080p... -> Hotel.del.Luna.2019.S01.1080p...
|
||||
- name: re_replace
|
||||
args: ["^(.+?)([\\. ])((?:19|20)\\d{2})([\\. ])(.+)$", "{{ if and (eq .Result.title_has_season \"NULL\") (eq .Result.title_has_episode \"NULL\") }}$1$2$3$4S01$4$5{{ else }}$1$2$3$4$5{{ end }}"]
|
||||
# Insert S01 before resolution for Live Action titles without year or season info
|
||||
# e.g. Hotel Del Luna 720p HDTV... -> Hotel Del Luna S01 720p HDTV...
|
||||
- name: re_replace
|
||||
args: ["^(?!.*(?:19|20)\\d{2})(.+?)([\\. ])((?:480|720|1080|2160)[pi])(.*)$", "{{ if and (eq .Result.title_has_season \"NULL\") (eq .Result.title_has_episode \"NULL\") }}$1$2S01$2$3$4{{ else }}$1$2$3$4{{ end }}"]
|
||||
title:
|
||||
text: "{{ if .Config.sonarr_compatibility }}{{ .Result.title_live_action }}{{ else }}{{ .Result.title_default }}{{ end }}"
|
||||
details:
|
||||
selector: link
|
||||
download:
|
||||
selector: enclosure
|
||||
attribute: url
|
||||
infohash:
|
||||
selector: "[name=infohash]"
|
||||
attribute: value
|
||||
date:
|
||||
# Sun, 18 Jan 2026 04:05:41 +0000
|
||||
selector: pubDate
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "ddd, dd MMM yyyy HH:mm:ss zzz"
|
||||
size:
|
||||
selector: "[name=size]"
|
||||
attribute: value
|
||||
seeders:
|
||||
selector: "[name=seeders]"
|
||||
attribute: value
|
||||
leechers:
|
||||
selector: "[name=leechers]"
|
||||
attribute: value
|
||||
downloadvolumefactor:
|
||||
text: 0
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
description:
|
||||
selector: title
|
||||
# torznab xml
|
||||
Reference in New Issue
Block a user