Better ABsolute Scanner (BABS)

Hey sjai013 - thanks for putting that modification together. It's interesting though, i also have ybis for my OP and i have put them in their absolute number order with the correct season folder headings. i.e. 517 is season 15 first episode and it actually sorted it like you mentioned. Meaning there is a season 15 folder, and within it, it says 517. 

I guess that's what you were referring to with your season 9 example above. It must just be my preference to keep the absolute numbering, since in my mind anime doesn't follow any real rules when it comes to seasons (as in a season could be 13, 48, 54, etc. episodes long).

Question though, if i use the modified scanner you provided and don't provide an ID file, does it work like the normal BABS scanner or will it mess everything up?

cheers.

I can't seem to get BABS or Malagent to show up as a choice for my agent/scanner. I've added them both to my plugins folder and restarted the server/comp a few times. What am I doing wrong? 

I don't get how to configure my animes.

For absolute ordering animes, I've tried HAMA (version 0.5) + BABS, which was not really working (I guess I configured HAMA wrongly).

I've tried also S-BABS + AbsTVDB, which seems better, but it still puts all my anime's episodes in season 1. Is there a way to debug what's wrong?

For the other animes (small ones, which I've ordered by seasons like tvdb), I "unmatch" them and then match using standard Tvdb. That part works great.

Some of my animes I have (Im' thinking of Saint Seiya) are oldered by folder (lots of different generations), but the numbering starts again to 1 on some parts of the anime. Is there a way to make it work without retagging everything with the tvdb names? Anyone has an idea? Is S-BABS a solution there? (putting them in different folders?)

@evrardjp: I am the maintainer for HAMA.

In short "Absolute numbering" is using a single season to put all the episodes. BABS is "Better Absolute scanner" and "AbsTVDB" is for TVDB with absolute numbering...

If you want SEASONS use the tvdb agent and normal scanner or BABS, and label the serie folder as per TheTVDB.com serie name and label all eps s01e01, s02e01 in their respective "Season 1" and "Season 2" folders or directly in the serie folder

I recommend the official naming convention page, very intructive: https://oldwiki.plexapp.com/index.php?title=Media_Naming_and_Organization_Guide

However The following may happen:

   . recent series will not be present

   . season separation (not a japanese thing at all since some series like one piece are broadcasted every week without interruption) will be weird at times

   . series with too many episodes (100+) might have bugs due to the default scanner. Using Babs might solve that.

I shall not post nor reply further since you are spoiling this BABS thread by complaining all goes in one season which is the very basics of absolute numbering... Also, you did complain babs was not really working without try to solve the issue on HAMA thread... If you want a single season (absolute numbering) with posters and sum up for episodes you can post in HAMA thread, otherwise use tvdb agent and post there....

Don't get me wrong, I don't intend to flame. English is not my mother language. I don't want to spoil threads or complain. I just want to make it work, or at least understand better how it works.

I was searching to find a solution to different problems, and I was gathering the expertise of people here, expertise of people who got results.

Let me give my beginner view:

- If I read "absolute scanner", I understand that the scanner will search for absolute numbers in the filenames. I don't see any filesystem folder structure behind it. Just episodes names which aren't SxxExx but well absolute numbered. For me, for that part BABS has good results. If I'm mistaken, please correct me.

- I suppose that getting/matching the metadata with an absolute scanner needs an agent, which understands with absolute numbering. That's where I hoped "AbsTVDB" or "HAMA" could help.

- I've seen comments about a fork of S-BABS, which (if I've understood out correctly) could display in plex a series with different seasons, even when files are on the same folder. 

As it suits my use case, I've felt that S-BABS was the direction to follow. If I've read correctly, people are using abstvdb, so that's what I tried to use.

Now, I'm just trying to debug: I've every file in the same folder, with the absolute numbering in the file name. I've more than 100 episodes, and thanks to S-BABS (OR BABS, both work), there is no overlapping above 100 episodes. Great, but they are still in one Season. I'm just hoping to find help on the last stepping stone, and understand how to debug it.

If it's not possible, I'll go back to BABS standard + HAMA, and try to fix my trouble with HAMA on the HAMA thread.

I hope I'm more clear that way.

You should reread this and make sure you did it correctly considering this is exactly what you want and it works fine.

I've included a download to my modified S - BABS (for Series - BABS), which sorts absolute-numbered items in series.  To run this, you will need to follow the regular instruction for setting up a scanner, and in addition, you will need to include a tvdb.id file in the anime folder which contains the ID of the anime (which you obtain from TVDB).  I've included a sample tvdb.id file for Fairy Tail (zipped to allow upload: attachicon.giftvdb.zip).

Screenshot of One Piece sorting: http://imgur.com/MnSSsre

Screenshot of Fairy Tail sorting: http://imgur.com/mxqO40H

This has been tested on Ubuntu, but should be cross-compatible with other platforms.

That's also why I'm posting, I need to understand how to debug it.

I've a tvdb.id file in the anime folder, I've used S - BABS on the library's advanced options in plex, but it's not working for me.

I'm guessing there is something wrong with my S-BABS install: while it seems to work for detecting the ordering, I can't a see a "print" that I've added in the S-BABS.py file in the Logs/ folder.

The scanner alone is responsible for translating filenames into seasons and episodes or not showing the file at all.

It does not run under the framework like an agent does, so it does not create logs.

The print statement is displayed when the scanner is ran from the command line specifying the folder

   . https://support.plex.tv/hc/en-us/articles/201242707-Plex-Media-Scanner-via-Command-Line

   . https://forums.plex.tv/topic/99550-debugging-a-scanner/

If i understood you correctly, you want the files to have absolute numbering but want seasons in plex?

If so, you need the scanner to show the right season and episodes number then the agent will map the episode and season to the metadata but for anime only thetvdb uses seasons... 

The agent map the detected season/episode with the corresponding metadata so your issue is scanner related only.

What serie is it? did you put the "tvdb.id" file (check the file extentions like .txt are not hidden in windows) containing the tvdb id ?

Hey sjai013 - thanks for putting that modification together. It's interesting though, i also have ybis for my OP and i have put them in their absolute number order with the correct season folder headings. i.e. 517 is season 15 first episode and it actually sorted it like you mentioned. Meaning there is a season 15 folder, and within it, it says 517. 

I guess that's what you were referring to with your season 9 example above. It must just be my preference to keep the absolute numbering, since in my mind anime doesn't follow any real rules when it comes to seasons (as in a season could be 13, 48, 54, etc. episodes long).

Question though, if i use the modified scanner you provided and don't provide an ID file, does it work like the normal BABS scanner or will it mess everything up?

cheers.

If there is no tvdb.id file, then it will work like the normal BABS.

The scanner alone is responsible for translating filenames into seasons and episodes or not showing the file at all. It does not run under the framework like an agent does, so it does not create logs. The print statement is displayed when the scanner is ran from the command line specifying the folder... If i understood you correctly, you want the files to have absolute numbering but want seasons in plex? You need the scanner to show the right season and episodes number then the agent will map the episode and season to the metadata but for anime only thetvdb uses seasons... You should create another topic for assistance I believe....

Would you be able to provide a listing of the files in the directory (so a list showing the filenames, folder structure), as well as the contents of the tvdb.id file?  I'll try replicating your structure on my end and see if it works on mine.

I've created a new thread for S-BABS to avoid clutter: https://forums.plex.tv/topic/109441-series-better-absolute-scanner-s-babs/

I can't get the scanner to show up. I put the files in C:\Users\Me\AppData\Local\Plex Media Server\Scanners like it's supposed to be and restarted the server and the only scanner showing up in the scanner section is Plex Series Scanner. I tried restarting the server, I tried updating the server, and I tried using the fix posted by EntroX and nothing gets the scanner to show up. Can someone help me, is there a step I missed or is this just broken now?

You need ‘Series’ (or ‘Movies’) folder inside then you paste Babs.py inside

You need 'Series' (or 'Movies') folder inside then you paste Babs.py inside

Thanks for the quick response. That worked. I don't know why that wasn't included in the manual.

to be fair it is in the manual, but not that clear at bottom of page 1:
The ~/Library/Application Support/Plex Media Server/Scanners/Series (and all other specific scanner
type directories) are NOT created by default. You must create them yourself with mkdir.

Its this still support?

Is that a contraction of "Is this still supported" and "Is there still support" ?

The original was modified from the original plex scanner and latter modified into S-BABS that takes in tvdb.id file to change absolute numbering into tvdb numbering. Doesn't look like it is maintained, however, feel free to use my more recent absolute series scanner if you wish. i always welcome a real life data comparison of the two. I believe mine is better as it contained more tailered code than babs

Yes you get me righ. I gonna see how it work for me. still having problems but i think i forget to configure it. 

Did BABS or MAL Agent break? All of a sudden I new series aren't pulling data and matching from MAL anymore. TVDB still works though. Anyone else having issues? 

Does the character ! cause issues?

Heres a log for Happiness!

Hello, world!
BABS: Scan
BABS: len(paths) > 0 and len(paths[0]) > 0
BABS: not perfect match: show = | Storage | year = | None |
BABS: len(paths) >= 2
BABS: before ends_with_episode, show = | Storage |
BABS: after ends_with_episode, show = | Storage |
BABS: os.path.basename, i = | /storage/Anime/Happiness!/Happiness! - 9.rmvb | file = | Happiness! - 9.rmvb |
BABS: os.path.splitext, file = | Happiness! - 9 | ext = | .rmvb |
BABS: after CleanName file = | Happiness! - 9 | cleanName = | Happiness! 9 | cleanYear = | None |
BABS: after whackRx, file = | Happiness! - 9 |
BABS: dealing with episode? file = | Happiness! - 9 |
BABS: before CleanName, remove show, show = | Storage | file = | Happiness! - 9 |
BABS: episodes: CleanName: file = | Happiness! 9 | year = | None |
BABS: after CleanName, remove show, show = | Storage | file = | Happiness! 9 |
Got nothing for: Happiness! 9
BABS: os.path.basename, i = | /storage/Anime/Happiness!/Happiness! - 8.rmvb | file = | Happiness! - 8.rmvb |
BABS: os.path.splitext, file = | Happiness! - 8 | ext = | .rmvb |
BABS: after CleanName file = | Happiness! - 8 | cleanName = | Happiness! 8 | cleanYear = | None |
BABS: after whackRx, file = | Happiness! - 8 |
BABS: dealing with episode? file = | Happiness! - 8 |
BABS: before CleanName, remove show, show = | Storage | file = | Happiness! - 8 |
BABS: episodes: CleanName: file = | Happiness! 8 | year = | None |
BABS: after CleanName, remove show, show = | Storage | file = | Happiness! 8 |
Got nothing for: Happiness! 8
BABS: os.path.basename, i = | /storage/Anime/Happiness!/Happiness! - 4.rmvb | file = | Happiness! - 4.rmvb |
BABS: os.path.splitext, file = | Happiness! - 4 | ext = | .rmvb |
BABS: after CleanName file = | Happiness! - 4 | cleanName = | Happiness! 4 | cleanYear = | None |
BABS: after whackRx, file = | Happiness! - 4 |
BABS: dealing with episode? file = | Happiness! - 4 |
BABS: before CleanName, remove show, show = | Storage | file = | Happiness! - 4 |
BABS: episodes: CleanName: file = | Happiness! 4 | year = | None |
BABS: after CleanName, remove show, show = | Storage | file = | Happiness! 4 |
Got nothing for: Happiness! 4
BABS: os.path.basename, i = | /storage/Anime/Happiness!/Happiness! - 12.rmvb | file = | Happiness! - 12.rmvb |
BABS: os.path.splitext, file = | Happiness! - 12 | ext = | .rmvb |
BABS: after CleanName file = | Happiness! - 12 | cleanName = | Happiness! 12 | cleanYear = | None |
BABS: after whackRx, file = | Happiness! - 12 |
BABS: dealing with episode? file = | Happiness! - 12 |
BABS: before CleanName, remove show, show = | Storage | file = | Happiness! - 12 |
BABS: episodes: CleanName: file = | Happiness! 12 | year = | None |
BABS: after CleanName, remove show, show = | Storage | file = | Happiness! 12 |
BABS: matched just_episode_regexs  .*?[ \.\-_](?P[0-9]{2,3})$
BABS: the_season = 1
BABS: show = | Storage | the_episode = 12
BABS: os.path.basename, i = | /storage/Anime/Happiness!/Happiness! - 5 .rmvb | file = | Happiness! - 5 .rmvb |
BABS: os.path.splitext, file = | Happiness! - 5  | ext = | .rmvb |
BABS: after CleanName file = | Happiness! - 5  | cleanName = | Happiness! 5 | cleanYear = | None |
BABS: after whackRx, file = | Happiness! - 5  |
BABS: dealing with episode? file = | Happiness! - 5  |
BABS: before CleanName, remove show, show = | Storage | file = | Happiness! - 5  |
BABS: episodes: CleanName: file = | Happiness! 5 | year = | None |
BABS: after CleanName, remove show, show = | Storage | file = | Happiness! 5 |
Got nothing for: Happiness! 5
BABS: os.path.basename, i = | /storage/Anime/Happiness!/Happiness! - OVA.rmvb | file = | Happiness! - OVA.rmvb |
BABS: os.path.splitext, file = | Happiness! - OVA | ext = | .rmvb |
BABS: after CleanName file = | Happiness! - OVA | cleanName = | Happiness! Ova | cleanYear = | None |
BABS: after whackRx, file = | Happiness! - OVA |
BABS: dealing with episode? file = | Happiness! - OVA |
BABS: before CleanName, remove show, show = | Storage | file = | Happiness! - OVA |
BABS: episodes: CleanName: file = | Happiness! Ova | year = | None |
BABS: after CleanName, remove show, show = | Storage | file = | Happiness! Ova |
Got nothing for: Happiness! Ova
BABS: os.path.basename, i = | /storage/Anime/Happiness!/Happiness! - 2 .rmvb | file = | Happiness! - 2 .rmvb |
BABS: os.path.splitext, file = | Happiness! - 2  | ext = | .rmvb |
BABS: after CleanName file = | Happiness! - 2  | cleanName = | Happiness! 2 | cleanYear = | None |
BABS: after whackRx, file = | Happiness! - 2  |
BABS: dealing with episode? file = | Happiness! - 2  |
BABS: before CleanName, remove show, show = | Storage | file = | Happiness! - 2  |
BABS: episodes: CleanName: file = | Happiness! 2 | year = | None |
BABS: after CleanName, remove show, show = | Storage | file = | Happiness! 2 |
Got nothing for: Happiness! 2
BABS: os.path.basename, i = | /storage/Anime/Happiness!/Happiness! - 6.rmvb | file = | Happiness! - 6.rmvb |
BABS: os.path.splitext, file = | Happiness! - 6 | ext = | .rmvb |
BABS: after CleanName file = | Happiness! - 6 | cleanName = | Happiness! 6 | cleanYear = | None |
BABS: after whackRx, file = | Happiness! - 6 |
BABS: dealing with episode? file = | Happiness! - 6 |
BABS: before CleanName, remove show, show = | Storage | file = | Happiness! - 6 |
BABS: episodes: CleanName: file = | Happiness! 6 | year = | None |
BABS: after CleanName, remove show, show = | Storage | file = | Happiness! 6 |
Got nothing for: Happiness! 6
BABS: os.path.basename, i = | /storage/Anime/Happiness!/Happiness! - 10.rmvb | file = | Happiness! - 10.rmvb |
BABS: os.path.splitext, file = | Happiness! - 10 | ext = | .rmvb |
BABS: after CleanName file = | Happiness! - 10 | cleanName = | Happiness! 10 | cleanYear = | None |
BABS: after whackRx, file = | Happiness! - 10 |
BABS: dealing with episode? file = | Happiness! - 10 |
BABS: before CleanName, remove show, show = | Storage | file = | Happiness! - 10 |
BABS: episodes: CleanName: file = | Happiness! 10 | year = | None |
BABS: after CleanName, remove show, show = | Storage | file = | Happiness! 10 |
BABS: matched just_episode_regexs  .*?[ \.\-_](?P[0-9]{2,3})$
BABS: the_season = 1
BABS: show = | Storage | the_episode = 10
BABS: os.path.basename, i = | /storage/Anime/Happiness!/Happiness! - 3 .rmvb | file = | Happiness! - 3 .rmvb |
BABS: os.path.splitext, file = | Happiness! - 3  | ext = | .rmvb |
BABS: after CleanName file = | Happiness! - 3  | cleanName = | Happiness! 3 | cleanYear = | None |
BABS: after whackRx, file = | Happiness! - 3  |
BABS: dealing with episode? file = | Happiness! - 3  |
BABS: before CleanName, remove show, show = | Storage | file = | Happiness! - 3  |
BABS: episodes: CleanName: file = | Happiness! 3 | year = | None |
BABS: after CleanName, remove show, show = | Storage | file = | Happiness! 3 |
Got nothing for: Happiness! 3
BABS: os.path.basename, i = | /storage/Anime/Happiness!/Happiness! - 7.rmvb | file = | Happiness! - 7.rmvb |
BABS: os.path.splitext, file = | Happiness! - 7 | ext = | .rmvb |
BABS: after CleanName file = | Happiness! - 7 | cleanName = | Happiness! 7 | cleanYear = | None |
BABS: after whackRx, file = | Happiness! - 7 |
BABS: dealing with episode? file = | Happiness! - 7 |
BABS: before CleanName, remove show, show = | Storage | file = | Happiness! - 7 |
BABS: episodes: CleanName: file = | Happiness! 7 | year = | None |
BABS: after CleanName, remove show, show = | Storage | file = | Happiness! 7 |
Got nothing for: Happiness! 7
BABS: os.path.basename, i = | /storage/Anime/Happiness!/Happiness! - 11.rmvb | file = | Happiness! - 11.rmvb |
BABS: os.path.splitext, file = | Happiness! - 11 | ext = | .rmvb |
BABS: after CleanName file = | Happiness! - 11 | cleanName = | Happiness! 11 | cleanYear = | None |
BABS: after whackRx, file = | Happiness! - 11 |
BABS: dealing with episode? file = | Happiness! - 11 |
BABS: before CleanName, remove show, show = | Storage | file = | Happiness! - 11 |
BABS: episodes: CleanName: file = | Happiness! 11 | year = | None |
BABS: after CleanName, remove show, show = | Storage | file = | Happiness! 11 |
BABS: matched just_episode_regexs  .*?[ \.\-_](?P[0-9]{2,3})$
BABS: the_season = 1
BABS: show = | Storage | the_episode = 11
BABS: os.path.basename, i = | /storage/Anime/Happiness!/Happiness! - 1 .rmvb | file = | Happiness! - 1 .rmvb |
BABS: os.path.splitext, file = | Happiness! - 1  | ext = | .rmvb |
BABS: after CleanName file = | Happiness! - 1  | cleanName = | Happiness! 1 | cleanYear = | None |
BABS: after whackRx, file = | Happiness! - 1  |
BABS: dealing with episode? file = | Happiness! - 1  |
BABS: before CleanName, remove show, show = | Storage | file = | Happiness! - 1  |
BABS: episodes: CleanName: file = | Happiness! 1 | year = | None |
BABS: after CleanName, remove show, show = | Storage | file = | Happiness! 1 |
Got nothing for: Happiness! 1
Media: [Storage (season 1, episode: 10) => ['/storage/Anime/Happiness!/Happiness! - 10.rmvb'] starting at 0, Storage (season 1, episode: 11) => ['/storage/Anime/Happiness!/Happiness! - 11.rmvb'] starting at 0, Storage (season 1, episode: 12) => ['/storage/Anime/Happiness!/Happiness! - 12.rmvb'] starting at 0]