Code Monkey home page Code Monkey logo

hama.bundle's Introduction

Absolute Series Scanner (ASS):

If all video files are showing in plex at the right season and episode number, the scanner did its job. Please view ASS readme here: https://github.com/ZeroQI/Absolute-Series-Scanner/blob/master/README.md

HTTP Anidb Metadata Agent (HAMA)

HAMA was initially created By Atomicstrawberry until v0.4 [2015-08-31] included. Here are HAMA agent features:

* Both Movies and Series Agent
* AniDB ID to TVDB/TMDB ID matching (with studio and episode mapping list) with ScudLee's xml mapping file
* Posters from TVDB (assign a poster to each anidb id in anidb to tvdb mapping file to avoid poster duplicates)
* TVDB episode screenshots
* Episode summary (in English only) courtesy of TVDB through ScudLee's XML episode mappings
* Uses studio from mapping file then AniDB (as often missing from AniDB)
* Search part entirely local through AniDB HTML API database file anime-titles.xml
* Separate language order selection for the series name and episode titles in Agent Settings (Supports Kanji characters in folders, filenames, titles)
* Warnings in html report files (no poster available, episode summary empty, TVDB id not in mapping file) to allow the community to update more easily the mapping XML or TVDB, list of missing episodes
* Collection mapping from ScudLee's movie collection ammended with AniDB RelatedAnime field
* Unique posters by using the anidbid rank in the mapping to rotate the posters
* when a serie is not found in AniDB, search TVDB and TMDB automatically
* Trakt scrobbling supports Hama guids

Local Media Assets

This Plex written agent is responsible for loading from the user folder the following local data if present:

  • Subtitles
  • Movie trailer
  • Theme song
  • Background
  • Serie poster
  • Serie Season poster

Its tickbox is located in Settings > Server > Agents > Shows > HamaTV | HamaMovies > "Local Media Assets (TV|Movies)"

Put this agent before HAMA to prioritize local files. Here is a table summarizing naming conventions:

Data type Source Comment
fanart art/backdrop/background/fanart-1.ext -1 can be ommited
Serie poster Serie folder: Show name-1/folder/poster/show.ext (jpg, jpeg, png, tbn)
Season poster Season folder: Season01a.ext (jpg, jpeg, png, tbn)
Banner banner/banner-1.jpg (jpg, jpeg, png, tbn)
Theme song theme.mp3 (mp3)
Subtitles file name.ext (srt, smi, ssa, ass)
Trailers MovieName-Trailer.ext or in "Trailers" folder
Plexignore files .plexignore

https://support.plex.tv/hc/en-us/articles/200220677-Local-Media-Assets-Movies

Subtitle files are supported through that

"Local Media Assets (Movies)" in the HamaMovies agent list, any files you name as MovieName-Trailer.ext or place in a 'Trailers' folder inside the movie's folder are picked up by Plex as trailers. I've done this for a few things where I have the trailer as file, but I agree - it'd be even better if we can get Hama to add any S0E2xx as a 'trailer' extra too.

Plex's trailer feature also supports displaying trailers from a URL - the metadata agent just needs to add the relevant URL at which Plex can reach the trailer. If we added support for this, it'd mean that user who don't have the trailer as a file can also benefit from having the trailer available.

Metadata sources

I use AniDB HTTP title database file and ScudLee's XML files with his approval. A new ScudLee fork is used for HAMA:

ScudLee's XMLs: https://github.com/Anime-Lists/anime-lists ScudLee's XBMC AniDB mod agent: http://forum.xbmc.org/showthread.php?tid=142835&pid=1432010#pid1432010

* anime-titles.xml        AniDB HTTP API, contain all anime titles, downloaded from http://anidb.net/api/anime-titles.xml.gz
* anime-list-master.xml   ScudLee's AniDB to TVDB xml mapping file, give studio and episode mapping list for te episode overview, downloaded from [here](https://raw.github.com/ScudLee/anime-lists/master/anime-list-master.xml)
* anime-movieset-list.xml ScudLee's movie collection (Because XBMC only supports movie collection and the files were developed for AniDB mod XBMC plugin), downloaded from [here](https://raw.github.com/ScudLee/anime-lists/master/anime-movieset-list.xml)

HAMA downloads the XMLs from the internet (using Plex cache for 1 week), then local, then resource folder. For pictures and theme songs, it takes from the cache first, then the internet

The XMLs are downloaded (cached) and a copy is saved In the agent data folders and used in case of connection issues

* anime-titles.xml:	         http://anidb.net/api/anime-titles.xml.gz [API: http://wiki.anidb.net/w/API]
* anime-list-full.xml:	 Maps the AniDB ID to the TVDB ID, providing studio,episode mapping matrix, tmdb/tmdb id
* anime-movieset-list.xml: 	 Allows movies to be grouped together
* tvdb banner and serie xml: episode titles and summaries, screenshot, posters
* anidb serie xml:           Serie information, poster
* Plex theme song:           Serie theme song

Hama creates specific html log files with links to facilitate updating the metadata databases used, for everyone's benefits and even list missing episodes:

  • [...]/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/AniDB posters missing.htm - N/A
  • [...]/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/AniDB summaries missing.htm
  • [...]/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/anime-list anidbid missing.htm
  • [...]/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/anime-list studio logos.htm - anidbid: 266 | Title: 'Case Closed' | AniDB and anime-list are both missing the studio
  • [...]/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/anime-list tvdbid missing.htm
  • [...]/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/TVDB posters missing.htm
  •   - <a href='http://thetvdb.com/wiki/index.php/Posters' target='_blank'>Restrictions</a><br />
    
  •   - no example
    
  • [...]/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/TVDB season posters missing.htm - tvdbid: 307112 | Title: 'Hybrid x Heart Magias Academy Ataraxia'
  • [...]/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/TVDB summaries missing.htm
101621 missing summaries: ['s0e1', 's0e2', 's0e3', 's0e4', 's0e5', 's0e6', 's0e7', 's0e8', 's0e9', 's0e10', 's0e11', 's0e35', 's1932e0', 's1932e1', 's1932e3', 's1932e4', 's1932e5', 's1932e6', 's1932e7', 's1932e8', 's1932e9', 's1932e10', 's1932e11', 's1933e12', 's1933e13', 's1933e14', 's1933e15', 's1934e1', 's1934e2', 's1934e3', 's1934e6', 's1934e7', 's1934e8', 's1934e9', 's1934e10', 's1934e11', 's1934e12', 's1934e13', 's1935e1', 's1935e2', 's1935e3', 's1935e4', 's1935e5', 's1935e8', 's1935e10', 's1936e2', 's1936e4', 's1936e5', 's1936e6', 's1936e7', 's1936e8', 's1936e11', 's1937e1', 's1937e2', 's1937e9', 's1937e10', 's1937e11', 's1937e12', 's1938e1', 's1938e2', 's1938e3', 's1938e4', 's1938e5', 's1938e6', 's1938e7', 's1938e8', 's1938e9', 's1938e10', 's1938e12', 's1939e3', 's1939e4', 's1939e6']
  • [...]/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/Plex themes missing.htm - Restrictions
    - tvdbid: 79796 | Title: 'Air Gear' | Upload
  • [...]/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/Missing episodes.htm - anidbid: 4196 | Title: 'Air Gear' | Missing Episodes: ['s1e1', 's1e2', 's1e3', 's1e4', 's1e5', 's1e6', 's1e7', 's1e8', 's1e9', 's1e10', 's1e11', 's1e12', 's1e13', 's1e14', 's1e15', 's1e16', 's1e17', 's1e18', 's1e19', 's1e20', 's1e21', 's1e22', 's1e23', 's1e24', 's1e25']
    - tvdbid: 78914 | Title: 'Full Metal Panic!' | Missing Episodes: ['s3e1', 's3e2', 's3e3', 's3e4', 's3e5', 's3e6', 's3e7', 's3e8', 's3e9', 's3e10', 's3e11', 's3e12', 's3e13']
  • [...]/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/Missing Episode Summaries.htm - tvdbid: 81797 | Title: 'One Piece' | Missing Episode Summaries: ['753']
  • [...]/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/Missing Special Summaries.htm - tvdbid: 83322 | Title: 'A Certain Magical Index' | Missing Special Summaries: ['s0e1', 's0e2', 's0e3', 's0e4']
  • [...]/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/Missing Specials.htm - anidbid: 8166 | Title: 'A Bridge to the Starry Skies' | Missing Episodes: ['s0e2', 's0e1', 's0e3', 's0e5', 's0e4', 's0e8', 's0e7', 's0e6', 's0e9']

I did change the metadata id from the Anidb ID to "anidb-xxxxx" with xxxxx being the anidbid. You can use anidb.id file in series or Series/Extras folder or in the serie name " [anidb-xxxxx]" at the end of serie folder name, works also for tvdb " [tvdb-xxxxxxx]". Older agents before that need to re-create the library to have a metadata.id beginning with "anidb-"

Agents' update() method is called only when adding new items to your library or when doing a "Force Refresh" or a "Fix Incorrect Match".

Configuration

Agents settings will have the Metadata source for each field customizable, but not all fields exists on all sources. Fields shared by both series and episodes can use '|' to split the series from the episode part Sources are:

  • AnimeLists: collections
  • 'AniDB'
  • 'TheTVDB'
  • 'MyAnimeList'
  • 'FanartTV'
  • 'OMDb': API key in agent settings needed
  • 'TheMovieDb'
  • 'Plex': themes
  • 'AnimeLists'
  • 'tvdb4': season posters
  • 'TVTunes': themes
  • 'Local': collections if grouping folder present

The titles priority can have the usual languages 'en', 'fr', 'sp', 'ja', etc... and the following for asian languages The titles will be in the priority indicated first and secondarily by the metadata source

Languages codes AniDB TheTVDB
chinese (unspecified) zh zh
chinese (traditional) zh-Hant N/A
chinese (simplified) zh-Hans N/A
chinese (cantonese) zh-x-yue N/A
chinese (mandarin) zh-x-cmn N/A
chinese (taiwanese) zh-x-nan N/A
japanese ja ja
japanese (transcription) jap N/A
korean ko ko
korean (transcription) x-kot N/A

Installation

ASS scanner is installation is hightly recommended: Place https://raw.githubusercontent.com/ZeroQI/Absolute-Series-Scanner/master/Scanners/Series/Absolute%20Series%20Scanner.py inside Plex main folder / "Scanners" / "Series" (folder needs creating).

To install Hama, it's like other Plex agents: Get the latest source zip in https://github.com/ZeroQI/Hama.bundle > "Code" > "Download Zip". Inside the Hama.bundle-master.zip you will have the folder "Hama.bundle-master" to rename to "Hama.bundle" and place in Plex plugin folder [https://support.plex.tv/hc/en-us/articles/201106098-How-do-I-find-the-Plug-Ins-folder-] or Plex main folder / "Plug-ins"

Plex main folder location:

* '%LOCALAPPDATA%\Plex Media Server\'                                        # Windows Vista/7/8
* '%USERPROFILE%\Local Settings\Application Data\Plex Media Server\'         # Windows XP, 2003, Home Server
* (userdir)/library/Logs/Plex Media Server/PMS Plugin Logs                   # Mac OS
* '$PLEX_HOME/Library/Application Support/Plex Media Server/',               # Linux
* '/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/', # Debian,Fedora,CentOS,Ubuntu
* '/var/lib/plex/Plex Media Server/',                                        # Arch
* '/usr/local/plexdata/Plex Media Server/',                                  # FreeBSD
* '/usr/pbi/plexmediaserver-amd64/plexdata/Plex Media Server/',              # FreeNAS
* '${JAIL_ROOT}/var/db/plexdata/Plex Media Server/',                         # FreeNAS
* '${JAIL_ROOT}/Plex Media Server/Plug-ins',                                 # FreeNAS 11.3 #skmagiik
* '/c/.plex/Library/Application Support/Plex Media Server/',                 # ReadyNAS
* '/share/MD0_DATA/.qpkg/PlexMediaServer/Library/Plex Media Server/',        # QNAP
* '/volume1/Plex/Library/Application Support/Plex Media Server/',            # Synology, Asustor
* '/raid0/data/module/Plex/sys/Plex Media Server/',                          # Thecus
* '/raid0/data/PLEX_CONFIG/Plex Media Server/'                               # Thecus Plex community    

Hama auto-creates some folders in the agent data folder ("Plug-In Support/Data/com.plexapp.agents.hama/DataItems")

  • "Logs"
  • "AniDB"
  • "Plex"
  • "OMDB"
  • "TMDB"
  • "TheTVDB"
  • "TheTVDB/banner/graphical"
  • "TVDB/episodes"
  • "TVDB/fanart/original"
  • "TVDB/json"
  • "TVDB/posters"
  • "TVDB/seasons"
  • "FanartTV"

I use these folders to cache all pictures, theme songs, since they are not cached by Plex. This way, even if you recreate the whole Plex anime folder entry, you do not have to download the same file again.

Synology DSM7- SSH and copy in /volume1/@apphome/PlexMediaServer/Plex Media Server

Specific instal procedures go in the wiki:

Install issue under linux are generally permission issues...

  • OpenMediaVault (Debian): "sudo chmod 775 -R /var/lib/plexmediaserver"
  • Synology:"chown -R plex:users" + "chmod -R 700"
  • FREENAS: chmod -R 777 /var/db/plexdata/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/.
  • if having: File "bundles-release/Framework.bundle-dist/Contents/Resources/Versions/2/Python/Framework/components/storage.py", line 81, in save IOError: [Errno 13] Permission denied: '/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/._StoredValues'

touch /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/._StoredValues

chmod 777 /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/._StoredValues

chown plex:plex /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/._StoredValues

service plexmediaserver restart

Troubleshooting:

If you ask for something already answered in the readme, or post scanner issues on the agent page or vice-versa, please donate (will be refered to as the RTFM tax)

If files and series are showing in Plex GUI with the right season, the scanner did its job If you miss metadata (serie title wrong, no posters, summary, wrong episode title or summaries, ep screenshot, etc...), that is the Agent doing.

If posters are missing, check that all the data folders are created and logs show no right issue. If subtitles are not loaded, check Settings > Server > Agents > Shows > HamaTV and please tick the "Local Media Assets (TV)" as is not by default.

To avoid already solved issues, and make sure you do include all relevant logs in one go, please do the following:

  • delete the library
  • stop plex
  • Update to the latest Absolute Series Scanner (master branch), Hama (Master branch) and Plex
  • deleting all Plex logs leaving folders intact
  • restart Plex
  • re-create the library
  • including all the following logs: (location: https://support.plex.tv/hc/en-us/articles/200250417-Plex-Media-Server-Log-Files)
    • [...]/Plex Media Server/Logs/PMS Plugin Logs/com.plexapp.agents.hama.log (Agent logs)
    • [...]/Plex Media Server/Logs/PMS Plugin Logs/com.plexapp.system.log (show why the agent cannot launch)
    • [...]/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/_Logs/series_root_folder.filelist.log (episodes info)
    • [...]/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/_Logs/series_root_folder.scanner.log (episodes info)
    • [...]/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/_Logs/(Library_name/)series_root_folder.agent-search.log (guid assignment)
    • [...]/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/_Logs/(Library_name/)series_root_folder.agent-update.log (metadata update)
    • Screen capture to illustrate if needed. Above logs are still mandatory

Support thread for agent:

Bugs Fixes

  • #245 Anidb poster priority to fix

Feature Requests: ([X] to be included in next version)

Note:

  • to be included in next version
  • items removed from list once resolved in current code
  • Donation link

hama.bundle's People

Contributors

beeequeue avatar brutuz avatar cameronkinsella avatar cianh avatar cpu-blanc avatar endofline369 avatar gigatype-r avatar ixalsera avatar kavenc avatar kezxo avatar kingj avatar klemm89 avatar korewakiyo avatar kurtzpt avatar magellansails avatar mdcx avatar natyusha avatar nickduijndam avatar ohsc avatar oratorian avatar praxinator avatar samuelwn avatar soitora avatar sven-7 avatar toroidal-code avatar unitil avatar v3n avatar washigeri avatar xalaxis avatar zeroqi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hama.bundle's Issues

Error in log calling for 'TMDB' folder

I've been having trouble getting the metadata loaded for 'Joker Game' and I've been looking through the logs. The TVDB API seems to have the episode descriptions in it, but it's not making it into Plex.

I also noticed that there was a line stating 'TMDB' directory did not exist. Once I created it, it placed a poster for the show in it immediately.

Hama Log:
hama log.zip

Series descriptions have invalid links

Hey ZeroQI,

Looks like something changed, is being changed, or went wrong in the AniDB API for series description text.

I say 'went wrong' as the URLs are invalid "http://anidb.net/perl-bin/https://anidb.net/ch79575". And it doesn't even have the text for an '' html tag for us to leave in.

EX: http://api.anidb.net:9001/httpapi?request=anime&client=hama&clientver=1&protover=1&aid=11893

<description>On a continent ruled by sword and magic called Kunaaan, there are three kingdoms with a 
fragile power balance that could spell disaster and war at any moment. Another power, the evil dragon 
Daganzord, also resides on the continent, and no one is powerful enough to stop him from spreading 
destruction in his wake. Bairo and Kismitete, and a party of wizards attempted to seal the dragon, but 
were foiled. This event becomes known thereafter as the Balbagoa Tragedy. Bairo and Kismitete`s son 
http://anidb.net/perl-bin/https://anidb.net/ch79575 is saved by http://anidb.net/perl-bin/https://anidb.net/ch79568, 
and Hiiro swears to avenge his parents` deaths and trains himself with the sword. When Hiiro turns 16, 
he sets out on a journey to slay the dragon, and Gill accompanies him, having no choice. Along the way, 
they meet many types of people and gain companions on their journey.
Source: ANN</description>

HAMA Log Improvements

A few things on the Logs:

  1. If something shows up in one of the logs, let's say you start watching a show, don't like it, and delete it, but if there were any missing episodes (or anything that triggers a line in the log), they will not be deleted. I regularly delete my HAMA logs and run a full refresh, but I've noticed this popping up. I don't think this is a bad thing. Especially if I'm moving things in and out of the library for testing/cleaning/etc...
  2. This might be too much, but you'll notice the logs will have a TON of missing episodes if TVDB or AniDB has populated the shows out in advance. I feel like it tends to be a little misleading. Is there any way we could have those marked as unaired? Most things in my log, I'm not actually missing. They just don't exist yet. We should have access to the airdate, I would think.

screen shot 2016-07-31 at 11 47 13 pm

1. AniDB lines seem to be reverse numerical/alphabetical in their lines. TVDB all seem to be fine.

Multiple threads optimization

We should optimise to make the agent faster and key functions separate in logging if possible by using the following two directives
@parallelize
@task

From the framework.bundle:

The @parallelize and @task decorators are designed to be used in conjunction with each other -
@parallelize decorates a function that defines one or more @task functions. A ThreadKit-specific
lock is maintained so only one parallelizer can be created at any time. When the parallelizer
has run, the tasks are queued for dispatch to the runtime's task pool, and the calling thread is
blocked until all tasks have completed.

TVB Source: https://github.com/plexinc-agents/TheTVDB.bundle/blob/master/Contents/Code/__init__.py

However it look like the @task precede a "def function (var)" type of declaration so we might have to create "def UpdateEpisodes()" or similar to manage the multi threaded task and another definition inside the loop for the task part... will need beginning and end logged line for parallelize and single line for tasks to keep logging accurate

Compatibility with Plex Trakt scrobbler

Can it be possible to add Trakt Plex Scrobbler compatibility ?
Because Trakt is so useful, but the TPS isn't compatible with HAMA and on the issues tracker of TPS, the issue is stagnating...
Please !
Thank you,
Arno

[Enhancement] "Load Local Metadata" Option

Lets see if we want to do this.

Could include loading of locally seen jpg files in the parent series folder.
EX from JMM:

2016-07-25 00:18:51 file: 'D:\Videos\Animehama\Gekijouban Bleach Fade to Black Kimi no Na o Yobu [tvdb3-74796-s0e5]\fanart.jpg', ext: 'jpg' not in video_ext
2016-07-25 00:18:51 file: 'D:\Videos\Animehama\Gekijouban Bleach Fade to Black Kimi no Na o Yobu [tvdb3-74796-s0e5]\poster.jpg', ext: 'jpg' not in video_ext
2016-07-25 00:18:51 file: 'D:\Videos\Animehama\Gekijouban Bleach Fade to Black Kimi no Na o Yobu [tvdb3-74796-s0e5]\season01-poster.jpg', ext: 'jpg' not in video_ext

And even see about loading support media stubs with this option as well.

Local images would also be loaded at top priority even if tvdb/tmdb/anidb images are loaded.

Ending/Openings with non-numbers.

So for Tokyo Ghoul (at least) they called them "Ending 1a" and such, which breaks the process.

I fixed it (sorta, just to throw out the info) by modifying the treatment of Endings/Openings as follows:
if epNumType=="3":
testdig = ep_title[7:]
if testdig.isdigit():
if ep_title.startswith("Ending"): epNumVal = str( 150 + int(ep_title[7:]) ) #int(epNum.text[1:] gives 103 for ed2 with 2 op before that
else: op_nb +=1
else:
epNumVal = str(150+10) #Will this make it error out?
Log.Debug("AniDB specials title - Season: '%s', epNum.text: '%s', epNumVal: '%s', ep_title: '%s'" % (season, epNum.text, epNumVal, ep_title) )

Should Season summary metadata be populated?

Since the "media.seasons[season].summary" exist, we should use the anidb summary as season summary if there is multiple seasons, but it means multiple anidb xml pull. maybe use an option in DefaultPrefs.json and disable by default

{
    "id"      : "GetAnidbSeasonSummary",
    "label"   : "Fetch AniDB serie summary to use as season summary",
    "type"    : "bool",
    "default" : "false"
  },

Episode images not being pulled for the tvdb/multi season section

Hi @ZeroQI,

It looks like we are missing the metadata load of episode pictures in the tvdb/multi season section. It only currently loads them when it hits the 'anidb-*' section.
Please add the if 'filename' section below into the "init.py" file at line 333.

...
            if 'EpisodeName' in tvdb_table[ep] and tvdb_table [ep] ['EpisodeName']: metadata.seasons[media_season].episodes[media_episode].title     = tvdb_table [ep] ['EpisodeName']
            if 'filename'    in tvdb_table[ep] and tvdb_table [ep] ['filename'] and tvdb_table [ep] ['filename'] != "":
              self.metadata_download (metadata.seasons[media_season].episodes[media_episode].thumbs, TVDB_IMAGES_URL + tvdb_table[ep]['filename'], 1, "TVDB/episodes/"+ os.path.basename(tvdb_table[ep]['filename']))
            if 'Director'    in tvdb_table[ep] and tvdb_table [ep] ['Director']:
...

Working under Linux Plex Media Server

Hi,

I'm using plex media server version 0.9.8.10 for linux, using the unRAID version to make it compatible with puppy linux.

After installing the server making sure everything is working as expected. I added this bundle under the Plugins folder. Added the xml files suggested on the readme as well.

After restarting the server I discovered that the plugin is not visible under the agents.

What am I missing?

Thanks

Check for best episode name

Not sure what exactly to title or call this.

Due to a difference in how AniDB and TVDB operate, AniDB will often go days without the real episode title populating. This is due to AniDB's admin/mod approval system. TVDB, on the other-hand, can be updated instantly by it's community.

Not sure if it's necessary, but could be neat. There could be a check for "If AniDB's title = 'Episode #' then use TVDB Episode #" until the next metadata pull. That way, people using AniDB for their mappings will still get an updated title as soon as possible. It's definitely possible that both aren't updated, but here is an example for the show 91 Days:

AniDB:
screen shot 2016-07-08 at 10 55 17 pm

TVDB:
screen shot 2016-07-08 at 10 55 29 pm

Just a thought I had as I've been adding some things today.

Content ratings need to get applied to AniDB entries

Here are the current facts...

(1) Currently, the code applies an "NC-17" rating if either of the'18 Restricted' or 'Pornography' genre tags are seen against the AniDB entry.

RESTRICTED_CONTENT_RATING    = "NC-17"
RESTRICTED_GENRE_NAMES       = [ '18 Restricted', 'Pornography' ]

(2) "NC-17" is a Movie rating and not a TV rating
https://en.wikipedia.org/wiki/Television_content_rating_systems#United_States
https://en.wikipedia.org/wiki/Motion_picture_rating_system#United_States

(3) Available content rating images in Plex.
image

(4) Plex Ratings grouped by (2) url listings

TV Movie Both ??
TV-Y G NR X
TV-Y7 PG Not Rated
TV-Y7-FG PG-13 Unrated
TV-G R
TV-PG NC-17
TV-14
TV-MA

(5) We are already pulling in the Content Rating from TVDB (if there is a tvdbid mapping available in the scudlee file/or already has a tvdb-XXX id) into "tvdbContentRating".
image

      if tvdbanime:
        tvdbanime = tvdbanime.xpath('/Data')[0]
        tvdbtitle, tvdbNetwork, tvdbOverview, tvdbFirstAired = getElementText(tvdbanime, 'Series/SeriesName'), getElementText(tvdbanime, 'Series/Network'), getElementText(tvdbanime, 'Series/Overview'  ), getElementText(tvdbanime, 'Series/FirstAired')
        tvdbContentRating = getElementText(tvdbanime, 'Series/ContentRating')
        tvdbGenre         = filter(None, getElementText(tvdbanime, 'Series/Genre').split("|"))

(6) Hentai mapping is added into the scudlee file but as there is no TVDB entries for this type of show, so he adds them in as such in the 'tvdbid'. So the 'tvdbid' variable should be populated with the string 'hentai'.

TYPES: (movie/OVA/hentai/[0-9]{1,7}/unknown)
  <anime anidbid="154" tvdbid="movie" defaulttvdbseason="1" episodeoffset="" tmdbid="" imdbid="tt0156887">
  <anime anidbid="83" tvdbid="movie" defaulttvdbseason="1" episodeoffset="" tmdbid="tt0193253" imdbid="">
  <anime anidbid="110" tvdbid="OVA" defaulttvdbseason="1" episodeoffset="" tmdbid="" imdbid="">
  <anime anidbid="174" tvdbid="hentai" defaulttvdbseason="1" episodeoffset="" tmdbid="" imdbid="">
  <anime anidbid="185" tvdbid="81073" defaulttvdbseason="1" episodeoffset="" tmdbid="" imdbid="">
  <anime anidbid="357" tvdbid="unknown" defaulttvdbseason="1" episodeoffset="" tmdbid="" imdbid="">

(7) IMDB & TMDB both have ratings possibly available as well.
IMDB:
image
TMDB:
image

Glitches with Specials

So far I have noticed:
Watching Normal episodes counting as watching the specials numbered the same and vice versa
Watching a special makes it infinitely replicate until it is marked as unwatched
Watching a Normal episode makes the special episodes infinitely replicate.

This all seems very strange. Are there any logs you might suggest or do you think it could be related to something to do with Plex instead?

Missing Metadata

I submitted to a mapping update to ScudLee's anime-list and he committed it a few days ago. It's current with Plex, but I'm still not seeing TVDB descriptions (they exist) filter down. It's pulling the artwork from TVDB just fine. Can anyone replicate?

Current in Scud-Lee:

 <anime anidbid="11169" tvdbid="72745" defaulttvdbseason="0" episodeoffset="2">
    <name>Cyborg 009 vs. Devilman</name>
  </anime>

The descriptions are in the XML from TVDB: http://thetvdb.com/api/A27AD9BE0DA63333/series/72745/all/en.xml

File List:

A:\Anime Series\Cyborg 009 VS Devilman\Cyborg 009 vs Devilman - 1 - Volume 1.mkv
A:\Anime Series\Cyborg 009 VS Devilman\Cyborg 009 vs Devilman - 2 - Volume 2.mkv
A:\Anime Series\Cyborg 009 VS Devilman\Cyborg 009 vs Devilman - 3 - Volume 3.mkv

ASS Log:

2016-06-08 17:51:36 file: 'A:\Anime Series\Cyborg 009 VS Devilman\anidb.id', ext: 'id' not in video_ext
2016-06-08 17:51:36 "Cyborg 009 VS Devilman [anidb-11169]" s0001e001 "Cyborg 009 vs Devilman - 1 - Volume 1.mkv"
2016-06-08 17:51:36 "Cyborg 009 VS Devilman [anidb-11169]" s0001e002 "Cyborg 009 vs Devilman - 2 - Volume 2.mkv"
2016-06-08 17:51:36 "Cyborg 009 VS Devilman [anidb-11169]" s0001e003 "Cyborg 009 vs Devilman - 3 - Volume 3.mkv"

Hama Log:

2016-06-08 17:38:41,862 (138c) :  DEBUG (logkit:13) - --- Update Begin -------------------------------------------------------------------------------------------
2016-06-08 17:38:41,862 (138c) :  DEBUG (logkit:13) - Update - metadata source: 'anidb', id: '11169', Title: 'Cyborg 009 vs. Devilman',([...], [...], True)
2016-06-08 17:38:41,907 (138c) :  DEBUG (logkit:13) - anidbTvdbMapping() - anidb: '11169', tvbdid: '72745', tmdbid: '', imbdid: '', studio: '', defaulttvdbseason: '0', name: 'Cyborg 009 vs. Devilman'
2016-06-08 17:38:41,924 (138c) :  DEBUG (networking:166) - Requesting 'http://tvthemes.plexapp.com/72745.mp3'
2016-06-08 17:38:42,187 (138c) :  ERROR (networking:217) - Error opening URL 'http://tvthemes.plexapp.com/72745.mp3'
2016-06-08 17:38:42,187 (138c) :  DEBUG (logkit:13) - metadata_download() - metadata_download - error downloading
2016-06-08 17:38:42,187 (138c) :  DEBUG (logkit:13) - Update() - TVDB - tvdbid: '72745', url: 'http://thetvdb.com/api/A27AD9BE0DA63333/series/72745/all/en.xml'
2016-06-08 17:38:42,187 (138c) :  DEBUG (logkit:13) - xmlElementFromFile() - url: 'http://thetvdb.com/api/A27AD9BE0DA63333/series/72745/all/en.xml', filename: 'TVDB/72745.xml'
2016-06-08 17:38:42,204 (138c) :  DEBUG (networking:166) - Requesting 'http://thetvdb.com/api/A27AD9BE0DA63333/series/72745/all/en.xml'
2016-06-08 17:38:42,483 (138c) :  ERROR (logkit:22) - An abs number has been found on ep (s1e45) after starting to manually place our own abs numbers
2016-06-08 17:38:42,483 (138c) :  INFO (logkit:16) - abs_manual_placement_worked: 'False', abs_manual_placement_info: '['s1e1 = abs 1', 's1e2 = abs 2', 's1e3 = abs 3', 's1e4 = abs 4', 's1e5 = abs 5', 's1e6 = abs 6', 's1e7 = abs 7', 's1e8 = abs 8', 's1e9 = abs 9', 's1e10 = abs 10', 's1e11 = abs 11', 's1e12 = abs 12', 's1e13 = abs 13', 's1e14 = abs 14', 's1e15 = abs 15', 's1e16 = abs 16', 's1e17 = abs 17', 's1e18 = abs 18', 's1e19 = abs 19', 's1e20 = abs 20', 's1e21 = abs 21', 's1e22 = abs 22', 's1e23 = abs 23', 's1e24 = abs 24', 's1e25 = abs 25', 's1e26 = abs 26', 's1e27 = abs 27', 's1e28 = abs 28', 's1e29 = abs 29', 's1e30 = abs 30', 's1e31 = abs 31', 's1e32 = abs 32', 's1e33 = abs 33', 's1e34 = abs 34', 's1e35 = abs 35', 's1e36 = abs 36', 's1e37 = abs 37', 's1e38 = abs 38', 's1e39 = abs 39', 's1e40 = abs 40', 's1e41 = abs 41', 's1e42 = abs 42', 's1e43 = abs 43', 's1e44 = abs 44']'
2016-06-08 17:38:42,483 (138c) :  DEBUG (logkit:13) - Update() - TVDB - tvdb_table: []
2016-06-08 17:38:42,483 (138c) :  DEBUG (logkit:13) - Update() - TVDB - Episodes without Summary: []
2016-06-08 17:38:42,500 (138c) :  DEBUG (networking:166) - Requesting 'http://thetvdb.com/api/A27AD9BE0DA63333/series/72745/banners.xml'
2016-06-08 17:38:42,713 (138c) :  DEBUG (logkit:13) - getImagesFromTVDB() - Loaded picture XML: 'http://thetvdb.com/api/A27AD9BE0DA63333/series/72745/banners.xml'
2016-06-08 17:38:42,713 (138c) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/fanart/original/72745-1.jpg', num: '1', filename: 'TVDB/fanart/original/72745-1.jpg'*
2016-06-08 17:38:42,714 (138c) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/fanart/original/72745-2.jpg', num: '2', filename: 'TVDB/fanart/original/72745-2.jpg'*
2016-06-08 17:38:42,714 (138c) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/posters/72745-1.jpg', num: '2', filename: 'TVDB/posters/72745-1.jpg'*
2016-06-08 17:38:42,716 (138c) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/posters/72745-2.jpg', num: '1', filename: 'TVDB/posters/72745-2.jpg'*
2016-06-08 17:38:42,716 (138c) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/seasons/72745-1.jpg', num: '5', filename: 'TVDB/seasons/72745-1.jpg'*
2016-06-08 17:38:42,717 (138c) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/seasons/72745-1-2.jpg', num: '7', filename: 'TVDB/seasons/72745-1-2.jpg'*
2016-06-08 17:38:42,717 (138c) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/graphical/72745-g.jpg', num: '8', filename: 'TVDB/graphical/72745-g.jpg'*
2016-06-08 17:38:42,717 (138c) :  DEBUG (logkit:13) - Update() - AniDB mode - AniDB Serie XML: http://api.anidb.net:9001/httpapi?request=anime&client=hama&clientver=1&protover=1&aid=11169, AniDB/11169.xml
2016-06-08 17:38:42,719 (138c) :  DEBUG (logkit:13) - xmlElementFromFile() - url: 'http://api.anidb.net:9001/httpapi?request=anime&client=hama&clientver=1&protover=1&aid=11169', filename: 'AniDB/11169.xml'
2016-06-08 17:38:46,763 (138c) :  DEBUG (networking:166) - Requesting 'http://api.anidb.net:9001/httpapi?request=anime&client=hama&clientver=1&protover=1&aid=11169'
2016-06-08 17:38:47,019 (138c) :  DEBUG (logkit:13) - Update() - AniDB title: 'Cyborg 009 vs. Devilman', original title: 'Cyborg 009 vs. Devilman', metadata.title 'Cyborg 009 vs. Devilman'*
2016-06-08 17:38:47,019 (138c) :  DEBUG (logkit:13) - Update() - AniDB Start Date: '2015-10-17'
2016-06-08 17:38:47,020 (138c) :  DEBUG (logkit:13) - update() - AniDB Ratings:    '7.48'*
2016-06-08 17:38:47,022 (138c) :  DEBUG (logkit:13) - AniDB Genres (Weight): [('Manga', 0), ('Shounen', 0)]*
2016-06-08 17:38:47,029 (138c) :  DEBUG (logkit:13) - anidbCollectionMapping() - anidbid is not part of any collection, related_anime_list: '['1236', '1527']'
2016-06-08 17:38:47,029 (138c) :  DEBUG (logkit:13) - AniDB Creator data: Hayakawa Tadashi is a producer, Itou Takeshi is a director, Actas is a studio, Ishinomori Shoutarou is a writer, Nagai Gou is a writer, Kawagoe Jun is a director, Bee Media is a studio, 
2016-06-08 17:38:47,029 (138c) :  DEBUG (logkit:13) - Update() - AniDB Poster, url: 'http://img7.anidb.net/pics/anime/177080.jpg'
2016-06-08 17:38:47,030 (138c) :  DEBUG (logkit:13) - metadata_download() - url: 'http://img7.anidb.net/pics/anime/177080.jpg', num: '99', filename: 'AniDB/177080.jpg'*
2016-06-08 17:38:47,030 (138c) :  DEBUG (logkit:13) - Update() - AniDB episode title: 'Volume 1'*
2016-06-08 17:38:47,032 (138c) :  DEBUG (logkit:13) - Update() - AniDB AirDate '2015-10-17'*
2016-06-08 17:38:47,032 (138c) :  DEBUG (logkit:13) - Update() - AniDB duration: '1800000'*
2016-06-08 17:38:47,032 (138c) :  DEBUG (logkit:13) - TVDB mapping episode summary - anidb_ep: 's1e1', tvdb_ep: 's0e3', season: '1', epNumVal: '1', defaulttvdbseason: '0', title: 'Volume 1', summary: ''
2016-06-08 17:38:47,032 (138c) :  DEBUG (logkit:13) - Update() - AniDB episode title: 'Volume 3'*
2016-06-08 17:38:47,033 (138c) :  DEBUG (logkit:13) - Update() - AniDB AirDate '2015-10-17'*
2016-06-08 17:38:47,033 (138c) :  DEBUG (logkit:13) - Update() - AniDB duration: '2400000'*
2016-06-08 17:38:47,035 (138c) :  DEBUG (logkit:13) - TVDB mapping episode summary - anidb_ep: 's1e3', tvdb_ep: 's0e5', season: '1', epNumVal: '3', defaulttvdbseason: '0', title: 'Volume 3', summary: ''
2016-06-08 17:38:47,035 (138c) :  DEBUG (logkit:13) - Update() - AniDB episode title: 'Volume 2'*
2016-06-08 17:38:47,035 (138c) :  DEBUG (logkit:13) - Update() - AniDB AirDate '2015-10-17'*
2016-06-08 17:38:47,036 (138c) :  DEBUG (logkit:13) - Update() - AniDB duration: '1800000'*
2016-06-08 17:38:47,036 (138c) :  DEBUG (logkit:13) - TVDB mapping episode summary - anidb_ep: 's1e2', tvdb_ep: 's0e4', season: '1', epNumVal: '2', defaulttvdbseason: '0', title: 'Volume 2', summary: ''
2016-06-08 17:38:47,036 (138c) :  DEBUG (logkit:13) - Update() - DURATION: 6000000, numEpisodes: 3
2016-06-08 17:38:47,036 (138c) :  DEBUG (logkit:13) - Locked 'anime-list anidbid missing' [True, 1465421927]
2016-06-08 17:38:47,038 (138c) :  DEBUG (logkit:13) - Unlocked 'anime-list anidbid missing' [False, 0]
2016-06-08 17:38:47,039 (138c) :  DEBUG (logkit:13) - Locked 'anime-list studio logos' [True, 1465421927]
2016-06-08 17:38:47,039 (138c) :  DEBUG (logkit:13) - Unlocked 'anime-list studio logos' [False, 0]
2016-06-08 17:38:47,039 (138c) :  DEBUG (logkit:13) - Locked 'AniDB summaries missing' [True, 1465421927]
2016-06-08 17:38:47,040 (138c) :  DEBUG (logkit:13) - Unlocked 'AniDB summaries missing' [False, 0]
2016-06-08 17:38:47,042 (138c) :  DEBUG (logkit:13) - Locked 'Plex themes missing' [True, 1465421927]
2016-06-08 17:38:47,042 (138c) :  DEBUG (logkit:13) - Unlocked 'Plex themes missing' [False, 0]
2016-06-08 17:38:47,042 (138c) :  DEBUG (logkit:13) - Locked 'TVDB posters missing' [True, 1465421927]
2016-06-08 17:38:47,045 (138c) :  DEBUG (logkit:13) - Unlocked 'TVDB posters missing' [False, 0]
2016-06-08 17:38:47,045 (138c) :  DEBUG (logkit:13) - Locked 'Missing Specials' [True, 1465421927]
2016-06-08 17:38:47,046 (138c) :  DEBUG (logkit:13) - Unlocked 'Missing Specials' [False, 0]
2016-06-08 17:38:47,046 (138c) :  DEBUG (logkit:13) - Locked 'Missing Episodes' [True, 1465421927]
2016-06-08 17:38:47,048 (138c) :  DEBUG (logkit:13) - Unlocked 'Missing Episodes' [False, 0]
2016-06-08 17:38:47,048 (138c) :  DEBUG (logkit:13) - Locked 'AniDB posters missing' [True, 1465421927]
2016-06-08 17:38:47,049 (138c) :  DEBUG (logkit:13) - Unlocked 'AniDB posters missing' [False, 0]
2016-06-08 17:38:47,049 (138c) :  DEBUG (logkit:13) - Locked 'anime-list tvdbid missing' [True, 1465421927]
2016-06-08 17:38:47,051 (138c) :  DEBUG (logkit:13) - Unlocked 'anime-list tvdbid missing' [False, 0]
2016-06-08 17:38:47,051 (138c) :  DEBUG (logkit:13) - Locked 'TVDB season posters missing' [True, 1465421927]
2016-06-08 17:38:47,052 (138c) :  DEBUG (logkit:13) - Unlocked 'TVDB season posters missing' [False, 0]
2016-06-08 17:38:47,052 (138c) :  DEBUG (logkit:13) - Locked 'Missing Special Summaries' [True, 1465421927]
2016-06-08 17:38:47,053 (138c) :  DEBUG (logkit:13) - Unlocked 'Missing Special Summaries' [False, 0]
2016-06-08 17:38:47,053 (138c) :  DEBUG (logkit:13) - Locked 'Missing Episode Summaries' [True, 1465421927]
2016-06-08 17:38:47,055 (138c) :  DEBUG (logkit:13) - Unlocked 'Missing Episode Summaries' [False, 0]
2016-06-08 17:38:47,055 (138c) :  DEBUG (logkit:13) - --- Update end -------------------------------------------------------------------------------------------------
2016-06-08 17:38:47,075 (138c) :  DEBUG (model:229) - Serializing to C:\Users\Sven\AppData\Local\Plex Media Server\Metadata\TV Shows\c\40e4a9ae89ac0b056f51a92cba7ea490fa8b408.bundle\Contents\com.plexapp.agents.hama\Info.xml
2016-06-08 17:38:47,078 (138c) :  DEBUG (runtime:924) - Response: [200] str, 16 bytes

Log Issue - tvdb4

Noticed two things today about the logs. Both shows are running tvdb4.

  1. Dragon Ball Kai -- I'm missing all episodes 99+, but there seems to be a gap in the missing eps.
  2. Hunter X Hunter (2011) -- I'm not missing any, but it has a range that claims I am.
tvdbid: 88031 | Title: 'Dragon Ball Kai' | Missing Episodes: ['99', '100', '101', '102', '103', '104', '105', '106', '107', '108', '109', '110', '111', '112', '113', '114', '153', '154', '155', '156', '157', '158', '159']
tvdbid: 295068 | Title: 'Dragon Ball Super' | Missing Episodes: ['48']
anidbid: 11469 | Title: 'Flying Witch' | Missing Episodes: ['s1e12', 's1e11']
tvdbid: 289909 | Title: 'Food Wars!: Shokugeki no Soma' | Missing Episodes: ['s2e1']
tvdbid: 71444 | Title: 'Fushigi Yuugi' | Missing Episodes: ['53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65']
tvdbid: 278157 | Title: 'Haikyuu!!' | Missing Episodes: ['s3e1']
tvdbid: 306153 | Title: 'Haven't You Heard? I'm Sakamoto' | Missing Episodes: ['11', '12', '13']
tvdbid: 252322 | Title: 'Hunter x Hunter (2011)' | Missing Episodes: ['76', '77', '78', '79', '85', '86', '87', '88', '89', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '100', '101', '102', '103', '104', '105', '106', '107', '108', '109', '110']
2016-06-18 12:12:28,490 (1324) :  DEBUG (logkit:13) - === Search - Begin - ================================================================================================
2016-06-18 12:12:28,490 (1324) :  INFO (logkit:16) - search() - Title: 'Dragonball Kai [tvdb4-88031]', name: 'A Bittersweet Victory! Until We Meet Again!', filename: 'B%3A%5CAnime%20Series%5CDragonball%20Kai%5CDragon%20Ball%20Z%20Kai%20-%2097%20-%20A%20Bittersweet%20Victory!%20Until%20We%20Meet%20Again!%2Emkv', manual:'False'
2016-06-18 12:12:28,490 (1324) :  DEBUG (logkit:13) - search - source: 'tvdb4', id: '88031', show from id: 'Dragonball Kai' provided in foldername: 'Dragonball Kai [tvdb4-88031]'
2016-06-18 12:12:28,493 (1324) :  DEBUG (runtime:924) - Response: [200] str, 640 bytes
2016-06-18 12:12:28,543 (13a8) :  DEBUG (runtime:717) - Handling request GET /:/plugins/com.plexapp.agents.hama/messaging/function/X0FnZW50S2l0OlVwZGF0ZU1ldGFkYXRh/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoxCmRpY3QKMTAKczIKZW5zNApsYW5nYjFzNQpmb3JjZWIwczgKcGVyaW9kaWNzNQo2MTIzN3M0CmRiaWRpMApzNwp2ZXJzaW9ubnMxMApwYXJlbnRHVUlEbnM4CnBhcmVudElEczcKVFZfU2hvd3MxMAptZWRpYV90eXBlczQ1CmNvbS5wbGV4YXBwLmFnZW50cy5oYW1hOi8vdHZkYjQtODgwMzE%40bGFuZz1lbnM0Cmd1aWRzMTEKdHZkYjQtODgwMzFzMgppZHIwCg__
2016-06-18 12:12:28,546 (484) :  DEBUG (logkit:13) - === Search - Begin - ================================================================================================
2016-06-18 12:12:28,546 (484) :  INFO (logkit:16) - search() - Title: 'Dragonball Kai [tvdb4-88031]', name: 'Peace for the Future! The Spirit of Goku Is Forever!', filename: 'B%3A%5CAnime%20Series%5CDragonball%20Kai%5CDragon%20Ball%20Z%20Kai%20-%2098%20-%20Peace%20for%20the%20Future!%20The%20Spirit%20of%20Goku%20Is%20Forever!%2Emkv', manual:'False'
2016-06-18 12:12:28,548 (484) :  DEBUG (logkit:13) - search - source: 'tvdb4', id: '88031', show from id: 'Dragonball Kai' provided in foldername: 'Dragonball Kai [tvdb4-88031]'
2016-06-18 12:12:28,548 (13a8) :  DEBUG (runtime:814) - Found route matching /:/plugins/com.plexapp.agents.hama/messaging/function/X0FnZW50S2l0OlVwZGF0ZU1ldGFkYXRh/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoxCmRpY3QKMTAKczIKZW5zNApsYW5nYjFzNQpmb3JjZWIwczgKcGVyaW9kaWNzNQo2MTIzN3M0CmRiaWRpMApzNwp2ZXJzaW9ubnMxMApwYXJlbnRHVUlEbnM4CnBhcmVudElEczcKVFZfU2hvd3MxMAptZWRpYV90eXBlczQ1CmNvbS5wbGV4YXBwLmFnZW50cy5oYW1hOi8vdHZkYjQtODgwMzE@bGFuZz1lbnM0Cmd1aWRzMTEKdHZkYjQtODgwMzFzMgppZHIwCg__
2016-06-18 12:12:28,551 (13a8) :  DEBUG (model:32) - Loading model with GUID com.plexapp.agents.hama://tvdb4-88031?lang=en
2016-06-18 12:12:28,552 (484) :  DEBUG (runtime:924) - Response: [200] str, 640 bytes
2016-06-18 12:12:28,552 (13a8) :  DEBUG (model:234) - Deserializing from C:\Users\Sven\AppData\Local\Plex Media Server\Metadata\TV Shows\e\811e669a69cfc4635463f4885ec2a330bfebbfe.bundle\Contents\com.plexapp.agents.hama\Info.xml
2016-06-18 12:12:28,565 (568) :  DEBUG (logkit:13) - === Search - Begin - ================================================================================================
2016-06-18 12:12:28,566 (568) :  INFO (logkit:16) - search() - Title: 'Dragonball Kai [tvdb4-88031]', name: 'Mr Satan Takes the Stage! The Curtain Rises on the Cell Games!', filename: 'B%3A%5CAnime%20Series%5CDragonball%20Kai%5CDragon%20Ball%20Z%20Kai%20-%2087%20-%20Mr%2E%20Satan%20Takes%20the%20Stage!%20The%20Curtain%20Rises%20on%20the%20Cell%20Games!%2Emkv', manual:'False'
2016-06-18 12:12:28,566 (568) :  DEBUG (logkit:13) - search - source: 'tvdb4', id: '88031', show from id: 'Dragonball Kai' provided in foldername: 'Dragonball Kai [tvdb4-88031]'
2016-06-18 12:12:28,568 (568) :  DEBUG (runtime:924) - Response: [200] str, 640 bytes
2016-06-18 12:12:29,176 (13a8) :  DEBUG (networking:166) - Requesting 'http://127.0.0.1:32400/library/metadata/61237/tree'
2016-06-18 12:12:29,259 (13a8) :  DEBUG (logkit:13) - --- Update Begin -------------------------------------------------------------------------------------------
2016-06-18 12:12:29,259 (13a8) :  DEBUG (logkit:13) - Update - metadata source: 'tvdb4', id: '88031', Title: 'Dragon Ball Kai',([...], [...], True)
2016-06-18 12:12:29,259 (13a8) :  DEBUG (logkit:13) - Update() - Theme song - already added
2016-06-18 12:12:29,259 (13a8) :  DEBUG (logkit:13) - Update() - TVDB - tvdbid: '88031', url: 'http://thetvdb.com/api/A27AD9BE0DA63333/series/88031/all/en.xml'
2016-06-18 12:12:29,259 (13a8) :  DEBUG (logkit:13) - xmlElementFromFile() - url: 'http://thetvdb.com/api/A27AD9BE0DA63333/series/88031/all/en.xml', filename: 'TVDB/88031.xml'
2016-06-18 12:12:29,279 (13a8) :  DEBUG (networking:166) - Requesting 'http://thetvdb.com/api/A27AD9BE0DA63333/series/88031/all/en.xml'
2016-06-18 12:12:29,490 (13a8) :  DEBUG (logkit:13) - Update() - IMDB ID was empty, loaded through tvdb serie xml, IMDBID: 'tt1409055'
2016-06-18 12:12:29,503 (13a8) :  INFO (logkit:16) - abs_manual_placement_worked: 'True', abs_manual_placement_info: '[]'
2016-06-18 12:12:29,654 (13a8) :  DEBUG (logkit:13) - Update() - TVDB - tvdb_table: ['1', '10', '100', '101', '102', '103', '104', '105', '106', '107', '108', '109', '11', '110', '111', '112', '113', '114', '115', '116', '117', '118', '119', '12', '120', '121', '122', '123', '124', '125', '126', '127', '128', '13', '14', '15', '16', '17', '18', '19', '2', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '3', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '4', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '5', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '6', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '7', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '8', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '9', '90', '91', '92', '93', '94', '95', '96', '99', 's0e1']
2016-06-18 12:12:29,654 (13a8) :  DEBUG (logkit:13) - Update() - TVDB - Episodes without Summary: ['129', '130', '131', '132', '133', '134', '135', '136', '137', '138', '139', '140', '141', '142', '143', '144', '145', '146', '147', '148', '149', '150', '151', '152', '153', '154', '155', '156', '157', '158', '159', '97']
2016-06-18 12:12:29,671 (13a8) :  DEBUG (networking:166) - Requesting 'http://thetvdb.com/api/A27AD9BE0DA63333/series/88031/banners.xml'
2016-06-18 12:12:29,882 (13a8) :  DEBUG (logkit:13) - getImagesFromTVDB() - Loaded picture XML: 'http://thetvdb.com/api/A27AD9BE0DA63333/series/88031/banners.xml'
2016-06-18 12:12:29,884 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/fanart/original/88031-2.jpg', num: '1', filename: 'TVDB/fanart/original/88031-2.jpg'*
2016-06-18 12:12:29,885 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/fanart/original/88031-1.jpg', num: '2', filename: 'TVDB/fanart/original/88031-1.jpg'*
2016-06-18 12:12:29,887 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/fanart/original/88031-3.jpg', num: '3', filename: 'TVDB/fanart/original/88031-3.jpg'*
2016-06-18 12:12:29,888 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/fanart/original/88031-7.jpg', num: '4', filename: 'TVDB/fanart/original/88031-7.jpg'*
2016-06-18 12:12:29,888 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/fanart/original/88031-6.jpg', num: '5', filename: 'TVDB/fanart/original/88031-6.jpg'*
2016-06-18 12:12:29,890 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/fanart/original/88031-4.jpg', num: '6', filename: 'TVDB/fanart/original/88031-4.jpg'*
2016-06-18 12:12:29,891 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/fanart/original/88031-5.jpg', num: '7', filename: 'TVDB/fanart/original/88031-5.jpg'*
2016-06-18 12:12:29,891 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/posters/88031-1.jpg', num: '2', filename: 'TVDB/posters/88031-1.jpg'*
2016-06-18 12:12:29,891 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/posters/88031-2.jpg', num: '3', filename: 'TVDB/posters/88031-2.jpg'*
2016-06-18 12:12:29,892 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/posters/88031-3.jpg', num: '4', filename: 'TVDB/posters/88031-3.jpg'*
2016-06-18 12:12:29,894 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/posters/88031-5.jpg', num: '5', filename: 'TVDB/posters/88031-5.jpg'*
2016-06-18 12:12:29,894 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/posters/88031-4.jpg', num: '6', filename: 'TVDB/posters/88031-4.jpg'*
2016-06-18 12:12:29,894 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/posters/88031-6.jpg', num: '7', filename: 'TVDB/posters/88031-6.jpg'*
2016-06-18 12:12:29,895 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/seasons/88031-2.jpg', num: '14', filename: 'TVDB/seasons/88031-2.jpg'*
2016-06-18 12:12:29,895 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/seasons/88031-1-3.jpg', num: '15', filename: 'TVDB/seasons/88031-1-3.jpg'*
2016-06-18 12:12:29,897 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/seasons/88031-1.jpg', num: '16', filename: 'TVDB/seasons/88031-1.jpg'*
2016-06-18 12:12:29,898 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/seasons/88031-1-2.jpg', num: '17', filename: 'TVDB/seasons/88031-1-2.jpg'*
2016-06-18 12:12:29,898 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/seasons/88031-1-4.jpg', num: '19', filename: 'TVDB/seasons/88031-1-4.jpg'*
2016-06-18 12:12:29,898 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/seasons/88031-2-3.jpg', num: '20', filename: 'TVDB/seasons/88031-2-3.jpg'*
2016-06-18 12:12:29,900 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/seasons/88031-2-2.jpg', num: '22', filename: 'TVDB/seasons/88031-2-2.jpg'*
2016-06-18 12:12:29,901 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/seasonswide/88031-1.jpg', num: '23', filename: 'TVDB/seasonswide/88031-1.jpg'*
2016-06-18 12:12:29,901 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/seasonswide/88031-2.jpg', num: '24', filename: 'TVDB/seasonswide/88031-2.jpg'*
2016-06-18 12:12:29,903 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/seasonswide/88031-1-2.jpg', num: '25', filename: 'TVDB/seasonswide/88031-1-2.jpg'*
2016-06-18 12:12:29,904 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/graphical/88031-g2.jpg', num: '26', filename: 'TVDB/graphical/88031-g2.jpg'*
2016-06-18 12:12:29,904 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/graphical/88031-g.jpg', num: '27', filename: 'TVDB/graphical/88031-g.jpg'*
2016-06-18 12:12:29,907 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/graphical/88031-g3.jpg', num: '28', filename: 'TVDB/graphical/88031-g3.jpg'*
2016-06-18 12:12:29,941 (13a8) :  DEBUG (networking:161) - Fetching 'https://api.tmdb.org/3/configuration?api_key=7f4a0bd0bd3315bb832e17feda70b5cd' from the HTTP cache
2016-06-18 12:12:29,974 (13a8) :  DEBUG (logkit:13) - getImagesFromTMDB() - using IMDBID url: https://api.tmdb.org/3/find/tt1409055?api_key=7f4a0bd0bd3315bb832e17feda70b5cd&external_source=imdb_id
2016-06-18 12:12:29,990 (13a8) :  DEBUG (networking:166) - Requesting 'https://api.tmdb.org/3/find/tt1409055?api_key=7f4a0bd0bd3315bb832e17feda70b5cd&external_source=imdb_id'
2016-06-18 12:12:32,164 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://image.tmdb.org/t/p/original/9OYqeyZHlxlIsM2nfDiZ58EaWl9.jpg', num: '90', filename: 'TMDB/tt1409055-art.jpg'*
2016-06-18 12:12:32,164 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://image.tmdb.org/t/p/original/j8BTh7MKA3rh4VXEmRsnlro5ntI.jpg', num: '90', filename: 'TMDB/tt1409055.jpg'*
2016-06-18 12:12:32,165 (13a8) :  DEBUG (logkit:13) - getImagesFromOMDB() - imdbid: 'tt1409055', url: 'http://www.omdbapi.com/?i=tt1409055', filename: 'OMDB/tt1409055.jpg'
2016-06-18 12:12:32,181 (13a8) :  DEBUG (networking:166) - Requesting 'http://www.omdbapi.com/?i=tt1409055'
2016-06-18 12:12:35,318 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://ia.media-imdb.com/images/M/MV5BMTMzMzUzNzQwM15BMl5BanBnXkFtZTcwNTEyNTkxMw@@._V1_SX300.jpg', num: '98', filename: 'OMDB/tt1409055.jpg'*
2016-06-18 12:12:35,318 (13a8) :  DEBUG (logkit:13) - using TVDB numbering mode (seasons)
2016-06-18 12:12:35,319 (13a8) :  DEBUG (logkit:13) - Update() - TVDB - tvdbGenre: '()'
2016-06-18 12:12:35,319 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/789741.jpg', num: '1', filename: 'TVDB/episodes/789741.jpg'*
2016-06-18 12:12:35,319 (13a8) :  INFO (logkit:16) - File: '11' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 11 - Will Goku Make It in Time! Three Hours Until the Battle Resumes!.mkv'
2016-06-18 12:12:35,321 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/711621.jpg', num: '1', filename: 'TVDB/episodes/711621.jpg'*
2016-06-18 12:12:35,321 (13a8) :  INFO (logkit:16) - File: '10' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 10 - Sit Tight, Chiaotzu! Tien`s Screaming Tri-Beam!.mkv'
2016-06-18 12:12:35,322 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/789761.jpg', num: '1', filename: 'TVDB/episodes/789761.jpg'*
2016-06-18 12:12:35,322 (13a8) :  INFO (logkit:16) - File: '13' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 13 - The Power of the Kaio-Ken! Goku vs. Vegeta!.mkv'
2016-06-18 12:12:35,322 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/789751.jpg', num: '1', filename: 'TVDB/episodes/789751.jpg'*
2016-06-18 12:12:35,322 (13a8) :  INFO (logkit:16) - File: '12' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 12 - Farewell, Piccolo! Goku`s Furious Counterattack!.mkv'
2016-06-18 12:12:35,322 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/897481.jpg', num: '1', filename: 'TVDB/episodes/897481.jpg'*
2016-06-18 12:12:35,323 (13a8) :  INFO (logkit:16) - File: '15' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 15 - Goku on the Ropes! Pin Your Hopes on the Spirit Bomb!.mkv'
2016-06-18 12:12:35,323 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/862071.jpg', num: '1', filename: 'TVDB/episodes/862071.jpg'*
2016-06-18 12:12:35,325 (13a8) :  INFO (logkit:16) - File: '14' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 14 - An All-Out Kamehame-Ha! Vegeta`s Terrible Transformation!.mkv'
2016-06-18 12:12:35,325 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/897491.jpg', num: '1', filename: 'TVDB/episodes/897491.jpg'*
2016-06-18 12:12:35,325 (13a8) :  INFO (logkit:16) - File: '16' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 16 - Defeat the Invincible Vegeta! Work a Miracle, Gohan!.mkv'
2016-06-18 12:12:35,325 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/507731.jpg', num: '1', filename: 'TVDB/episodes/507731.jpg'*
2016-06-18 12:12:35,326 (13a8) :  INFO (logkit:16) - File: '1' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 01 - Prologue to Battle! The Return of Goku!.mkv'
2016-06-18 12:12:35,326 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/507751.jpg', num: '1', filename: 'TVDB/episodes/507751.jpg'*
2016-06-18 12:12:35,328 (13a8) :  INFO (logkit:16) - File: '3' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 03 - A Life or Death Battle! Goku and Piccolo`s Desperate Attack!.mkv'
2016-06-18 12:12:35,328 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/507741.jpg', num: '1', filename: 'TVDB/episodes/507741.jpg'*
2016-06-18 12:12:35,328 (13a8) :  INFO (logkit:16) - File: '2' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 02 - The Enemy Is Goku`s Older Brother! The Secret of the Mighty Saiyan Warriors!.mkv'
2016-06-18 12:12:35,328 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/586611.jpg', num: '1', filename: 'TVDB/episodes/586611.jpg'*
2016-06-18 12:12:35,328 (13a8) :  INFO (logkit:16) - File: '5' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 05 - Wilderness Survival! A Moonlit Night Awakens Gohan!.mkv'
2016-06-18 12:12:35,329 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/507761.jpg', num: '1', filename: 'TVDB/episodes/507761.jpg'*
2016-06-18 12:12:35,329 (13a8) :  INFO (logkit:16) - File: '4' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 04 - Run in the Afterlife, Goku! The One Million Mile Snake Way!.mkv'
2016-06-18 12:12:35,331 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/665271.jpg', num: '1', filename: 'TVDB/episodes/665271.jpg'*
2016-06-18 12:12:35,331 (13a8) :  INFO (logkit:16) - File: '7' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 07 - The Battle with Ten-Times Gravity! Goku`s Race Against the Clock!.mkv'
2016-06-18 12:12:35,332 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/642841.jpg', num: '1', filename: 'TVDB/episodes/642841.jpg'*
2016-06-18 12:12:35,332 (13a8) :  INFO (logkit:16) - File: '6' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 06 - The End of Snake Way! King Kai`s Bizarre Test!.mkv'
2016-06-18 12:12:35,332 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/711611.jpg', num: '1', filename: 'TVDB/episodes/711611.jpg'*
2016-06-18 12:12:35,332 (13a8) :  INFO (logkit:16) - File: '9' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 09 - Yamcha`s Struggle! The Terrible Saibamen!.mkv'
2016-06-18 12:12:35,334 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/665281.jpg', num: '1', filename: 'TVDB/episodes/665281.jpg'*
2016-06-18 12:12:35,334 (13a8) :  INFO (logkit:16) - File: '8' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 08 - Shenron Appears! The Saiyans Arrive Sooner Than Expected!.mkv'
2016-06-18 12:12:35,335 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1649261.jpg', num: '1', filename: 'TVDB/episodes/1649261.jpg'*
2016-06-18 12:12:35,335 (13a8) :  INFO (logkit:16) - File: '42' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 42 - Defeat Frieza, Goku! The Tears of the Proud Saiyan Prince.mkv'
2016-06-18 12:12:35,335 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1653531.jpg', num: '1', filename: 'TVDB/episodes/1653531.jpg'*
2016-06-18 12:12:35,335 (13a8) :  INFO (logkit:16) - File: '43' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 43 - Goku vs. Frieza! The Super Showdown Begins!.mkv'
2016-06-18 12:12:35,336 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1075041.jpg', num: '1', filename: 'TVDB/episodes/1075041.jpg'*
2016-06-18 12:12:35,336 (13a8) :  INFO (logkit:16) - File: '24' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 24 - Friends Reborn! Zarbon`s Hideous Transformation!.mkv'
2016-06-18 12:12:35,336 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1075051.jpg', num: '1', filename: 'TVDB/episodes/1075051.jpg'*
2016-06-18 12:12:35,338 (13a8) :  INFO (logkit:16) - File: '25' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 25 - Power Up, Krillin! Frieza`s Mounting Apprehension!.mkv'
2016-06-18 12:12:35,338 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1075061.jpg', num: '1', filename: 'TVDB/episodes/1075061.jpg'*
2016-06-18 12:12:35,338 (13a8) :  INFO (logkit:16) - File: '26' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 26 - The Scheme Is Shattered! Vegeta Strikes Back at Zarbon!.mkv'
2016-06-18 12:12:35,338 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1183971.jpg', num: '1', filename: 'TVDB/episodes/1183971.jpg'*
2016-06-18 12:12:35,339 (13a8) :  INFO (logkit:16) - File: '27' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 27 - A Touch-and-Go Situation! Gohan, Protect the Four-Star Ball!.mkv'
2016-06-18 12:12:35,339 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1029391.jpg', num: '1', filename: 'TVDB/episodes/1029391.jpg'*
2016-06-18 12:12:35,341 (13a8) :  INFO (logkit:16) - File: '20' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 20 - The Rebellion Against Frieza! Vegeta`s Burning Ambition!.mkv'
2016-06-18 12:12:35,341 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1031321.jpg', num: '1', filename: 'TVDB/episodes/1031321.jpg'*
2016-06-18 12:12:35,342 (13a8) :  INFO (logkit:16) - File: '21' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 21 - Protect the Dragon Balls! The Namekians` All-Out Attack!.mkv'
2016-06-18 12:12:35,342 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1075021.jpg', num: '1', filename: 'TVDB/episodes/1075021.jpg'*
2016-06-18 12:12:35,342 (13a8) :  INFO (logkit:16) - File: '22' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 22 - Dodoria`s Terrifying Chase! A Truth Revealed to Vegeta!.mkv'
2016-06-18 12:12:35,342 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1075031.jpg', num: '1', filename: 'TVDB/episodes/1075031.jpg'*
2016-06-18 12:12:35,344 (13a8) :  INFO (logkit:16) - File: '23' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 23 - Vegeta`s Covert Maneuvers! A Tragic Assault on the Namekians!.mkv'
2016-06-18 12:12:35,344 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1797831.jpg', num: '1', filename: 'TVDB/episodes/1797831.jpg'*
2016-06-18 12:12:35,344 (13a8) :  INFO (logkit:16) - File: '46' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 46 - The Final Trump Card! Goku`s Ultimate Spirit Bomb!.mkv'
2016-06-18 12:12:35,345 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1797841.jpg', num: '1', filename: 'TVDB/episodes/1797841.jpg'*
2016-06-18 12:12:35,345 (13a8) :  INFO (logkit:16) - File: '47' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 47 - Awaken, Legendary Warrior! Goku the Super Saiyan!.mkv'
2016-06-18 12:12:35,345 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1724551.jpg', num: '1', filename: 'TVDB/episodes/1724551.jpg'*
2016-06-18 12:12:35,345 (13a8) :  INFO (logkit:16) - File: '44' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 44 - A Boundary-Pushing Brawl! Goku, Frieza, and Ginyu Again!.mkv'
2016-06-18 12:12:35,346 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1761301.jpg', num: '1', filename: 'TVDB/episodes/1761301.jpg'*
2016-06-18 12:12:35,346 (13a8) :  INFO (logkit:16) - File: '45' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 45 - Kaio-ken Times Twenty! An All-or-Nothing Kamehame-Ha!.mkv'
2016-06-18 12:12:35,348 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1202571.jpg', num: '1', filename: 'TVDB/episodes/1202571.jpg'*
2016-06-18 12:12:35,348 (13a8) :  INFO (logkit:16) - File: '28' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 28 - The Countdown to Battle Begins! Enter, the Ginyu Force!.mkv'
2016-06-18 12:12:35,348 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1233481.jpg', num: '1', filename: 'TVDB/episodes/1233481.jpg'*
2016-06-18 12:12:35,348 (13a8) :  INFO (logkit:16) - File: '29' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 29 - First Up for the Ginyu Force! Guldo`s Time Freeze!.mkv'
2016-06-18 12:12:35,349 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1557091.jpg', num: '1', filename: 'TVDB/episodes/1557091.jpg'*
2016-06-18 12:12:35,349 (13a8) :  INFO (logkit:16) - File: '40' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 40 - Frieza`s Final Transformation! The Ultimate Nightmare Begins!.mkv'
2016-06-18 12:12:35,349 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1580351.jpg', num: '1', filename: 'TVDB/episodes/1580351.jpg'*
2016-06-18 12:12:35,351 (13a8) :  INFO (logkit:16) - File: '41' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 41 - The Moment of Truth Approaches! Goku Back in Action!.mkv'
2016-06-18 12:12:35,351 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1472491.jpg', num: '1', filename: 'TVDB/episodes/1472491.jpg'*
2016-06-18 12:12:35,351 (13a8) :  INFO (logkit:16) - File: '39' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 39 - Piccolo Reborn! Frieza`s Second Transformation!.mkv'
2016-06-18 12:12:35,351 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1436431.jpg', num: '1', filename: 'TVDB/episodes/1436431.jpg'*
2016-06-18 12:12:35,352 (13a8) :  INFO (logkit:16) - File: '38' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 38 - Frieza Bares His Fangs! Gohan`s Overwhelming Attack!.mkv'
2016-06-18 12:12:35,352 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1859001.jpg', num: '1', filename: 'TVDB/episodes/1859001.jpg'*
2016-06-18 12:12:35,354 (13a8) :  INFO (logkit:16) - File: '48' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 48 - The Angry Super Saiyan! Goku Throws Down the Gauntlet!.mkv'
2016-06-18 12:12:35,354 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/897501.jpg', num: '1', filename: 'TVDB/episodes/897501.jpg'*
2016-06-18 12:12:35,355 (13a8) :  INFO (logkit:16) - File: '17' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 17 - Dawn of a Fierce Battle! The Star of Hope Is Piccolo`s Homeland!.mkv'
2016-06-18 12:12:35,355 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1011111.jpg', num: '1', filename: 'TVDB/episodes/1011111.jpg'*
2016-06-18 12:12:35,355 (13a8) :  INFO (logkit:16) - File: '19' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 19 - A Powerful New Foe! Frieza, Ruler of the Universe!.mkv'
2016-06-18 12:12:35,355 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/915911.jpg', num: '1', filename: 'TVDB/episodes/915911.jpg'*
2016-06-18 12:12:35,355 (13a8) :  INFO (logkit:16) - File: '18' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 18 - The Ship Resting in Yunzabit! Time to Blast Off for Planet Namek!.mkv'
2016-06-18 12:12:35,357 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1272341.jpg', num: '1', filename: 'TVDB/episodes/1272341.jpg'*
2016-06-18 12:12:35,357 (13a8) :  INFO (logkit:16) - File: '31' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 31 - Goku Arrives at Last! Take Down the Ginyu Force!.mkv'
2016-06-18 12:12:35,358 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1248041.jpg', num: '1', filename: 'TVDB/episodes/1248041.jpg'*
2016-06-18 12:12:35,358 (13a8) :  INFO (logkit:16) - File: '30' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 30 - The Nightmare Recoome! Come Out and Play, Vegeta!.mkv'
2016-06-18 12:12:35,358 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1403771.jpg', num: '1', filename: 'TVDB/episodes/1403771.jpg'*
2016-06-18 12:12:35,358 (13a8) :  INFO (logkit:16) - File: '37' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 37 - A Nightmare Transformation! Frieza`s Power Level-One-Million!.mkv'
2016-06-18 12:12:35,359 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1389941.jpg', num: '1', filename: 'TVDB/episodes/1389941.jpg'*
2016-06-18 12:12:35,359 (13a8) :  INFO (logkit:16) - File: '36' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 36 - Frieza Closes In! Mighty Porunga, Grant Our Wish!.mkv'
2016-06-18 12:12:35,361 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1373191.jpg', num: '1', filename: 'TVDB/episodes/1373191.jpg'*
2016-06-18 12:12:35,361 (13a8) :  INFO (logkit:16) - File: '35' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 35 - Goku`s Comeback! Call Forth Porunga!.mkv'
2016-06-18 12:12:35,361 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1339951.jpg', num: '1', filename: 'TVDB/episodes/1339951.jpg'*
2016-06-18 12:12:35,361 (13a8) :  INFO (logkit:16) - File: '34' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 34 - Surprise! Goku Is Ginyu and Ginyu Is Goku!.mkv'
2016-06-18 12:12:35,361 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1314881.jpg', num: '1', filename: 'TVDB/episodes/1314881.jpg'*
2016-06-18 12:12:35,362 (13a8) :  INFO (logkit:16) - File: '33' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 33 - Full Power, Goku! Captain Ginyu`s Desperate Attack!.mkv'
2016-06-18 12:12:35,362 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/1280931.jpg', num: '1', filename: 'TVDB/episodes/1280931.jpg'*
2016-06-18 12:12:35,364 (13a8) :  INFO (logkit:16) - File: '32' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 32 - The Star Player Appears! Ginyu vs. Goku!.mkv'
2016-06-18 12:12:35,364 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/3366371.jpg', num: '1', filename: 'TVDB/episodes/3366371.jpg'*
2016-06-18 12:12:35,365 (13a8) :  INFO (logkit:16) - File: '88' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 88 - Showdown! Cell vs. Goku!.mkv'
2016-06-18 12:12:35,365 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/3456961.jpg', num: '1', filename: 'TVDB/episodes/3456961.jpg'*
2016-06-18 12:12:35,365 (13a8) :  INFO (logkit:16) - File: '89' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 89 - Battle at the Highest Level! Goku Goes All Out!.mkv'
2016-06-18 12:12:35,365 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/2645961.jpg', num: '1', filename: 'TVDB/episodes/2645961.jpg'*
2016-06-18 12:12:35,367 (13a8) :  INFO (logkit:16) - File: '68' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 68 - The Monster Goes Into Motion! Strike of the Super Namekian!.mkv'
2016-06-18 12:12:35,367 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/2675941.jpg', num: '1', filename: 'TVDB/episodes/2675941.jpg'*
2016-06-18 12:12:35,368 (13a8) :  INFO (logkit:16) - File: '69' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 69 - I Am Your Brother! The Monster with Goku`s Energy!.mkv'
2016-06-18 12:12:35,368 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/3106861.jpg', num: '1', filename: 'TVDB/episodes/3106861.jpg'*
2016-06-18 12:12:35,368 (13a8) :  INFO (logkit:16) - File: '80' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 80 - The Tables Are Turned! Witness the Power of Perfection!.mkv'
2016-06-18 12:12:35,368 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/3973841.jpg', num: '1', filename: 'TVDB/episodes/3973841.jpg'*
2016-06-18 12:12:35,368 (13a8) :  INFO (logkit:16) - File: '97' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 97 - A Bittersweet Victory! Until We Meet Again!.mkv'
2016-06-18 12:12:35,369 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/3006831.jpg', num: '1', filename: 'TVDB/episodes/3006831.jpg'*
2016-06-18 12:12:35,369 (13a8) :  INFO (logkit:16) - File: '78' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 78 - Cell on the Verge of Defeat! Krillin, Destroy Android 18!.mkv'
2016-06-18 12:12:35,371 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/2967471.jpg', num: '1', filename: 'TVDB/episodes/2967471.jpg'*
2016-06-18 12:12:35,371 (13a8) :  INFO (logkit:16) - File: '77' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 77 - Beyond Super Saiyan! Vegeta Confronts the Monster Cell!.mkv'
2016-06-18 12:12:35,371 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/2967461.jpg', num: '1', filename: 'TVDB/episodes/2967461.jpg'*
2016-06-18 12:12:35,371 (13a8) :  INFO (logkit:16) - File: '76' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 76 - Tien`s Desperate Attack! Save Your Friends, Goku!.mkv'
2016-06-18 12:12:35,372 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/2912361.jpg', num: '1', filename: 'TVDB/episodes/2912361.jpg'*
2016-06-18 12:12:35,374 (13a8) :  INFO (logkit:16) - File: '75' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 75 - Power Unknown! Android 16 Breaks His Silence!.mkv'
2016-06-18 12:12:35,374 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/2872221.jpg', num: '1', filename: 'TVDB/episodes/2872221.jpg'*
2016-06-18 12:12:35,374 (13a8) :  INFO (logkit:16) - File: '74' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 74 - Run, Android 17! Piccolo`s All-Or-Nothing Struggle!.mkv'
2016-06-18 12:12:35,375 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/2817691.jpg', num: '1', filename: 'TVDB/episodes/2817691.jpg'*
2016-06-18 12:12:35,375 (13a8) :  INFO (logkit:16) - File: '73' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 73 - The Super Namekian Powers Up! Piccolo vs. Android 17!.mkv'
2016-06-18 12:12:35,375 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/2789231.jpg', num: '1', filename: 'TVDB/episodes/2789231.jpg'*
2016-06-18 12:12:35,375 (13a8) :  INFO (logkit:16) - File: '72' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 72 - Break the Super Saiyan Barrier! Into the Hyperbolic Time Chamber!.mkv'
2016-06-18 12:12:35,377 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/2742741.jpg', num: '1', filename: 'TVDB/episodes/2742741.jpg'*
2016-06-18 12:12:35,377 (13a8) :  INFO (logkit:16) - File: '71' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 71 - The Hunt for Cell Is On! Goku, Back in Action!.mkv'
2016-06-18 12:12:35,378 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/2696401.jpg', num: '1', filename: 'TVDB/episodes/2696401.jpg'*
2016-06-18 12:12:35,378 (13a8) :  INFO (logkit:16) - File: '70' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 70 - The Dizzying Deception and the Daring Escape! Defeat the Android Cell!.mkv'
2016-06-18 12:12:35,378 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/3490961.jpg', num: '1', filename: 'TVDB/episodes/3490961.jpg'*
2016-06-18 12:12:35,378 (13a8) :  INFO (logkit:16) - File: '91' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 91 - Get Angry, Gohan! Release Your Hidden Power!.mkv'
2016-06-18 12:12:35,378 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/3490951.jpg', num: '1', filename: 'TVDB/episodes/3490951.jpg'*
2016-06-18 12:12:35,380 (13a8) :  INFO (logkit:16) - File: '90' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 90 - The Opening Round is Concluded! Goku`s Moment of Decision!.mkv'
2016-06-18 12:12:35,380 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/3687771.jpg', num: '1', filename: 'TVDB/episodes/3687771.jpg'*
2016-06-18 12:12:35,381 (13a8) :  INFO (logkit:16) - File: '93' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 93 - Unleash the Warrior Within! Gohan Takes the Offensive!.mkv'
2016-06-18 12:12:35,381 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/3619711.jpg', num: '1', filename: 'TVDB/episodes/3619711.jpg'*
2016-06-18 12:12:35,381 (13a8) :  INFO (logkit:16) - File: '92' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 92 - Tears for an Android! Gohan`s Inner Rage Bursts Forth!.mkv'
2016-06-18 12:12:35,381 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/3748781.jpg', num: '1', filename: 'TVDB/episodes/3748781.jpg'*
2016-06-18 12:12:35,382 (13a8) :  INFO (logkit:16) - File: '95' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 95 - A Hero`s Sacrifice! Last Chance to Save the World!.mkv'
2016-06-18 12:12:35,382 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/3719241.jpg', num: '1', filename: 'TVDB/episodes/3719241.jpg'*
2016-06-18 12:12:35,384 (13a8) :  INFO (logkit:16) - File: '94' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 94 - Perfection`s End! A Fury Beyond Super Saiyan!.mkv'
2016-06-18 12:12:35,384 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/3039671.jpg', num: '1', filename: 'TVDB/episodes/3039671.jpg'*
2016-06-18 12:12:35,384 (13a8) :  INFO (logkit:16) - File: '79' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 79 - The Battle Turns for the Worst! Cell Attacks Android 18!.mkv'
2016-06-18 12:12:35,384 (13a8) :  DEBUG (logkit:13) - metadata_download() - url: 'http://thetvdb.com/banners/episodes/88031/3863661.jpg', num: '1', filename: 'TVDB/episodes/3863661.jpg'*
2016-06-18 12:12:35,384 (13a8) :  INFO (logkit:16) - File: '96' 'B:\Anime Series\Dragonball Kai\Dragon Ball Z Kai - 96 - Combine Your Strength! The Final Kamehame-Ha!.mkv'
2016-06-18 12:12:35,385 (13a8) :  DEBUG (logkit:13) - List_eps: 11, 10, 13, 12, 15, 14, 16, 1, 3, 2, 5, 4, 7, 6, 9, 8, 42, 43, 24, 25, 26, 27, 20, 21, 22, 23, 46, 47, 44, 45, 28, 29, 40, 41, 39, 38, 48, 17, 19, 18, 31, 30, 37, 36, 35, 34, 33, 32, 88, 89, 68, 69, 80, 97, 78, 77, 76, 75, 74, 73, 72, 71, 70, 91, 90, 93, 92, 95, 94, 79, 96, 
2016-06-18 12:12:35,388 (13a8) :  DEBUG (logkit:13) - TVDB table: '{'133': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5065432.jpg', 'Director': '', 'FirstAired': '2014-12-07', 'EpisodeName': 'The Power-Up Continues!? Perfected! Super Gotenks!'}, '132': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5054815.jpg', 'Director': '', 'FirstAired': '2014-11-30', 'EpisodeName': 'Who Will Defeat the Majin? The Strongest Man Sets Out!!'}, '131': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5052251.jpg', 'Director': '', 'FirstAired': '2014-11-23', 'EpisodeName': 'Birth! Combine Super Warrior, His Name is Gotenks!!'}, '130': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5041582.jpg', 'Director': '', 'FirstAired': '2014-11-16', 'EpisodeName': 'Found You, Gohan! Harsh Training in the Realm of the Kais!'}, '137': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5083419.jpg', 'Director': '', 'FirstAired': '2015-01-11', 'EpisodeName': u'Special Training Completed! You\u2019re Finished Now, Majin Buu'}, '136': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5083418.jpg', 'Director': '', 'FirstAired': '2014-12-28', 'EpisodeName': 'Head Straight to the Catastrophe! The Deadline is in 1 Hour!!'}, '135': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5075648.jpg', 'Director': '', 'FirstAired': '2014-12-21', 'EpisodeName': 'Buu Eats Buu - A New Majin Attacks!'}, '134': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5067372.jpg', 'Director': '', 'FirstAired': '2014-12-14', 'EpisodeName': 'That Which is Brought Forth by Anger Another Majin!'}, '139': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5107703.jpg', 'Director': '', 'FirstAired': '2015-01-25', 'EpisodeName': 'The Reserved Transformation of Gotenks! Super Gotenks 3!!'}, 's0e1': {'Rating': '10.0', 'Overview': "Peace in the Future! Gokuu's Soul in Eternity", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/4169644.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2011-08-02', 'EpisodeName': "Peace in the Future! Goku's Soul in Eternity"}, '24': {'Rating': '7.5', 'Overview': "While training on his way to Namek, Goku receives news of a certain group of warriors having reached Kaio's planet for training of their own. Also, Vegeta clashes with Zarbon, a powerful henchman of Freeza who can increase his strength at the cost of his beauty. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1075041.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-09-20', 'EpisodeName': "Resurrected Friends! Beautiful Warrior Zarbon's Evil Transformation"}, '25': {'Rating': '6.0', 'Overview': "As the dragon ball hunt on Namek continues, Dende takes Kuririn to the Saichoro, the father of every other Namekian on the planet. Elsewhere, the defeated Vegeta is taken into Freeza's spaceship.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1075051.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-09-27', 'EpisodeName': "Kuririn Powers Up! The Squirming Freeza's Premonition"}, '26': {'Rating': '8.5', 'Overview': "Recovering quicker than expected, Vegeta is able to escape from Freeza's ship with all five of his dragon balls. Now, with only two more dragon balls to go, it is only a matter of time before Vegeta and the Earthlings cross paths. Matters only worsen when Zarbon arrives on the scene, eagerly awaiting a rematch with the Saiyan Prince.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1075061.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-10-04', 'EpisodeName': "The Smashed Up Conspiracy! Vegeta's Counterattack vs. Zarbon"}, '27': {'Rating': '8.5', 'Overview': "Krillin surrenders his Dragon Ball to Vegeta after Zarbon was killed, knowing he wouldn't stand against him. While returning to his stashed Dragon Balls, Vegeta senses Gohan. Gohan also senses Vegeta, so he masks his ki and hides his newly found Dragon Ball. Vegeta eventually coaxes Gohan out but doesn't see the hidden Dragon Ball. Thinking he has all seven Dragon Balls, Vegeta lets Gohan live and takes off. After returning to the nearby Namek lake, Vegerta realizes Gohan had taken his hidden Dragon Ball and goes berserk. Meanwhile, Frieza is informed that the Ginyu Force will be arriving shortly and Goku continues his training at intense gravity levels.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1183971.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-10-11', 'EpisodeName': 'A Hair-Trigger Pinch! Gohan, Protect the Four-Star Ball'}, '20': {'Rating': '9.0', 'Overview': "Freiza continues to collect the Namekian dragon balls, while Vegeta deals Kui.  Meanwhile, Krillian and Gohan battle more of Freiza's goons, but not before they destroy the spaceship they used to reach the planet.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1029391.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-08-23', 'EpisodeName': 'Rebellion Against Freeza! Vegeta, Burning With Ambition'}, '21': {'Rating': '9.0', 'Overview': "Goku arrives at Capsule Corp. where Dr Briefs has prepared a spaceship for him to travel to Namek in six days, as well as train. Goku begins to train at 20G as he takes off for Namek. Meanwhile, the Namekians begin to fight back against Frieza's men, however Zarbon proves too powerful. Discovering that their people are being located via their scouters, the Namekians destroy the scouters. Dodoria filled with rage, rushes into the fray to make the locales regret the day they ever crossed Frieza. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1031321.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-08-30', 'EpisodeName': 'Protect the Dragonballs! The Namekian Offensive'}, '22': {'Rating': '9.0', 'Overview': "Krillin and Gohan save a young Namekian boy from Dodoria's attack. The three fly away and manage to hide from the pursuing Dodoria, who is soon after attacked by Vegeta. The two fight briefly. Dodoria begs for his life, offering to tell Vegeta the true story of his home planet's destruction. Vegeta releases Dodoria from his grip, and Dodoria reveals that it was Frieza who destroyed Planet Vegeta out of fear for the Saiyan race's potential. Vegeta is furious at being lied to and being used by Frieza, and kills a fleeing Dodoria. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1075021.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-09-06', 'EpisodeName': "The Terrifying Dodoria's Pursuit! The Truth is Revealed to Vegeta"}, '23': {'Rating': '9.0', 'Overview': "Having escaped Freeza's spaceship, Vegeta terrorizes a Namekian village for their dragon ball. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1075031.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-09-13', 'EpisodeName': "Vegeta's Secret Plan! Tragic Attack Upon the Namekians"}, '28': {'Rating': '7.5', 'Overview': "Krillin takes Gohan to see the Eldest Namek to have his inner power released. However, Vegeta senses them while flying toward the hut, and confronts them. Nail, the Eldest Namek's chief warrior and right-hand man, informs the trio of a powerful force approaching the planet. Vegeta knows it is the Ginyu Force, Frieza's 5 most elite henchmen. Reluctantly, Gohan and Krillin agree to use the Dragon Balls to make Vegeta immortal so that he can defeat them easier. They rush to retrieve the Dragon Ball they left with Bulma, and meanwhile, the Ginyu Force lands on the planet and meets up with Frieza.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1202571.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-10-18', 'EpisodeName': 'The Super Decisive Battle Draws Near! The Ginyu Special Force Has Arrived!'}, '29': {'Rating': '7.5', 'Overview': "Vegeta, Krillin, and Gohan race to the remaining five Dragon Balls that Vegeta had hidden, in an attempt to grant Vegeta the wish of eternal life, in order to stand a chance against the Ginyu Force. The Ginyu Force beats them there, and with speed and a time freeze, swipe the two remaining Dragon Balls. Captain Ginyu takes the seven Dragon Balls to Frieza, and allows the other members to play Rock-Paper-Scissors to decide who gets to fight who. Recoome wins a fight with Vegeta and Guldo wins a fight with Krillin and Gohan. Krillin and Gohan fight Guldo first. After proving that they are no easy match for him, Guldo paralyzes the two with his ESP. Vegeta kills Guldo before any harm is done to the Earthlings, so Recoome decides he's next to fight. Meanwhile, Goku is ten minutes from landing on Namek.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1233481.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-10-25', 'EpisodeName': "The Special-Squad's Frontline Man! Break Gurudo's Spell"}, '4': {'Rating': '7.5', 'Overview': "With the battle against Raditz finally over, the Earth's fighters begin to train for the greater Saiyan threat to arrive within the following year.  ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/507761.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-04-26', 'EpisodeName': 'Son Goku Runs in the Afterlife! The Million Kilometer Snake Road'}, '8': {'Rating': '8.0', 'Overview': " The year wait has finally passed, as the two Saiyans finally arrive to the planet. However, Kaio seems to have made a mistake in Goku's training which may mean either life or death for Earth! ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/665281.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-05-24', 'EpisodeName': 'Come Forth, Shen Long! The Saiyans Finally Arrive on Earth'}, '119': {'Rating': None, 'Overview': 'Vegeta, willing to put his life on the line, begins his assault on Buu, managing to blast a hole through him. However, Buu manages to regenerate himself and builds up his anger to create a giant explosion, dealing heavy damage to Vegeta. ', 'Writer': '', 'filename': 'episodes/88031/4980553.jpg', 'Director': '', 'FirstAired': '2014-08-31', 'EpisodeName': "I'll Take Care of the Majin, Vegeta's Final Desperate Battle"}, '120': {'Rating': None, 'Overview': 'As Vegeta is ensnared by Buu, Trunks and Goten can no longer stand by, and rush to the scene to rescue him, while Piccolo attacks the defenseless Babidi and rips him to pieces. Feeling he cannot defeat Buu with conventional means, Vegeta says his farewells to Trunks before knocking both children out, instructing Piccolo to take them far away. Once everyone is clear from the scene, Vegeta uses his last resort, overloading his Super Saiyan for and sacrificing himself in a massive self-destructive explosion in order to obliterate Buu. ', 'Writer': '', 'filename': 'episodes/88031/4980554.jpg', 'Director': '', 'FirstAired': '2014-09-07', 'EpisodeName': 'For Those Whom He Loves... The Last Moment of the Proud Warrior'}, '121': {'Rating': None, 'Overview': "As Bulma and the others from the stadium follow Videl's directions in pursuit of Goten and Trunks, they are hit by the shockwave from Vegeta's attack and almost crash, but are saved by #18. Piccolo leaves Goten and Trunks with Krillin, telling him to inform the others that Vegeta and possibly Gohan have been killed, before he investigates the site of Vegeta's sacrificial attack, finding various charred fragments of Buu, along with Babidi, who narrowly survived the explosion. However, Piccolo is shocked to witness Buu's fragments suddenly come to life and reassemble to bring Buu back to his normal form. As Buu uses his power to heal Babidi, who vows to make the planet suffer, Piccolo decides to take Goten and Trunks up to Kami's tower. Elsewhere, Goku regains conciousness and tries to determine the situation, while a weakened Supreme Kai searches for Gohan, whose fate is still unknown. ", 'Writer': '', 'filename': 'episodes/88031/5000920.jpg', 'Director': '', 'FirstAired': '2014-09-14', 'EpisodeName': 'The Nightmare Returns, The Immortal Monster, Majin Buu'}, '122': {'Rating': None, 'Overview': "Bulma's group goes to seek out the Dragon Balls so they can revive all the spectators that Vegeta killed, coming up against a large dragon whilst trying to get the last one. Meanwhile, as Piccolo and Krillin as they leave Goten and Trunks in the care of Dende and Mr. Popo, they are soon joined by Goku, who learns about the situation. Goku states he isn't strong enough to defeat Buu, but mentions having learned a technique known as Fusion, in which two similarly built fighters can merge together to become a single powerful fighter. Though he had originally planned to do this himself with either Gohan or Vegeta, Goku realises from Mr. Popo that he can instead teach this technique to Goten and Trunks, due to their similar size. ", 'Writer': '', 'filename': 'episodes/88031/5000921.jpg', 'Director': '', 'FirstAired': '2014-09-21', 'EpisodeName': 'Secret Plan to Defeat Buu, Its Name is Fusion'}, '123': {'Rating': None, 'Overview': "Using the Dragon Balls, Bulma summons out Shenron, using one of its wishes to bring back everyone who had been killed that day. As using all three wishes would mean they would have to wait another year before they can use the Dragon Balls again, Goku warps over to Bulma's group and convinces Shenron to postpone the other two wishes, shortening that time to four months. Kibito, who was revived by the wish, manages to find Supreme Kai and heal his injuries, and together they manage to find Gohan and decide to bring him to the world of the Kais. Meanwhile, Goku warps Bulma and the others to Kami's Palace, where he informs them of the grim situation concerning Gohan and Vegeta, before Babidi announces his message to the world. ", 'Writer': '', 'filename': 'episodes/88031/5001068.jpg', 'Director': '', 'FirstAired': '2014-09-28', 'EpisodeName': 'A Faint Ray of Hope Has Appeared! Awaken, Warriors!!'}, '124': {'Rating': None, 'Overview': 'Speaking to the people of Earth, Babidi threatens far-reaching destruction unless Piccolo, Goten, and Trunks reveal themselves. Despite this, Goku endeavours to teach Fusion to the boys. Meanwhile, Gohan is taken to the sacred domain of the Supreme Kais, and returned to fitness by Kibito, but can he draw the Z-Sword from its resting place?', 'Writer': '', 'filename': 'episodes/88031/5004492.jpg', 'Director': '', 'FirstAired': '2014-10-05', 'EpisodeName': "Find the Nuisance, Babidi's Revenge Plan Begins!!"}, '125': {'Rating': None, 'Overview': "Despite the protestations of others at Kami's Lookout, Videl continues to believe that Gohan survived his fight with Majin Buu. As it happens, Gohan, both alive and well, draws out the legendary Z-Sword, and, believing that it will be the key to victory, begins training with it. Babidi and Majin Buu continue their tour of destruction, and receive some important information. ", 'Writer': '', 'filename': 'episodes/88031/5009911.jpg', 'Director': '', 'FirstAired': '2014-10-12', 'EpisodeName': 'A Trying Time, Obtain the Strength of Legends!'}, '126': {'Rating': None, 'Overview': 'Realizing that Majin Buu is headed for Capsule Corp., Trunks breaks off from his Fusion training, and heads home to retrieve the Dragon Radar. To buy him the time he needs, Goku engages Majin Buu, and showcases a new level of power. Far away from the fighting, Mr. Satan pledges to save the people of Earth from Majin Buu.', 'Writer': '', 'filename': 'episodes/88031/5018254.jpg', 'Director': '', 'FirstAired': '2014-10-19', 'EpisodeName': 'Delay Majin Boo, The Limit! Super Saiyan 3!!'}, '127': {'Rating': None, 'Overview': 'Trunks arrives at Capsule Corp., and hurries to find the Dragon Radar, although his grandparents seem unconcerned with the danger they are in. Meanwhile, Goku desperately tries to delay Majin Buu, and learns first-hand the terrifying power that Buu possesses. Enticed by the promise of an even greater opponent than Goku, Buu begins to question his subservience to Babidi.', 'Writer': '', 'filename': 'episodes/88031/5018255.jpg', 'Director': '', 'FirstAired': '2014-10-26', 'EpisodeName': 'Standing Up For Himself Boo Rebels!'}, '128': {'Rating': None, 'Overview': "Free from Babidi's control, Buu heads off on a rampage. Goku reveals that, as a result of his Super Saiyan 3 transformation during his fight with Buu, he has less than one hour left on Earth. Betting everything on Goten and Trunks, Goku shows them the Fusion Pose, but it turns out to be an embarrassing dance.", 'Writer': '', 'filename': 'episodes/88031/5029617.jpg', 'Director': '', 'FirstAired': '2014-11-02', 'EpisodeName': 'Awful Looking!? Special Training, Fusion Pose!'}, '129': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5035264.jpg', 'Director': '', 'FirstAired': '2014-11-09', 'EpisodeName': 'Bye-Bye Everyone!! Son Goku Returns to the Other World'}, '118': {'Rating': None, 'Overview': "Buu completely overwhelms Supreme Kai and Gohan, with Supreme Kai using the last of his strength to make sure Gohan survives Buu's attack. Before Buu can finish Supreme Kai, he is attacked by Dabura, who believes he cannot be made to obey anyone. Meanwhile, Goten and Trunks arrive nearby, inadvertently breaking the petrified Piccolo. Unfazed by Dabura's attacks, Buu uses his unique ability to turn Dabura into a cookie and eats him, undoing the petrification on Krillin and Piccolo, the latter of whom survived being broken thanks to his regenerative abilities. Before Buu can do the same to Supreme Kai, Vegeta arrives on the scene. ", 'Writer': '', 'filename': 'episodes/88031/4961102.jpg', 'Director': '', 'FirstAired': '2014-08-24', 'EpisodeName': "Turn Into Sweets! The Hungry Majin's Weird Power"}, '59': {'Rating': '8.3', 'Overview': "The Z Fighters (plus Bulma with a young Trunks) gather at the island in anticipation of the androids' attack. However, as the time approaches, Gohan reasons that due to being artificial humans, their enemies have no readable ki and can therefore only be found visually. The fighters then descend into the nearby city to search out their enemies. After a period of searching, Yamcha becomes the first victim of the androids, after being impaled and having his energy absorbed by Android #20. The others arrive just in time to save him, and Goku eventually persuades the androids to move to a new location to fight after a large portion of the city is destroyed.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2289251.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-05-30', 'EpisodeName': "The Pair Who Don't Leave a Trace! The Artificial Humans Appear"}, '58': {'Rating': '8.0', 'Overview': 'Vegeta asks Goku how he managed to survive Planet Namek\'s destruction. Goku then explains that just seconds before Namek exploded, he found one of the Ginyu Force\'s space pods and used it to escape. He further explains that he eventually landed on Planet Yardrat and was nursed back to health by the friendly inhabitants of the planet. He also reveals that he learned from them a special teleportation technique called "Instant Transmission." The Z Fighters then go their separate ways to each begin preparing themselves for the androids\' assault. After three years of intense training, they all head off to meet on the island that Trunks informed Goku where the androids will begin their attack.', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2240151.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-05-23', 'EpisodeName': "Goku's New Technique, Instant Movement! Special Training Staked on 3 Years From Now"}, '55': {'Rating': '7.4', 'Overview': "A year has passed and still Goku has not returned to Earth. However, it is revealed that Frieza managed to survive his battle with the Super Saiyan, has been rebuilt into a cyborg by his father King Cold, and is heading towards Earth, intending to exact revenge on Goku. The rest of the Z Fighters gather to defend the Earth from Frieza, despite knowing that they don't stand a chance without Goku. However, as soon as Frieza, King Cold, and their army of foot soldiers arrive on Earth, they are met by a mysterious teenager wielding a sword, who claims that he's come to kill them.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2177691.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-05-02', 'EpisodeName': "That's planet Earth, papa... Freeza's family comes for revenge"}, '54': {'Rating': '7.0', 'Overview': "Following Planet Namek's destruction, King Kai informs Bulma and the others on Earth of Goku's apparent death, and that even though the Namekian Dragon Balls can resurrect Goku and Krillin, they will be brought back to where Namek used to be and die again. However, Vegeta comes up with the idea of using the Dragon Balls to first bring Goku and Krillin's souls to the Earth's check-in station in the afterlife. 130 days later, the Namekian Dragon Balls are re-active, and the first two wishes are used to successfully revive Krillin, but it is revealed that Goku is still alive and that he will return to Earth on his own later. Yamcha is then brought back to life with the third wish. Another 130 days later, the Namekian Dragon Balls are used to revive both Tien and Chiaotzu, and are then used to teleport all of the Namekians (minus Piccolo) to a new planet. The Z Fighters then return to their peaceful lives, while waiting for Goku to return.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2105851.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-04-25', 'EpisodeName': 'Goku Vanishes in Space... Return to Life! Super Warriors'}, '57': {'Rating': '7.8', 'Overview': "After three hours of waiting, a space pod crash lands on Earth and Goku emerges from it. There is no time for celebration, however, as the mysterious teenager pulls Goku aside to talk with him in private. After testing Goku's Super Saiyan powers, the teenager reveals that his name is Trunks and that he comes from an apocolyptic future 20 years from the present, as well as that he is the future son of Bulma and Vegeta. He further informs Goku that in three years from now, a pair of deadly androids, built by Dr. Gero of the former Red Ribbon Army, will begin a rampage on Earth and kill all of the Z Fighters, except for Goku, who will die from a heart virus some time before their assault. Trunks then supplies Goku with a heart antidote that Future Bulma made for him, instructing him to take it when the virus attacks him. Goku promises that he and the other Z Fighters will train hard for the next three years to prepare for the androids' assault, and Trunks returns to the future in his time machine.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2201341.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-05-16', 'EpisodeName': 'Welcome Back Son Goku! The Confession of the Mysterious Young Boy Trunks'}, '56': {'Rating': '8.4', 'Overview': "The mysterious teenager easily takes out Frieza's foot soldiers, then surprises Frieza by transforming into a Super Saiyan. The evil tyrant attempts to destroy this second Super Saiyan, but has no success. Eventually, the teenager slices Frieza into pieces with his sword, before blasting him away. King Cold tries to defeat the Super Saiyan himself, but is also easily destroyed. After reverting to his normal state, the teenager spots the Z Fighters and claims that Goku will be arriving nearby soon. He then invites them to join him in awaiting Goku's arrival.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2177701.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-05-09', 'EpisodeName': 'I will defeat Freeza! Another Super Saiyan appears '}, '51': {'Rating': '8.0', 'Overview': "Shenron succeeds in resurrecting everyone killed by Frieza and his henchmen on Namek, including Vegeta and Dende, and Guru and the Namekian Dragon Balls are also brought back. Frieza seems to have defeated Goku, but Gohan returns to the battlefield to avenge his father. Frieza nearly kills Gohan, however, Goku re-emerges and orders Gohan to leave once again. Meanwhile, Guru sends Dende to Porunga and use the final wish to teleport everyone on Namek to Earth except Frieza. However, Goku requests that he remain on Namek as well, so he can finish Frieza off. Porunga fulfills this wish and teleports everyone to Earth execpt Goku and Frieza. The two combatants then prepare themselves for the final round before Namek's explosion.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2023911.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-04-04', 'EpisodeName': 'Furious Battle Cry of Goku! Make it in Time... The Resurrection Wish!'}, '50': {'Rating': '7.3', 'Overview': "As the epic battle between Goku and Frieza rages on the dying Planet Namek, King Kai is infomred by Kami on Earth that Mr. Popo has gathered all seven Dragon Balls. Upon learning of the Earth's Dragon Balls' ability to resurrect multiple people in a single wish, King Kai asks that they be used to bring back to life all those on Namek who were killed by Frieza and his minions, thus also bringing back Guru, whose natural death was hastened just slightly by all the suffering Frieza had caused his planet, as well as the Namekian Dragon Balls, which still have one more wish to be used. King Kai plans to use this final wish to teleport everyone on Namek to Earth execpt for Frieza, leaving the tyrant to be the only one present when Namek explodes. Mr. Popo then summons Shenron and fulfills King Kai's first wish.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1942571.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-03-28', 'EpisodeName': 'Do-or-Die Full Power of Freeza! Shenlong Heed this Wish'}, '53': {'Rating': '8.8', 'Overview': "On Earth, Guru finally passes, but before his death, he gives his power to the Namekian Moori, making him the new Elder. Meanwhile, on Namek, the dying Frieza begs for mercy from Goku. Despite his better judgement, Goku cannot ignore Frieza's pleas for help and gives the tyrant some of his own energy before departing. However, Frieza lets his pride get the better of him and unleashes one final energy blast at Goku, but the Super Saiyan easily repels the blast right back at the tyrant and seemingly destroys Frieza. Goku then attempts to escape in Frieza's spaceship, but is unable to make it take off. Namek finally explodes and it appears that Goku perishes along with it.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2061411.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-04-18', 'EpisodeName': 'The Final Blow, Son Goku... Planet Namek Scatters Throughout Space'}, '52': {'Rating': '7.5', 'Overview': "As the battle continues, it seems neither warrior is going to win before Namek's explosion. However, Goku soon notices that Frieza's power is quickly decreasing, due to the protracted battle wearing him out. Eventually, Goku decides to call it quits and begins to depart towards his spaceship. Unable to accept this, Frieza launches a pair of heat-seeking energy disks at Goku. The Super Saiyan manages to avoid this, however, and eventually Frieza is sliced in half by his own attack.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2032931.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-04-11', 'EpisodeName': 'Two Remain on a Vanishing Planet! This is the Final Showdown'}, '115': {'Rating': None, 'Overview': "While Goku and Vegeta's fight gets underway, building energy for Majin Buu each time Goku takes damage, Gohan and Supreme Kai arrive at Majin Buu's egg, where they are confronted by Babidi and Dabura. Before the fight between them can begin, Majin Buu's egg reaches full power as a result of Goku and Vegeta's battle. ", 'Writer': '', 'filename': 'episodes/88031/4938585.jpg', 'Director': '', 'FirstAired': '2014-08-03', 'EpisodeName': "The Countdown to Revival, Crush Babidi's Ambitions!"}, '114': {'Rating': None, 'Overview': "Vegeta begins his attack on Goku, killing several innocent people in the crowd without any remorse. Realising Vegeta had fallen under Babidi's spell on purpose purely for the sake of his grudge, Goku is left with no choice but to fight against him, despite Supreme Kai's attempt to stop him, and has Babidi warp them to somewhere they can fight alone. As Supreme Kai and Gohan decide to go on ahead and leave the two Saiyans to their fight, Babidi attempts to command Vegeta to kill them, but his pride defies even his master's demands. ", 'Writer': '', 'filename': 'episodes/88031/4933366.jpg', 'Director': '', 'FirstAired': '2014-07-20', 'EpisodeName': "I'm the Strongest! The Clash: Goku vs Vegeta"}, '88': {'Rating': '9.4', 'Overview': "Goku and Cell begin to fight and, despite putting on an impressive performance, Gohan and Vegeta both realise that neither is using his full power yet. Both fighters then raise their ki to their maximum. After a brief battle, Cell begins to attack using techniques 'inherited' from other characters--first Tien's Multi-Form technique, then Piccolo's Makankosappo, and finally Frieza's homing Destructo Disc. When Goku overcomes each of these techniques, Cell prepares a full-power Kamehameha capable of destroying the Earth. Goku diverts the attack away from the planet by taking to the sky, and then uses Instant Transmission to return to escape back to the ring.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3366371.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2011-01-09', 'EpisodeName': 'The Decisive Battle! Cell vs Son Goku'}, '89': {'Rating': '9.6', 'Overview': "The battle between Goku and Cell continues, with the two fighters reaching a pace that is barely visible to most of the onlookers. Cell then decides to destroy the tournament ring, ensuring that their battle isn't ended by a ring out and can continue until one of them either dies or surrenders. The battle becomes even more intense, culminating with Goku flying high into the sky building up a powerful Kamehameha. Cell and everyone else states that Goku is bluffing, since from his position in the sky, such an attack would easily destroy the Earth. Goku then unexpectedly uses Instant Transmission to teleport in front of Cell and executes the attack point-blank. While the rest of the world celebrates what they believe to be Cell's ultimate defeat, Goku and company watch as Cell's remaining lower half rises and regenerates his missing parts. While the ki of both fighters has depleted considerably, the battle continues on.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3456961.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2011-01-16', 'EpisodeName': 'A Battle of the Highest Level! Defeat Cell, Son Goku'}, '111': {'Rating': None, 'Overview': 'As the battle between #18 and "Mighty Mask" continues to escalate, #18 struggles to keep up with her opponent\'s unpredictable moves, but manages to land a critical hit against the pair, knocking them into the center of the stage. Goten and Trunks decide to switch places with Goten now on top, pushing #18 to the point where she starts using energy blasts against them, but she manages to hit back with support from her child. The pair decide to go Super Saiyan and launch a powerful blast at #18, but she manages to dodge it and reveal their true identity, resulting in the pair becoming disqualified, leaving #18 and Satan as the only remaining fighters. As Goten and Trunks come across Videl upon her return, Dabura emerges from his meditation chamber, ready to face off against Gohan. ', 'Writer': '', 'filename': 'episodes/88031/4919841.jpg', 'Director': '', 'FirstAired': '2014-06-29', 'EpisodeName': "The Fearsome Children!! #18's Great Struggle"}, '110': {'Rating': None, 'Overview': 'As Babidi fears the power of the Saiyans, Dabura decides to face them himself, going inside a meditation chamber to raise his power before his battle. Meanwhile, back at the tournament, Goten and Trunks take a break from their Mighty Mask disguise to get some drinks, barely avoiding having their cover blown. With Goku and the other members still missing, Satan suggests that a battle royale be held between the remaining contestants; #18, "Mighty Mask", Killa, Jewel, and himself. As the match begins, Killa and Jewel are quickly dispatched by #18 and the Trunks/Goten combo, who proceed to ignore Satan and go after each other. ', 'Writer': '', 'filename': 'episodes/88031/4903417.jpg', 'Director': '', 'FirstAired': '2014-06-22', 'EpisodeName': "Who is the World's Greatest?! A Battle Royal Deciding Match!!"}, '113': {'Rating': None, 'Overview': "As the battle between Gohan and Dabura continues, Vegeta's impatience to settle things with Goku catches the attention of Dabura, who decides to abandon the fight and report to Babidi. Learning that Vegeta still retains a lot of evil in his heart, Babidi uses his magic to target Vegeta's mind and sway him over to his side. To make matters worse, Babidi transports everyone to the tournament grounds, where Vegeta, still focused on his desire to defeat Goku, prepares to face off against him even with innocent bystanders watching. ", 'Writer': '', 'filename': 'episodes/88031/4925129.jpg', 'Director': '', 'FirstAired': '2014-07-13', 'EpisodeName': 'An Evil Heart Revived: The Prince of Destruction, Vegeta!'}, '112': {'Rating': None, 'Overview': "Noticing his complete lack of fighting skill, #18 makes a deal with Satan to let him win the match and maintain his dignity in exchange for twice the price money. Meanwhile, Goten and Trunks, having heard about the current situation from Videl, become interested and head towards the action. Back at the spaceship, Dabura appears before Gohan, deciding to give him a handicap by choosing an arena similar to Earth's environment. As the fight gets underway, both Gohan and Dabura bring out their full power against each other. Despite being hit by some of Dabura's powerful attacks, Gohan refuses to lose against him. ", 'Writer': '', 'filename': 'episodes/88031/4925128.jpg', 'Director': '', 'FirstAired': '2014-07-06', 'EpisodeName': 'The Star Performer Takes the Stage! Take Down the Demon King!!'}, '82': {'Rating': '8.0', 'Overview': 'Trunks unleashes his awesome power and proves stronger than Cell, but it is still not enough to beat Cell.  The increased strength is slowing trunks down.  Meanwhile Goku and Gohan start training to truely surpass Super Saiyan.', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3151111.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-11-21', 'EpisodeName': 'Super Power Awakening! Trunks Surpasses his Father'}, '83': {'Rating': '8.3', 'Overview': "When Krillin and Vegeta arrive Trunks informs everyone of the Tenkaichi Tournament held by Cell and Android #16 asks to be taken back to Capsule Corporation where he can be fixed. Bulma also notifies everyone at Kami's house to go there too to meet up. After Cell finishes making his tournament then he heads off to a news station to broadcast his message via television announcing details about his tournament the Cell Games and if that all the warriors lose to him, he will kill every single last human being. Meanwhile Goku and Gohan are still training. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3221221.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-11-28', 'EpisodeName': 'The Television`s Been Hijacked! A Live Broadcast of the Cell Games Press Conference '}, '80': {'Rating': '8.5', 'Overview': "Cell has finally achieved his perfect form! In what Cell calls a warm up, Cell matches Vegeta move for move without effort and quickly overpowers Vegeta.  Krillin tells Trunks that he knows his secret. A secret Trunks is keeping for his father's pride.  Meanwhile, has Gohan attained Super Saiyan?", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3106861.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-11-07', 'EpisodeName': 'The Tables Have Turned! Perfect Form Cell Finally Goes into Action '}, '81': {'Rating': '8.2', 'Overview': "Vegeta puts all the strength he can into his final flash attack in an attempt to take down cell.  Cell takes some considerable damage from Vegeta's ultimate attack, but it's not enough as Cell taps into his powers from Piccolo to regenerate.  Cell makes easy work of Super Vegeta leaving Vegeta unconscious. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3106871.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-11-14', 'EpisodeName': "Vegeta's Full-Power Strike! But Cell's Terror Grows and Grows"}, '86': {'Rating': '8.5', 'Overview': "After getting help from King Kai in locating the planet where the Namekians are staying, Goku travels there and explains the situation. The Grand Elder offers Dende to be the new Kami, and Goku takes him back to Earth. Dende revives the dragon balls, revealing that this time they can use two wishes. During the the ten days leading up to the Cell Games, Goku searches for the newly awakened dragon balls, Vegeta and the others finish their training and a martial arts champion, Hercule, steps up to fight Cell. On the day of the Cell Games, it is revealed that if the new dragon balls are used to revive a mass of people, people who died before won't be revived. Despite the others' concern, Goku remains positive and they all head towards the Cell Games.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3297201.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-12-19', 'EpisodeName': 'A New God! The Dragon Balls are Finally Revived'}, '87': {'Rating': '9.5', 'Overview': 'As Hercule hypes himself in front of the media, Vegeta, Android 16, Goku and the others arrive at the stage. Hercule insists he goes before him, though when his students Calorie and Piroshiki arrive, he allows them to go first, but they are defeated without Cell needing to move. Hercule tries to intimidate Cell by breaking some tiles and then goes on the attack, but Cell knocks him out of the ring with a single blow, not even bothering to kill him. As Cell wishes to take on a proper opponent, Goku steps into the ring.', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3366361.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-12-26', 'EpisodeName': "Satan's Legion Runs Wild! The Curtain Rises on the Cell Games"}, '84': {'Rating': '8.8', 'Overview': "The people of Earth are in a panic after Cell's announcement of the Cell Games. Meanwhile, Goku and Gohan finish their training in the Hyperbolic Time Chamber. Goku immediately requests that Mr. Popo prepare a meal and Trunks explains the latest Cell developments. Goku then teleports to the site of the Cell Games and confronts Cell. After returning to the lookout, Goku announces he and Gohan will not be entering the Hyperbolic Time Chamber again. Instead, for the remaining nine days until the Cell Games, they will train in the real world. Goku and Gohan then fly to Kame House and greet their remaining friends.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3221231.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-12-05', 'EpisodeName': 'Training Completed! Does Goku have the Composure to Defeat Cell?! '}, '85': {'Rating': '9.7', 'Overview': "As Piccolo completes his training in the Hyperbolic Time Chamber and Vegeta takes his place, Goku and Gohan are spending their days relaxing at home. Meanwhile, the Self-Defense Army attempt to launch an offensive strike against Cell, but they are completely wiped out. Hearing about this over the radio, Goku asks Picollo if it is possible to seperate with Kami, so he can use the Dragonballs to revive all the people Cell killed (as they disappeared since they fused together). Since Piccolo can't seperate, Goku theorises that he can convince another Namekian to stay on Earth and create a new set of Dragonballs, and goes to find King Kai so he can find the Namekians.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3254451.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-12-12', 'EpisodeName': 'An Interrupted Rest! The Self-Defense Army, Launches a General Offensive Against Cell'}, '138': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5107702.jpg', 'Director': '', 'FirstAired': '2015-01-18', 'EpisodeName': 'Buu Eliminated With Ghosts! A Surefire Kamikaze Attack!!'}, '3': {'Rating': '8.5', 'Overview': "Unable to withstand Raditz's brute strength, Goku and Piccolo rely on Piccolo's latest technique in a last ditch effort. Will the makankosappo be enough to defeat Raditz or will a looming third fighter finally be enough to even the playing field? ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/507751.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-04-19', 'EpisodeName': "A Battle with Their Lives on the Line! Goku and Piccolo's Wild Suicide Attack"}, '7': {'Rating': '7.3', 'Overview': " Goku continues his training under Kaio. His first challenge: catching Kaio's pet monkey Bubbles under 10 times Earth's gravity. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/665271.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-05-17', 'EpisodeName': 'Battle with 10-Fold Gravity! Goku, Your Training is a Footrace'}, '108': {'Rating': None, 'Overview': "Supreme Kai and Kibito warn Goku and the others about the malicious pair, with Dabura being the strongest being of the underworld and Babidi possessing magic powerful enough to sway him to become his henchman. Having obtained the energy from them and deeming them of no further use, Babidi kills Spopovich with his magic while having his other henchman, Pui Pui, kill Yamu. Having detected the presence of the Z-Fighters, Babidi and Pui Pui head inside of the ship while Dabura attacks the group, immediately killing Kibito and firing his spit at Krillin and Piccolo, turning them into stone. Learning that they can only unpetrify them by killing Dabura, the remaining fighters chase after him into the ship, despite Supreme Kai's warnings. Upon reaching the first floor, they are confronted by Pui Pui, who informs them they must face several floors before they can reach Babidi at the bottom. The Saiyans, however, don't think much of their opponent and play a game of rock-paper-scissors to decide who should fight him, with Vegeta stepping up against him. ", 'Writer': '', 'filename': 'episodes/88031/4897945.jpg', 'Director': '', 'FirstAired': '2014-06-08', 'EpisodeName': "The Heinous Mage Babidi and King of the Dark Underworld Doubler's Trap"}, '109': {'Rating': None, 'Overview': "As Vegeta easily outmatches Pui Pui in terms of fighting skill, Babidi changes the stage to match that of the high gravity planet, Zun, where Pui Pui is at his top fighting form. However, this makes no difference to Vegeta, who obliterates his opponent and opens the way to the next floor. Believing the Saiyans to not be underestimated, Babidi sends in his next warrior, Yakon, and changes the stage to that of Planet Ankoku, but even with the aid of pitch black darkness, Yakon is no match for Goku's keen senses. When Goku turns Super Saiyan, however, Yakon uses his ability to consume light and sucks in Goku's energy, turning him back into normal. Rather than finding an alternative way to fight, Goku instead feeds him even more Saiyan energy until he explodes from being overloaded, allowing Goku and the others to move onto the next stage. ", 'Writer': '', 'filename': 'episodes/88031/4902587.jpg', 'Director': '', 'FirstAired': '2014-06-15', 'EpisodeName': "Don't Underestimate a Super Saiyan! Vegeta and Gokuu's Full Throttle Power!"}, '102': {'Rating': None, 'Overview': "After ten days of training, Videl manages to master flight, finally giving Gohan and Goten the opportunity to resume their training for the tournament. On the day of the tournament, Gohan suggests to Vegeta, Goten, and Trunks that they don't use their Super Saiyan forms during the tournament to avoid hassle from the press. Arriving at the island where the tournament will take place, Gohan and the others are greeted by Goku, who the fortune teller Baba has granted 24 hours to stay on Earth, allowing him to meet Goten for the first time, while Piccolo destroys all the cameras in the area to keep Gohan's identity a secret. After the participating fighters register for the tournament, with Goten and Trunks forced to participate in the junior division, the preliminary rounds begin, where the fighters must hit a punching machine to rank their strength, with the Dragon Team effortlessly qualifying. ", 'Writer': '', 'filename': 'episodes/88031/4849503.jpg', 'Director': '', 'FirstAired': '2014-04-27', 'EpisodeName': 'The Dragon Team, All Assembled! Son Gokuu has Returned!!'}, '103': {'Rating': None, 'Overview': 'While Gohan and Videl wait to take their preliminaries, Goku, Vegeta, and the others go to spectate the junior division, where Goten and Trunks effortlessly progress through each round until they face each other in the final round. The battle gets more and more intense, with Goten and Trunks surprising the audience with advanced techniques and even turning Super Saiyan. The match eventually comes to an end where a sneak attack by Trunks causing Goten to lose by ring-out. Satan, who had spectated the fight and had been reminded of the battle with Cell, now faces a pinch as he now has to fight against Trunks. ', 'Writer': '', 'filename': 'episodes/88031/4867891.jpg', 'Director': '', 'FirstAired': '2014-05-04', 'EpisodeName': "Everyone is Shocked! Goten and Trunks' Super Battle!!"}, '100': {'Rating': None, 'Overview': 'As Videl is called in to stop a bus hijacking, Gohan, using the alias "Great Saiyaman", pitches in to help the passengers while Videl handles the criminals. The next day, Gohan learns that Chobi, the child of Toto the pterodactyl, has been captured by a circus and put on display. In his attempt to rescue Chobi, Gohan is portrayed as a criminal and is pursued by Videl. However, when Chobi\'s parents attack the city in search of their child, Gohan manages to handle the situation and return Chobi to his parents. Later, Videl, who discovers the truth that Gohan is Great Saiyaman, blackmails him into participating in the 25th World Martial Arts Tournament. As some of the other Z Fighters express interest in the tournament, Goku calls out from the Other World, saying he will return to Earth for a single day to particpate. ', 'Writer': '', 'filename': 'episodes/88031/4849501.jpg', 'Director': '', 'FirstAired': '2014-04-13', 'EpisodeName': 'Found Out! The New Hero is Son Gohan'}, '101': {'Rating': None, 'Overview': u"After Gohan spreads word of the tournament to the others, as well as managing to convince Chi-Chi to let him participate himself, Gohan takes a leave of absence from school and begins training with Goten. Gohan is surprised to find that Goten not only possesses great strength, but is also already capable of transforming into a Super Saiyan, although he has yet to learn how to fly. Later, Videl comes around to have Gohan make good on his promise to teach her how to fly using buk\u016b-jutsu, with Gohan starting her off with the basics of learning how to control her energy. Within a day, Videl has managed to learn how to float while Goten has managed to learn how to fly. Following a remark from Gohan, Videl comes back the next day with her hair cut, determined to learn more from Gohan. Meanwhile, Vegeta is also surprised to find that Trunks is also capable of becoming a Super Saiyan, whose strength is slightly higher than Goten's, while Goku trains fiercely in anticipation for the tournament. ", 'Writer': '', 'filename': 'episodes/88031/4849502.jpg', 'Director': '', 'FirstAired': '2014-04-20', 'EpisodeName': "Gohan is the Teacher! Videl's Introduction to Flight"}, '106': {'Rating': None, 'Overview': "With Spopovich nearly beating Videl to death, Gohan loses his temper and prepares to storm onto the field, but Spopovich's partner, Yamu, convinces Spopovich to end the fight by pushing Videl out of the ring. With Videl heavily injured, Goku uses his instant transmission to receive some senzu beans from Korin, which Gohan gives to Videl to restore her to full health. Gohan, whose identity is revealed to his classmates after his bandana was blown off during his outburst, steps up to face against Kibito, who requests to see Gohan's Super Saiyan transformation. After Piccolo informs the other Z-Fighters of Shin's identity as the Supreme Kai, he orders Gohan to transform. Right after Gohan transforms, Spopovich and Yamu appear and use a device to drain his Super Saiyan energy, leaving him weakened. As Kibito offers to tend to Gohan, the Supreme Kai asks Goku and the others to join him in pursuing the culprits. ", 'Writer': '', 'filename': 'episodes/88031/4879132.jpg', 'Director': '', 'FirstAired': '2014-05-25', 'EpisodeName': "Videl is Worn Out, Gohan's Anger is at its Limit!!"}, '107': {'Rating': None, 'Overview': "As Goku and the others set off to join the Supreme Kai, Kibito uses his unique ability to restore Gohan's energy, before the two of them, along with Videl, set off after the others. Along the way, Supreme Kai and Kibito explain to the others about how an evil mage named Babidi is seeking to revive an evil being known as Majin Buu, who was responsible for the death of four Supreme Kais long ago. To accomplish this, he manipulated Spopovich and Yamu to join the tournament and steal Super Saiyan energy needed to break the seal placed on Buu. Unable to push her flight any further, Videl, coming to understand that Gohan was the one who defeated Cell back then, places her faith in him and returns to the tournament grounds, while Gohan and Kibito catch up to Goku's group. Arriving at the site of a buried spaceship, the Z-Fighters lay in watch as Spopovich and Yamu deliver Gohan's energy to Babidi and his partner, Dabura, the Demon King. ", 'Writer': '', 'filename': 'episodes/88031/4886081.jpg', 'Director': '', 'FirstAired': '2014-06-01', 'EpisodeName': 'Secrets of the Terrible Majin, A Black Curtain Appears!!'}, '104': {'Rating': None, 'Overview': "After various attempts to try and get out of the fight, Satan decides to pretend to lose and have Trunks hold back his attack in order to keep up his appearance, though even Trunks' weakest punch manages to send Satan flying. During an intermission, Trunks and Goten decide to take out one of the participants and steal his clothes in order take his place in the adult division. Meanwhile, as Goku and the others get something to eat, they encounter a pair of mysterious participants, Shin and Kibito, who Piccolo determine as not being from Earth. As the sixteen qualifying participants gather together to decide the drawings for the first round, Gohan is paired up against Kibito while Goku gets paired up against Vegeta. ", 'Writer': '', 'filename': 'episodes/88031/4867892.jpg', 'Director': '', 'FirstAired': '2014-05-11', 'EpisodeName': 'A Troubling Premonition... A Mysterious Warrior Appears!!'}, '105': {'Rating': None, 'Overview': "As the drawings come to a close, Piccolo is put up against Shin while #18 is up against Satan. After Krillin wins his first match against his opponent, Piccolo and Shin face against each other, but as Piccolo senses an overwhelming power coming from Shin, he decides to forfeit the match before it even begins, feeling Shin's power is far beyond his own. As Videl prepares to go up against a man named Spopovitch, Piccolo learns from Kibito that Shin is actually the Supreme Kai, believed to be even more powerful than the Grand Kai. Videl appears to get the upper hand in her match, but Spopovitch keeps getting up no matter how many times he is knocked down and eventually fights back. Goku suspects something amiss about Spopovitch, which proves true when he continues fighting even after Videl breaks his neck. Videl attempts to use her flight to regain her strength, but Spopovitch follows her into the air and uses energy blasts against her. As Videl refuses to give up despite the beating she is taking, Goku wonders where Spopovitch got his power from. ", 'Writer': '', 'filename': 'episodes/88031/4867893.jpg', 'Director': '', 'FirstAired': '2014-05-18', 'EpisodeName': "What's Wrong, Piccolo!! An Unexpected Conclusion to the First Round"}, '39': {'Rating': '6.0', 'Overview': "While Goku continues to recover in the rejuvenation chamber at Frieza's ship, Piccolo begins battling Frieza himself - and surprisingly manages to hold his own! The two exchange blows pretty evenly for a good portion of the fight. Piccolo realizes Frieza slightly holds the upper hand, so he removes his weighted clothing and begins winning against the tyrant. Frieza finds himself backed into a corner, so he decides it is best to transform again to fight Piccolo. Becoming his grotesque, ugly third form, Frieza once again gains the upper hand and begins obliterating Piccolo with a rapid finger beam blast. Gohan rushes to rescue his mentor, and when Krillin tries to follow suit, Vegeta stops him - revealing to Krillin he may have a strategy that will allow him to defeat the tyrant. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1472491.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-01-10', 'EpisodeName': "The Reborn Piccolo Shows Himself! An Enraged Freeza's Second Transformation"}, '38': {'Rating': '7.5', 'Overview': "With Goku still healing from the previous battle and Piccolo still on the way to their location, Gohan takes it upon himself to hold up against the might that is Freeza's transformed self.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1436431.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-12-27', 'EpisodeName': 'Freeza Bares His Fangs! A Transcendent Power Attacks Gohan'}, '33': {'Rating': '8.3', 'Overview': "Goku powers up to his maximum level - which is far greater than that of even Captain Ginyu! Yet, for some strange reason, Goku's current enemy doesn't seem too worried. After the Eldest Namek gives Dende a mysterious new power and sends him off to meet the Earthlings, Nail begins battling Frieza. While Frieza is clearly the stronger of the two, he is surprised at Nail's ability to regenerate lost limbs. Gohan and Krillin rescue Bulma from a dinosaur attack, and take the Dragon Radar to find where Frieza took the Dragon Balls to. As the episode ends, Ginyu makes the strange move of wounding himself, and firing a strange beam at Goku.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1314881.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-11-22', 'EpisodeName': 'Son Goku at Full Power! The Terrified Ginyu has Something Up His Sleeve!!'}, '32': {'Rating': '8.7', 'Overview': "Goku tells Jeice to take the beaten Recoome and Burter and leave the planet forever. Jeice flees to Captain Ginyu and tells him what has happened. Captain Ginyu has Frieza's men bury the Dragon Balls then sets out with Jeice towards Goku. Meanwhile, Vegeta kills Burter then Recoome. Also, Krillin and Gohan realize that Frieza is heading towards Elder Guru in order to obtain the password to summon the Namekian Dragon. Shortly after this, Captain Ginyu and Jeice arrive to battle Goku. Goku tells Krillin and Gohan to leave. Vegeta tricks Goku and flies away, leaving Goku to fight alone. Goku and Captain Ginyu fight, and after a while Captain Ginyu asks Goku to release his true power. Goku abides and begins to power up.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1280931.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-11-15', 'EpisodeName': "Star Performer's Entry!? Captain Ginyu vs. Son Goku"}, '31': {'Rating': '8.8', 'Overview': 'Goku enters the battle after giving Senzus to Krillin, Gohan, and Vegeta, and things quickly take a turn for the better. Recoome, charging up a deadly attack, is defeated by a single blow from Goku. Jeice and Burter leap into battle trying a variety of techniques - none of which have the least bit of effect on Goku. Burter is knocked out by a few swift attacks from Goku, as Jeice stares in awe at his latest opponent - having never faced someone so powerful.', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1272341.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-11-08', 'EpisodeName': 'Son Goku Finally Arrives! Knock the Ginyu Special-Squad Around'}, '30': {'Rating': '9.5', 'Overview': "Vegeta begins battling Recoome, the big brute of the Ginyu Force. While the Saiyan prince manages to get in a few good blows, ultimately Recoome doesn't seem to be taking any pain. Gohan and Krillin enter battle after Vegeta becomes too badly injured to continue fighting, but quickly find themselves beaten and outclassed by the hulking Ginyu Force member as well. Meanwhile, Frieza attempts to use the Dragon Balls but nothing happens, prompting him to leave Ginyu to guard the balls while he himself goes to look for Namekians to tell him how to become immortal. Just when all seems lost in Vegeta, Krillin and Gohan's fight with Recoome, Goku's Capsule Corporation ship finally touches down on Planet Namek.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1248041.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-11-01', 'EpisodeName': 'The Hellish Recoome! Keep Me Entertained, Vegeta-chan'}, '37': {'Rating': '7.5', 'Overview': "Piccolo arrives on Planet Namek following being resurrected and wished there. He begins rushing towards the battlefield, and along the way encounters an ailing Nail, on the brink of death. Piccolo reluctantly performs Namekian fusion with Nail, which increases his power substantially, and begins rushing back to the battlefield. Meanwhile, Frieza, after battling the Earthlings and Vegeta in his first form, transforms to his second form following some goading from Vegeta - and this increases the tyrant's power level to over a million! With his increased power, Frieza charges at Krillin in the air, impaling him on his horn.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1403771.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-12-20', 'EpisodeName': "A Tormenting Super Transformation! Freeza's One Million Fighting Power"}, '36': {'Rating': '7.5', 'Overview': "Porunga, the Namekian Eternal Dragon, is summoned. However Krillin, Gohan and Dende are met with some bad news when they discover that only one dead friend can be resurrected per wish! Piccolo communicates with the Earthlings, telling them to revive him and wish him to the Planet Namek. Dende speaks the first wish and Piccolo's halo disappears - and Kami is resurrected on Earth, much to Mr. Popo's joy. The second wish is made, however, Piccolo is nowhere in sight. Dende tells them that they wished him to the Planet Namek and not their specific location, however - so the third wish can be used to transport him to that particular spot. Unfortunately, things take a turn for the worst. Vegeta is awakened by sensing the approaching Frieza's power, and quickly awakens and rushes to where the Earthlings are making their wishes. He threatens them for stealing his chance at immortality, though they accidentally reveal that there is one more wish left - which he would be able to use to get immortality. He tells Dende to make him immortal, and with Frieza fast approaching, Krillin reluctantly tells Dende to wish Vegeta immortal - stating that, if nothing else, he is at least better than Frieza. Before he can deliver the wish, however, the Eldest Namek dies, causing the Dragon Balls to stop working. Vegeta is outraged at the Earthlings since his chance for immortality has one again been foiled. His anger at the Earthlings doesn't last, however, since Frieza arrives at the battlefield at that very moment. The tyrant begins charging up, terrifying everyone but Vegeta who seems strangely calm. The entire planet begins to shake violently as Frieza summons his power - as Goku remains in the rejuvenation chamber, slowly still recovering from the injuries his body had taken during the earlier Ginyu conflict.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1389941.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-12-13', 'EpisodeName': 'Enraged Freeza Draws Near! Porunga... Please Grant Our Wish!'}, '35': {'Rating': '7.5', 'Overview': "After killing Jeice, Vegeta sets his sights on Ginyu (still in Goku's body.) Vegeta effortlessly pummels Ginyu, and an attempt by Ginyu to get Vegeta's body is thwarted by Goku who intervenes - ending up back in his own (wounded) body, and Ginyu going back to the body he had before - which he had deliberately wounded. Vegeta begins thrashing Ginyu in his native body, and once again quick thinking on Goku's part prevents Vegeta from being swapped with Ginyu's body - Goku throws a Namekian frog in the path of the beam, trapping Ginyu in the frog's body. Vegeta places Goku in a rejuvenation chamber inside Frieza's spaceship and gives armor to Krillin and Gohan - knowing an inevitable battle against Frieza is in their future. Vegeta begins sleeping to regain strength he lost while fighting Ginyu. Meanwhile, Nail continues to fight Frieza and does no damage to the tyrant. Once beaten and fallen, Nail reveals the truth - the fight was just a diversion to get the password to use the Dragon Balls to the Earthlings! Frieza begins charging back towards his spaceship, noticing his scouter no longer shows the power levels for the Ginyu Force. Krillin, Gohan, and Dende take the Dragon Balls, and Dende uses the password to summmon Porunga, the Namekian Dragon Balls' equivalent of Shenron.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1373191.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-12-06', 'EpisodeName': 'A Great Turnabout for Goku!? Super Shenlong, Come Out Right Now!'}, '34': {'Rating': '8.3', 'Overview': "Having switched bodies with Goku, Ginyu races back to the dragon balls' location alongside Jeice only to cross paths with Vegeta, Kuririn and Gohan. As the three prepare for another fight, the injured Goku does his best to reach their location to get his body back.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1339951.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-11-29', 'EpisodeName': 'Surprise! Goku is Ginyu and Ginyu is Goku!?'}, '60': {'Rating': '8.0', 'Overview': "As Goku, Piccolo and Tien take the androids to a new location to battle, Krillin revives Yamcha with a sensu bean. However, once Yamcha reveals the androids' ability to absorb energy, the three of them (Yamcha, Krillin and Gohan) head off to warn the others. Meanwhile, it is revealed to Goku that the androids are a result of years of research conducted by Dr. Gero, in which miniature spy robots were used to analyse Goku's fighting techniques and developments in strength, all in an attempt to exact revenge on Goku for destroying the Red Ribbon Army. As a battles ensues between Super Saiyan Goku and Android #19, it becomes evident that Goku is losing the upper hand, especially once the android absorbs Goku's Kamehameha wave. Gohan then reveals that Goku never became sick from the heart virus (as was predicted by Trunks), and that it seems to have affected him six months later than planned. As Goku struggles to fight, the android prepares to finish the battle by absorbing Goku's remaining energy.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2325211.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-06-06', 'EpisodeName': 'Attacked on Both Sides by an Internal Enemy?! Son Goku vs Artificial Human #19'}, '61': {'Rating': '9.5', 'Overview': "Before Android #19 can finish draining Goku's energy, Vegeta finally arrives, saving Goku by kicking the android in the face. Yamcha then escorts Goku away from the battlefield. Vegeta then squares up to the androids, and much to everyone's surprise, transforms into a Super Saiyan. It is revealed that whereas Goku's transformation was triggered by the desire to protect his friends and family, Vegeta's was triggered purely by the desire to become stronger, as well as his anger at being surpassed by Goku. The battle then begins, and it's clear that Vegeta has the edge over Android #19. Even the android's energy absorption attack proves futile, as Vegeta tears off the android's arms, making the technique impossible to use. As the android runs in fear, Vegeta launches his 'Big Bang Attack' and finishes the battle, leaving nothing but the android's head intact. Android 20 then escapes into the nearby cliffs, planning to use the terrain to launch a surprise attack on the fighters.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2345101.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-06-13', 'EpisodeName': 'No Chance of Victory Against #19! Super Vegeta Arrives Late'}, '62': {'Rating': '8.0', 'Overview': "The Z Fighters split up to search the area for Android #20. Frustrated at his enemy's deceptiveness, Vegeta fires a large ki blast at the cliffs, planning to level the area. Seeing this opportunity, Android #20 emerges from his hiding place, only to absorb Vegeta's blast and run away before Vegeta can catch up. He then attacks Piccolo from behind and begins to drain his energy, although this is thwarted by Gohan, who senses Piccolo's fading ki and attacks the android. After receiving a sensu bean, Piccolo then faces off against his attacker, and proves to be more than a match for the android. Meanwhile, Trunks finally returns from the future, and is disturbed to find that the remains of Android #19 are different from the androids that he faced in his own timeline. He then arrives at the current battlefield, and also seems not to recognise Android #20. Realising that he has no chance of victory, Android #20 decides to retreat to his laboratory, but not before launching a huge blast that engulfs most of the area - including Bulma's ship, which plummets towards the ground.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2367931.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-06-20', 'EpisodeName': "Piccolo's Assault! The Missing #20 and the Future Gone Eschew"}, '63': {'Rating': '7.8', 'Overview': "As the dust settles, Android #20 is nowhere to be seen, and it is assumed that he plans to return to the laboratory and awaken Androids #17 and #18 - the androids causing havoc in Trunk's timeline. Meanwhile, Trunks rescues his mother and young self, and berates Vegeta for failing to protect his family. Bulma then reveals that Android #20 may actually be the androids' creator, Dr Gero, who has seemingly converted himself into one as well. The group then plan to find the lab and destroy the androids before Dr Gero can activate them. Vegeta also sets off to find the lab, but with the intentions of fighting the androids as a demonstration of his power. Trunks leaves to stop his father, while Piccolo finally unveils the truth of Trunk's origin to the rest of the group. Meanwhile, Piccolo, Krillin and Tien split up and search the mountains where Dr Gero's lab is rumoured to be located, while Gohan takes Bulma, baby Trunks and Yajrobe to Goku. Meanwhile, Krillin is attacked by the doctor, but is spared when Gero senses Piccolo nearby and escapes.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2393581.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-06-27', 'EpisodeName': 'Pursue! Doctor Gero... The Search for the Mysterious Laboratory!'}, '64': {'Rating': '7.3', 'Overview': "Dr. Gero finally makes it to his laboratory, with Krillin in hot pursuit. Tien, Piccolo, Vegeta and Trunks soon locate him and break into the lab, although by this point Dr. Gero has already awakened Androids #17 and #18. Although initially appearing loyal, the duo demonstrate their independence when Android #17 destroys Gero's remote, ensuring that he cannot deactivate them should they disobey him, and Android #18 attempts to activate Android #16 - a fully mechanical model deemed a failure by Dr. Gero. Android #17 then kills Dr. Gero, by severing and then crushing his head. In an act of desperation, Trunks launches a large ki blast at the androids, hoping to destroy Android #16 before he is activated. Although the entire lab is decimated, both Androids and #16's pod remain intact, and he is awakened anyway. The trio then decide to carry out their initial orders, and set out to kill Goku. However, their plans are disrupted when Vegeta intervenes, challenging the three androids to a battle. After Android #16 refuses to fight, Android #18 steps up to face Vegeta.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2416131.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-07-11', 'EpisodeName': '#17 and #18, and...! The Artificial Humans Awaken'}, '65': {'Rating': '7.3', 'Overview': 'Android #18 fights with Vegeta in Super Saiyan mode and wins easily. First Trunks tries to help Vegeta but gets taken down with one hit and the others also get beaten down effortlessly, except Krillin who stays behind and watches the horror. After the fight, Androids #16,#17,#18 leave but before they do #18 kisses Krillin on the cheek. Krillin then goes and feeds everyone Senzu Beans. Trunks explains how these androids are much stronger than the ones back in his world. Vegeta flies off in anger having being beaten.', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2485111.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-07-18', 'EpisodeName': 'A Cute Face and Super Power?! #18 vs Vegeta'}, '66': {'Rating': '8.8', 'Overview': 'Piccolo flies off to try and convince Kami to fuse with Piccolo as it is the only way to stop the androids however Kami believes that the androids are not all that evil and that the only reason they battled against them was because they fought with them first. Kami then decides to wait and see what happens as Piccolo sits down waiting until Kami agrees to merge with him. ', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2507621.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-08-01', 'EpisodeName': "The Time has Come to Become One Again... Piccolo's Decision for Ultimate Power!"}, '67': {'Rating': '8.0', 'Overview': "Bulma receives a phone call about one of her company's products from Capsule Corporation. She is sent a photograph of what appears to be Trunks' time machine that he travelled in. Trunks investigates this with the others only to discover that it is the exact time-machine that he came in but three years later in his world. He recognizes it because of the word 'Hope' that Bulma wrote on the time-machine. Kami realizes that the evil he felt four years ago wasn't the androids but it was the monster that travelled back in the time-machine.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2581631.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-08-08', 'EpisodeName': 'One More Time Machine?! Bulma Unveils a Mystery'}, '68': {'Rating': '7.3', 'Overview': "Trunks, Gohan, and Bulma are investigating the other time machine when Gohan notices a strange shell that has been cast off by a monster. On the way back to her house, Bulma is watching the news which is describing that thousands of people are randomly disappearing as if they melted away in their clothes. She tells the others at Master Roshi's house to tune in and watch as well. Kami watches in horror as the people are killed and finally decides that it is time to merge with Piccolo. Before merging he also says that the evil in Piccolo is mostly gone and the world needs not a Kami right now but a hero. When merged the Namekian states that he is neither Piccolo nor Kami anymore but a Namekien who has long since forgotten his true name then departs off Kami's lookout and arrives at the scene of the crime where all of the killings have been taking place. Trunks also starts heading over there. As Piccolo looks around the monster finally shows himself to Piccolo.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2645961.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-08-15', 'EpisodeName': "And the monster appears... Appearance! It's Super Namek!"}, '69': {'Rating': '8.0', 'Overview': "Back at Kami's house Chichi says that Goku is nearly healed. The monster uses the sting on his tail and starts sucking the life force out of a man which causes the man to melt away. The monster seems to know Piccolo's name and says that he is his brother. The others detect multiple Ki readings, seeming to come from many different people, including Goku, all gathered in one spot but everyone states that this is impossible and Gohan goes to check on Goku but he is still fast asleep in his bed. Krillin and Trunks start to head over to Gingertown meanwhile Piccolo and the monster starts fighting. The androids sense an atmospheric vibration and state that one of the power readings rivals Android 17's. The monster survives Piccolo's attack and then uses a Makankosappo  on him. Piccolo is shocked but deflects the attack. The monster says that the reason why Piccolo is beating him for now is because he has not achieved his 'perfect form' and the reason why he was sucking all life energy from the people in the town was to increase his own life energy. He also tells Piccolo that the person who sent him back into the time machine was himself;he had to revert himself back into egg form to fit inside the time machine. The monsters suprises Piccolo by using the Kamehameha  technique on Piccolo and then teleports behind Piccolo and starts sucking the life out of Piccolo's arm. Piccolo escapes with a shriveled arm by headbutting the monster in the head. The monster states that his name is Cell and that he is an android.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2675941.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-08-22', 'EpisodeName': 'I am Your Sibling! The Monster with the Ki of Goku'}, '2': {'Rating': '8.2', 'Overview': "A stranger claiming to be Goku's older brother has kidnapped Gohan. Unable to defeat him alone, Goku is forced to team up with his enemy, Piccolo, in an attempt to rescue his son. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/507741.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-04-12', 'EpisodeName': "The Enemy is Goku's Brother!? The Secret of the Saiyans, the Strongest Warriors"}, '6': {'Rating': '7.4', 'Overview': 'While Gohan begins to better survive in the wilderness in his training for the Saiyans, Goku finally reaches the end of Serpentine Road to meet Kaio--a rather peculiar master. ', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/642841.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-05-10', 'EpisodeName': "Finally Arriving at the End! Kaio-sama's Playful Test"}, '99': {'Rating': None, 'Overview': 'Seven years have passed since the battle with Cell. Gohan is now a high school student attending Orange Star High School in Satan City. On his way to his first day of school, he comes across a bank robbery in the city and stops it with his Super Saiyan form. As rumors spread about a "Golden-Haired Warrior", Gohan gets to know his new classmate and Satan\'s daughter, Videl. After a day of trying not to act suspicious in front of his classmates, Gohan approaches Bulma, who gives him a transformation watch to hide his identity. ', 'Writer': '', 'filename': 'episodes/88031/4847922.jpg', 'Director': '', 'FirstAired': '2014-04-06', 'EpisodeName': "7 Years Since That Event! Starting Today, Gohan's a High Schooler"}, '91': {'Rating': '8.7', 'Overview': "Gohan shows no willingness to fight, and explains to Cell his reason - whenever he is in battle, he loses control and goes in an all out rage. Unfortunately, this intrigues Cell, and so he decides to enrage the boy by inflicting enough pain to force him to unleash his true strength. After watching Gohan take Cell's punishment, #16 decides to intervene by grabbing Cell and activating the bomb within his own body. Unfortunately, Krillin reveals that while repairing him, Bulma removed #16's bomb, which renders his intervention futile. Cell quickly breaks free of #16's hold, causing his body to shatter - leaving only his head intact. When Cell realizes his attempts at physical intimidation are failing, he devises a plan to attack the ones that are closest to Gohan by spawning seven offspring - the Cell Jr.'s.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3490961.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2011-01-30', 'EpisodeName': 'Get Angry, Gohan! Release Your Dormant Power '}, '90': {'Rating': '8.7', 'Overview': 'With the battle going nowhere, Goku willfully conceeds. In his place he selects his son - Gohan. However Gohan does not seem too willing to participate. ', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3490951.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2011-01-23', 'EpisodeName': "Conclusion to the Death Match! Time for Goku's Decision"}, '93': {'Rating': '10.0', 'Overview': "After witnessing the death of Android 16 at the hands of Cell, Gohan's anger is ignited and causes him ascend to the level of Super Saiyan 2. Cell is excited that the fight will be more interesting, but Gohan is unamused and snatches the stolen Senzu beans from Cell. Gohan then proceeds to take on all of the Cell Juniors, proving himself impervious to their attacks and effortlessly destroying them. He then throws the Senzu beans to Trunks, who distributes them to his injured comrades. Gohan now focuses his attention on Cell, and from the onset of the battle, it is clear that Gohan holds the advantage.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3687771.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2011-02-13', 'EpisodeName': 'Fighting Spirit Free from Hesitation! Gohan, Pulverizes the Cell Juniors'}, '92': {'Rating': '9.7', 'Overview': "Gohan's reluctance reaches it's limit, and #16 asks Mr Satan to carry him over to Gohan to talk to him. #16 explains to Gohan what to fight for, and that it is okay to unleash his anger to save those that he loves. After hearing his words of encouragement, Cell takes his foot and crushes #16's head. Seeing this is ultimately the last straw for Gohan, who finally releases his rage and ascends to the Super Saiyan 2 level. Gohan then turns his attention to the Cell Jr.s, taking them out one-by-one.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3619711.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2011-02-06', 'EpisodeName': 'The Tears that Disappeared into the Sky! The Angry Super Awakening of Gohan'}, '95': {'Rating': '8.5', 'Overview': "Powered down and out of other options, Cell actives his self destruct mechanism causing him expand to balloon like proportions. With mere seconds left, Goku see the threat and heads out to the field. Goku says goodbye to his son and teleports himself and Cell to King Kai's planet, the only safe place he could think of, and Cell explodes destroying the planet and killing everyone there. While back on Earth Gohan is left to grieve, but his sorrow is short lived. As Cell is revealed to still be alive and beyond perfect.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3748781.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2011-03-06', 'EpisodeName': 'Bye-Bye Everyone! This is the Only Way to Save the Earth'}, '94': {'Rating': '9.0', 'Overview': "Cell finally unleashes his full power against Gohan, but even at maximum strength his attacks have no effect on the Super Saiyan 2. After being easily bested in battle, Cell attempts to destroy Gohan and the Earth with a giant Kamehameha, but Gohan produces an even larger wave and deflects the attack with ease. As the rest of the fighters predict an easy victory, Goku recalls that even in the Room of Spirit and Time, Gohan displayed strength far beyond that of a normal Super Saiyan. He then tells Gohan to deliver the finishing blow to Cell, but Gohan insists that Cell must suffer first. Cell then utilises his bulked-up transformation, but the increase in muscle mass lowers his speed greatly and as a result none of his attacks connect with Gohan - who counters with a single blow to the stomach, causing Cell to regurgitate Android 18 and revert back to his semi-perfect form. As the fighters assume that this means victory for Gohan, Cell's body begins to expand to a gigantic size.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3719241.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2011-02-20', 'EpisodeName': 'The Perfect Form Breaks Down! Explosion, the Super Iron Fist of Rage'}, '97': {'Rating': '8.5', 'Overview': '', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3973841.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2011-03-27', 'EpisodeName': 'Farewell with a Smile! Heading for New Days...'}, '96': {'Rating': '9.0', 'Overview': "Cell continues to charge his Kamehameha, and reveals that not only has he gathered enough energy to destroy the Earth, but he also now has the potential to destroy the entire solar system with this blast. Meanwhile, Vegeta apologises to Gohan for his recklessness. As Gohan and the others watch on in hopelessness, Goku contacts his son from the afterlife and tells him that even in his injured state he has the potential to defeat Cell. Reinvigorated, Gohan prepares a final, one-handed Kamehameha to repel Cell's blast. As the two warriors struggle to overpower each other, Piccolo, Tien, Yamcha and Krillin bombard Cell with ki blasts in a knowingly futile attempt to help, but are easily repelled. As Goku coaxes Gohan to release his full power against Cell, Vegeta returns to the battlefield and launches one final Big Bang Attack, which temporarily distracts Cell. Seeing the opportunity, Gohan finally releases his full strength and overpowers Cell's wave, obliterating Cell's body and and saving the Earth from destruction. Gohan has won and the Cell Games are finally over. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3863661.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2011-03-20', 'EpisodeName': 'Combine Our Power! The Mightiest Final Kamehameha'}, '11': {'Rating': '7.3', 'Overview': "Goku has finally reached the start of the Serpentine Road and continues his way towards the battle field. But will he be able to reach his comrades in time within Vegeta's three hours of allotted time? ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/789741.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-06-14', 'EpisodeName': 'Will Son Goku Make It?! The Battle Resumes in 3 Hours'}, '10': {'Rating': '7.3', 'Overview': "With Kuririn having defeated the Saibaimen, the Earth's heroes are now up against Nappa. But with another Saiyan waiting on the sidelines, will the remaining fighters be able to hold their own until Goku arrives? ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/711621.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-06-07', 'EpisodeName': "Wait Chaozu! Screams of Tenshinhan's Kikoho"}, '13': {'Rating': '7.8', 'Overview': "It's Saiyan Peasant versus Saiyan Elite as Goku and Vegeta engage in battle. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/789761.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-06-28', 'EpisodeName': 'This is the Kaioken!! A Battle to the Limit: Goku vs Vegeta'}, '12': {'Rating': '9.0', 'Overview': 'Goku has finally reached the battle grounds, ready to fight Nappa in revenge for his fallen comrades. ', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/789751.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-06-21', 'EpisodeName': 'Piccolo Lets His Tears Flow... Furious Counterattack of Son Goku!'}, '15': {'Rating': '8.3', 'Overview': 'Gohan and Kuririn arrive to the battlefield to help out the already worn out Goku. But with Vegeta having transformed into the mighty Oozaru, will their help be enough?  ', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/897481.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-07-12', 'EpisodeName': 'Goku in Absolute Peril! Entrust Your Wishes to the Genki Dama'}, '14': {'Rating': '7.7', 'Overview': 'The battle against Vegeta continues as the two Saiyajin give their all in a beam struggle.', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/862071.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-07-05', 'EpisodeName': 'Kamehameha Clash! Tenacious Great Transformation of Vegeta'}, '17': {'Rating': '8.0', 'Overview': "Goku begs Krillin to spare Vegeta's life, allowing Vegeta to escape Earth.  Bulma, Roshi then come on the scene to find Goku, Gohan, Yajirobe, and Krillin.  Mourning the loss of their other friends, Krillin explains that the warriors may find Dragon Balls on Piccolo's home planet, Namek.  With help from Kai-o, Goku and friends decide to go to Namek to find the Dragon Balls so they can wish their friends back to life.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/897501.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-08-02', 'EpisodeName': "A Hard-Fought Dawn... The Star of Hope is Piccolo's Home"}, '16': {'Rating': '8.3', 'Overview': "With our heroes in worse shape than ever, it seems that Vegeta will have his victory over the Earth. However, with Vegeta's artificial moon still active, there may be one last chance for a miracle.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/897491.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-07-19', 'EpisodeName': 'The Invincible Vegeta Defeated! Son Gohan Summons a Miracle'}, '19': {'Rating': '8.7', 'Overview': "While on their journey to Namek, Gohan and Krillin practice image training. Meanwhile, Vegeta has landed on Planet Frieza No. 79, and after being revived, heads to Namek to collect the Dragon Balls once Kui tells him Lord Frieza is currently there. After 30 days aboard Kami's old space-vessel, Bulma, Krillin, and Gohan arrive on Namek. Bulma uses her scouter and notices that four of the seven dragon balls are together already. Gohan senses evil ki, but Bulma reassures them that the Namekians probably are the ones who have them. They notice Vegeta's spacepod fly overhead and land in the distance, along with a second spacepod shortly after. Vegeta isn't too thrilled to find out Zarbon and Dodoria are also accompanying Frieza. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1011111.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-08-16', 'EpisodeName': 'A new strong enemy! Emperor of the Universe, Freeza'}, '18': {'Rating': '7.8', 'Overview': "Goku, Krillin, and Gohan are in the hospital recovering from the battle with Vegeta. Their friends and family come visit. When the television is turned on, they see a report about Nappa's Space-Pod. Bulma, thinking she's pressed the button that will have it fly towards them, instead self-destructs the pod. Before everyone gives up hope, Mr. Popo arrives, and tells them that he knows of another spaceship. It's the Namekian ship that Kami used to come to earth when he was a boy. Bulma reluctantly agrees to inspect it up in Yunzabit Heights with him. They realize the craft is voice-activated in the native Namekian language. Bulma converts the language to english in a few weeks with Gohan and Krillin deciding to accompany her on her journey to planet Namek in search for the Dragon Balls. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/915911.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-08-09', 'EpisodeName': 'The Spaceship that Sleeps in Yunzabit! Blast Off For Planet Namek'}, '117': {'Rating': None, 'Overview': "Everyone seems to be bewildered by Buu's childlike behavior, curious as to whether his rebirth was actually unsuccessful. However, Buu soon shows off his frightening strength when he effortlessly beats Dabura, the rise in his power level even catching the attention of the other Saiyans. Although Goku tries to convince Vegeta to postpone the fight in order to stop Buu, Vegeta knocks out Goku when he drops his guard, taking a senzu bean and setting off to fight Buu himself. Gohan and Supreme Kai attempt to flee from Buu, but he easily catches up to them, proving himself immune to Supreme Kai's attacks. ", 'Writer': '', 'filename': 'episodes/88031/4957677.jpg', 'Director': '', 'FirstAired': '2014-08-17', 'EpisodeName': 'A Straight Line to Despair!? Terror of Majin Buu'}, '116': {'Rating': None, 'Overview': "Goku and Vegeta's fight continues to escalate, with Vegeta revealing he chose to go under Babidi's control in order to gain the strength to face against Goku, feeling he needed to get rid of his gentle side. Meanwhile, as the seal containing Majin Buu starts to be break, Gohan attempts to stop him reaching full power by shooting multiple Kamehameha Waves at the egg. The egg splits apart with seemingly nothing more than pink smoke coming out of it, leading Supreme Kai to presume Majin Buu had been destroyed. However, Gohan senses a powerful energy from the smoke, which forms together to make Majin Buu, who appears to be nothing more than a mere child. ", 'Writer': '', 'filename': 'episodes/88031/4949076.jpg', 'Director': '', 'FirstAired': '2014-08-10', 'EpisodeName': "The Seal Is Broken!? Gohan's Last-Ditch Kame Hame Ha"}, '151': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5207445.jpg', 'Director': '', 'FirstAired': '2015-05-03', 'EpisodeName': 'Final Decisive Battle! A Conclusion in the Realm of the Kais!!'}, '150': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5201763.jpg', 'Director': '', 'FirstAired': '2015-04-26', 'EpisodeName': "Earth Disappears!! The Original Buu's Single Cruel Blast!!"}, '153': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5223564.jpg', 'Director': '', 'FirstAired': '2015-05-17', 'EpisodeName': "A One Minute Battle Vegeta's Life Risking Stall Tactics!"}, '152': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5220123.jpg', 'Director': '', 'FirstAired': '2015-05-10', 'EpisodeName': 'Do Your Best, Kakarrot! You Are No. 1!!'}, '155': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5207276.jpg', 'Director': '', 'FirstAired': '2015-05-31', 'EpisodeName': "Give Me Energy! We'll Make a Huge Genki-Dama!!"}, '154': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5228763.jpg', 'Director': '', 'FirstAired': '2015-05-24', 'EpisodeName': 'A Secret Plan Comes Together in a Flash Please Grant These Two Wishes!'}, '157': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5207273.jpg', 'Director': '', 'FirstAired': '2015-06-14', 'EpisodeName': 'Son Goku is the Strongest After All!! Majin Buu is Annihilated'}, '156': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5207272.jpg', 'Director': '', 'FirstAired': '2015-06-07', 'EpisodeName': "The Savior of the World is You! Everyone's Spirit Bomb is Completed!"}, '159': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5207275.jpg', 'Director': '', 'FirstAired': '2015-06-28', 'EpisodeName': "Even Stronger! Goku's Dream Never Ends!!"}, '158': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5207274.jpg', 'Director': '', 'FirstAired': '2015-06-21', 'EpisodeName': u"And So, After 10 Years... The First Tenka'ichi Bud\u014dkai in a Long Time!"}, '48': {'Rating': '8.3', 'Overview': "The transformed Goku renews his battle with Frieza and proves to now be far superior to Frieza's power. Frieza launches several counter-attacks at Goku, but they have no effect at all. As the tyrant stares in awe at his more-powerful opponent, he realizes that his worst nightmare has finally come true - the legendary Super Saiyan has been born! In a desperate attempt to defeat Goku, Frieza hurls an attack down upon Namek itself, in an effort to destroy the planet and everyone on it.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1859001.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-03-14', 'EpisodeName': 'The Super Saiyan Who Can Get Angry! Announce Your Name Son Goku!'}, '49': {'Rating': '7.0', 'Overview': "Frieza's attack detonates the planet's core and he claims that Namek will explode in five minutes. Goku is confident that he can defeat Frieza and escape with the others within that time, however, Frieza decides to power up to 100% of his full power. Much to King Kai's amazement, Goku allows Frieza to reach his full power, wishing to defeat the tyrant at his best. Meanwhile, Gohan drops off the injured Piccolo at Goku's spaceship and then goes to find Bulma.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1942561.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-03-21', 'EpisodeName': "Exact Vengeance Son Goku! The Countdown to the Planet's Collapse"}, '46': {'Rating': '8.5', 'Overview': "Losing the upper hand fast, Goku is forced to leave himself vulnerable to Freeza's attacks as he slowly gathers energy for a Genki-dama.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1797831.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-02-28', 'EpisodeName': "This is the Last Trump Card! Goku's Extra-Large Genki-dama"}, '47': {'Rating': '9.3', 'Overview': 'The death of a long-time comrade triggers a mysterious transformation in Goku. ', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1797841.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-03-07', 'EpisodeName': 'Awaken, Legendary Warrior... Son Goku, the Super Saiyan!'}, '44': {'Rating': '7.3', 'Overview': 'As the battle between Goku and Freeza continues, Ginyu, still in frog form, encounters Bulma in hopes of a new body to possess.', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1724551.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-02-14', 'EpisodeName': 'A Battle breaking all limits! Goku, Freeza, and Ginyu again!?'}, '45': {'Rating': '7.8', 'Overview': "Ginyu tries to steal Piccolo's body, but is foiled by Gohan who throws the frog body back in the way, restoring he and Bulma back to the way they were. Meanwhile, Goku continues to be thrashed by Frieza. However, he sees a vision of how Frieza could destroy everything he knows and loves - and finds a new level of strength as a result! Goku lets loose with a massive Kamehameha that even Frieza himself has difficulty deflecting! Unfortunately, it isn't enough and Goku quickly finds himself of the receiving end again. Once again, he begins seeing a vision, this time of Vegeta and other Saiyans of the past, including his father Bardock. Motivated once again, he lunges at Frieza, powered up.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1761301.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-02-21', 'EpisodeName': "It's a 20-Fold Kaioken! A Kamehameha With Everything on the Line"}, '42': {'Rating': '7.8', 'Overview': "As Goku calmly makes his way through the battlefield, he is able to deflect all of Freeza's coming attacks as if he has reached a new state of mind. He approaches the dying Vegeta, who tells him that Freeza must die by a Saiyan's hands before finally dying himself. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1649261.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-01-31', 'EpisodeName': "Defeat Freeza, Son Goku! The Proud Vegeta's Tears"}, '43': {'Rating': '8.5', 'Overview': 'Goku is back in full form as he faces Freeza in his final form. ', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1653531.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-02-07', 'EpisodeName': 'Son Goku vs. Freeza! The Curtain Opens on the Super Decisive Battle!'}, '40': {'Rating': '7.5', 'Overview': "Frieza dodges Gohan's attack but quickly finds himself on the receiving end once again - the young half Saiyan unleashes a massive energy blast that even the tyrant himself has difficulty deflecting! Upon seeing what he is up against in the form of these warriors who seem to be getting progressively stronger, Frieza begins transforming to his fourth form - the final and most powerful. Vegeta's plan to defeat Frieza involves having himself mortally wounded and then being healed by Dende - which the Saiyan prince achieves by having Krillin shoot an energy blast through his chest. Dende has no interest in healing Vegeta (who harmed so many of his people), however, and flies over to heal Piccolo instead. However, Nail's essence within Piccolo tells him that healing Vegeta may be the only way to win the fight - so Dende reluctantly does so. Frieza eventually reaches his final form, and immediately kills Dende with an energy blast - having witnessed his healing abilities while transforming. Krillin, Gohan, and Piccolo go on the attack but the tyrant dodges every single attack they throw his way. Vegeta watches them fight from a hill, preparing to charge up to his newfound power level as Gohan finds himself on a direct collision course with another one of Frieza's blasts.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1557091.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-01-17', 'EpisodeName': 'Final Super Transformation of Freeza! The Terror Greater than Hell Starts Now'}, '41': {'Rating': '8.0', 'Overview': "Able to follow Freeza's movements closer than before, Vegeta believes to have reached the legendary Super Saiyan state. But this still means nothing to Freeza, who is able to counter each of Vegeta's attacks. The Saiyan Prince begins to weep in despair, the nobody able to help him at this point... until Goku arrives", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/1580351.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-01-24', 'EpisodeName': "The Moment We've Waited For! Son Goku is Revived"}, '1': {'Rating': '7.7', 'Overview': "Long ago, Bardock, a Saiyan warrior died in an attempt to stop Freeza, a galactic tyrant who ruled over the vast reaches of space. But before Freeza destroys Bardock's home planet, one space pod seems to have escaped only moments beforehand. Kakarrot, Bardock's son, had escaped the planet's explosion and was sent to Earth to follow through with Freeza's orders of conquering it. Upon crash landing on Earth, however, Kakarrot is found by an elderly man, Son Gohan, who raises him as his own, naming him Son Goku. Years pass and Goku ends up serving as Earth's greatest protector, completely unaware of his Saiyan heritage. But it seems that Goku is not the only survivor of his home planet, as another Saiyan has reached Earth to remind him of his true purpose. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/507731.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-04-05', 'EpisodeName': 'The Beginning of the Battle! Son Goku is Back'}, '5': {'Rating': '8.0', 'Overview': 'As the year of training in preparation for the Saiyans begins, Piccolo is having more trouble than he anticipated as Gohan transforms into his Oozaru  state on the full moon.', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/586611.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-05-03', 'EpisodeName': 'Wilderness Survival! The Moon Awakens Gohan'}, '9': {'Rating': '7.5', 'Overview': 'The Saiyans have reached the planet and have encountered the fighters of Earth. However, instead of a direct confrontation, the foes unleash the Saibaimen, cultivated life-forms, on the fighters.', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/711611.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2009-05-31', 'EpisodeName': "Yamucha's Struggle! The Terrifying Saibaimen"}, '146': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5174805.jpg', 'Director': '', 'FirstAired': '2015-03-29', 'EpisodeName': 'Invincible! Ultimate Warrior Vegetto!'}, '147': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5174806.jpg', 'Director': '', 'FirstAired': '2015-04-05', 'EpisodeName': "The Ace Up Buu's Sleeve! The Warriors are Absorbed!!"}, '144': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5159710.jpg', 'Director': '', 'FirstAired': '2015-03-15', 'EpisodeName': u'The Great Kai\u014dshin\u2019s Bright Idea! Son Goku is Revived!!'}, '145': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5159711.jpg', 'Director': '', 'FirstAired': '2015-03-22', 'EpisodeName': u'One Time Only Miracle\u2026 Will the Super Combination With That Guy Come About?'}, '142': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5135109.jpg', 'Director': '', 'FirstAired': '2015-02-15', 'EpisodeName': "Buu is Overwhelmed! Ultimate Gohan's Superpower!"}, '143': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5137717.jpg', 'Director': '', 'FirstAired': '2015-03-01', 'EpisodeName': "Buu's Trick - Gotenks is Absorbed?!"}, '140': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5118029.jpg', 'Director': '', 'FirstAired': '2015-02-01', 'EpisodeName': 'In High Spirits! Buu-Buu Volleyball!'}, '141': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5127097.jpg', 'Director': '', 'FirstAired': '2015-02-08', 'EpisodeName': 'You Kept Everyone Waiting! A Reborn Gohan Returns to Earth!'}, '148': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5190027.jpg', 'Director': '', 'FirstAired': '2015-04-12', 'EpisodeName': "Rescuing Gohan and Company! Goku and Vegeta's Infiltration Mission!"}, '149': {'Rating': None, 'Overview': '', 'Writer': '', 'filename': 'episodes/88031/5196349.jpg', 'Director': '', 'FirstAired': '2015-04-19', 'EpisodeName': "Emergency Escape from Inside the Body! Buu's Reverse-Transformation is the Worst!!"}, '77': {'Rating': '8.8', 'Overview': 'Cell continues to destroy islands until he reaches the final one containing Android #16 and Android #18. Just when Cell was charging up his attack, Vegeta arrives along with Trunks. Cell presumes that he will be fighting both Vegeta and Trunks but Vegeta states that Trunks is only a spectator and transforms into Super Vegeta. Meanwhile Goku and Gohan enter the Room of Spirit and Time to start their own training.', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2967471.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-10-17', 'EpisodeName': 'Super Saiyan Surpassed! The Daring Vegeta Strikes Cell'}, '76': {'Rating': '8.5', 'Overview': "Tien uses his Tri-Beam technique on Cell continuously, allowing Android #18 and Android #16 to escape. When Tien has reached his limit and unable to move, Goku appears and rescues both him and Piccolo back to Kami's temple where Vegeta and Trunks step out of the Room of Spirit and Time finishing their training. Trunks tells Goku how Vegeta already surpassed the limits on a Super Saiyan in the first two months but he was not satisfied so they carried on training. Krillin bumps into Bulma who delivers him the remote to switch off the Android and then Krillin instructs Bulma to go to Kami's temple to go and deliver them battle clothes. Vegeta and Trunks make their way towards Cell after wearing the gear while Goku and Gohan prepare to go inside for their turn to train. Meanwhile, Cell is destroying islands in a bid to make Android #18 show herself.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2967461.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-10-10', 'EpisodeName': "Tenshinhan's Do-or-Die Shin Kikoho! Save Your Brother-in-Arms, Son Goku"}, '75': {'Rating': '8.0', 'Overview': "Android #16 decides it's time for him to step up and fight and he states that his power level is roughly the same as Cells. Android #16 uses Hells Flash on Cell but he secretly sneaks up behind Android #17 and absorbs him. Having now absorbed Android #17 and gaining a massive increase in power and speed, he effortlessly blasts half of Android #16's face off leaving him helpless on the floor as Cell approaches Android #18 to absorb her. Android #18 tries to detonate the bomb inside her but in order to do that she has to charge up a ki blast but Cell would easily catch up to her before she could suicide. Just when all hope is lost, Tien steps in and uses his Tri-Beam technique on Cell. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2912361.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-10-03', 'EpisodeName': 'Unmeasured Power! The Silent Warrior #16, Makes his Move'}, '74': {'Rating': '7.8', 'Overview': 'Krillin decides that Bulma is taking too long to deliver the switch to turn off the androids so he decides to go and fly there himself to retrieve it as it will be quicker. Piccolo tries to warn Android #17 to run away but he refuses to leading Piccolo to try and fight him but Cell proves to powerful for him and ends up killing him.', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2872221.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-09-26', 'EpisodeName': 'Run #17! The Suicidal Resistance, Piccolo'}, '73': {'Rating': '6.8', 'Overview': "Bulma is hard at work trying to figure out Dr.Gero's prints meanwhile Piccolo and Android #17 are fighting each other. After Android #17 gets serious it turns out that he and Piccolo are evenly matched. Cell senses them two fighting and starts making his way towards them stating that his power level is now higher than theirs. Krillin, and the others on a nearby island, receive a call from Bulma saying that she has completed the switch to shut down the Androids and starts bringing it over. Android #17 states that since his stamina will never drop, he will be the victor of the battle. However, Cell arrives at the scene of the battle leaving Piccolo shocked. Meanwhile, Goku and Gohan are still waiting for Vegeta and Trunks to come out of the Room of Spirit and Time.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2817691.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-09-19', 'EpisodeName': 'This is the Power of a Super-Namekian! #17 vs. Piccolo!'}, '72': {'Rating': '8.0', 'Overview': "Goku uses his instant transmission to take Gohan, Vegata, Trunks with him to the Room of Spirit and Time. The room only has a capacity of two so Goku allows Vegeta and Trunks to go in first. Goku explains a years worth of training in that room is actually only one day in the outside world. When Trunks and Vegeta step inside the room, all they see is a vast amount of nothingness. While this is going on, the Androids arrive at Master Roshi's house and ask for Goku's whereabouts. Piccolo refuses to tell them which results in a fight between Piccolo and Android #17. Piccolo overpowers Android #17 and tries to finish him off but Android #17 manages to dodge the attack. Back at the Room of Spirit and Time, Vegeta and Trunks are due to be coming out of the room any second now which will reveal if it is possible to go beyond a Super Saiyan.", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2789231.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-09-12', 'EpisodeName': 'Surpass Super Saiyan! Now, Into the Room of Spirit and Time'}, '71': {'Rating': '7.3', 'Overview': "After Piccolo has finished explaining, Vegeta flies off stating that he wants to surpass the power of a Super Saiyan. Trunks and Krillin go to Dr.Gero's laboratory to destory the incomplete Cell so he will not be born in their dimension mean-whilst Piccolo and Cell stay behind to search the surroundings. Trunks and Krillin arrive and blast the pile of rubble with their ki and discovers a ladder which leads underneath the laboratory into a room containing the computer and the incomplete Cell. They search around and discover the blueprints for Android #17 then after they make sure to destroy all of the laboratory and the basement. Krillin takes the prints to Bulma's house whilst Trunks decides to go and train with Vegeta. Krillin delivers the prints leaving Bulma and her father to start finding a weak spot on Android #17. Krillin taking a short-cut back to Master Roshi's house encounters Cell who is just about to absorb his next victims, arrives in the nick of time to save them. Krillin being no match for Cell, tells the civilians to escape, then uses the Taiyoken technique to blind Cell in an attempt to escape by grabbing on to a plane but Cell quickly recovers and jumps on top of the plane and starts attacking Krillin again. Just when it seems hopeless for Krillin, Piccolo and Tien arrive to save Krillin. Cell sensing their arrival flees while hiding his presence so no one can track him. 2-3 days later, the news continues to report about Cell's killings. Everyone decides to ride in a hovercraft to reach Cell so that he will not be able to sense them approaching him. Back at Kami's house there is a loud rumble causing Chichi to go and check on Goku but on arrival sees Goku is gone. She looks out of the window and sees that Goku is outside and that it was Goku making the loud noise by performing the Kamehameha technique. Goku tells Chichi that he has fully recovered of the illness and that he knows everything that is going on because he read everyone's minds whilst he was dreaming but says that he plans on training to surpass a Super Saiyan before going off to fight Cell. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2742741.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-09-05', 'EpisodeName': 'Attack the Elusive Cell! Son Goku, Finally Revived!'}, '70': {'Rating': '6.5', 'Overview': "Cell explains that he was born by the computer used by Doctor Gero. A long time ago Doctor Gero began collecting the cells of the greatest warriors to research how he could synthesize an android from these cells. However, because it was taking too much time, he gave up on it partway through but the computer continued its operation. Piccolo, Goku and Vegata's cells were collected at the battle when Vegeta first came to Earth. They also obtained Freeza and his father's cells when they came to Earth which explains all the different ki readings. A small spy robot, similar to Cell, was used to collect the cells while also collecting data and sending it to the computer but Piccolo destroyed it during the fight. Even though Doctor Gero's laboratory was destroyed, there was still a small room beneath the laboratory where the computer is. Cell furthermore explains how once he has turned back into an egg he requires three years underground to mature again and that he came back from the future because the absorption of human essence is not enough to achieve his perfect form; it is necessary for him to merge with two essential specialized life forms which the computer told Cell that they were the androids that Doctor Gero has created #17 and #18! In the future #17 and #18 weren't around but luckily Trunks had his time machine so he killed Trunks and came back to his era in search of #17 and #18. The reason why Cell chose this era was because Trunks's time machine already set for this era to warn the other about the androids so all Cell did was push the switch. The computer also told Cell that once he reaches his perfect form, he will have terrible power far greater than anymore imagined. After obtaining all of the information, Piccolo pulled off his shriveled arm and grew a new one. Just when Piccolo and Cell were about to fight Trunks and Krillin arrive. Realizing he has no chance of winning, Cell retreats by blinding them with Taiyoken and escapes to absorb more humans in the direction of Nickytown. Vegeta arrives at the scene and sees that the massive ki reading was Piccolo and when Tien finally arrives Piccolo explains to everyone what he has learnt from Cell. Meanwhile Cell is absorbing the life energy from passengers in a bus and plans to keep absorbing people till his power level is greater than #17 and the others and then he will make them merge with him for unimaginable power. ", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/2696401.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-08-29', 'EpisodeName': 'Escape tactic, Taiyoken! The Android Cell attacks'}, '79': {'Rating': '10.0', 'Overview': "Cell convinces Vegeta to allow him to absorb Android 18 leaving Trunks to try to stop Cell.  While fighting Trunks Cell finally finds Android 18 and results in asking for Vegeta's help.  Vegeta attacks Trunks so that Cell may get to Android 18, this leaves Krillin and Android 16 helplessly trying to stop Cell.  Will Cell get to Android 18?", 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3039671.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-10-31', 'EpisodeName': 'And So the Situation Takes a Turn for the Worst... Cell Attacks #18!'}, '78': {'Rating': '8.2', 'Overview': 'Goku continues to train Gohan, who is still trying to achieve Super Saiyan form. Meanwhile Vegeta effortlessly pushes Cell around and beats him up. Cell curses at how if he was able to absorb Android #18 then he will become his perfect form and be able to defeat Vegeta easily even when he is in his Super Vegeta form. Cell persuades Vegeta into letting him absorb Android #18 because Vegeta would like to fight Cell in his perfect form as Saiyans love fighting. Not far away, Krillin decides not to destroy Android #18 with the emergency shutdown controller because he feels sorry for her how she used to be a human and also because she kissed him.', 'Writer': 'Takao Koyama', 'filename': 'episodes/88031/3006831.jpg', 'Director': 'Yashuhiro Nowata', 'FirstAired': '2010-10-24', 'EpisodeName': 'The Surging Resentment of Cell! Krillin, Destroy #18'}}'
2016-06-18 12:12:35,388 (13a8) :  DEBUG (logkit:13) - Locked 'anime-list anidbid missing' [True, 1466266355]
2016-06-18 12:12:35,391 (13a8) :  DEBUG (logkit:13) - Unlocked 'anime-list anidbid missing' [False, 0]
2016-06-18 12:12:35,391 (13a8) :  DEBUG (logkit:13) - Locked 'anime-list studio logos' [True, 1466266355]
2016-06-18 12:12:35,394 (13a8) :  DEBUG (logkit:13) - Unlocked 'anime-list studio logos' [False, 0]
2016-06-18 12:12:35,394 (13a8) :  DEBUG (logkit:13) - Locked 'AniDB summaries missing' [True, 1466266355]
2016-06-18 12:12:35,395 (13a8) :  DEBUG (logkit:13) - Unlocked 'AniDB summaries missing' [False, 0]
2016-06-18 12:12:35,395 (13a8) :  DEBUG (logkit:13) - Locked 'Plex themes missing' [True, 1466266355]
2016-06-18 12:12:35,401 (13a8) :  DEBUG (logkit:13) - Unlocked 'Plex themes missing' [False, 0]
2016-06-18 12:12:35,401 (13a8) :  DEBUG (logkit:13) - Locked 'TVDB posters missing' [True, 1466266355]
2016-06-18 12:12:35,403 (13a8) :  DEBUG (logkit:13) - Unlocked 'TVDB posters missing' [False, 0]
2016-06-18 12:12:35,403 (13a8) :  DEBUG (logkit:13) - Locked 'Missing Specials' [True, 1466266355]
2016-06-18 12:12:35,407 (13a8) :  DEBUG (logkit:13) - Unlocked 'Missing Specials' [False, 0]
2016-06-18 12:12:35,407 (13a8) :  DEBUG (logkit:13) - Locked 'Missing Episodes' [True, 1466266355]
2016-06-18 12:12:35,410 (13a8) :  DEBUG (logkit:13) - Unlocked 'Missing Episodes' [False, 0]
2016-06-18 12:12:35,410 (13a8) :  DEBUG (logkit:13) - Locked 'AniDB posters missing' [True, 1466266355]
2016-06-18 12:12:35,411 (13a8) :  DEBUG (logkit:13) - Unlocked 'AniDB posters missing' [False, 0]
2016-06-18 12:12:35,411 (13a8) :  DEBUG (logkit:13) - Locked 'anime-list tvdbid missing' [True, 1466266355]
2016-06-18 12:12:35,414 (13a8) :  DEBUG (logkit:13) - Unlocked 'anime-list tvdbid missing' [False, 0]
2016-06-18 12:12:35,414 (13a8) :  DEBUG (logkit:13) - Locked 'TVDB season posters missing' [True, 1466266355]
2016-06-18 12:12:35,415 (13a8) :  DEBUG (logkit:13) - Unlocked 'TVDB season posters missing' [False, 0]
2016-06-18 12:12:35,415 (13a8) :  DEBUG (logkit:13) - Locked 'Missing Special Summaries' [True, 1466266355]
2016-06-18 12:12:35,418 (13a8) :  DEBUG (logkit:13) - Unlocked 'Missing Special Summaries' [False, 0]
2016-06-18 12:12:35,418 (13a8) :  DEBUG (logkit:13) - Locked 'Missing Episode Summaries' [True, 1466266355]
2016-06-18 12:12:35,421 (13a8) :  DEBUG (logkit:13) - Unlocked 'Missing Episode Summaries' [False, 0]
2016-06-18 12:12:35,421 (13a8) :  DEBUG (logkit:13) - --- Update end -------------------------------------------------------------------------------------------------

TVDB Name not updating when AniDB name not present

I've had this happen a few times, even with the last update. Happened again this morning with My Hero Academia. Looks like AniDB has since been updated, but Plex is still showing the title as "Episode 5". TVDB already had the name when I imported.

2016-05-01 11:18:27,036 (11c4) : DEBUG (logkit:13) - --- Update Begin -------------------------------------------------------------------------------------------
2016-05-01 11:18:27,038 (960) : DEBUG (logkit:13) - === Search - Begin - ================================================================================================
2016-05-01 11:18:27,038 (11c4) : DEBUG (logkit:13) - Update - metadata source: 'anidb', id: '11739', Title: 'My Hero Academia',([...], [...], True)
2016-05-01 11:18:27,039 (960) : INFO (logkit:16) - search() - Title: 'Tokyo Magnitude 8 0', name: 'Special 8.0', filename: 'B%3A%5CAnime%20Series%5CTokyo%20Magnitude%208%2E0%5CTokyo%20Magnitude%208%2E0%20-%2001%20-%20Odaiba%20Sinks%2Emkv', manual:'False'
2016-05-01 11:18:27,039 (11c4) : DEBUG (logkit:13) - anidbTvdbMapping() - anidbid '11739' not found in file
2016-05-01 11:18:27,039 (960) : DEBUG (logkit:13) - search() - Keyword search - Matching 'Tokyo Magnitude 8 0' with: 'tokyo', 'magnitude'
2016-05-01 11:18:27,039 (11c4) : DEBUG (logkit:13) - Update() - AniDB mode - AniDB Serie XML: http://api.anidb.net:9001/httpapi?request=anime&client=hama&clientver=1&protover=1&aid=11739, AniDB/11739.xml
2016-05-01 11:18:27,039 (960) : DEBUG (logkit:13) -
2016-05-01 11:18:27,040 (11c4) : DEBUG (logkit:13) - xmlElementFromFile() - url: 'http://api.anidb.net:9001/httpapi?request=anime&client=hama&clientver=1&protover=1&aid=11739', filename: 'AniDB/11739.xml'
2016-05-01 11:18:27,040 (960) : DEBUG (logkit:13) - Search - similarity with 'Tokyo Magnitude 8 0':
2016-05-01 11:18:27,042 (960) : DEBUG (runtime:924) - Response: [200] str, 320 bytes
2016-05-01 11:18:28,506 (410) : DEBUG (runtime:717) - Handling request GET /:/plugins/com.plexapp.agents.hama/messaging/function/X0FnZW50S2l0OlNlYXJjaA__/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoyCmRpY3QKZGljdAo2CnMyCmVuczQKbGFuZ2IwczYKbWFudWFsYjFzNwpwcmltYXJ5aTAKczcKdmVyc2lvbnIxCnM2Cmt3YXJnc3M3ClRWX1Nob3dzMTAKbWVkaWFfdHlwZTExCnMxNgpkZjc1N2IzMjA3NDQ4MWE2czE3Cm9wZW5TdWJ0aXRsZXNIYXNoczEKOHM3CmVwaXNvZGVzMTEKU3BlY2lhbCA4LjBzNApuYW1lczEKMXM4CmVwaXNvZGljczE5ClRva3lvIE1hZ25pdHVkZSA4IDBzNApzaG93czEKMHM2CnNlYXNvbm5zNAp5ZWFyczExMwpCJTNBJTVDQW5pbWUlMjBTZXJpZXMlNUNUb2t5byUyME1hZ25pdHVkZSUyMDglMkUwJTVDVG9reW8lMjBNYWduaXR1ZGUlMjA4JTJFMCUyMC0lMjAwMSUyMC0lMjBPZGFpYmElMjBTaW5rcyUyRW1rdnM4CmZpbGVuYW1lczQwCjU2MzEzMjNkYjE5NDkzMTYzMDNkYmRlYWM5NTAzMmQxNjdhOThhY2ZzOApwbGV4SGFzaHM3CjEzNTQ4MTNzOApkdXJhdGlvbnM1CjU1ODA4czIKaWRyMAo_
2016-05-01 11:18:28,507 (410) : DEBUG (runtime:814) - Found route matching /:/plugins/com.plexapp.agents.hama/messaging/function/X0FnZW50S2l0OlNlYXJjaA__/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoyCmRpY3QKZGljdAo2CnMyCmVuczQKbGFuZ2IwczYKbWFudWFsYjFzNwpwcmltYXJ5aTAKczcKdmVyc2lvbnIxCnM2Cmt3YXJnc3M3ClRWX1Nob3dzMTAKbWVkaWFfdHlwZTExCnMxNgpkZjc1N2IzMjA3NDQ4MWE2czE3Cm9wZW5TdWJ0aXRsZXNIYXNoczEKOHM3CmVwaXNvZGVzMTEKU3BlY2lhbCA4LjBzNApuYW1lczEKMXM4CmVwaXNvZGljczE5ClRva3lvIE1hZ25pdHVkZSA4IDBzNApzaG93czEKMHM2CnNlYXNvbm5zNAp5ZWFyczExMwpCJTNBJTVDQW5pbWUlMjBTZXJpZXMlNUNUb2t5byUyME1hZ25pdHVkZSUyMDglMkUwJTVDVG9reW8lMjBNYWduaXR1ZGUlMjA4JTJFMCUyMC0lMjAwMSUyMC0lMjBPZGFpYmElMjBTaW5rcyUyRW1rdnM4CmZpbGVuYW1lczQwCjU2MzEzMjNkYjE5NDkzMTYzMDNkYmRlYWM5NTAzMmQxNjdhOThhY2ZzOApwbGV4SGFzaHM3CjEzNTQ4MTNzOApkdXJhdGlvbnM1CjU1ODA4czIKaWRyMAo_
2016-05-01 11:18:28,509 (410) : INFO (agentkit:946) - Searching for matches for {'openSubtitlesHash': 'df757b32074481a6', 'episode': '8', 'name': 'Special 8.0', 'episodic': '1', 'show': 'Tokyo Magnitude 8 0', 'season': '0', 'plexHash': '5631323db1949316303dbdeac95032d167a98acf', 'filename': 'B%3A%5CAnime%20Series%5CTokyo%20Magnitude%208%2E0%5CTokyo%20Magnitude%208%2E0%20-%2001%20-%20Odaiba%20Sinks%2Emkv', 'year': None, 'duration': '1354813', 'id': '55808'}
2016-05-01 11:18:28,509 (410) : DEBUG (networking:166) - Requesting 'http://127.0.0.1:32400/library/metadata/55808/tree'
2016-05-01 11:18:28,526 (410) : DEBUG (logkit:13) - === Search - Begin - ================================================================================================
2016-05-01 11:18:28,526 (410) : INFO (logkit:16) - search() - Title: 'Tokyo Magnitude 8 0', name: 'Special 8.0', filename: 'B%3A%5CAnime%20Series%5CTokyo%20Magnitude%208%2E0%5CTokyo%20Magnitude%208%2E0%20-%2001%20-%20Odaiba%20Sinks%2Emkv', manual:'False'
2016-05-01 11:18:28,526 (410) : DEBUG (logkit:13) - search() - Keyword search - Matching 'Tokyo Magnitude 8 0' with: 'tokyo', 'magnitude'
2016-05-01 11:18:28,526 (410) : DEBUG (logkit:13) -
2016-05-01 11:18:28,526 (410) : DEBUG (logkit:13) - Search - similarity with 'Tokyo Magnitude 8 0':
2016-05-01 11:18:28,526 (410) : DEBUG (runtime:924) - Response: [200] str, 320 bytes
2016-05-01 11:18:31,109 (11c4) : DEBUG (networking:161) - Fetching 'http://api.anidb.net:9001/httpapi?request=anime&client=hama&clientver=1&protover=1&aid=11739' from the HTTP cache
2016-05-01 11:18:31,140 (11c4) : DEBUG (logkit:13) - xmlElementFromFile() - Loading locally since banned or empty file (result page <1024 bytes)
2016-05-01 11:18:31,141 (11c4) : DEBUG (logkit:13) - Update() - AniDB title: 'My Hero Academia', original title: 'Boku no Hero Academia', metadata.title 'My Hero Academia'*
2016-05-01 11:18:31,141 (11c4) : DEBUG (logkit:13) - Update() - AniDB Start Date: '2016-04-03'
2016-05-01 11:18:31,141 (11c4) : DEBUG (logkit:13) - update() - AniDB Ratings: '5.71'*
2016-05-01 11:18:31,144 (11c4) : DEBUG (logkit:13) - AniDB Genres (Weight): [('Action', 100), ('Manga', 0), ('Shounen', 0)]*
2016-05-01 11:18:31,144 (11c4) : DEBUG (logkit:13) - anidbCollectionMapping() - anidbid is not part of any collection, related_anime_list: '[]'
2016-05-01 11:18:31,144 (11c4) : DEBUG (logkit:13) - AniDB Creator data: Umakoshi Yoshihiko is a director, Horikoshi Kouhei is a writer, Bones is a studio, Kuroda Yousuke is a producer, Nagasaki Kenji is a director,
2016-05-01 11:18:31,144 (11c4) : DEBUG (logkit:13) - Update() - AniDB Poster, url: 'http://img7.anidb.net/pics/anime/183559.jpg'
2016-05-01 11:18:31,145 (11c4) : DEBUG (logkit:13) - metadata_download() - url: 'http://img7.anidb.net/pics/anime/183559.jpg', num: '99', filename: 'AniDB/183559.jpg'*
2016-05-01 11:18:31,147 (11c4) : DEBUG (logkit:13) - Update() - AniDB episode title: 'Start Line'*
2016-05-01 11:18:31,147 (11c4) : DEBUG (logkit:13) - Update() - AniDB AirDate '2016-04-24'*
2016-05-01 11:18:31,147 (11c4) : DEBUG (logkit:13) - Update() - AniDB duration: '1500000'*
2016-05-01 11:18:31,148 (11c4) : DEBUG (logkit:13) - Update() - AniDB episode title: 'Roaring Muscles'*
2016-05-01 11:18:31,148 (11c4) : DEBUG (logkit:13) - Update() - AniDB AirDate '2016-04-17'*
2016-05-01 11:18:31,148 (11c4) : DEBUG (logkit:13) - Update() - AniDB duration: '1500000'*
2016-05-01 11:18:31,150 (11c4) : DEBUG (logkit:13) - Update() - AniDB episode title: 'What It Takes to Be a Hero'*
2016-05-01 11:18:31,150 (11c4) : DEBUG (logkit:13) - Update() - AniDB AirDate '2016-04-10'*
2016-05-01 11:18:31,150 (11c4) : DEBUG (logkit:13) - Update() - AniDB duration: '1500000'*
2016-05-01 11:18:31,151 (11c4) : DEBUG (logkit:13) - Update() - AniDB episode title: 'Izuku Midoriya: Origin'*
2016-05-01 11:18:31,151 (11c4) : DEBUG (logkit:13) - Update() - AniDB AirDate '2016-04-03'*
2016-05-01 11:18:31,151 (11c4) : DEBUG (logkit:13) - Update() - AniDB duration: '1500000'*
2016-05-01 11:18:31,151 (11c4) : DEBUG (logkit:13) - Update() - AniDB specials title - Season: '0', epNum.text: 'C2', epNumVal: '151', ep_title: 'Ending'
2016-05-01 11:18:31,153 (11c4) : DEBUG (logkit:13) - Update() - AniDB specials title - Season: '0', epNum.text: 'C1', epNumVal: '101', ep_title: 'Opening'
2016-05-01 11:18:31,153 (11c4) : DEBUG (logkit:13) - Update() - AniDB episode title: 'Episode 5'
2016-05-01 11:18:31,154 (11c4) : DEBUG (logkit:13) - Update() - AniDB AirDate '2016-05-01'
2016-05-01 11:18:31,154 (11c4) : DEBUG (logkit:13) - Update() - AniDB duration: '1500000'
2016-05-01 11:18:31,154 (11c4) : DEBUG (logkit:13) - Update() - DURATION: 7500000, numEpisodes: 5
2016-05-01 11:18:31,155 (11c4) : DEBUG (logkit:13) - --- Update end -------------------------------------------------------------------------------------------------

Can't download posters of any anime

Hello! Thank you for the hard work!

I've an issue with the bundle: I can't download the posters or any images of any anime:

plex no posters hama

I've read the README and installed the bundle where it should, and checked if all folders are present. I'm using the latest version of Plex on Ubuntu Server 14.04.3 x64.

These are my settings in the Library:

plex

screenshot from 2015-10-03 10 52 49

Also, I followed this guide to install everything bacause the readme wasn't very clear to me: https://forums.freenas.org/index.php?threads/tutorial-plex-plugin-http-anidb-metadata-agent-hama-installation-instructions.36469/

Finally, this is the agent log (/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Logs/PMS Plugin Logs/com.plexapp.agents.hama.log): http://justpaste.it/o49m

If you need any other log please let me know.

Thank you again!

Multi season animes are not populating metadata info on defaulttvdbseason='a'

https://gist.github.com/EndOfLine369/8ee08c812a5f3943e6cc/revisions
Linked file is based off of a 2016-03-21 pull.

If you agree on my changes, i'll create a fork for the changes so you can just pull into the master.

The proposed fix is attached w/ a minor log update as well. The issue is when defaulttvdbseason='a' it will have numbering set used in the 'tvdb_table' as just numbers 1->9999. As we could have the possibility of multiple seasons for any anime defined with asdefaulttvdbseason= 'a' by either using 'absolute_numbering' in the scanner or the files have been manually separated into separate season folders with new numbers. In which case we would need to override the numbering to be "s[0-9]+e[1-9][0-9]*"

====Line 257====
FROM:
          numbering = getElementText(episode, 'absolute_number') if defaulttvdbseason=="a" else "s" + getElementText(episode, 'SeasonNumber') + "e" + getElementText(episode, 'EpisodeNumber')
TO:
          numbering = getElementText(episode, 'absolute_number') if (defaulttvdbseason=="a" and not (len(media.seasons)>2 or max(map(int, media.seasons.keys()))>1)) else "s" + getElementText(episode, 'SeasonNumber') + "e" + getElementText(episode, 'EpisodeNumber')

====Line 313====
FROM:
            for item_part in media_item.parts:  Log("File: '%s'" % item_part.file)
TO:
            for item_part in media_item.parts:  Log("File: '%s' '%s'" % (ep, item_part.file))

create a release and use github for download instead of forum link

I'd like to suggest that you use github to tag and create releases and then folks can download directly from here instead of having to bounce back to the forums to get the file.

I read that you were new to git (although i think that was awhile ago), so if you want a little bit of assistance i can help you out with that.

I'd also suggest that you tag your releases as major,minor.patch like so http://semver.org/

Movies not being recognized

That is the information popup for the first episode of bleach (Season 1, Episode 1). It is lugging in the file from Movies/ and the one you've said to use for recognizing a movie.

Plex has a custom Specials folder for OVAs / Special files, is there not a way to create a Movies folder?

When I try [1] Movie Name.ext, it does not match to it at all.

TVDB episode title not being used if not present in anidb

example: Koutetsujou no Kabaneri episode 02
when HAMA is set as the metadata agent, episode 1 is properly fetched and named, but episode 2 remains named "Episode 2", instead of fetching the title from TVDB.

when TVDB is set as the metadata agent, the title is retrieved and used as expected

in TVDB, the entry is listed as "Kabaneri of the Iron Fortress"
in anidb, the entry is listed as "Koutetsujou no Kabaneri"
this might have something to do with it

Metadata set lists are not being cleared causing duplicate entries

Hi ZeroQI,

Looks like a metadata.genres.clear() was missing in the TVDB mode section. Please add it in as shown in the below section of code. It is there in the AniDB section.

      if tvdbContentRating:  metadata.content_rating          = tvdbContentRating 
      if tvdbFirstAired:     metadata.originally_available_at = Datetime.ParseDate( tvdbFirstAired ).date()
      if tvdbGenre:
        metadata.genres.clear()
        for genre in tvdbGenre: metadata.genres.add(genre)
        Log.Debug("Update() - TVDB - tvdbGenre: '%s'" % str(tvdbgenre))
      list_eps = ""
      for media_season in media.seasons:

My test looks good.

Metadata split of seasons for long running series

Hi,

For a most AniDB Anime series, seasons are not stored into a single anime.

    Toaru Majutsu no Index (a5975) = https://anidb.net/perl-bin/animedb.pl?show=anime&aid=5975
    Toaru Majutsu no Index II (a7599) = https://anidb.net/perl-bin/animedb.pl?show=anime&aid=7599

Your Hama agent works just fine for these animes. As the ScudLee Anime Master list helps in recognizing where AnimeDB has two listings and TheTVDB has only one based on the 'defaulttvdbseason' entry.

<anime anidbid="5975" tvdbid="83322" defaulttvdbseason="1" episodeoffset="" tmdbid="" imdbid="">
<name>Toaru Majutsu no Index</name>
</anime>
<anime anidbid="7599" tvdbid="83322" defaulttvdbseason="2" episodeoffset="" tmdbid="" imdbid="">
<name>Toaru Majutsu no Index II</name>
</anime>

The problem I have is when we have multi season AniDB entry. Like the animes Ranma 1/2, Bleach, Naruto, One Piece, ... If we leave in a single 'Season 1' the agent recognizes it fine but then we can then have a 100+ episodes in a single season. This causes issues when trying to scroll through the episode listings when viewing in any client other than web (due to the amount of data the client tried to load when opening a season).

If I try to separate out the episodes into separate season folders, that comes to another issue in where we would now need to renumber every single 100+ episodes. It also means that it will get forced into "TVDB numbering mode" as there is multiple seasons instead of the wanted "AniDB mode".

It is possible to have the agent recognize a single season folder with 'anidb-' in the name. And from that, to use the season number provided by thetvdb be used to override it from being a 'Season 1' episode to a 'Season X' episode? This way, the AniDB episode numbers can still be used to pull in all metadata (title/summary/...) and we don't have to spend the hours to renumber every episode we have for these multi-season AniDB animes. (Bleach=366, One Piece=746+, Naruto=220, Naruto Shippuuden=444+, ...)

The season number is already available in thetvdb xml created that can easily be imported into the 'tvdb_table' item for data reference in the "### TVDB - Build 'tvdb_table' ###" section.

"83322.xml":
<Episode>
  <id>3449781</id>
  <Combined_episodenumber>24</Combined_episodenumber>
  <Combined_season>2</Combined_season>

This should also be dooable to be just added into the existing 'Update' function after the ' elif metadata.id.startswith("anidb-"): ' line to change the season number.

As you can guess, I have tried to get this working hence I know your code and files somewhat =). I just could not find out how to get the season changed. Once it is set by the scanner it is not possible to change it through the metadata?

Regards

Season matching with custom names

I label my shows with season titles or series titles, and this seems to upset the scanner and it throws it all into Season 1.

Some examples:
Dragon Ball\Z
Dragon Ball\GT
Bleach\Season 01 (The Substitute)
Bleach\Season 02 (The Entry)
Bleach\Season 14 - Sub
Bleach\Season 15 (Sub)
Bleach\Season 16 (Subbed)
Zero No Tsukaima\Season 1 (The Familiar of Zero)
Zero No Tsukaima\Season 2 (Futatsuki no Kishi)
Zero No Tsukaima\Season 3 (Princess no Rondo)
Zero No Tsukaima\Season 4 (The Familiar of Zero F)

The Dragon Ball series are thrown into one folder just for organizational purposes but are two different series. One would assume the folder includes the parent in its folder name if it does not match a season.

As you can see with Bleach, the season is labelled properly but has additional information just for the readier which doesn't need to be checked. Whether I have the title of the season/series, or if they are subbed and not dubbed.

As you can see with Zero, in shows that have different seasons, but their series titles are different I had originally stored them in the original name but with their real name beside Season #.

Could support for this be added? I understand that with just Plex, it's not exactly required but the ability to label the folders this way is good for reading purposes (especially shows like Zero).

Metadata fetch fails for movie -

After the AniDB API came back up (#59), I added a new movie to my library. However, when retrieving the metadata (either after performing a manual match or clicking refresh), Hama crashes with an attribute error;

2016-07-09 12:01:17,160 (7f9501ffb700) :  DEBUG (runtime:717) - Handling request GET /:/plugins/com.plexapp.agents.hama/messaging/function/REMOVED
2016-07-09 12:01:17,161 (7f9501ffb700) :  DEBUG (runtime:49) - Received packed state data (1524 bytes)
2016-07-09 12:01:17,163 (7f9501ffb700) :  DEBUG (runtime:814) - Found route matching /:/plugins/com.plexapp.agents.hama/messaging/function/REMOVED
2016-07-09 12:01:17,163 (7f9501ffb700) :  DEBUG (model:32) - Loading model with GUID com.plexapp.agents.hama://anidb-8821?lang=en
2016-07-09 12:01:17,164 (7f9501ffb700) :  DEBUG (model:234) - Deserializing from /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Metadata/Movies/2/a92531bc068db400e4e5a395cfdf09fd49333db.bundle/Contents/com.plexapp.agents.hama/Info.xml
2016-07-09 12:01:17,165 (7f9501ffb700) :  DEBUG (networking:166) - Requesting 'http://127.0.0.1:32400/library/metadata/21266/tree'
2016-07-09 12:01:17,174 (7f9501ffb700) :  DEBUG (__init__:643) - --- Update Begin -------------------------------------------------------------------------------------------
2016-07-09 12:01:17,175 (7f9501ffb700) :  DEBUG (__init__:643) - Update - metadata source: 'anidb', id: '8821', Title: 'None',([...], [...], True)
2016-07-09 12:01:17,213 (7f9501ffb700) :  DEBUG (__init__:669) - anidbTvdbMapping() - anidb: '8821', tvbdid: '81115', tmdbid: '181522', imbdid: '', studio: '', defaulttvdbseason: '0', name: 'Magical Girl Lyrical Nanoha The Movie 2nd A's'
2016-07-09 12:01:17,217 (7f9501ffb700) :  DEBUG (networking:166) - Requesting 'http://tvthemes.plexapp.com/81115.mp3'
2016-07-09 12:01:17,622 (7f9501ffb700) :  ERROR (networking:217) - Error opening URL 'http://tvthemes.plexapp.com/81115.mp3'
2016-07-09 12:01:17,623 (7f9501ffb700) :  DEBUG (__init__:802) - metadata_download() - metadata_download - error downloading
2016-07-09 12:01:17,623 (7f9501ffb700) :  DEBUG (__init__:643) - Update() - TVDB - tvdbid: '81115', url: 'http://thetvdb.com/api/A27AD9BE0DA63333/series/81115/all/en.xml'
2016-07-09 12:01:17,624 (7f9501ffb700) :  DEBUG (__init__:820) - xmlElementFromFile() - url: 'http://thetvdb.com/api/A27AD9BE0DA63333/series/81115/all/en.xml', filename: 'TVDB/81115.xml'
2016-07-09 12:01:17,629 (7f9501ffb700) :  DEBUG (networking:161) - Fetching 'http://thetvdb.com/api/A27AD9BE0DA63333/series/81115/all/en.xml' from the HTTP cache
2016-07-09 12:01:17,642 (7f9501ffb700) :  DEBUG (__init__:643) - Update() - IMDB ID was empty, loaded through tvdb serie xml, IMDBID: 'tt0808082'
2016-07-09 12:01:17,644 (7f9501ffb700) :  CRITICAL (agentkit:1067) - Exception in the update function of agent named 'HamaMovies', called with guid 'com.plexapp.agents.hama://anidb-8821?lang=en' (most recent call last):
  File "/usr/lib/plexmediaserver/Resources/Plug-ins-a17e99e/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/api/agentkit.py", line 1065, in _update
    agent.update(obj, media, lang, **kwargs)
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Hama.bundle/Contents/Code/__init__.py", line 878, in update
    def update(self, metadata, media, lang, force ): self.Update(metadata, media, lang, force,  True )
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Hama.bundle/Contents/Code/__init__.py", line 643, in Update
    elif len(media.seasons)>2 or max(map(int, media.seasons.keys()))>1:  keys = ["tvdbid: %s"  % (WEB_LINK % (TVDB_SERIE_URL  % tvdbid,  tvdbid) )]
AttributeError: 'MediaTree' object has no attribute 'seasons'
2016-07-09 12:01:17,645 (7f9501ffb700) :  DEBUG (model:229) - Serializing to /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Metadata/Movies/2/a92531bc068db400e4e5a395cfdf09fd49333db.bundle/Contents/com.plexapp.agents.hama/Info.xml
2016-07-09 12:01:17,647 (7f9501ffb700) :  DEBUG (runtime:88) - Sending packed state data (1548 bytes)
2016-07-09 12:01:17,647 (7f9501ffb700) :  DEBUG (runtime:924) - Response: [200] str, 16 bytes

The contents of Metadata/Movies/2/a92531bc068db400e4e5a395cfdf09fd49333db.bundle/Contents/com.plexapp.agents.hama/Info.xml is;

`


<title_sort/>







<title/> `

I am using the latest versions of Hama and the Absolute Series Scanner as of the time of this issue submission. The PMS version is 1.0.0.2261.

I am able to refresh existing movies successfully, it's just this movie that appears to be having issues.

find a different place for the X-Plex-Token

When supporting users in the Plex Forums, users are often asked to attach their zipped log folders to their error reports.

If they have the HAMA bundle installed, they are publishing their X-Plex-Token, which is a security nightmare and opens up the roads for rogue users accessing the servers.

Ususally, users are asked to clear out their log folders before gathering sets of log files, simply as a precaution to divulge only the necessary amount of information, pertaining to the diagnosis of malfunctions.
Here, it is also unfortunately that the X-Plex-Token is placed into the log folder. If a user is following this request from a supporting forum user, their HAMA install might be incapacitated afterwards.

I therefore ask you to find a different place to store the X-Plex-Token, to avoid the above issues.

Season Posters

I think this would be along the lines of an improvement, but is there any way to have a log that says when a season poster is missing? I find them easy to miss because Plex will automatically make a missing season cover the same as the main cover.

No Posters or Backgrounds

When I use the Hama agent I get no Posters or Backgrounds or anything. I've tried with only AniDB posters checked, and only TheTVDB posters checked, both checked, and other variations to no avail.

HTML Log Request

Hi @ZeroQI -- would it be possible to add another log? I wanted to see if we could add a log that captures when episode summaries are missing. I believe this is already captured in the HAMA logs, but thought it would be convenient for them to gather into one place. Like the season poster one you added, this would help being able to see what TVDB is missing and allow users to go add it.

Upcoming changes to anime-list.xml

Hi, I just wanted to let you know I'm making some changes to the anime-list.xml soon. This is to hopefully simplify and reduce a lot of the long lists of individual episode mappings that exist in the list. I'm assuming this will affect you.

The first change is a new episodeoffset attribute that can be added to an anime node.
This, as hopefully the name suggests, is a value that should be added to every (regular) anidb episode number to get the corresponding tvdb episode number (within the defaulttvdbseason). This is directly in response to the new policy on tvdb regarding split-cour series.

Example:
(Current method)

  <anime anidbid="10760" tvdbid="278626" defaulttvdbseason="1">
    <name>Fate/Stay Night: Unlimited Blade Works (2015)</name>
    <mapping-list>
      <mapping anidbseason="1" tvdbseason="1">;1-13;2-14;3-15;4-16;5-17;6-18;7-19;8-20;9-21;10-22;11-23;12-24;13-25;</mapping>
    </mapping-list>
  </anime>

(New method)

  <anime anidbid="10760" tvdbid="278626" defaulttvdbseason="1" episodeoffset="12">
    <name>Fate/Stay Night: Unlimited Blade Works (2015)</name>
  </anime>

(Note that the offset is what gets added, it's not the number the first episode is mapped to.)

Alongside that I'm also adding an offset attribute within the mapping-list entries, together with start and end attributes to define the range of anidb episodes affected.

Example:
(Current method)

  <anime anidbid="516" tvdbid="76045" defaulttvdbseason="1">
    <name>Princess Tutu</name>
    <mapping-list>
      <mapping anidbseason="1" tvdbseason="1">;1-1;2-2;3-3;4-4;5-5;6-6;7-7;8-8;9-9;10-10;11-11;12-12;13-13;</mapping>
      <mapping anidbseason="1" tvdbseason="2">;14-1;15-2;16-3;17-4;18-5;19-6;20-7;21-8;22-9;23-10;24-11;25-12;26-13;27-14;28-15;29-16;30-17;31-18;32-19;33-20;34-21;35-22;36-23;37-24;38-25;</mapping>
    </mapping-list>
  </anime>

(New method)

  <anime anidbid="516" tvdbid="76045" defaulttvdbseason="1">
    <name>Princess Tutu</name>
    <mapping-list>
      <mapping anidbseason="1" tvdbseason="1" start="1" end="13" offset="0"/>
      <mapping anidbseason="1" tvdbseason="2" start="14" end="38" offset="-13"/>
    </mapping-list>
  </anime>

(In both cases the first mapping is technically redundant, and I'll probably omit it when I update.)

The episodeoffset and offset attributes, and also individual episode mappings can all hypothetically occur in the same entry, but only the most specific should be applied to an episode.

individual mapping > offset > episodeoffset

The individual mappings also won't compensate for any offsets - e.g. if there's an episodeoffset of 12, but episodes 2 and 3 are swapped, the mapping would be ;2-15;3-14; not ;2-3;3-2;

No firm ETA on when this will go live, probably next week sometime, definitely before the end of October. I still need to finish writing the new scraper code (and test it!).

Series with semicolon, year in title gets recognised wrongly

Semicolon in titles ("Steins;gate", "Robotics;Notes", "Chaos;Head") name gets truncated before the semicolon by plex even if provided by the scanner. it need to be replaces by a space (or nothing)

"(Year)" in titles doesn't get given by babs or default scanner, results in series being grouped together (Tenchi muyo ryo Ohki)

Beware of VideoFiles.CleanName(file) as it strips the '()' but keep what is inside
To solve both the scanner needs modifying so i am developping one currently here:
https://gist.github.com/ZeroQI/11b6036e16adb424b938
https://github.com/ZeroQI/Scanners/blob/master/Series/Hama.py

Missing Items

I can't call this an issue, per say, but can the logs in \Plug-in Support\Data\com.plexapp.agents.hama\DataItems be deleted and refreshed? I'd like to find a way to see what series or episode metadata is considered missing without having to manually comb through my library.

Do the logs that are there refresh or build up over time?

Incorrect Mapping

It looks like Escaflowne is mapping to "Escaflowne - The Movie" instead of just the show. It probably doesn't help that AniDB has the original show named "Tenkuu no Escaflowne" and the movie just "Escaflowne".

https://anidb.net/perl-bin/animedb.pl?show=anime&aid=184
https://anidb.net/perl-bin/animedb.pl?show=anime&aid=321

This is probably a separate issue, so break this out if you believe so. Some other shows that I've noticed issues with (I believe one of the recent fixes accounted for Tokyo Magnitude) have been doubling/all falling into one file (Plex recognizes it as one episode with XX amount of versions).

  • Tokyo Magnitude 8.0
  • Mobile Suit Gundam - The 08th MS Team
  • Mobile Suit Gundam - 0080 War in the Pocket

I manually overcame these issues by re-naming each series files simply "1.mkv" etc... and putting an anidb.id or tvdb.id file in the folder.

If AniDB series summary is missing, use TVDB's if available

Hi ZeroQI,

Please see the below addition needed to get this accomplished. We could even prefix it with "(TVDB summary) ..." to make it clear the wanted AniDB info is missing if you wanted.

        ### AniDB Serie/Movie description ###
        try:     description = re.sub(r'http://anidb\.net/[a-z]{2}[0-9]+ \[(.+?)\]', r'\1', getElementText(anime, 'description')).replace("`", "'") # Remove wiki-style links to staff, characters etc
        except:  description = ""; Log.Debug("Exception ")
        if description == "":
          error_log['AniDB summaries missing'].append(WEB_LINK % (ANIDB_SERIE_URL % metadata.id[len("anidb-"):], metadata.id[len("anidb-"):]) + " " + metadata.title)
          if tvdbOverview:
            description = tvdbOverview
            Log.Debug("AniDB series summary is missing but TVDB has one availabe so using it.")
        if metadata.summary != description and description:  metadata.summary = description.replace("`", "'")

Noticed this on new series and some AniDB neglected series. So why not use the TVDB summary if successfully pulled earlier if the AniDB is blank so at least data is there. And when AniDB gets updated, it will replace it with the AniDB summary on the next metadata update.

http://api.anidb.net:9001/httpapi?request=anime&client=hama&clientver=1&protover=1&aid=11783
http://thetvdb.com/api/A27AD9BE0DA63333/series/305104/all/en.xml

Log:

2016-04-18 03:35:35,891 (-b57e470) :  DEBUG (__init__:539) - Update() - AniDB title: 'Tanaka-kun Is Always Listless', original title: 'Tanaka-kun wa Itsumo Kedaruge', metadata.title 'Tanaka-kun Is Always Listless'*
2016-04-18 03:35:35,894 (-b57e470) :  DEBUG (__init__:569) - Update() - AniDB Start Date: '2016-04-09'
2016-04-18 03:35:35,895 (-b57e470) :  DEBUG (__init__:539) - update() - AniDB Ratings:    '4.35'*
2016-04-18 03:35:35,896 (-b57e470) :  DEBUG (__init__:569) - AniDB Genres (Weight): [('Manga', 0)]*
2016-04-18 03:35:35,921 (-b57e470) :  DEBUG (__init__:614) - anidbCollectionMapping() - anidbid is not part of any collection, related_anime_list: '[]'
2016-04-18 03:35:35,922 (-b57e470) :  DEBUG (__init__:569) - AniDB Creator data: Kawatsura Shin`ya is a director, Uda Nozomi is a writer, Omode Akemi is a producer, Silver Link is a studio,
2016-04-18 03:35:35,924 (-b57e470) :  DEBUG (__init__:569) - AniDB series summary is missing but TVDB has one availabe so using it.
2016-04-18 03:35:35,925 (-b57e470) :  DEBUG (__init__:569) - Update() - AniDB Poster, url: 'http://img7.anidb.net/pics/anime/183099.jpg'
2016-04-18 03:35:35,927 (-b57e470) :  DEBUG (__init__:698) - metadata_download() - url: 'http://img7.anidb.net/pics/anime/183099.jpg', num: '99', filename: 'AniDB/183099.jpg'*

image

Critical Error After Most Recent (8/19) Changes

I pulled down your Hama.bundle yesterday (8/19 midnight) with no issues in it running. Noticing changes, I just repulled at 1:30am (8/20) and I get this error in the log:

2015-08-20 01:37:42,794 (-b00c490) : DEBUG (runtime:717) - Handling request GET /:/plugins/com.plexapp.agents.hama
2015-08-20 01:37:42,836 (-b00c490) : CRITICAL (runtime:493) - Exception matching route for path "/" (most recent call last):
File "bundles-release/Framework.bundle-dist/Contents/Resources/Versions/2/Python/Framework/components/runtime.py", line 464, in match_route
FrameworkException: No route found matching '/'

2015-08-20 01:37:42,836 (-b00c490) : ERROR (runtime:846) - Could not find route matching /:/plugins/com.plexapp.agents.hama
2015-08-20 01:37:42,838 (-b00c490) : DEBUG (runtime:918) - Response: [404] NoneType, 0 bytes

Not grabbing metadata

Cover and metadata not loading for just one series recently added (Masou Gakuen HxH).
Seems like the anidbid is not found even though it exists in the xml files.

anime-list-master.xml:

<anime anidbid="11638" tvdbid="307112" defaulttvdbseason="1" episodeoffset="" tmdbid="" imdbid="">
    <name>Masou Gakuen HxH</name>
</anime>

anime-titles.xml:

<anime aid="11638">
    <title type="main" xml:lang="x-jat">Masou Gakuen HxH</title>
    <title type="official" xml:lang="ja">魔装学園HxH</title>
</anime>

Hama log:

2016-07-06 14:25:15,759 (7f447f796700) :  INFO (core:349) - Starting framework core - Version: 2.6.3, Build: a17e99e (Fri Jun 24 02:04:33 UTC 2016)
2016-07-06 14:25:15,760 (7f447f796700) :  DEBUG (core:361) - Using the standard policy
2016-07-06 14:25:15,760 (7f447f796700) :  DEBUG (core:450) - Starting runtime component.
2016-07-06 14:25:15,761 (7f447f796700) :  DEBUG (core:450) - Starting caching component.
2016-07-06 14:25:15,761 (7f447f796700) :  DEBUG (core:450) - Starting data component.
2016-07-06 14:25:15,761 (7f447f796700) :  DEBUG (core:450) - Starting networking component.
2016-07-06 14:25:15,828 (7f447f796700) :  DEBUG (networking:282) - Loaded HTTP cookies
2016-07-06 14:25:16,044 (7f447f796700) :  DEBUG (networking:450) - Setting the default network timeout to 20.0
2016-07-06 14:25:16,045 (7f447f796700) :  DEBUG (core:450) - Starting localization component.
2016-07-06 14:25:16,045 (7f447f796700) :  INFO (localization:409) - Setting the default locale to en-us
2016-07-06 14:25:16,045 (7f447f796700) :  DEBUG (core:450) - Starting messaging component.
2016-07-06 14:25:16,046 (7f447f796700) :  DEBUG (core:450) - Starting debugging component.
2016-07-06 14:25:16,046 (7f447f796700) :  DEBUG (core:450) - Starting services component.
2016-07-06 14:25:16,046 (7f4453fff700) :  DEBUG (networking:166) - Requesting 'http://127.0.0.1:32400/system/messaging/clear_events/com.plexapp.agents.hama'
2016-07-06 14:25:16,046 (7f447f796700) :  DEBUG (core:450) - Starting myplex component.
2016-07-06 14:25:16,047 (7f447f796700) :  DEBUG (core:450) - Starting notifications component.
2016-07-06 14:25:16,123 (7f447f796700) :  DEBUG (accessor:68) - Creating a new model access point for provider com.plexapp.agents.hama in namespace 'metadata'
2016-07-06 14:25:16,126 (7f447f796700) :  DEBUG (networking:166) - Requesting 'http://127.0.0.1:32400/:/plugins/com.plexapp.system/resourceHashes'
2016-07-06 14:25:20,399 (7f4453fff700) :  DEBUG (services:265) - Plug-in is not daemonized - loading services from system
2016-07-06 14:25:20,399 (7f447f796700) :  DEBUG (runtime:1117) - Created a thread named 'load_all_services'
2016-07-06 14:25:20,399 (7f4453fff700) :  DEBUG (networking:166) - Requesting 'http://127.0.0.1:32400/:/plugins/com.plexapp.system/messaging/function/X0J1bmRsZVNlcnZpY2U6QWxsU2VydmljZXM_/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoxCmRpY3QKMApyMAo_'
2016-07-06 14:25:20,400 (7f447f796700) :  DEBUG (runtime:1117) - Created a thread named 'get_server_info'
2016-07-06 14:25:20,400 (7f447f796700) :  DEBUG (core:150) - Finished starting framework core
2016-07-06 14:25:20,401 (7f4452ffd700) :  DEBUG (networking:166) - Requesting 'http://127.0.0.1:32400'
2016-07-06 14:25:20,401 (7f447f796700) :  DEBUG (core:560) - Loading plug-in code
2016-07-06 14:25:20,849 (7f447f796700) :  DEBUG (core:566) - Finished loading plug-in code
2016-07-06 14:25:25,052 (7f4453fff700) :  DEBUG (services:362) - Loaded services
2016-07-06 14:25:25,055 (7f44537fe700) :  DEBUG (services:438) - No shared code to load
2016-07-06 14:25:25,218 (7f447f796700) :  DEBUG (preferences:258) - Loaded preferences from DefaultPrefs.json
2016-07-06 14:25:28,336 (7f447f796700) :  DEBUG (preferences:178) - Loaded the user preferences for com.plexapp.agents.hama
2016-07-06 14:25:28,399 (7f447f796700) :  DEBUG (agentkit:1104) - Creating new agent class called HamaTVAgent
2016-07-06 14:25:28,400 (7f447f796700) :  DEBUG (agentkit:922) - Updating agent information: [{'media_types': ['TV_Show'], 'accepts_from': ['com.plexapp.agents.localmedia'], 'fallback_agent': False, 'contributes_to': None, 'languages': ['en'], 'persist_stored_files': True, 'version': 0, 'primary_provider': True, 'prefs': True, 'name': 'HamaTV'}]
2016-07-06 14:25:28,400 (7f447f796700) :  DEBUG (networking:166) - Requesting 'http://127.0.0.1:32400/:/plugins/com.plexapp.system/messaging/function/X0FnZW50U2VydmljZTpVcGRhdGVJbmZv/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQo2CmRpY3QKbGlzdApkaWN0Cmxpc3QKbGlzdApsaXN0CjIKczIzCmNvbS5wbGV4YXBwLmFnZW50cy5oYW1hczEwCmlkZW50aWZpZXJyMQpzMTAKYWdlbnRfaW5mbzEKcjIKMTAKcjMKczExCm1lZGlhX3R5cGVzcjQKczEyCmFjY2VwdHNfZnJvbWIwczE0CmZhbGxiYWNrX2FnZW50bnMxNApjb250cmlidXRlc190b3I1CnM5Cmxhbmd1YWdlc2IxczIwCnBlcnNpc3Rfc3RvcmVkX2ZpbGVzaTAKczcKdmVyc2lvbmIxczE2CnByaW1hcnlfcHJvdmlkZXJiMXM1CnByZWZzczYKSGFtYVRWczQKbmFtZTEKczcKVFZfU2hvdzEKczI5CmNvbS5wbGV4YXBwLmFnZW50cy5sb2NhbG1lZGlhMQpzMgplbnIwCg__'
2016-07-06 14:25:29,734 (7f4452ffd700) :  DEBUG (core:538) - Machine identifier is 0c44c4053ff8730a50f74635984b822fd8edbe4f
2016-07-06 14:25:29,734 (7f4452ffd700) :  DEBUG (core:539) - Server version is 1.0.0.2261-a17e99e
2016-07-06 14:25:34,319 (7f447f796700) :  DEBUG (agentkit:1104) - Creating new agent class called HamaMovieAgent
2016-07-06 14:25:34,410 (7f447f796700) :  DEBUG (agentkit:922) - Updating agent information: [{'media_types': ['TV_Show'], 'accepts_from': ['com.plexapp.agents.localmedia'], 'fallback_agent': False, 'contributes_to': None, 'languages': ['en'], 'persist_stored_files': True, 'version': 0, 'primary_provider': True, 'prefs': True, 'name': 'HamaTV'}, {'media_types': ['Movie'], 'accepts_from': ['com.plexapp.agents.localmedia'], 'fallback_agent': False, 'contributes_to': None, 'languages': ['en'], 'persist_stored_files': True, 'version': 0, 'primary_provider': True, 'prefs': True, 'name': 'HamaMovies'}]
2016-07-06 14:25:34,411 (7f447f796700) :  DEBUG (networking:166) - Requesting 'http://127.0.0.1:32400/:/plugins/com.plexapp.system/messaging/function/X0FnZW50U2VydmljZTpVcGRhdGVJbmZv/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoxMApkaWN0Cmxpc3QKZGljdApsaXN0Cmxpc3QKbGlzdApkaWN0Cmxpc3QKbGlzdApsaXN0CjIKczIzCmNvbS5wbGV4YXBwLmFnZW50cy5oYW1hczEwCmlkZW50aWZpZXJyMQpzMTAKYWdlbnRfaW5mbzIKcjIKcjYKMTAKcjMKczExCm1lZGlhX3R5cGVzcjQKczEyCmFjY2VwdHNfZnJvbWIwczE0CmZhbGxiYWNrX2FnZW50bnMxNApjb250cmlidXRlc190b3I1CnM5Cmxhbmd1YWdlc2IxczIwCnBlcnNpc3Rfc3RvcmVkX2ZpbGVzaTAKczcKdmVyc2lvbmIxczE2CnByaW1hcnlfcHJvdmlkZXJiMXM1CnByZWZzczYKSGFtYVRWczQKbmFtZTEKczcKVFZfU2hvdzEKczI5CmNvbS5wbGV4YXBwLmFnZW50cy5sb2NhbG1lZGlhMQpzMgplbjEwCnI3CnMxMQptZWRpYV90eXBlc3I4CnMxMgphY2NlcHRzX2Zyb21iMHMxNApmYWxsYmFja19hZ2VudG5zMTQKY29udHJpYnV0ZXNfdG9yOQpzOQpsYW5ndWFnZXNiMXMyMApwZXJzaXN0X3N0b3JlZF9maWxlc2kwCnM3CnZlcnNpb25iMXMxNgpwcmltYXJ5X3Byb3ZpZGVyYjFzNQpwcmVmc3MxMApIYW1hTW92aWVzczQKbmFtZTEKczUKTW92aWUxCnMyOQpjb20ucGxleGFwcC5hZ2VudHMubG9jYWxtZWRpYTEKczIKZW5yMAo_'
2016-07-06 14:25:41,679 (7f447f796700) :  ERROR (__init__:71) - DefaultPrefs.json invalid
2016-07-06 14:25:41,679 (7f447f796700) :  INFO (core:611) - Started plug-in
2016-07-06 14:25:41,679 (7f447f796700) :  DEBUG (socketinterface:160) - Starting socket server
2016-07-06 14:25:41,680 (7f447f796700) :  DEBUG (runtime:1117) - Created a thread named 'start'
2016-07-06 14:25:41,680 (7f447f796700) :  INFO (socketinterface:184) - Socket server started on port 36706
2016-07-06 14:25:41,680 (7f447f796700) :  INFO (pipeinterface:25) - Entering run loop
2016-07-06 14:25:41,680 (7f447f796700) :  DEBUG (runtime:717) - Handling request GET /:/prefixes
2016-07-06 14:25:41,681 (7f447f796700) :  DEBUG (runtime:814) - Found route matching /:/prefixes
2016-07-06 14:25:41,681 (7f447f796700) :  DEBUG (runtime:924) - Response: [200] MediaContainer, 148 bytes
2016-07-06 14:25:42,385 (7f44537fe700) :  DEBUG (runtime:717) - Handling request GET /:/plugins/com.plexapp.agents.hama/messaging/function/X0FnZW50S2l0OlNlYXJjaA__/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoyCmRpY3QKZGljdAo2CnMyCmVuczQKbGFuZ2IwczYKbWFudWFsYjFzNwpwcmltYXJ5aTAKczcKdmVyc2lvbnIxCnM2Cmt3YXJnc3M3ClRWX1Nob3dzMTAKbWVkaWFfdHlwZTExCnMxNgo0NWEwYjBhOWYwMjVmMDgxczE3Cm9wZW5TdWJ0aXRsZXNIYXNoczIKMTdzNwplcGlzb2RlczI0ClRoZSBFbWJlciBJc2xhbmQgUGxheWVyc3M0Cm5hbWVzMQoxczgKZXBpc29kaWNzMjcKQXZhdGFyIC0gVGhlIExhc3QgQWlyYmVuZGVyczQKc2hvd3MxCjNzNgpzZWFzb25uczQKeWVhcnMyMjAKJTJGc2VydmVyLXN0b3JhZ2UlMkZBbmltZSUyRkF2YXRhciUyMC0lMjBUaGUlMjBMYXN0JTIwQWlyYmVuZGVyJTJGU2Vhc29uJTIwMyUyMC0lMjBCb29rJTIwMyUyMEZpcmUlMkZBdmF0YXIlMjAtJTIwVGhlJTIwTGFzdCUyMEFpcmJlbmRlciUyMC0lMjBCb29rJTIwMyUyMEZpcmUlMjAtJTIwQ2hhcHRlciUyMDE3JTIwLSUyMFRoZSUyMEVtYmVyJTIwSXNsYW5kJTIwUGxheWVycyUyRWF2aXM4CmZpbGVuYW1lczQwCmY4ZDczODcxODRlNTkyOGFkZDAyNGU2MmViMmI0ZmM5ZGYxNzQ2NjdzOApwbGV4SGFzaHM3CjE0NTM5ODdzOApkdXJhdGlvbnM1CjEyOTI4czIKaWRyMAo_
2016-07-06 14:25:42,387 (7f4453fff700) :  DEBUG (runtime:717) - Handling request GET /:/plugins/com.plexapp.agents.hama/messaging/function/X0FnZW50S2l0OlVwZGF0ZU1ldGFkYXRh/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoxCmRpY3QKMTAKczIKZW5zNApsYW5nYjFzNQpmb3JjZWIwczgKcGVyaW9kaWNzNQoyMDIzOHM0CmRiaWRpMApzNwp2ZXJzaW9ubnMxMApwYXJlbnRHVUlEbnM4CnBhcmVudElEczcKVFZfU2hvd3MxMAptZWRpYV90eXBlczQ1CmNvbS5wbGV4YXBwLmFnZW50cy5oYW1hOi8vYW5pZGItMTE2Mzg%40bGFuZz1lbnM0Cmd1aWRzMTEKYW5pZGItMTE2MzhzMgppZHIwCg__
2016-07-06 14:25:42,392 (7f44527fc700) :  DEBUG (runtime:717) - Handling request GET /:/plugins/com.plexapp.agents.hama/messaging/function/X0FnZW50S2l0OlNlYXJjaA__/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoyCmRpY3QKZGljdAo2CnMyCmVuczQKbGFuZ2IwczYKbWFudWFsYjFzNwpwcmltYXJ5aTAKczcKdmVyc2lvbnIxCnM2Cmt3YXJnc3M3ClRWX1Nob3dzMTAKbWVkaWFfdHlwZTExCnMxNgo5NTYyYWM1MzZmNzQ3YTU3czE3Cm9wZW5TdWJ0aXRsZXNIYXNoczIKMTNzNwplcGlzb2RlczIyClZlbm9tIG9mIHRoZSBSZWQgTG90dXNzNApuYW1lczEKMXM4CmVwaXNvZGljczI4CkF2YXRhciAtIFRoZSBMZWdlbmQgb2YgS29ycmFzNApzaG93czEKM3M2CnNlYXNvbm5zNAp5ZWFyczIwNAolMkZzZXJ2ZXItc3RvcmFnZSUyRkFuaW1lJTJGQXZhdGFyJTIwLSUyMFRoZSUyMExlZ2VuZCUyMG9mJTIwS29ycmElMkZTZWFzb24lMjAzJTIwLSUyMEJvb2slMjAzJTIwQ2hhbmdlJTJGVGhlJTIwTGVnZW5kJTIwb2YlMjBLb3JyYSUyMFMwM0UxMyUyMFZlbm9tJTIwb2YlMjB0aGUlMjBSZWQlMjBMb3R1cyUyMCgxMjgweDcyMCklMjBbUGhyMHN0WV0lMkVta3ZzOApmaWxlbmFtZXM0MAo2NTg0YjkxNDQ5MjUyMjQ1ODg2NDZmMmE4OGNhNzUwYmQ5ODcyZDVmczgKcGxleEhhc2hzNwoxMzIxOTg5czgKZHVyYXRpb25zNQoxNjA3M3MyCmlkcjAK
2016-07-06 14:25:42,396 (7f44537fe700) :  DEBUG (runtime:814) - Found route matching /:/plugins/com.plexapp.agents.hama/messaging/function/X0FnZW50S2l0OlNlYXJjaA__/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoyCmRpY3QKZGljdAo2CnMyCmVuczQKbGFuZ2IwczYKbWFudWFsYjFzNwpwcmltYXJ5aTAKczcKdmVyc2lvbnIxCnM2Cmt3YXJnc3M3ClRWX1Nob3dzMTAKbWVkaWFfdHlwZTExCnMxNgo0NWEwYjBhOWYwMjVmMDgxczE3Cm9wZW5TdWJ0aXRsZXNIYXNoczIKMTdzNwplcGlzb2RlczI0ClRoZSBFbWJlciBJc2xhbmQgUGxheWVyc3M0Cm5hbWVzMQoxczgKZXBpc29kaWNzMjcKQXZhdGFyIC0gVGhlIExhc3QgQWlyYmVuZGVyczQKc2hvd3MxCjNzNgpzZWFzb25uczQKeWVhcnMyMjAKJTJGc2VydmVyLXN0b3JhZ2UlMkZBbmltZSUyRkF2YXRhciUyMC0lMjBUaGUlMjBMYXN0JTIwQWlyYmVuZGVyJTJGU2Vhc29uJTIwMyUyMC0lMjBCb29rJTIwMyUyMEZpcmUlMkZBdmF0YXIlMjAtJTIwVGhlJTIwTGFzdCUyMEFpcmJlbmRlciUyMC0lMjBCb29rJTIwMyUyMEZpcmUlMjAtJTIwQ2hhcHRlciUyMDE3JTIwLSUyMFRoZSUyMEVtYmVyJTIwSXNsYW5kJTIwUGxheWVycyUyRWF2aXM4CmZpbGVuYW1lczQwCmY4ZDczODcxODRlNTkyOGFkZDAyNGU2MmViMmI0ZmM5ZGYxNzQ2NjdzOApwbGV4SGFzaHM3CjE0NTM5ODdzOApkdXJhdGlvbnM1CjEyOTI4czIKaWRyMAo_
2016-07-06 14:25:42,396 (7f4453fff700) :  DEBUG (runtime:814) - Found route matching /:/plugins/com.plexapp.agents.hama/messaging/function/X0FnZW50S2l0OlVwZGF0ZU1ldGFkYXRh/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoxCmRpY3QKMTAKczIKZW5zNApsYW5nYjFzNQpmb3JjZWIwczgKcGVyaW9kaWNzNQoyMDIzOHM0CmRiaWRpMApzNwp2ZXJzaW9ubnMxMApwYXJlbnRHVUlEbnM4CnBhcmVudElEczcKVFZfU2hvd3MxMAptZWRpYV90eXBlczQ1CmNvbS5wbGV4YXBwLmFnZW50cy5oYW1hOi8vYW5pZGItMTE2Mzg@bGFuZz1lbnM0Cmd1aWRzMTEKYW5pZGItMTE2MzhzMgppZHIwCg__
2016-07-06 14:25:42,396 (7f44527fc700) :  DEBUG (runtime:814) - Found route matching /:/plugins/com.plexapp.agents.hama/messaging/function/X0FnZW50S2l0OlNlYXJjaA__/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoyCmRpY3QKZGljdAo2CnMyCmVuczQKbGFuZ2IwczYKbWFudWFsYjFzNwpwcmltYXJ5aTAKczcKdmVyc2lvbnIxCnM2Cmt3YXJnc3M3ClRWX1Nob3dzMTAKbWVkaWFfdHlwZTExCnMxNgo5NTYyYWM1MzZmNzQ3YTU3czE3Cm9wZW5TdWJ0aXRsZXNIYXNoczIKMTNzNwplcGlzb2RlczIyClZlbm9tIG9mIHRoZSBSZWQgTG90dXNzNApuYW1lczEKMXM4CmVwaXNvZGljczI4CkF2YXRhciAtIFRoZSBMZWdlbmQgb2YgS29ycmFzNApzaG93czEKM3M2CnNlYXNvbm5zNAp5ZWFyczIwNAolMkZzZXJ2ZXItc3RvcmFnZSUyRkFuaW1lJTJGQXZhdGFyJTIwLSUyMFRoZSUyMExlZ2VuZCUyMG9mJTIwS29ycmElMkZTZWFzb24lMjAzJTIwLSUyMEJvb2slMjAzJTIwQ2hhbmdlJTJGVGhlJTIwTGVnZW5kJTIwb2YlMjBLb3JyYSUyMFMwM0UxMyUyMFZlbm9tJTIwb2YlMjB0aGUlMjBSZWQlMjBMb3R1cyUyMCgxMjgweDcyMCklMjBbUGhyMHN0WV0lMkVta3ZzOApmaWxlbmFtZXM0MAo2NTg0YjkxNDQ5MjUyMjQ1ODg2NDZmMmE4OGNhNzUwYmQ5ODcyZDVmczgKcGxleEhhc2hzNwoxMzIxOTg5czgKZHVyYXRpb25zNQoxNjA3M3MyCmlkcjAK
2016-07-06 14:25:42,396 (7f44537fe700) :  INFO (agentkit:946) - Searching for matches for {'openSubtitlesHash': '45a0b0a9f025f081', 'episode': '17', 'name': 'The Ember Island Players', 'episodic': '1', 'show': 'Avatar - The Last Airbender', 'season': '3', 'plexHash': 'f8d7387184e5928add024e62eb2b4fc9df174667', 'filename': '%2Fserver-storage%2FAnime%2FAvatar%20-%20The%20Last%20Airbender%2FSeason%203%20-%20Book%203%20Fire%2FAvatar%20-%20The%20Last%20Airbender%20-%20Book%203%20Fire%20-%20Chapter%2017%20-%20The%20Ember%20Island%20Players%2Eavi', 'year': None, 'duration': '1453987', 'id': '12928'}
2016-07-06 14:25:42,397 (7f4453fff700) :  DEBUG (model:32) - Loading model with GUID com.plexapp.agents.hama://anidb-11638?lang=en
2016-07-06 14:25:42,397 (7f44527fc700) :  INFO (agentkit:946) - Searching for matches for {'openSubtitlesHash': '9562ac536f747a57', 'episode': '13', 'name': 'Venom of the Red Lotus', 'episodic': '1', 'show': 'Avatar - The Legend of Korra', 'season': '3', 'plexHash': '6584b9144925224588646f2a88ca750bd9872d5f', 'filename': '%2Fserver-storage%2FAnime%2FAvatar%20-%20The%20Legend%20of%20Korra%2FSeason%203%20-%20Book%203%20Change%2FThe%20Legend%20of%20Korra%20S03E13%20Venom%20of%20the%20Red%20Lotus%20(1280x720)%20[Phr0stY]%2Emkv', 'year': None, 'duration': '1321989', 'id': '16073'}
2016-07-06 14:25:42,398 (7f44537fe700) :  DEBUG (networking:166) - Requesting 'http://127.0.0.1:32400/library/metadata/12928/tree'
2016-07-06 14:25:42,399 (7f44527fc700) :  DEBUG (networking:166) - Requesting 'http://127.0.0.1:32400/library/metadata/16073/tree'
2016-07-06 14:25:42,400 (7f4453fff700) :  DEBUG (model:234) - Deserializing from /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Metadata/TV Shows/8/57eef19e0ce3d32f98b6f27d890067c5853efb8.bundle/Contents/com.plexapp.agents.hama/Info.xml
2016-07-06 14:25:42,402 (7f4453fff700) :  DEBUG (networking:166) - Requesting 'http://127.0.0.1:32400/library/metadata/20238/tree'
2016-07-06 14:25:53,933 (7f4453fff700) :  DEBUG (__init__:562) - --- Update Begin -------------------------------------------------------------------------------------------
2016-07-06 14:25:53,933 (7f4453fff700) :  DEBUG (__init__:562) - Update - metadata source: 'anidb', id: '11638', Title: 'None',([...], [...], True)
2016-07-06 14:25:53,934 (7f4453fff700) :  DEBUG (__init__:671) - anidbTvdbMapping() - anidbid '11638' not found in file
2016-07-06 14:25:53,934 (7f4453fff700) :  CRITICAL (agentkit:1067) - Exception in the update function of agent named 'HamaTV', called with guid 'com.plexapp.agents.hama://anidb-11638?lang=en' (most recent call last):
  File "/usr/lib/plexmediaserver/Resources/Plug-ins-a17e99e/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/api/agentkit.py", line 1065, in _update
    agent.update(obj, media, lang, **kwargs)
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Hama.bundle/Contents/Code/__init__.py", line 869, in update
    def update(self, metadata, media, lang, force ): self.Update(metadata, media, lang, force,  False )
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Hama.bundle/Contents/Code/__init__.py", line 562, in Update
    elif season=="0":                                                    tvdb_ep = "s"+season+"e"+epNumVal
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Hama.bundle/Contents/Code/__init__.py", line 672, in anidbTvdbMapping
    error_log['anime-list anidbid missing'].append("anidbid: %s | Title: '%s'" % (anidb_id, name))
UnboundLocalError: local variable 'name' referenced before assignment

2016-07-06 14:26:04,266 (7f44537fe700) :  DEBUG (__init__:101) - === Search - Begin - ================================================================================================
2016-07-06 14:26:04,267 (7f44537fe700) :  INFO (__init__:164) - search() - Title: 'Avatar - The Last Airbender', name: 'The Ember Island Players', filename: '%2Fserver-storage%2FAnime%2FAvatar%20-%20The%20Last%20Airbender%2FSeason%203%20-%20Book%203%20Fire%2FAvatar%20-%20The%20Last%20Airbender%20-%20Book%203%20Fire%20-%20Chapter%2017%20-%20The%20Ember%20Island%20Players%2Eavi', manual:'False'
2016-07-06 14:26:04,267 (7f44537fe700) :  DEBUG (__init__:164) - search() - Keyword search - Matching 'Avatar - The Last Airbender' with: 'avatar', 'airbender'
2016-07-06 14:26:04,268 (7f44537fe700) :  DEBUG (__init__:166) - 
2016-07-06 14:26:04,268 (7f44537fe700) :  DEBUG (__init__:176) - Search - similarity with 'Avatar - The Last Airbender': 
2016-07-06 14:26:04,268 (7f44537fe700) :  DEBUG (runtime:924) - Response: [200] str, 320 bytes
2016-07-06 14:26:08,549 (7f4453fff700) :  DEBUG (model:229) - Serializing to /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Metadata/TV Shows/8/57eef19e0ce3d32f98b6f27d890067c5853efb8.bundle/Contents/com.plexapp.agents.hama/Info.xml
2016-07-06 14:26:08,550 (7f4453fff700) :  DEBUG (runtime:924) - Response: [200] str, 16 bytes
2016-07-06 14:26:16,490 (7f44527fc700) :  DEBUG (__init__:101) - === Search - Begin - ================================================================================================
2016-07-06 14:26:16,491 (7f44527fc700) :  INFO (__init__:164) - search() - Title: 'Avatar - The Legend of Korra', name: 'Venom of the Red Lotus', filename: '%2Fserver-storage%2FAnime%2FAvatar%20-%20The%20Legend%20of%20Korra%2FSeason%203%20-%20Book%203%20Change%2FThe%20Legend%20of%20Korra%20S03E13%20Venom%20of%20the%20Red%20Lotus%20(1280x720)%20[Phr0stY]%2Emkv', manual:'False'
2016-07-06 14:26:16,491 (7f44527fc700) :  DEBUG (__init__:164) - search() - Keyword search - Matching 'Avatar - The Legend of Korra' with: 'avatar', 'legend', 'korra'
2016-07-06 14:26:16,491 (7f44527fc700) :  DEBUG (__init__:166) - 
2016-07-06 14:26:16,491 (7f44527fc700) :  DEBUG (__init__:176) - Search - similarity with 'Avatar - The Legend of Korra': 
2016-07-06 14:26:16,492 (7f44527fc700) :  DEBUG (runtime:924) - Response: [200] str, 320 bytes
2016-07-06 14:45:06,748 (7f44527fc700) :  DEBUG (runtime:717) - Handling request GET /:/plugins/com.plexapp.agents.hama/messaging/function/X0FnZW50S2l0OlVwZGF0ZU1ldGFkYXRh/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoxCmRpY3QKMTAKczIKZW5zNApsYW5nYjFzNQpmb3JjZWIwczgKcGVyaW9kaWNzNQoyMDIzOHM0CmRiaWRpMApzNwp2ZXJzaW9ubnMxMApwYXJlbnRHVUlEbnM4CnBhcmVudElEczcKVFZfU2hvd3MxMAptZWRpYV90eXBlczQ1CmNvbS5wbGV4YXBwLmFnZW50cy5oYW1hOi8vYW5pZGItMTE2Mzg%40bGFuZz1lbnM0Cmd1aWRzMTEKYW5pZGItMTE2MzhzMgppZHIwCg__
2016-07-06 14:45:06,749 (7f44527fc700) :  DEBUG (runtime:814) - Found route matching /:/plugins/com.plexapp.agents.hama/messaging/function/X0FnZW50S2l0OlVwZGF0ZU1ldGFkYXRh/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoxCmRpY3QKMTAKczIKZW5zNApsYW5nYjFzNQpmb3JjZWIwczgKcGVyaW9kaWNzNQoyMDIzOHM0CmRiaWRpMApzNwp2ZXJzaW9ubnMxMApwYXJlbnRHVUlEbnM4CnBhcmVudElEczcKVFZfU2hvd3MxMAptZWRpYV90eXBlczQ1CmNvbS5wbGV4YXBwLmFnZW50cy5oYW1hOi8vYW5pZGItMTE2Mzg@bGFuZz1lbnM0Cmd1aWRzMTEKYW5pZGItMTE2MzhzMgppZHIwCg__
2016-07-06 14:45:06,749 (7f44527fc700) :  DEBUG (model:32) - Loading model with GUID com.plexapp.agents.hama://anidb-11638?lang=en
2016-07-06 14:45:06,750 (7f4453fff700) :  DEBUG (runtime:717) - Handling request GET /:/plugins/com.plexapp.agents.hama/messaging/function/X0FnZW50S2l0OlNlYXJjaA__/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoyCmRpY3QKZGljdAo2CnMyCmVuczQKbGFuZ2IwczYKbWFudWFsYjFzNwpwcmltYXJ5aTAKczcKdmVyc2lvbnIxCnM2Cmt3YXJnc3M3ClRWX1Nob3dzMTAKbWVkaWFfdHlwZTExCnMxNgo0NWEwYjBhOWYwMjVmMDgxczE3Cm9wZW5TdWJ0aXRsZXNIYXNoczIKMTdzNwplcGlzb2RlczI0ClRoZSBFbWJlciBJc2xhbmQgUGxheWVyc3M0Cm5hbWVzMQoxczgKZXBpc29kaWNzMjcKQXZhdGFyIC0gVGhlIExhc3QgQWlyYmVuZGVyczQKc2hvd3MxCjNzNgpzZWFzb25uczQKeWVhcnMyMjAKJTJGc2VydmVyLXN0b3JhZ2UlMkZBbmltZSUyRkF2YXRhciUyMC0lMjBUaGUlMjBMYXN0JTIwQWlyYmVuZGVyJTJGU2Vhc29uJTIwMyUyMC0lMjBCb29rJTIwMyUyMEZpcmUlMkZBdmF0YXIlMjAtJTIwVGhlJTIwTGFzdCUyMEFpcmJlbmRlciUyMC0lMjBCb29rJTIwMyUyMEZpcmUlMjAtJTIwQ2hhcHRlciUyMDE3JTIwLSUyMFRoZSUyMEVtYmVyJTIwSXNsYW5kJTIwUGxheWVycyUyRWF2aXM4CmZpbGVuYW1lczQwCmY4ZDczODcxODRlNTkyOGFkZDAyNGU2MmViMmI0ZmM5ZGYxNzQ2NjdzOApwbGV4SGFzaHM3CjE0NTM5ODdzOApkdXJhdGlvbnM1CjEyOTI4czIKaWRyMAo_
2016-07-06 14:45:06,750 (7f44527fc700) :  DEBUG (model:234) - Deserializing from /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Metadata/TV Shows/8/57eef19e0ce3d32f98b6f27d890067c5853efb8.bundle/Contents/com.plexapp.agents.hama/Info.xml
2016-07-06 14:45:06,750 (7f4453fff700) :  DEBUG (runtime:814) - Found route matching /:/plugins/com.plexapp.agents.hama/messaging/function/X0FnZW50S2l0OlNlYXJjaA__/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoyCmRpY3QKZGljdAo2CnMyCmVuczQKbGFuZ2IwczYKbWFudWFsYjFzNwpwcmltYXJ5aTAKczcKdmVyc2lvbnIxCnM2Cmt3YXJnc3M3ClRWX1Nob3dzMTAKbWVkaWFfdHlwZTExCnMxNgo0NWEwYjBhOWYwMjVmMDgxczE3Cm9wZW5TdWJ0aXRsZXNIYXNoczIKMTdzNwplcGlzb2RlczI0ClRoZSBFbWJlciBJc2xhbmQgUGxheWVyc3M0Cm5hbWVzMQoxczgKZXBpc29kaWNzMjcKQXZhdGFyIC0gVGhlIExhc3QgQWlyYmVuZGVyczQKc2hvd3MxCjNzNgpzZWFzb25uczQKeWVhcnMyMjAKJTJGc2VydmVyLXN0b3JhZ2UlMkZBbmltZSUyRkF2YXRhciUyMC0lMjBUaGUlMjBMYXN0JTIwQWlyYmVuZGVyJTJGU2Vhc29uJTIwMyUyMC0lMjBCb29rJTIwMyUyMEZpcmUlMkZBdmF0YXIlMjAtJTIwVGhlJTIwTGFzdCUyMEFpcmJlbmRlciUyMC0lMjBCb29rJTIwMyUyMEZpcmUlMjAtJTIwQ2hhcHRlciUyMDE3JTIwLSUyMFRoZSUyMEVtYmVyJTIwSXNsYW5kJTIwUGxheWVycyUyRWF2aXM4CmZpbGVuYW1lczQwCmY4ZDczODcxODRlNTkyOGFkZDAyNGU2MmViMmI0ZmM5ZGYxNzQ2NjdzOApwbGV4SGFzaHM3CjE0NTM5ODdzOApkdXJhdGlvbnM1CjEyOTI4czIKaWRyMAo_
2016-07-06 14:45:06,751 (7f4453fff700) :  INFO (agentkit:946) - Searching for matches for {'openSubtitlesHash': '45a0b0a9f025f081', 'episode': '17', 'name': 'The Ember Island Players', 'episodic': '1', 'show': 'Avatar - The Last Airbender', 'season': '3', 'plexHash': 'f8d7387184e5928add024e62eb2b4fc9df174667', 'filename': '%2Fserver-storage%2FAnime%2FAvatar%20-%20The%20Last%20Airbender%2FSeason%203%20-%20Book%203%20Fire%2FAvatar%20-%20The%20Last%20Airbender%20-%20Book%203%20Fire%20-%20Chapter%2017%20-%20The%20Ember%20Island%20Players%2Eavi', 'year': None, 'duration': '1453987', 'id': '12928'}
2016-07-06 14:45:06,751 (7f4453fff700) :  DEBUG (networking:166) - Requesting 'http://127.0.0.1:32400/library/metadata/12928/tree'
2016-07-06 14:45:06,771 (7f4453fff700) :  DEBUG (__init__:101) - === Search - Begin - ================================================================================================
2016-07-06 14:45:06,771 (7f4453fff700) :  INFO (__init__:164) - search() - Title: 'Avatar - The Last Airbender', name: 'The Ember Island Players', filename: '%2Fserver-storage%2FAnime%2FAvatar%20-%20The%20Last%20Airbender%2FSeason%203%20-%20Book%203%20Fire%2FAvatar%20-%20The%20Last%20Airbender%20-%20Book%203%20Fire%20-%20Chapter%2017%20-%20The%20Ember%20Island%20Players%2Eavi', manual:'False'
2016-07-06 14:45:06,772 (7f4453fff700) :  DEBUG (__init__:164) - search() - Keyword search - Matching 'Avatar - The Last Airbender' with: 'avatar', 'airbender'
2016-07-06 14:45:06,772 (7f4453fff700) :  DEBUG (__init__:166) - 
2016-07-06 14:45:06,772 (7f4453fff700) :  DEBUG (__init__:176) - Search - similarity with 'Avatar - The Last Airbender': 
2016-07-06 14:45:06,773 (7f4453fff700) :  DEBUG (runtime:924) - Response: [200] str, 320 bytes
2016-07-06 14:45:06,879 (7f44527fc700) :  DEBUG (networking:166) - Requesting 'http://127.0.0.1:32400/library/metadata/20238/tree'
2016-07-06 14:45:23,480 (7f44527fc700) :  DEBUG (__init__:562) - --- Update Begin -------------------------------------------------------------------------------------------
2016-07-06 14:45:23,480 (7f44527fc700) :  DEBUG (__init__:562) - Update - metadata source: 'anidb', id: '11638', Title: 'None',([...], [...], True)
2016-07-06 14:45:23,480 (7f44527fc700) :  DEBUG (__init__:671) - anidbTvdbMapping() - anidbid '11638' not found in file
2016-07-06 14:45:23,481 (7f44527fc700) :  CRITICAL (agentkit:1067) - Exception in the update function of agent named 'HamaTV', called with guid 'com.plexapp.agents.hama://anidb-11638?lang=en' (most recent call last):
  File "/usr/lib/plexmediaserver/Resources/Plug-ins-a17e99e/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/api/agentkit.py", line 1065, in _update
    agent.update(obj, media, lang, **kwargs)
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Hama.bundle/Contents/Code/__init__.py", line 869, in update
    def update(self, metadata, media, lang, force ): self.Update(metadata, media, lang, force,  False )
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Hama.bundle/Contents/Code/__init__.py", line 562, in Update
    elif season=="0":                                                    tvdb_ep = "s"+season+"e"+epNumVal
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Hama.bundle/Contents/Code/__init__.py", line 672, in anidbTvdbMapping
    error_log['anime-list anidbid missing'].append("anidbid: %s | Title: '%s'" % (anidb_id, name))
UnboundLocalError: local variable 'name' referenced before assignment

2016-07-06 14:45:23,694 (7f4453fff700) :  DEBUG (runtime:717) - Handling request GET /:/plugins/com.plexapp.agents.hama/messaging/function/X0FnZW50S2l0OlNlYXJjaA__/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoyCmRpY3QKZGljdAo2CnMyCmVuczQKbGFuZ2IwczYKbWFudWFsYjFzNwpwcmltYXJ5aTAKczcKdmVyc2lvbnIxCnM2Cmt3YXJnc3M3ClRWX1Nob3dzMTAKbWVkaWFfdHlwZTExCnMxNgo5NTYyYWM1MzZmNzQ3YTU3czE3Cm9wZW5TdWJ0aXRsZXNIYXNoczIKMTNzNwplcGlzb2RlczIyClZlbm9tIG9mIHRoZSBSZWQgTG90dXNzNApuYW1lczEKMXM4CmVwaXNvZGljczI4CkF2YXRhciAtIFRoZSBMZWdlbmQgb2YgS29ycmFzNApzaG93czEKM3M2CnNlYXNvbm5zNAp5ZWFyczIwNAolMkZzZXJ2ZXItc3RvcmFnZSUyRkFuaW1lJTJGQXZhdGFyJTIwLSUyMFRoZSUyMExlZ2VuZCUyMG9mJTIwS29ycmElMkZTZWFzb24lMjAzJTIwLSUyMEJvb2slMjAzJTIwQ2hhbmdlJTJGVGhlJTIwTGVnZW5kJTIwb2YlMjBLb3JyYSUyMFMwM0UxMyUyMFZlbm9tJTIwb2YlMjB0aGUlMjBSZWQlMjBMb3R1cyUyMCgxMjgweDcyMCklMjBbUGhyMHN0WV0lMkVta3ZzOApmaWxlbmFtZXM0MAo2NTg0YjkxNDQ5MjUyMjQ1ODg2NDZmMmE4OGNhNzUwYmQ5ODcyZDVmczgKcGxleEhhc2hzNwoxMzIxOTg5czgKZHVyYXRpb25zNQoxNjA3M3MyCmlkcjAK
2016-07-06 14:45:23,695 (7f4453fff700) :  DEBUG (runtime:814) - Found route matching /:/plugins/com.plexapp.agents.hama/messaging/function/X0FnZW50S2l0OlNlYXJjaA__/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoyCmRpY3QKZGljdAo2CnMyCmVuczQKbGFuZ2IwczYKbWFudWFsYjFzNwpwcmltYXJ5aTAKczcKdmVyc2lvbnIxCnM2Cmt3YXJnc3M3ClRWX1Nob3dzMTAKbWVkaWFfdHlwZTExCnMxNgo5NTYyYWM1MzZmNzQ3YTU3czE3Cm9wZW5TdWJ0aXRsZXNIYXNoczIKMTNzNwplcGlzb2RlczIyClZlbm9tIG9mIHRoZSBSZWQgTG90dXNzNApuYW1lczEKMXM4CmVwaXNvZGljczI4CkF2YXRhciAtIFRoZSBMZWdlbmQgb2YgS29ycmFzNApzaG93czEKM3M2CnNlYXNvbm5zNAp5ZWFyczIwNAolMkZzZXJ2ZXItc3RvcmFnZSUyRkFuaW1lJTJGQXZhdGFyJTIwLSUyMFRoZSUyMExlZ2VuZCUyMG9mJTIwS29ycmElMkZTZWFzb24lMjAzJTIwLSUyMEJvb2slMjAzJTIwQ2hhbmdlJTJGVGhlJTIwTGVnZW5kJTIwb2YlMjBLb3JyYSUyMFMwM0UxMyUyMFZlbm9tJTIwb2YlMjB0aGUlMjBSZWQlMjBMb3R1cyUyMCgxMjgweDcyMCklMjBbUGhyMHN0WV0lMkVta3ZzOApmaWxlbmFtZXM0MAo2NTg0YjkxNDQ5MjUyMjQ1ODg2NDZmMmE4OGNhNzUwYmQ5ODcyZDVmczgKcGxleEhhc2hzNwoxMzIxOTg5czgKZHVyYXRpb25zNQoxNjA3M3MyCmlkcjAK
2016-07-06 14:45:23,695 (7f4453fff700) :  INFO (agentkit:946) - Searching for matches for {'openSubtitlesHash': '9562ac536f747a57', 'episode': '13', 'name': 'Venom of the Red Lotus', 'episodic': '1', 'show': 'Avatar - The Legend of Korra', 'season': '3', 'plexHash': '6584b9144925224588646f2a88ca750bd9872d5f', 'filename': '%2Fserver-storage%2FAnime%2FAvatar%20-%20The%20Legend%20of%20Korra%2FSeason%203%20-%20Book%203%20Change%2FThe%20Legend%20of%20Korra%20S03E13%20Venom%20of%20the%20Red%20Lotus%20(1280x720)%20[Phr0stY]%2Emkv', 'year': None, 'duration': '1321989', 'id': '16073'}
2016-07-06 14:45:23,695 (7f4453fff700) :  DEBUG (networking:166) - Requesting 'http://127.0.0.1:32400/library/metadata/16073/tree'
2016-07-06 14:45:23,832 (7f44527fc700) :  DEBUG (model:229) - Serializing to /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Metadata/TV Shows/8/57eef19e0ce3d32f98b6f27d890067c5853efb8.bundle/Contents/com.plexapp.agents.hama/Info.xml
2016-07-06 14:45:23,833 (7f44527fc700) :  DEBUG (runtime:924) - Response: [200] str, 16 bytes
2016-07-06 14:45:58,142 (7f4453fff700) :  DEBUG (__init__:101) - === Search - Begin - ================================================================================================
2016-07-06 14:45:58,157 (7f4453fff700) :  INFO (__init__:164) - search() - Title: 'Avatar - The Legend of Korra', name: 'Venom of the Red Lotus', filename: '%2Fserver-storage%2FAnime%2FAvatar%20-%20The%20Legend%20of%20Korra%2FSeason%203%20-%20Book%203%20Change%2FThe%20Legend%20of%20Korra%20S03E13%20Venom%20of%20the%20Red%20Lotus%20(1280x720)%20[Phr0stY]%2Emkv', manual:'False'
2016-07-06 14:45:58,158 (7f4453fff700) :  DEBUG (__init__:164) - search() - Keyword search - Matching 'Avatar - The Legend of Korra' with: 'avatar', 'legend', 'korra'
2016-07-06 14:45:58,158 (7f4453fff700) :  DEBUG (__init__:166) - 
2016-07-06 14:45:58,158 (7f4453fff700) :  DEBUG (__init__:176) - Search - similarity with 'Avatar - The Legend of Korra': 
2016-07-06 14:45:58,159 (7f4453fff700) :  DEBUG (runtime:924) - Response: [200] str, 320 bytes

Scanner seems to be picking it up though

series.log:

2016-07-06 09:06:29 Scanner call - root: '/server-storage/Anime', path: 'Masou Gakuen HxH', dirs: '0', files: '1'
2016-07-06 09:06:29 =============================================================================================================================================================
2016-07-06 09:06:29 "Masou Gakuen HxH" s0001e001 "[HorribleSubs] Masou Gakuen HxH - 01 [720p].mkv"
2016-07-06 09:06:29 -------------------------------------------------------------------------------------------------------------------------------------------------------------
2016-07-06 09:06:29 
2016-07-06 09:39:13 === Library "Anime - series", Root: "/server-storage/Anime",  Launched: '2016-07-06 09:39:13'================================================================
2016-07-06 09:39:13 keep_zero_size_files: 'True'
2016-07-06 09:39:13 no_timestamp:         'False'
2016-07-06 09:39:13 season_from_folder:   'False'

but none of the other logs have it, with ASS - Filelist.log and the ASS.log completely empty

Failure to load https files

@ZeroQI

Something on GitHub raw I think either is currently broken or changed.

# wget http://rawgithub.com/ScudLee/anime-lists/master/anime-list-master.xml
...
ERROR: cannot verify rawgit.com's certificate, issued by ‘/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO ECC Domain Validation Secure Server CA 2’:
  Unable to locally verify the issuer's authority.
To connect to rawgit.com insecurely, use `--no-check-certificate'.

# wget https://raw.githubusercontent.com/ZeroQI/Absolute-Series-Scanner/master/tvdb4.mapping.xml
...
ERROR: cannot verify raw.githubusercontent.com's certificate, issued by ‘/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA’:
  Unable to locally verify the issuer's authority.
To connect to raw.githubusercontent.com insecurely, use `--no-check-certificate'.
2016-07-19 11:13:55,706 (-8e2a530) :  DEBUG (__init__:68) - ### HTTP Anidb Metadata Agent (HAMA) Started ##############################################################################################################
2016-07-19 11:13:55,706 (-8e2a530) :  DEBUG (__init__:809) - xmlElementFromFile() - url: 'http://anidb.net/api/anime-titles.xml.gz', filename: 'anime-titles.xml'
2016-07-19 11:13:59,713 (-8e2a530) :  DEBUG (networking:166) - Requesting 'http://anidb.net/api/anime-titles.xml.gz'
2016-07-19 11:14:00,879 (-8e2a530) :  DEBUG (__init__:809) - xmlElementFromFile() - url: 'http://rawgithub.com/ScudLee/anime-lists/master/anime-list-master.xml', filename: 'anime-list-master.xml'
2016-07-19 11:14:00,881 (-8e2a530) :  DEBUG (networking:166) - Requesting 'http://rawgithub.com/ScudLee/anime-lists/master/anime-list-master.xml'
2016-07-19 11:14:01,190 (-8e2a530) :  DEBUG (__init__:818) - xmlElementFromFile() - Loading locally since banned or empty file (result page <1024 bytes)
2016-07-19 11:14:01,334 (-8e2a530) :  DEBUG (__init__:809) - xmlElementFromFile() - url: 'http://rawgithub.com/ScudLee/anime-lists/master/anime-movieset-list.xml', filename: 'anime-movieset-list.xml'
2016-07-19 11:14:01,356 (-8e2a530) :  DEBUG (networking:166) - Requesting 'http://rawgithub.com/ScudLee/anime-lists/master/anime-movieset-list.xml'
2016-07-19 11:14:01,591 (-8e2a530) :  DEBUG (__init__:818) - xmlElementFromFile() - Loading locally since banned or empty file (result page <1024 bytes)

I think it would explain some of the NoneValue issues you getting in the Plex forums as well. As AniDB_TVDB_mapping_tree & AniDB_TVDB_mapping_tree are failed to be getting set. Not sure why this is.

Probably broken 💢

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.