[Rel] HTTP Anidb Metadata Agent (HAMA)



Thanks for your post Melator, i have very little feedback on my code, and previous buggy versions i release possibly didn't help its widespread use...

I am using a HP microserver N40L on which i installed DSM (the OS of synology NAS) that i downloaded on XPEnology.com (++ version has more drivers supported)

That allow to use alternate package servers to install 3rd party apps (sickbeard) but Plex is supported by default.


I have been moving houses and since i am a computer parts hoarder, and also have a day job, that is taking a lot of my time and i didn't do new development on the agent but on the other hand, i don't know what to improve as it pretty much work well for me, the studio icons are supported, multi language support is there, it logs the issue the user has a possibility to correct, etc...

The agent takes the posters from the tvdb not from anidb due to a fixed resolution hence fixed ratio. That also limited the anidb ban since we do one request per serie.

For windows the agent goes here: C:\Users\XXXXX\AppData\Local\Plex Media Server\Plug-ins

I am unsure if many of you use the clever html log generated (one instance of every warning present in them) to be able to update used databases easily as i wanted this agent to allow to benefit not only Plex users but all database users as it allow easy database update by including direct links when applicable

 Logs are located in DataItems since it's the only folder with write access available to the agents:

   . For me it's in \\NAS\Plex\Library\Application Support\Plex Media Server\Plug-in Support\Data\com.plexapp.agents.hama

   . For windows it should be in C:\Users\XXXXX\AppData\Local\Plex Media Server\Plug-ins\Data\com.plexapp.agents.hama

Here is the feedback logs description and one example of every feedback:

   . AniDB.htm        

        - Aid: 00002 No poster present

   . Anime-list.htm    ScudLee;s XML file feedback

       - Aid: 00002 '3x3 Eyes' AniDB and anime-list are both missing the studio

       - Aid: 00002 '3x3 Eyes' AniDB have studio 'xxx' and XML have 'yyy'

       - Aid: 00002 '3x3 Eyes' has no matching tvdbid ('OAV') in mapping file

       - Aid: 00002 anime-list is missing the anidbid


   . Themes.htm       Plex TV theme support whose filename is based on TheTVDB.com id and last 30s max. Wouldn't mind somebody a package will all complete mp3 theme songs whose name would be the AniDB ID (to account for the seasons different songs)...

        - Aid: 00002 '3x3 Eyes' tvdbid: 70973 '3x3 Eyes' Missing theme song 3x3 Eyes' No English poster

        - aid: 00002 tvdbid: 70973 '3x3 Eyes' Overview Empty

        - aid: 00002 tvdbid:70973 s1e1 Overview Empty



On my debian box it's located here: /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems

I only see anime-list.htm and TVDB.htm in there though

I gave the Hama Movie scanner a whirl but it didn't pick up very many of my films.

I then updated from git today and re-ran the scan but nothing changed.. except when I hit refresh on the movie itself the metadata updated.

I've had other agents behave this way as well so I'm guessing something outside the agent or maybe plain old user error

Aside from the snag above everything worked out well.. Good job :)


Thanks for giving the path on your box and for the nice feedback :D

It only create the logs if needed. i wanted to provide a way to feedback info easily to update databases so the users in OCD update the databases;)

Would you mind posting some of the movie titles and the filename associated so i try to reproduce?

Also, if you have (Implementable) feature requests... 


I retested it and after a few manual name fixes, poorly named on my part, it picked up just about everything.

The only film it still can't find is Rao Den Jun'ai no Sho and for some films like Patlabor 1/2, Inuyasha, Tenchi Muyou and the two Evangelion films it's using the same cover art even though I have the AniDB > TVDB set in the config.

Raoh Den Junai no Sho - Director's Cut.mkv  (I've tried manual searches and did find it on TVDB through my browser but can't for the life of me get it to pick it up)

The only thing changed since the previous attempt has been a few PMS builds... one which had the new scanner so maybe that made the difference.

Can't think of anything more to add... you're pulling in all the data I typically look for in a series/movie.


The TVDB is a database for TV series, not movies. It therefore cannot gather info that TheTVDB will not have, so no poster from thetvdb.

They can be included if anidb sets them as specials,and must be labeled as such.

For "Rao Den Jun'ai no Sho"  Anidb names it as S01e01 not a special from a serie.

did you try to label it as "Raoh Den Junai no Sho s01e01 [director's cut].mkv"

I do recommend BABS scanner...


TVDB has it listed as a special which is why I thought it would get picked up


I'm using BABS as my scanner

I'm sure if I rename it to the english name it'll get picked up


The agent uses Anidb numbering , with a translation table to get the posters and episode summary from thetvdb and correct episodes mapped differently....

If you name it "Shin Kyuuseishu Densetsu Hokuto no Ken Raou-den Jun`ai no Shou " or "Fist of the North Star 1 Legend of Raoh - Death for Love" (or any anidb matching title for that serie) with"s01e01.mkv" it should be recognised

I went on AniDB to find the anidb animeId [3038], then to the tvdb serie [id 79156] where it was showing as special (s00e05 with tvdb ep id 2145591)...

I went to github file [https://raw.github.com/ScudLee/anime-lists/master/anime-list-master.xml] and saw after searching:

Shin Kyuuseishu Densetsu Hokuto no Ken Raou-den Jun'ai no Shou


There is a first mapping where s00e01 in AniDB is mapped to S00e00 in TheTVDB.com

If you label the ep S01e01 it would be mapped correctly (to TheTVDB serie id 79156 episode s00e05)



Hi there tried to use this on Synology NAS (DS111 v4.3-3810).

The Plex media server works perfectly except when looking at Anime where it's completely lost. Hence I tried to use HAMA which really sounds great.

I did to place folder Hama.bundle with SSH root session into the following directory: 

/volume1/Plex/Library/Application Support/Plex Media Server/Plug-ins

I made sure owner and group owner of file were correctly set.

But I do not see the agent in Plex web?

Am I missing a step here?


For others I downloaded latest version from Git and Agent shows in plex web.

In the meantime I don't know if I did something wrong but I lost my sections in the battle.. :S

Anyway thanks for this i can't wait to see my anime list finally looking good.


Please use "Plex folder in File Station" > Library > Application Support > Plex Media Server > Plug-ins > Hama.bundle > Contents > Code / Resources / Strings / Info.plist / DefaultPrefs.json.

Restart plex afterwards

I recommend BABS scanner for absolute mode (1 season anime)



is ther any plan to support multi language? i do have some shows title in japanese and/or chinese. if i do a manual search on anidb and i can find the show. the name i have is listed under Synonym. but HAMA doesn't seems to pick the show up.


It does support the language selection order on displayed titles but search all fields in qll languages (main titles, synonyms, etc...)

You can read the python source code as i kept all in a single file to know how it does... 

Can you give me the filename and anidb id ? at least i can look at why it doesn't find it...


the show i have is http://anidb.net/perl-bin/animedb.pl?show=anime&aid=7275

i tried the both japanese title and chinese title. both didn't find any resoults, but when i tried the english title it did find it. also. under the search language. only option for me is 'english', the TVDB search listed other language search options. is that normal?



in the __init__.py you can specify the language display order in french, english, romaji (x-jap), i didn't try kanji (ja) yet, but it should display it.

Hama search all fields [see below for xml extract] so you don't have to specify a language but dual byte characters are not supported currently, but it is not by design...

Thetvdb agent support searching dual byte characters like "よんでますよ, アザゼルさん." but cannot apply the method to HAMA, since it uses json...

Anidb agent seem to find the anime the same way...

よんã§ã¾ã™ã‚ˆ, アザゼルã•ã‚“.
Yondemasu yo, Azazel-san.
You`re Being Summoned, Azazel-san.
Призываю, Ðзазель-Ñан.
ЯвиÑÑŒ, Ðзазель OVA
thetvdb show kanji as:
Searching for matches for {'show': '\xe3\x82\x88\xe3\x82\x93\xe3\x81\xa7\xe3\x81\xbe\xe3\x81\x99\xe3\x82\x88, \xe3\x82\xa2\xe3\x82\xb6\xe3\x82\xbc\xe3\x83\xab\xe3\x81\x95\xe3\x82\x93.', 'id': '19835', 'year': '2012'}
anidb show the title incorrectly yet find the info... i need to find how it does and reproduce in my code


love the plugin, works great. now if only it used the screenshot thumbnails that already is on theTVTB aswell it would be close to perfect in my book


hi ZeroQI, i've been playin around with the code over the weekend and i think i found an issue. i don't know if it's intentional or not.

in your getMainTitle(self, titles, LANGUAGE_PRIORITY) class, you have line

if type in ['official', 'main', None]  and lang in LANGUAGE_PRIORITY:             langTitles [ LANGUAGE_PRIORITY.index(lang) ] = title.text #type==none is for mapping file language

it cause the display title always come back as offical or main, so if i want anyother lanurage as displaying title, say 'ja' or 'zh-Hans' it will default back to 'offical' or 'main' title

so i removed the first part (or change 'and' to 'or') and it works like a charm. don't know if it helps or not. thanks for the great work!

def getMainTitle(self, titles, LANGUAGE_PRIORITY) is used for getting the titles for series and episodes according choosen priority. priority can contain any number of languages
   . SERIE_LANGUAGE_PRIORITY = [ 'x-jat', 'en']
   . EPISODE_LANGUAGE_PRIORITY = [ 'en', 'x-jat']
langTitles = array contining LANGUAGE_PRIORITY title order, original title, choosen title. the title is selected from the first available:
  . langTitles [ LANGUAGE_PRIORITY.index(lang) ] is the serie (main or original) or episode title, in a language selected
  . langTitles [ len(LANGUAGE_PRIORITY) ] is main title for serie OR episode title if it was empty but no language check, when no other title in selected language exist, a chinese serie for exemple
  . langTitles [ len(LANGUAGE_PRIORITY) +1] is the title selected according to the language order, so the first not empty from the above variables
i take main or official title only so i don't use a synonym or short if an official or main title exist. that is the desired feature
your solution would allow any official or main title not in the language priority to be inserted in langTitles [none] (since rank would not match) possibly adding it at the end...
Are you saying for other languages ('ja' or 'zh-Hans'), a title can exist without main or official title on anidb?
Could you please tell me what was happening before the modification, and on which serie?
That way i can look at the anidb xml for the title and make sure nothing gets broken, and update the source on github... 


Hey ZeroQi, this is great! I really liked this agent initially but was too used to having episode summaries and theme music for my anime like my other shows. i'm gonna download today and start it on my 4000+ episode library! (Most of it's labeled for tvdb, but if it works, I'll run it through automator or something since it follows anidb numbering.)

Does this also capture genres and tags and load it into the series info? More ways to filter would be awesome.

Anyhow, stoked and really appreciative, I tried to make sense of it all but quickly got dazed and confused, thanks for the hard work!


Yes it does capture genres and tags, producer etc... and you can sort per tag or year, etc...

It supports all titles from anidb and uses the xml from anidb.net metadata plugin to link anidb to thetvdb to get episode summaries and normalised posters as anidb is very bad for that... It does support theme music when plex have it, based on the tvdbid serie id, so no different music per season.

I could implement full length or 30s length indexed on the anidb id but i would need a solid base of theme music to rename and start developing, but as the plugin is not widespread, and i have no such database, i am not pushed for that at the moment... I could start with an anime dump of the plex mp3 db if somebody have one...


So far I tested this on two shows, Hack//Sign and Accel World and posters, series info, ep summaries are perfect and noticed that a collection was started for Hack which is a cool feature. But, categories/tags aren't being mapped to the genre field unless I missed something and theme music is missing.

I can upload logs if needed.


Thanks for the detailed feedback.

movie collection exist as a functionality under the xbmc plugin so just had to use the same xml files. I also tried using the AniDB related anime field to also link series together, but is not perfect (anidbCollectionMapping)... 

Accel World serie page: GENRENovelFutureAction

It does pull the genres for me....

Make sure to use the latest XML files in Plex\Library\Application Support\Plex Media Server\Plug-ins\Hama.bundle\Content\Ressources\Anime-lists
   . anime-titles.xml             The AniDB offline title database for offline search
   . anime-list-master.xml    The AniDB to TVDB mapping to get the posters and episode summaries
   . anime-movieset-list.xml Create collection of Anime MOVIES only since XBMC cannot do collection of series (WHY???)

I am unsure if many are aware, but i built an HTML log as part of HAMA to allow to update TheTVDB, the XML files or the theme songs easily for the benefit of all using the databases, not only HAMA...

They are located (for me) at Plex\Library\Application Support\Plex Media Server\Plug-in Support\Data\com.plexapp.agents.hama\DataItems:

Search  error_log[' in the source for the logs created
   . TVDB.htm           error_log['TVDB'].append("tvdbid: %s '%s' No English poster " ...
error_log['TVDB'].append("aid:%s tvdbid:%s %s Overview Empty" ...
   . AniDB.htm          error_log['AniDB'].append("Aid: %s No poster present"...
  . anime-list.htm      error_log['anime-list'].append("Aid: %s '%s' AniDB and anime-list are both missing the studio"
                                error_log['anime-list'].append("Aid: %s '%s' AniDB have studio '%s' and XML have '%s'"...
error_log['anime-list'].append("Aid: %s anime-list is missing the anidbid"
   . themes.htm        error_log ['themes'].append("Aid: %s '%s' tvdbid: %s '%s' Missing theme song %%20theme%%20song%%20-%%20'%s%%20-%%20%s.mp3''>Upload"
If this log is showing the theme song is missing, please find it and cut to 30s exactly, then upload to Plex servers.
The alternative needs me having a database of anime theme songs indexed by AniDB id which would therefore manage theme songs per anime season, but i need a dump of at least 500 to be worthwhile. it could look locally, then on plex if not present
These logs avoid duplicates, so you can process all the lines without fear of duplicates...
Example of the different log files:

Theme song html:

Aid: 00002 '3x3 Eyes' tvdbid: 70973 '3x3 Eyes' Missing theme song Upload Restrictions
Aid: 05426 'Aa! Megami-sama! Tatakau Tsubasa' tvdbid: 78920 'Ah! My Goddess' Missing theme song Upload Restrictions
Aid: 05533 'Hatenkou Yuugi' tvdbid: 85611 'Hatenkou Yugi' Missing theme song Upload Restrictions
Aid: 06517 'Kidou Senshi Gundam Unicorn' tvdbid: 142601 'Mobile Suit Gundam Unicorn' Missing theme song Upload Restrictions
Aid: 00003 '3x3 Eyes: Seima Densetsu' tvdbid: 70973 '3x3 Eyes' Missing theme song Upload Restrictions
Aid: 00186 'Aa! Megami-sama! Chicchaitte Koto wa Benri Da ne!' tvdbid: 79411 'The Adventures of Mini Goddess' Missing theme song Upload Restrictions
Aid: 08963 'Saint Seiya Omega' tvdbid: 257997 'Saint Seiya Omega' Missing theme song Upload Restrictions
Aid: 09551 'Arata Kangatari' tvdbid: 268059 'Arata The Legend' Missing theme song Upload Restrictions
Aid: 09510 'Dansai Bunri no Crime Edge' tvdbid: 267649 'The Severing Crime Edge' Missing theme song Upload Restrictions
Aid: 06470 'Saint Seiya: The Lost Canvas - Meiou Shinwa' tvdbid: 72775 'Saint Seiya' Missing theme song Upload Restrictions

XML file html:

Aid: 00002 '3x3 Eyes' AniDB and anime-list are both missing the studio
Aid: 08963 'Saint Seiya Omega' AniDB and anime-list are both missing the studio
Aid: 00343 'Saint Seiya: Meiou Hades Juuni Kyuu Hen' AniDB and anime-list are both missing the studio
Aid: 09186 'Karneval (2013)' AniDB and anime-list are both missing the studio
Aid: 02429 'Yakitate!! Japan' AniDB and anime-list are both missing the studio

TheTVDB html file:

aid:2 tvdbid:70973  s1e1Overview Empty
aid:5533 tvdbid:85611 s1e7 Overview Empty
aid:5533 tvdbid:85611 s1e8 Overview Empty
aid:5533 tvdbid:85611 s1e9 Overview Empty
aid:69 tvdbid:81797 s0e0 Overview Empty
aid:69 tvdbid:81797 s0e22 Overview Empty
aid:69 tvdbid:81797 s0e24 Overview Empty
aid:69 tvdbid:81797 s16e11 Overview Empty
aid:6517 tvdbid:142601 s1e7 Overview Empty
aid:4880 tvdbid:79824 s0e4 Overview Empty
aid:4880 tvdbid:79824 s0e5 Overview Empty
aid:4880 tvdbid:79824 s6e7 Overview Empty
aid:4880 tvdbid:79824 s6e8 Overview Empty
aid:4880 tvdbid:79824 s13e49 Overview Empty
aid:4880 tvdbid:79824 s14e5 Overview Empty
aid:4880 tvdbid:79824 s14e6 Overview Empty
aid:4880 tvdbid:79824 s14e7 Overview Empty
aid:4880 tvdbid:79824 s14e8 Overview Empty
aid:3 tvdbid:70973 s1e1 Overview Empty