Re: support for XEM?
It might be worth taking a look at sonarr by eithertaking a look at their source code or hang around their discord and figure out how sonarr handles it as that project is how I first learned that this is possible.
The ultimate TV and Movie Renamer
https://www.filebot.net/forums/
Code: Select all
"6327": [
"Monogatari",
{
"Bakemonogatari": 1
},
{
"Nisemonogatari": 2
},
{
"Monogatari Series Second Season": 3
},
{
"Owarimonogatari": 4
},
{
"Owarimonogatari S2": 5
},
{
"Owarimonogatari Second Season": 5
}
]
Code: Select all
--mapper "episode"Code: Select all
--mapper "new net.filebot.web.Episode(/Series Name/, 1, 1, /Episode Title/)"Code: Select all
--mapper /path/to/mapper.groovyCode: Select all
filebot -list --q "Firefly" --mapper "[seriesName: ny, season: s + 1, episode: e, title: /Episode / + absolute]"Code: Select all
Firefly (2002) - 2x01 - Episode 2
Firefly (2002) - 2x02 - Episode 3
Firefly (2002) - 2x03 - Episode 6
Firefly (2002) - 2x04 - Episode 7
Firefly (2002) - 2x05 - Episode 8
...Code: Select all
Episode(String seriesName, Integer season, Integer episode, String title, Integer absolute, Integer special, SimpleDate airdate, Integer id, SeriesInfo seriesInfo)
Code: Select all
// test with filebot -list --q "Monogatari" --db AniDB --mapper xem.groovy
import groovy.json.JsonSlurper
String origin = anime ? "anidb" : "tvdb"
Integer seas
if (anime) {
seas = 1
} else {
seas = s
}
def spec = call{special}
def ep = call{e}
def baseURL = new URL("http://thexem.de")
def reqHeaders = [:]
def params = [
"origin": origin
]
def query = params.collect { k, v -> "$k=$v" }.join('&')
def getResponse = new URL(baseURL, "/map/havemap?$query").get(reqHeaders)
String stringID = id.toString()
Map json = new JsonSlurper().parseText(getResponse.text)
def item = json.data.any{ it == stringID }
if (item) {
def paramsName = [
"origin": origin,
"id": id,
"defaultNames": 1,
]
def queryName = paramsName.collect { k, v -> "$k=$v" }.join('&')
def getResName = new URL(baseURL, "/map/names?$queryName").get(reqHeaders)
Map jsonName = new JsonSlurper().parseText(getResName.text)
def mat = jsonName.data.collect{
if (it.value instanceof Map) {
def name = it.value.entrySet().value
[(it.key): name.flatten()]
} else if (it.value instanceof String) {
[(it.key): it.value]
}
}
String newN = mat.findAll{ it.all }?.all.first()
Integer foundS = mat.findAll{
it.entrySet().value.any{ v -> v =~ /(?i)$n/ }
}.first().entrySet().key.first().toInteger()
Integer newS = (foundS < 0) ? seas : foundS
def paramsMap = [
"origin": origin,
"id": id,
"season": newS,
"episode": ep,
]
def queryMap = paramsMap.collect { k, v -> "$k=$v" }.join('&')
def getResponseMap = new URL(baseURL, "/map/single?$queryMap").get(reqHeaders)
Map jsonMap = new JsonSlurper().parseText(getResponseMap.text)
// assuming tvdb destination, could be included in the query
def result = jsonMap.data.entrySet().findAll{ it.key.matches(/tvdb.*/) }
if (result.size() < 2) {
return new net.filebot.web.Episode(newN, newS, result.first().value.episode, t, result.first().value.absolute, spec, d, id, series)
} else {
def multi = []
for ( i in 0..result.size()-1 ) {
multi << new net.filebot.web.Episode(newN, newS, result[i].value.episode, t, result[i].value.absolute, spec, d, id, series)
}
return new net.filebot.web.MultiEpisode(*multi)
}
}
// hopefully return the episode untouched if not matched
return new net.filebot.web.Episode(n, seas, ep, t, absolute, spec, d, id, series)
Code: Select all
def x = [1, 2, 3]
def f = { a, b, c -> a * b * c }
f(*x)Code: Select all
def cache = Cache.getCache('xem', CacheType.Daily)
def url = 'https://www.filebot.net/update.xml'
def content = cache.text(url, String.&toURL).get()
println contentCode: Select all
# this returns only the first 2 episodes despite XEM having 3 mappings, but it's an issue with AniDB only reporting the first 2 as regular episodes and the third as special.
# they also join titles on their own, so that shouldn't be a byproduct of the MultiEpisode object
filebot -list --q "Owarimonogatari Second Season" --db AniDB --mapper xem.groovy
# this should return episodes unchanged
filebot -list --q "Firefly" --db TheTVDB --mapper xem.groovy
Code: Select all
filebot -list --q "Owarimonogatari Second Season" --db AniDB --format "{id} | {episode.id}"Code: Select all
if (result.size() < 2) {
return new net.filebot.web.Episode(newN, newS, result.first().value.episode, t, result.first().value.absolute, spec, d, episode.id, series)
} else {
def multi = []
for ( i in 0..result.size()-1 ) {
multi << new net.filebot.web.Episode(newN, newS, result[i].value.episode, t, result[i].value.absolute, spec, d, episode.id, series)
}
return new net.filebot.web.MultiEpisode(*multi)
}
}
// hopefully return the episode untouched if not matched
return episodeCode: Select all
// test with filebot -list --q "Monogatari" --db AniDB --mapper xem.groovy
import groovy.json.JsonSlurper
import net.filebot.Cache
import net.filebot.CacheType
Closure<Object> request = { Map headers = [:], String base = "http://thexem.de", String path, Map params ->
Cache cache = net.filebot.Cache.getCache('xem', CacheType.Daily)
URL baseURL = new URL(base)
String query = params.collect { k, v -> "$k=$v" }.join('&')
Object response = new URL(baseURL, "$path?$query").get(headers)
response
// TODO: daily caching
// def content = cache.text(url, String.&toURL).get()
}
String origin = anime ? "anidb" : "tvdb"
Integer seas = anime ? 1 : episode?.season
Object hasMap = request("/map/havemap", ["origin": origin])
Map jHasMap = new JsonSlurper().parseText(hasMap.text)
Boolean item = jHasMap.data.any{ it == id.toString() }
if (item) {
Object names = request("/map/names", [
"origin": origin,
"id": id,
"defaultNames": 1,
])
Map jName = new JsonSlurper().parseText(names.text)
ArrayList reflect = jName.data.collect{
if (it.value instanceof Map) {
def name = it.value.entrySet().value
[(it.key): name.flatten()]
} else if (it.value instanceof String) {
[(it.key): it.value]
}
}
// String newN = reflect.findAll{ it instanceof String }.first()
String newN = reflect.findAll{ it.all }?.all.first()
Integer foundS = reflect.findAll{
it.entrySet().value.any{ v -> v =~ /(?i)$episode.seriesName/ }
}.first().entrySet().key.first().toInteger()
// Integer foundS = item.findAll{ it instanceof Map }*.find{ k, v -> k.match(/$n/) }.find{ it != null }?.value
Integer newS = (foundS < 0) ? seas : foundS
Map old = [
ep: episode.episode ? episode.episode : episode.special,
se: episode.special ? 0 : newS,
]
// assuming TVDB destination, could be included in the query
Object mapping = request("/map/single", [
"origin": origin,
"id": id,
"season": old.se,
"episode": old.ep,
])
Map jMapping = new JsonSlurper().parseText(mapping.text)
// also assuming TVDB destination
if (jMapping.data.isEmpty()) {
return episode
}
def result = jMapping.data.entrySet().findAll{ it.key.matches(/tvdb.*/) }
if (result.size() < 2) {
return new net.filebot.web.Episode(newN, newS, result.first().value.episode, episode?.title, result.first().value.absolute, episode?.special, episode?.airdate, episode.id, series)
} else {
def multi = []
for ( i in 0..result.size()-1 ) {
// hopefully all multi-episodes are just multi-part because I couldn't find a way to merge titles
multi << new net.filebot.web.Episode(newN, newS, result[i].value.episode, episode?.title, result[i].value.absolute, episode?.special, episode?.airdate, episode.id, series)
}
return new net.filebot.web.MultiEpisode(*multi)
}
}
// hopefully return the episode untouched if not matched
return episode
Code: Select all
XEM.TheTVDBCode: Select all
filebot -list --q "Monogatari" --db AniDB --mapper XEM.TheTVDBError:rednoah wrote: 28 May 2019, 04:57 I'd add a bit of caching as well, like so:Code: Select all
def cache = Cache.getCache('xem', CacheType.Daily) def url = 'https://www.filebot.net/update.xml' def content = cache.text(url, String.&toURL).get() println content
Expression yields empty value: No signature of method: java.lang.String.toURL() is applicable for argument types: (String) values: [https://www.filebot.net/update.xml]
Possible solutions: toURL(), toURL(), toURI(), toURI(), toSet(), toFile(java.lang.String)
Code: Select all
def cache = Cache.getCache('xem', CacheType.Daily)
def url = 'https://www.filebot.net/update.xml'
def content = cache.text(url, { new URL(it) }).get()
println contentCode: Select all
filebot -list --q 14444 --db AniDB --mapper "AnimeLists.TheTVDB"
Apply mapper [AnimeLists.TheTVDB] on [10] items
Map [Attack on Titan Season 3 (2019) - 01 - The Town Where Everything Began] to [Attack on Titan Season 3 (2019) - 3x13 - The Town Where Everything Began]
Map [Attack on Titan Season 3 (2019) - 02 - Thunder Spears] to [Attack on Titan Season 3 (2019) - 3x14 - Thunder Spears]
Map [Attack on Titan Season 3 (2019) - 03 - Descent] to [Attack on Titan Season 3 (2019) - 3x15 - Descent]
Map [Attack on Titan Season 3 (2019) - 04 - Perfect Game] to [Attack on Titan Season 3 (2019) - 3x16 - Perfect Game]
Map [Attack on Titan Season 3 (2019) - 05 - Hero] to [Attack on Titan Season 3 (2019) - 3x17 - Hero]
Map [Attack on Titan Season 3 (2019) - 06 - Midnight Sun] to [Attack on Titan Season 3 (2019) - 3x18 - Midnight Sun]
Map [Attack on Titan Season 3 (2019) - 07 - The Basement] to [Attack on Titan Season 3 (2019) - 3x19 - The Basement]
Map [Attack on Titan Season 3 (2019) - 08 - Episode 8] to [Attack on Titan Season 3 (2019) - 3x20 - Episode 8]
Map [Attack on Titan Season 3 (2019) - 09 - Episode 9] to [Attack on Titan Season 3 (2019) - 3x21 - Episode 9]
Map [Attack on Titan Season 3 (2019) - 10 - Episode 10] to [Attack on Titan Season 3 (2019) - 3x22 - Episode 10]
Attack on Titan Season 3 (2019) - 3x13 - The Town Where Everything Began
Attack on Titan Season 3 (2019) - 3x14 - Thunder Spears
Attack on Titan Season 3 (2019) - 3x15 - Descent
Attack on Titan Season 3 (2019) - 3x16 - Perfect Game
Attack on Titan Season 3 (2019) - 3x17 - Hero
Attack on Titan Season 3 (2019) - 3x18 - Midnight Sun
Attack on Titan Season 3 (2019) - 3x19 - The Basement
Attack on Titan Season 3 (2019) - 3x20 - Episode 8
Attack on Titan Season 3 (2019) - 3x21 - Episode 9
Attack on Titan Season 3 (2019) - 3x22 - Episode 10thxrednoah wrote: 03 Jun 2019, 03:24 This should work better:Code: Select all
def cache = Cache.getCache('xem', CacheType.Daily) def url = 'https://www.filebot.net/update.xml' def content = cache.text(url, { new URL(it) }).get() println content
The code above will either do a network request to get the data, or read the data from local disk cache. It's all handled implicitly if you use it like in the example above. Your code doesn't know or care if the data came from cache or via web request.
If you use the code above, then it'll get cached for about a day. If you tell me what expiration times or properties you're looking for, then I can give you examples.
Code: Select all
"¬í t Top250Moviessr 7net.sf.ehcache.store.disk.DiskStorageFactory$DiskMarkerþ-U\†å J expiryJ hitCountJ positionI sizeL keyt Ljava/lang/Object;xp kw æÐ ¤¼q ~ "Code: Select all
¬í sr net.sf.ehcache.Element>é_” Z cacheDefaultLifespanJ hitCountJ idJ lastUpdateTimeI
timeToIdleI
timeToLiveJ versionL keyt Ljava/lang/Object;L valueq Code: Select all
filebot -list --db AniDB --q "Monogatari Series: Second Season" --order Absolute --mapper AnimeLists.TheTVDB --format "{episode} || {order.absolute.episode}"Code: Select all
Monogatari Series Second Season - 3x01 - Tsubasa Tiger, Part 1 || Monogatari Series Second Season - 01 - Tsubasa Tiger, Part 1
Monogatari Series Second Season - 3x02 - Tsubasa Tiger, Part 2 || Monogatari Series Second Season - 02 - Tsubasa Tiger, Part 2
Monogatari Series Second Season - 3x03 - Tsubasa Tiger, Part 3 || Monogatari Series Second Season - 03 - Tsubasa Tiger, Part 3
Monogatari Series Second Season - 3x04 - Tsubasa Tiger, Part 4 || Monogatari Series Second Season - 04 - Tsubasa Tiger, Part 4
Monogatari Series Second Season - 3x05 - Tsubasa Tiger, Part 5 || Monogatari Series Second Season - 05 - Tsubasa Tiger, Part 5
Monogatari Series Second Season - Special 7 - Summary 1 || Monogatari Series Second Season - 06 - Summary 1
Monogatari Series Second Season - 3x06 - Mayoi Jiangshi, Part 1 || Monogatari Series Second Season - 07 - Mayoi Jiangshi, Part 1
Monogatari Series Second Season - 3x07 - Mayoi Jiangshi, Part 2 || Monogatari Series Second Season - 08 - Mayoi Jiangshi, Part 2
Monogatari Series Second Season - 3x08 - Mayoi Jiangshi, Part 3 || Monogatari Series Second Season - 09 - Mayoi Jiangshi, Part 3
Monogatari Series Second Season - 3x09 - Mayoi Jiangshi, Part 4 || Monogatari Series Second Season - 10 - Mayoi Jiangshi, Part 4
Monogatari Series Second Season - Special 8 - Summary 2 || Monogatari Series Second Season - 11 - Summary 2
Monogatari Series Second Season - 3x10 - Nadeko Medusa, Part 1 || Monogatari Series Second Season - 12 - Nadeko Medusa, Part 1
Monogatari Series Second Season - 3x11 - Nadeko Medusa, Part 2 || Monogatari Series Second Season - 13 - Nadeko Medusa, Part 2
Monogatari Series Second Season - 3x12 - Nadeko Medusa, Part 3 || Monogatari Series Second Season - 14 - Nadeko Medusa, Part 3
Monogatari Series Second Season - 3x13 - Nadeko Medusa, Part 4 || Monogatari Series Second Season - 15 - Nadeko Medusa, Part 4
Monogatari Series Second Season - Special 9 - Summary 3 || Monogatari Series Second Season - 16 - Summary 3
Monogatari Series Second Season - 3x14 - Shinobu Time, Part 1 || Monogatari Series Second Season - 17 - Shinobu Time, Part 1
Monogatari Series Second Season - 3x15 - Shinobu Time, Part 2 || Monogatari Series Second Season - 18 - Shinobu Time, Part 2
Monogatari Series Second Season - 3x16 - Shinobu Time, Part 3 || Monogatari Series Second Season - 19 - Shinobu Time, Part 3
Monogatari Series Second Season - 3x17 - Shinobu Time, Part 4 || Monogatari Series Second Season - 20 - Shinobu Time, Part 4
Monogatari Series Second Season - 3x18 - Hitagi End, Part 1 || Monogatari Series Second Season - 21 - Hitagi End, Part 1
Monogatari Series Second Season - 3x19 - Hitagi End, Part 2 || Monogatari Series Second Season - 22 - Hitagi End, Part 2
Monogatari Series Second Season - 3x20 - Hitagi End, Part 3 || Monogatari Series Second Season - 23 - Hitagi End, Part 3
Monogatari Series Second Season - 3x21 - Hitagi End, Part 4 || Monogatari Series Second Season - 24 - Hitagi End, Part 4
Monogatari Series Second Season - 3x22 - Hitagi End, Part 5 || Monogatari Series Second Season - 25 - Hitagi End, Part 5
Monogatari Series Second Season - 3x23 - Hitagi End, Part 6 || Monogatari Series Second Season - 26 - Hitagi End, Part 6
Monogatari Series Second Season - Special 1 - Koyomi History || Monogatari Series Second Season - Special 1 - Koyomi HistoryCode: Select all
filebot -list --db TheTVDB --q "Monogatari" --order Airdate --mapper AnimeLists.AniDB --format "{episode} || {seasonize.episode}" --filter "s == 3" --log OFFCode: Select all
Monogatari Series: Second Season - 01 - Tsubasa Tiger - Part 1 || Monogatari - 3x01 - Tsubasa Tiger - Part 1
Monogatari Series: Second Season - 02 - Tsubasa Tiger - Part 2 || Monogatari - 3x02 - Tsubasa Tiger - Part 2
Monogatari Series: Second Season - 03 - Tsubasa Tiger - Part 3 || Monogatari - 3x03 - Tsubasa Tiger - Part 3
Monogatari Series: Second Season - 04 - Tsubasa Tiger - Part 4 || Monogatari - 3x04 - Tsubasa Tiger - Part 4
Monogatari Series: Second Season - 05 - Tsubasa Tiger - Part 5 || Monogatari - 3x05 - Tsubasa Tiger - Part 5
Monogatari Series: Second Season - 07 - Mayoi Jiangshi - Part 1 || Monogatari - 3x06 - Mayoi Jiangshi - Part 1
Monogatari Series: Second Season - 08 - Mayoi Jiangshi - Part 2 || Monogatari - 3x07 - Mayoi Jiangshi - Part 2
Monogatari Series: Second Season - 09 - Mayoi Jiangshi - Part 3 || Monogatari - 3x08 - Mayoi Jiangshi - Part 3
Monogatari Series: Second Season - 10 - Mayoi Jiangshi - Part 4 || Monogatari - 3x09 - Mayoi Jiangshi - Part 4
Monogatari Series: Second Season - 12 - Nadeko Medusa - Part 1 || Monogatari - 3x10 - Nadeko Medusa - Part 1
Monogatari Series: Second Season - 13 - Nadeko Medusa - Part 2 || Monogatari - 3x11 - Nadeko Medusa - Part 2
Monogatari Series: Second Season - 14 - Nadeko Medusa - Part 3 || Monogatari - 3x12 - Nadeko Medusa - Part 3
Monogatari Series: Second Season - 15 - Nadeko Medusa - Part 4 || Monogatari - 3x13 - Nadeko Medusa - Part 4
Monogatari Series: Second Season - 17 - Shinobu Time - Part 1 || Monogatari - 3x14 - Shinobu Time - Part 1
Monogatari Series: Second Season - 18 - Shinobu Time - Part 2 || Monogatari - 3x15 - Shinobu Time - Part 2
Monogatari Series: Second Season - 19 - Shinobu Time - Part 3 || Monogatari - 3x16 - Shinobu Time - Part 3
Monogatari Series: Second Season - 20 - Shinobu Time - Part 4 || Monogatari - 3x17 - Shinobu Time - Part 4
Monogatari Series: Second Season - 21 - Hitagi End - Part 1 || Monogatari - 3x18 - Hitagi End - Part 1
Monogatari Series: Second Season - 22 - Hitagi End - Part 2 || Monogatari - 3x19 - Hitagi End - Part 2
Monogatari Series: Second Season - 23 - Hitagi End - Part 3 || Monogatari - 3x20 - Hitagi End - Part 3
Monogatari Series: Second Season - 24 - Hitagi End - Part 4 || Monogatari - 3x21 - Hitagi End - Part 4
Monogatari Series: Second Season - 25 - Hitagi End - Part 5 || Monogatari - 3x22 - Hitagi End - Part 5
Monogatari Series: Second Season - 26 - Hitagi End - Part 6 || Monogatari - 3x23 - Hitagi End - Part 6Code: Select all
$ filebot --log INFO -list --db TheTVDB --q Monogatari --filter s==3 --mapper XEM.AniDB
Monogatari Series Second Season - 01 [Monogatari - 3x01 - Tsubasa Tiger - Part 1]
Monogatari Series Second Season - 02 [Monogatari - 3x02 - Tsubasa Tiger - Part 2]
...Code: Select all
$ filebot --log INFO -list --db AniDB --q Monogatari --filter s==3 --mapper XEM.TheTVDB
Monogatari - 3x01 [Monogatari Series Second Season - 01 - Tsubasa Tiger, Part 1]
Monogatari - 3x02 [Monogatari Series Second Season - 02 - Tsubasa Tiger, Part 2]
...Code: Select all
$ filebot --log INFO --action TEST -rename *.mkv -non-strict --db TheTVDB --mapper XEM.AniDB
...
[TEST] from [Monogatari Series Second Season - 22.mkv] to [Monogatari - 3x22 - Hitagi End - Part 5.mkv]
[TEST] from [Monogatari Series Second Season - 23.mkv] to [Monogatari - 3x23 - Hitagi End - Part 6.mkv]Code: Select all
$ filebot --log INFO -list --db AniDB --q "Monogatari Series Second Season" --mapper AnimeList.TheTVDB
...
Monogatari Series Second Season - 3x05 [Monogatari Series Second Season - 05 - Tsubasa Tiger, Part 5]
Monogatari Series Second Season - Special 7 [Monogatari Series Second Season - 06 - Summary 1]
Monogatari Series Second Season - 3x06 [Monogatari Series Second Season - 07 - Mayoi Jiangshi, Part 1]
Monogatari Series Second Season - 3x07 [Monogatari Series Second Season - 08 - Mayoi Jiangshi, Part 2]
Monogatari Series Second Season - 3x08 [Monogatari Series Second Season - 09 - Mayoi Jiangshi, Part 3]
Monogatari Series Second Season - 3x09 [Monogatari Series Second Season - 10 - Mayoi Jiangshi, Part 4]
Monogatari Series Second Season - Special 8 [Monogatari Series Second Season - 11 - Summary 2]
Monogatari Series Second Season - 3x10 [Monogatari Series Second Season - 12 - Nadeko Medusa, Part 1]
...
Monogatari Series Second Season - 3x18 [Monogatari Series Second Season - 21 - Hitagi End, Part 1]
Monogatari Series Second Season - 3x19 [Monogatari Series Second Season - 22 - Hitagi End, Part 2]
Monogatari Series Second Season - 3x20 [Monogatari Series Second Season - 23 - Hitagi End, Part 3]
...Code: Select all
$ filebot --log INFO --action TEST -rename *.mkv -non-strict --db TheTVDB --mapper AnimeList.AniDB
[TEST] from [Monogatari Series Second Season - 21.mkv] to [Monogatari - 3x18 - Hitagi End - Part 1.mkv]
[TEST] from [Monogatari Series Second Season - 22.mkv] to [Monogatari - 3x19 - Hitagi End - Part 2.mkv]
[TEST] from [Monogatari Series Second Season - 23.mkv] to [Monogatari - 3x20 - Hitagi End - Part 3.mkv]Code: Select all
filebot.exe -version
FileBot 4.8.6 (r6492) / OpenJDK Runtime Environment 12.0.1 / Windows 10 10.0 (amd64)
Code: Select all
filebot.exe --log INFO --action TEST -rename *.mkv -non-strict --db TheTVDB --mapper AnimeList.AniDB
Code: Select all
Exclude [Monogatari Series: Second Season - 1x01 - Tsubasa Tiger - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x02 - Tsubasa Tiger - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x03 - Tsubasa Tiger - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x04 - Tsubasa Tiger - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x05 - Tsubasa Tiger - Part 5] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x06 - Mayoi Jiangshi - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x07 - Mayoi Jiangshi - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x08 - Mayoi Jiangshi - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x09 - Mayoi Jiangshi - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x10 - Nadeko Medusa - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x11 - Nadeko Medusa - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x12 - Nadeko Medusa - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x13 - Nadeko Medusa - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x14 - Shinobu Time - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x15 - Shinobu Time - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x16 - Shinobu Time - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x17 - Shinobu Time - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x18 - Hitagi End - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x19 - Hitagi End - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x20 - Hitagi End - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x21 - Hitagi End - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x22 - Hitagi End - Part 5] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari Series: Second Season - 1x23 - Hitagi End - Part 6] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 1x01 - Hitagi Crab - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 1x02 - Hitagi Crab - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 1x03 - Mayoi Snail - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 1x04 - Mayoi Snail - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 1x05 - Mayoi Snail - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 1x06 - Suruga Monkey - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 1x07 - Suruga Monkey - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 1x08 - Suruga Monkey - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 1x09 - Nadeko Snake - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 1x10 - Nadeko Snake - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 1x11 - Tsubasa Cat - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 1x12 - Tsubasa Cat - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 1x13 - Tsubasa Cat - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 1x14 - Tsubasa Cat - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 1x15 - Tsubasa Cat - Part 5] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 2x01 - Karen Bee - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 2x02 - Karen Bee - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 2x03 - Karen Bee - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 2x04 - Karen Bee - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 2x05 - Karen Bee - Part 5] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 2x06 - Karen Bee - Part 6] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 2x07 - Karen Bee - Part 7] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 2x08 - Tsukihi Phoenix - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 2x09 - Tsukihi Phoenix - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 2x10 - Tsukihi Phoenix - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 2x11 - Tsukihi Phoenix - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x01 - Tsubasa Tiger - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x02 - Tsubasa Tiger - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x03 - Tsubasa Tiger - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x04 - Tsubasa Tiger - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x05 - Tsubasa Tiger - Part 5] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x06 - Mayoi Jiangshi - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x07 - Mayoi Jiangshi - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x08 - Mayoi Jiangshi - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x09 - Mayoi Jiangshi - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x10 - Nadeko Medusa - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x11 - Nadeko Medusa - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x12 - Nadeko Medusa - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x13 - Nadeko Medusa - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x14 - Shinobu Time - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x15 - Shinobu Time - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x16 - Shinobu Time - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x17 - Shinobu Time - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x18 - Hitagi End - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x19 - Hitagi End - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x20 - Hitagi End - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x21 - Hitagi End - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x22 - Hitagi End - Part 5] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 3x23 - Hitagi End - Part 6] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 4x01 - Ougi Formula - Parts 1 & 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 4x02 - Sodachi Riddle - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 4x03 - Sodachi Riddle - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 4x04 - Sodachi Lost - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 4x05 - Sodachi Lost - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 4x06 - Sodachi Lost - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 4x07 - Shinobu Mail - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 4x08 - Shinobu Mail - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 4x09 - Shinobu Mail - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 4x10 - Shinobu Mail - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 4x11 - Shinobu Mail - Part 5] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 4x12 - Shinobu Mail - Part 6] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 5x01 - Mayoi Hell - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 5x02 - Mayoi Hell - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 5x03 - Hitagi Rendezvous - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 5x04 - Hitagi Rendezvous - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 5x05 - Ougi Dark - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 5x06 - Ougi Dark - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - 5x07 - Ougi Dark - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 1 - Episode 5.5 (Recap)] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 2 - Kizumonogatari I: Iron Blood Arc] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 3 - Tsubasa Family - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 4 - Tsubasa Family - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 5 - Tsubasa Family - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 6 - Tsubasa Family - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 7 - Summary I] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 8 - Summary II] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 10 - Suruga Devil - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 9 - Summary III] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 11 - Suruga Devil - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 12 - Suruga Devil - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 13 - Suruga Devil - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 14 - Suruga Devil - Part 5] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 15 - Yotsugi Doll - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 16 - Yotsugi Doll - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 17 - Yotsugi Doll - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 18 - Yotsugi Doll - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 19 - Kizumonogatari II: Passionate Blood Arc] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 20 - Kizumonogatari III: Cold Blood Arc] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 21 - Koyomi Stone] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 22 - Koyomi Flower] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 23 - Koyomi Sand] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 24 - Koyomi Water] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 25 - Koyomi Wind] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 26 - Koyomi Tree] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 27 - Koyomi Tea] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 28 - Koyomi Mountain] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 29 - Koyomi Torus] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 30 - Koyomi Seed] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 31 - Koyomi Nothing] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 32 - Koyomi Dead] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 33 - Koyomi Reverse - Part 1] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 34 - Koyomi Reverse - Part 2] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 35 - Koyomi Reverse - Part 3] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 36 - Koyomi Reverse - Part 4] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 37 - Koyomi Reverse - Part 5] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Exclude [Monogatari - Special 38 - Koyomi Reverse - Part 6] due to map failure: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: AnimeList for class: Script1
Code: Select all
$ filebot --log INFO --action TEST -rename *.mkv -non-strict --db TheTVDB --mapper "[episode, AnimeList.AniDB]"
[TEST] from [Monogatari - 3x19.mkv] to [Monogatari - 3x19 - Hitagi End - Part 2.mkv]
[TEST] from [Monogatari Series Second Season - 23.mkv] to [Monogatari - 3x20 - Hitagi End - Part 3.mkv]Code: Select all
filebot.exe --log INFO --action TEST --output "E:\FilebotTest" -script fn:amc -non-strict "E:\Downloads" --def animeFormat="{n}\Season {s.pad(2)}\{n} - {s00e00}" --map
per AnimeList.AniDBCode: Select all
[TEST] from [E:\Downloads\[anime4life.] Kuroko's Basketball 51-75 Complete [Season 3] (BD1080p AC3 8bit) [x264_AVC] English Subbed\Kuroko's Basketball 75 Again and Again (BD1080p AC3 8bit).mkv] to [E:\FilebotTest\TV Shows\Kuroko's Basketball\Season 02\Kuroko's Basketball - S02E24 - Enough.mkv]
[TEST] from [E:\Downloads\[anime4life.] Kuroko's Basketball 51-75 Complete [Season 3] (BD1080p AC3 8bit) [x264_AVC] English Subbed\Kuroko's Basketball 72 Let Me Warn You (BD1080p AC3 8bit).mkv] to [E:\FilebotTest\TV Shows\Kuroko's Basketball\Season 03\Kuroko's Basketball - S03E03 - Don't You Get in My Way.mkv]
[TEST] from [E:\Downloads\[DameDesuYo] Shingeki no Kyojin (Season 3 Part 2) - 56v0 (1920x1080 10bit AAC) [00E4BAEE].mkv] to [E:\FilebotTest\TV Shows\Attack on Titan\Specials\Attack on Titan - S00E04 - Chibi Theatre - Fly, Cadets, Fly! ~ Day 3 & 4.mkv]
[TEST] from [E:\Downloads\[DameDesuYo] Shingeki no Kyojin (Season 3 Part 2) - 56v0 (1920x1080 10bit AAC) [564AB91D].mkv] to [E:\FilebotTest\TV Shows\Attack on Titan\Season 03\Attack on Titan - S03E02 - Pain.mkv]
[TEST] from [E:\Downloads\[BlurayDesuYo] Shingeki no Kyojin - Season 2 (BD 1920x1080 10bit FLAC)\[BlurayDesuYo] Shingeki no Kyojin (Season 2) - 35 (BD 1920x1080 10bit FLAC) [47B4753C].mkv] to [E:\FilebotTest\TV Shows\Attack on Titan\Season 02\Attack on Titan - S02E03 - Southwestward.mkv]Code: Select all
$ filebot --log INFO --action TEST -rename -r *.mkv -non-strict --db TheTVDB --format "{n} - {sxe} [{absolute}]"
[TEST] from [Kuroko's Basketball 72 Let Me Warn You (BD1080p AC3 8bit).mkv] to [Kuroko's Basketball - 3x22 [72].mkv]
[TEST] from [Kuroko's Basketball 75 Again and Again (BD1080p AC3 8bit).mkv] to [Kuroko's Basketball - 3x25 [75].mkv]Code: Select all
filebot -list --q "Kuroko's Basketball" --db AniDB --mapper XEM.TheTVDB -non-strictCode: Select all
Kuroko's Basketball 3
Kuroko`s Basketball 3Code: Select all
--db AniDB --mapper "[episode, AnimeList.TheTVDB, XEM.TheTVDB]"Code: Select all
/usr/bin/filebot -rename --action test --db TheTVDB -non-strict --mapper AnimeList.AniDB --output /library/anime --format "{plex[1]/plex[2]/plex[3]}" /downloadCode: Select all
/usr/bin/filebot -rename --action test --db AniDB -non-strict --mapper AnimeList.TheTVDB --output /library/anime --format "{plex[1]/plex[2]/plex[3]}" /downloadCode: Select all
$ filebot -rename *.mkv --db TheTVDB -non-strict --action TEST
Rename episodes using [TheTVDB] with [Airdate Order]
Auto-detected query: [Fairy Tail]
Fetching episode data for [Fairy Tail]
[TEST] from [Fairy Tail (2018) - 02 - Because of Love.mkv] to [Fairy Tail - 8x02 - Because of Love.mkv]Code: Select all
--db TheTVDB --mapper AnimeList.AniDBCode: Select all
--mapper AnimeList.AniDBCode: Select all
Exclude [Fairy Tail - 8x02 - Because of Love] due to map failure: javax.script.ScriptException: net.filebot.format.BindingException: Binding "AniDB": nullCode: Select all
$ filebot -rename *.mkv --db TheTVDB --mapper AnimeList.AniDB --action TEST | grep "Because of Love"
Map [Fairy Tail - 8x02 - Because of Love] to [Fairy Tail (2018) - 02]
Reverse Map [Fairy Tail (2018) - 02] to [Fairy Tail - 8x02 - Because of Love]
[TEST] from [Fairy Tail (2018) - 02 - Because of Love.mkv] to [Fairy Tail - 8x02 - Because of Love.mkv]Code: Select all
FileBot 4.8.6 (r6531)
$ filebot -list --q 'neon genesis evangelion' --db AniDB --format '{s00e00} {absolute} {sc} {special}'
For the sake of argument, why is {episodelist} undefined for AniDB?rednoah wrote: 06 Jul 2019, 02:37 {sc} and {sy} are based on {episodelist} so it doesn't work if --db AniDB is being used.
Use case would be the following:rednoah wrote: 06 Jul 2019, 02:37Implicit conversion is only implemented for {s} and {sxe} and {s00e00} at this point.
Code: Select all
{
Integer count = any{ sc }{ 0 }
if (episode.special) {
"S$special"
} else if (count > 1) {
s00e00
} else {
"EP" + absolute
}
}
Code: Select all
{AnimeList.TheTVDB.seriesName}Code: Select all
--mapper "label =~ /anime/ ? [episode, AnimeList.TheTVDB] : [episode, XEM.AniDB]"Not really, I only wanted to have absolute episode numbering for single-season animes, season-based for multi-season animes, even with different names. TheTVDB is a simpler solution, with the mapper as suggested on point 3, but I looked here since the category from the torrent client is Anime and amc.groovy defaults to AniDB for those.rednoah wrote: 06 Jul 2019, 14:27Are you using {sc} to check if the database is AniDB or TheTVDB? Because that's effectively what you're doing, and using {info.database} would be more readable.
![]()
Code: Select all
filebot -rename . --db TheTVDB --mapper AnimeList.AniDB -non-strictCode: Select all
AnimeList.AniDBCode: Select all
AnimeList.TheTVDBCode: Select all
XEM.TheTVDBCode: Select all
XEM.AniDBCode: Select all
episodeCode: Select all
episode.derive(1, e + 1)Code: Select all
n =~ /Monogatari/ ? AnimeList.AniDB : episodeCode: Select all
[episode, AnimeList.AniDB, XEM.AniDB]Code: Select all
[seriesName: /My Series/, season: 1, episode: 1, title: /Hello World/]Code: Select all
{n.space('.').replace(/]/,'.')+'.'}{s00e00}{episode.special ? '.'+t.space('_') : ''}{'.'+vf}{any{'.'+source}{'.'+fn.match(/BD|Blu-ray/)}}{bitdepth == 10 ? '.10bit' : null}{any{'.'+group}{'.NOGRP'}}Code: Select all
{db.AniDB.primaryTitle}Code: Select all
filebot -list --q "Boku no Hero Academia" --format "{db.AniDB.primaryTitle}/Season {s}/{db.AniDB.primaryTitle} - {s00e00} - {t}" --filter "e == 1" --log INFO
Boku no Hero Academia/Season 1/Boku no Hero Academia - S01E01 - Izuku Midoriya: Origin
Boku no Hero Academia (2017)/Season 2/Boku no Hero Academia (2017) - S02E01 - That's the Idea, Ochaco
Boku no Hero Academia (2018)/Season 3/Boku no Hero Academia (2018) - S03E01 - Game Start
Boku no Hero Academia (2019)/Season 4/Boku no Hero Academia (2019) - S04E01 - The Scoop on U.A. Class 1-ACode: Select all
[Group] Boku no Hero Academia - 64 [720p].mkv (tvdb s4)
[Group] Nanatsu no Taizai - Kamigami no Gekirin - 01 [720p].mkv (tvdb s3)
[Group] Sword Art Online - Alicization - War of Underworld - 01 [720p].mkv (tvdb s4)
Code: Select all
filebot -rename "Boku no Hero Academia - 64.mkv" --db TheTVDB --mapper AnimeList.AniDB -non-strict --action TEST --log INFO
[TEST] from [Boku no Hero Academia - 64.mkv] to [My Hero Academia - 4x01 - The Scoop on U.A. Class 1-A.mkv]Code: Select all
--format "{db.AniDB.primaryTitle}/Season {s}/{db.AniDB.primaryTitle} - {s00e00} - {t}"Code: Select all
[TEST] from [Boku no Hero Academia - 64.mkv] to [Boku no Hero Academia (2019)/Season 4/Boku no Hero Academia (2019) - S04E01 - The Scoop on U.A. Class 1-A.mkv]Code: Select all
db.AniDB.primaryTitle.replaceTrailingBrackets()Code: Select all
filebot -rename "Boku no Hero Academia - 64.mkv" --db TheTVDB --mapper AnimeList.AniDB -non-strict --action TEST --log INFO --format "{db.AniDB.primaryTitle.replaceTrailingBrackets()}/Season {s}/{db.AniDB.primaryTitle} - {s00e00} - {t}"Code: Select all
--mapper "episode.derive(0, 0)"Code: Select all
$ filebot -rename *.mkv --db TheTVDB --mapper "episode.derive(0, 0)" -non-strict --action TEST --log INFO
[TEST] from [South Park S01E01 Tegridy Farms.mkv] to [South Park - 22x04 - Tegridy Farms.mkv]Code: Select all
/Attack on Titan The Final Season (2022) [anidb-16177]/
/Attack on Titan The Final Season - 1 - Judgement [1080p] [Subsplease].mkv
/Attack on Titan The Final Season - 2 - Sneak Attack [1080p] [Subsplease].mkv
/Attack on Titan The Final Season - 12 - The Dawn of Humanity [1080p] [Subsplease].mkvCode: Select all
filebot.exe -script "C:/Users/Documents/AnidbToTvdb/anidbToTvdb.groovy" -non-strict --action TEST
Rename episodes using [AniDB] with [Absolute]
Lookup via [16177]
Fetching episode data for [16177]
└─ 12 episodes
Apply mapper [XEM.TheTVDB] on [12] episodes
Map [Attack on Titan The Final Season (2022) - 01 - Judgment] to [Attack on Titan - 1x01]
Map [Attack on Titan The Final Season (2022) - 02 - Sneak Attack] to [Attack on Titan - 1x02]
Map [Attack on Titan The Final Season (2022) - 03 - Two Brothers] to [Attack on Titan - 1x03]
Map [Attack on Titan The Final Season (2022) - 04 - Memories of the Future] to [Attack on Titan - 1x04]
Map [Attack on Titan The Final Season (2022) - 05 - From You, 2,000 Years Ago] to [Attack on Titan - 1x05]
Map [Attack on Titan The Final Season (2022) - 06 - Thaw] to [Attack on Titan - 1x06]
Map [Attack on Titan The Final Season (2022) - 07 - Sunset] to [Attack on Titan - 1x07]
Map [Attack on Titan The Final Season (2022) - 08 - Pride] to [Attack on Titan - 1x08]
Map [Attack on Titan The Final Season (2022) - 09 - Night of the End] to [Attack on Titan - 1x09]
Map [Attack on Titan The Final Season (2022) - 10 - Traitor] to [Attack on Titan - 1x10]
Map [Attack on Titan The Final Season (2022) - 11 - Retrospective] to [Attack on Titan - 1x11]
Map [Attack on Titan The Final Season (2022) - 12 - The Dawn of Humanity] to [Attack on Titan - 1x12]
Reverse Map [Attack on Titan - 1x01] to [Attack on Titan The Final Season (2022) - 01 - Judgment]
Reverse Map [Attack on Titan - 1x12] to [Attack on Titan The Final Season (2022) - 12 - The Dawn of Humanity]
Reverse Map [Attack on Titan - 1x02] to [Attack on Titan The Final Season (2022) - 02 - Sneak Attack]
[TEST] from [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season - 1 - Judgment [1080p] [Subsplease].mkv] to [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season (2022) - S04E17 - Judgment.mkv]
[TEST] from [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season - 12 - The Dawn of Humanity [1080p] [Subsplease].mkv] to [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season (2022) - S04E28 - The Dawn of Humanity.mkv]
[TEST] from [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season - 2 - Sneak Attack [1080p] [Subsplease].mkv] to [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season (2022) - S04E18 - Sneak Attack.mkv]
Processed 3 files
Done ?(?????)?Code: Select all
filebot.exe -script "C:/Users/Documents/AnidbToTvdb/anidbToTvdb.groovy" -non-strict --action TEST
Rename episodes using [AniDB] with [Absolute]
Lookup via [16177]
Fetching episode data for [16177]
└─ 12 episodes
Apply mapper [AnimeList.TheTVDB] on [12] episodes
Map [Attack on Titan The Final Season (2022) - 01 - Judgment] to [Attack on Titan - 4x17]
Map [Attack on Titan The Final Season (2022) - 02 - Sneak Attack] to [Attack on Titan - 4x18]
Map [Attack on Titan The Final Season (2022) - 03 - Two Brothers] to [Attack on Titan - 4x19]
Map [Attack on Titan The Final Season (2022) - 04 - Memories of the Future] to [Attack on Titan - 4x20]
Map [Attack on Titan The Final Season (2022) - 05 - From You, 2,000 Years Ago] to [Attack on Titan - 4x21]
Map [Attack on Titan The Final Season (2022) - 06 - Thaw] to [Attack on Titan - 4x22]
Map [Attack on Titan The Final Season (2022) - 07 - Sunset] to [Attack on Titan - 4x23]
Map [Attack on Titan The Final Season (2022) - 08 - Pride] to [Attack on Titan - 4x24]
Map [Attack on Titan The Final Season (2022) - 09 - Night of the End] to [Attack on Titan - 4x25]
Map [Attack on Titan The Final Season (2022) - 10 - Traitor] to [Attack on Titan - 4x26]
Map [Attack on Titan The Final Season (2022) - 11 - Retrospective] to [Attack on Titan - 4x27]
Map [Attack on Titan The Final Season (2022) - 12 - The Dawn of Humanity] to [Attack on Titan - 4x28]
Reverse Map [Attack on Titan - 4x22] to [Attack on Titan The Final Season (2022) - 06 - Thaw]
Reverse Map [Attack on Titan - 4x28] to [Attack on Titan The Final Season (2022) - 12 - The Dawn of Humanity]
Reverse Map [Attack on Titan - 4x18] to [Attack on Titan The Final Season (2022) - 02 - Sneak Attack]
[TEST] from [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season - 1 - Judgment [1080p] [Subsplease].mkv] to [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season (2022) - S04E22 - Thaw.mkv]
[TEST] from [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season - 12 - The Dawn of Humanity [1080p] [Subsplease].mkv] to [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season (2022) - S04E28 - The Dawn of Humanity.mkv]
[TEST] from [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season - 2 - Sneak Attack [1080p] [Subsplease].mkv] to [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season (2022) - S04E18 - Sneak Attack.mkv]
Processed 3 files
Done ?(?????)?The console output you posted shows that AnimeLists correctly maps Attack on Titan The Final Season (2022) - 01 to 4x17:ZyFinity wrote: 07 Nov 2022, 03:06 I just ran some tests, and it seems animelist mapped incorrectly here with that example folder structure above, what would the reasoning for that be?
Code: Select all
Map [Attack on Titan The Final Season (2022) - 01 - Judgment] to [Attack on Titan - 4x17]Code: Select all
Map [Attack on Titan The Final Season (2022) - 01 - Judgment] to [Attack on Titan - 1x01]* GitHub is not a CDNZyFinity wrote: 06 Nov 2022, 23:00 I wanted to also ask why filebot only connects to a centralised "filebot hosted" animelists db that gets pulled monthly rather than just allowing us the user to download the database at our wanted set interval locally or even whenever there's a commit to the github repo or something. As I would be wanting to potentially have this setup with airing shows and be automated, however I guess this is where a fallback to the xem could come in handy.
The --mapper option allows you to match an Episode object as if it was another Episode object, but rename with the original Episode object:ZyFinity wrote: 06 Nov 2022, 23:00 One thing i noticed however is that file bot pulls a mapping for the show from anidb -> tvdb correctly, however then does a "reversemap" for whatever reason?
and then ends up getting a wrong match depending on the file layout.
Code: Select all
Start with A
Map A to M (for matching)
Reverse Map M to A (for renaming)Code: Select all
Anime/Attack on Titan The Final Season (2022) [anidb-16177]/Attack on Titan The Final Season - 1 - Judgement [1080p] [Subsplease].mp4
Anime/Attack on Titan The Final Season (2022) [anidb-16177]/Attack on Titan The Final Season - 2 - Sneak Attack [1080p] [Subsplease].mp4
Anime/Attack on Titan The Final Season (2022) [anidb-16177]/Attack on Titan The Final Season - 12 - The Dawn of Humanity [1080p] [Subsplease].mp4Code: Select all
$ filebot -rename -r Anime --q "{ f.path.match(/anidb-([0-9]+)/) }" --db AniDB --output "TV Shows" --format "{ db.TheTVDB.plex.id }" -non-strict --action TEST --log INFO
[TEST] from [Anime/Attack on Titan The Final Season (2022) [anidb-16177]/Attack on Titan The Final Season - 1 - Judgement [1080p] [Subsplease].mp4] to [TV Shows/TV Shows/Attack on Titan {tvdb-267440}/Season 04/Attack on Titan - S04E17 - Judgment.mp4]
[TEST] from [Anime/Attack on Titan The Final Season (2022) [anidb-16177]/Attack on Titan The Final Season - 12 - The Dawn of Humanity [1080p] [Subsplease].mp4] to [TV Shows/TV Shows/Attack on Titan {tvdb-267440}/Season 04/Attack on Titan - S04E28 - The Dawn of Humanity.mp4]
[TEST] from [Anime/Attack on Titan The Final Season (2022) [anidb-16177]/Attack on Titan The Final Season - 2 - Sneak Attack [1080p] [Subsplease].mp4] to [TV Shows/TV Shows/Attack on Titan {tvdb-267440}/Season 04/Attack on Titan - S04E18 - Sneak Attack.mp4]Code: Select all
$ filebot -rename -r Anime --db TheTVDB --mapper AnimeList.AniDB --output "TV Shows" --format "{ plex.id }" -non-strict --action TEST --log INFO
[TEST] from [Anime/Attack on Titan The Final Season (2022) [anidb-16177]/Attack on Titan The Final Season - 12 - The Dawn of Humanity [1080p] [Subsplease].mp4] to [TV Shows/TV Shows/Attack on Titan {tvdb-267440}/Season 01/Attack on Titan - S01E12 - Wound - The Struggle for Trost.mp4]Code: Select all
Map [Attack on Titan - 4x28 - The Dawn of Humanity] to [Shingeki no Kyojin: The Final Season (2022) - 12]Works perfectly fine (I tested your config myself), while my config using AniDB as the DB, AnimeList.TheTVDB as the mapper and {plex} as the format expression led to the incorrect results as seen in my previous post?In this case, --mapper does not work well because [anidb-16177] isn't used during episode matching, and the ID is meaningless to TheTVDB for series lookup purposes, and the file name doesn't match AniDB primary naming either:
Code: Select all
$ filebot -rename -r Anime --db TheTVDB --mapper AnimeList.AniDB --output "TV Shows" --format "{ plex.id }" -non-strict --action TEST --log INFO
[TEST] from [Anime/Attack on Titan The Final Season (2022) [anidb-16177]/Attack on Titan The Final Season - 12 - The Dawn of Humanity [1080p] [Subsplease].mp4] to [TV Shows/TV Shows/Attack on Titan {tvdb-267440}/Season 01/Attack on Titan - S01E12 - Wound - The Struggle for Trost.mp4]Code: Select all
$ filebot -rename *.mp4 --db AniDB --q 16177 --mapper AnimeList.TheTVDB --format "{ plex.id }" -non-strict --action TEST --log INFO
[TEST] from [Attack on Titan - 4x17.mp4] to [Anime/Shingeki no Kyojin - The Final Season (2022) {anidb-16177}/Shingeki no Kyojin - The Final Season (2022) - 01 - Judgment.mp4]Code: Select all
filebot -rename -r Anime --db AniDB--mapper AnimeList.TheTVDB --output "TV Shows" --format "{plex}" -non-strict --action TEST --log INFO
[TEST] from [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season - 1 - Judgment [1080p] [Subsplease].mkv] to [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season (2022) - S04E22 - Thaw.mkv]
[TEST] from [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season - 12 - The Dawn of Humanity [1080p] [Subsplease].mkv] to [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season (2022) - S04E28 - The Dawn of Humanity.mkv]
[TEST] from [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season - 2 - Sneak Attack [1080p] [Subsplease].mkv] to [F:\ANIME\testRename\Attack on Titan The Final Season (2022) [anidb-16177]\Attack on Titan The Final Season (2022) - S04E18 - Sneak Attack.mkv]
Code: Select all
filebot -rename -r Anime --q "{ f.path.match(/anidb-([0-9]+)/) }" --db AniDB --output "TV Shows" --format "{ db.TheTVDB.plex.id }" -non-strict --action TEST --log INFO
[TEST] from [Anime/Attack on Titan The Final Season (2022) [anidb-16177]/Attack on Titan The Final Season - 1 - Judgement [1080p] [Subsplease].mp4] to [TV Shows/TV Shows/Attack on Titan {tvdb-267440}/Season 04/Attack on Titan - S04E17 - Judgment.mp4]
[TEST] from [Anime/Attack on Titan The Final Season (2022) [anidb-16177]/Attack on Titan The Final Season - 12 - The Dawn of Humanity [1080p] [Subsplease].mp4] to [TV Shows/TV Shows/Attack on Titan {tvdb-267440}/Season 04/Attack on Titan - S04E28 - The Dawn of Humanity.mp4]
[TEST] from [Anime/Attack on Titan The Final Season (2022) [anidb-16177]/Attack on Titan The Final Season - 2 - Sneak Attack [1080p] [Subsplease].mp4] to [TV Shows/TV Shows/Attack on Titan {tvdb-267440}/Season 04/Attack on Titan - S04E18 - Sneak Attack.mp4]
Nope, I get the same results (shown above) and it works correctly.Do you get different results from me? What is your command? What is your console output?
Code: Select all
TheTVDB::267440 | Attack on Titan | Season 4 | Episode 28Code: Select all
AniDB::16177 | Anime: Shingeki no Kyojin: The Final Season (2022) | Episode 12Code: Select all
$ filebot -list --q 267440 --db TheTVDB --format "{xem.AniDB} <= {episode}"
null - 01 <= Attack on Titan - 1x01 - To You, in 2000 Years: The Fall of Shiganshina (1)
...
Shingeki no Kyojin S2 - 01 <= Attack on Titan - 2x01 - Beast Titan
...
Shingeki no Kyojin S3 - 01 <= Attack on Titan - 3x01 - Smoke Signal
...
Shingeki no Kyojin S3 - 01 <= Attack on Titan - 3x13 - The Town Where Everything Began
...
Shingeki no Kyojin S4 - 01 <= Attack on Titan - 4x01 - The Other Side of the Sea
...
Shingeki no Kyojin S4 - 01 <= Attack on Titan - 4x17 - Judgment
...Code: Select all
$ filebot -list --q 267440 --db TheTVDB --format "{xem.AniDB} <= {episode}"
Attack on Titan - 1x01 <= Attack on Titan - 1x01 - To You, in 2000 Years: The Fall of Shiganshina (1)
...
Attack on Titan - 2x01 <= Attack on Titan - 2x01 - Beast Titan
...
Attack on Titan - 3x01 <= Attack on Titan - 3x01 - Smoke Signal
...
Attack on Titan - 5x01 <= Attack on Titan - 4x01 - The Other Side of the Sea
...
Attack on Titan - 6x01 <= Attack on Titan - 4x17 - Judgment
...