'Receive tvdb id, dir, and other options and create a show from them. If extra show dirs are
provided then it forwards back to newShow, if not it goes to /home.'

def addNewShow(self, whichSeries=None, indexerLang=None, rootDir=None, defaultStatus=None, quality_preset=None, anyQualities=None, bestQualities=None, season_folders=None, subtitles=None, subtitles_sr_metadata=None, fullShowPath=None, other_shows=None, skipShow=None, providedIndexer=None, anime=None, scene=None, blacklist=None, whitelist=None, defaultStatusAfter=None):

    if (not indexerLang):
        indexerLang = sickbeard.INDEXER_DEFAULT_LANGUAGE
    if (not other_shows):
        other_shows = []
    elif (not isinstance(other_shows, list)):
        other_shows = [other_shows]
    def finishAddShow():
        if (not other_shows):
            return self.redirect(u'/home/')
        next_show_dir = other_shows[0]
        rest_of_show_dirs = other_shows[1:]
        return self.newShow(next_show_dir, rest_of_show_dirs)
    if skipShow:
        return finishAddShow()
    if (((not rootDir) and (not fullShowPath)) or (not whichSeries)):
        return _(u'Missing    params,    no    Indexer    ID    or    folder:    {show_to_add}    and    {root_dir}/{show_path}').format(show_to_add=whichSeries, root_dir=rootDir, show_path=fullShowPath)
    series_pieces = whichSeries.split(u'|')
    if ((whichSeries and rootDir) or (whichSeries and fullShowPath and (len(series_pieces) > 1))):
        if (len(series_pieces) < 6):
            logger.log(u'Unable    to    add    show    due    to    show    selection.    Not    anough    arguments:    {0}'.format(repr(series_pieces)), logger.ERROR)
            ui.notifications.error(_(u'Unknown    error.    Unable    to    add    show    due    to    problem    with    show    selection.'))
            return self.redirect(u'/addShows/existingShows/')
        indexer = int(series_pieces[1])
        indexer_id = int(series_pieces[3])
        show_name = series_pieces[4].decode(u'utf-8')
    else:
        if (not providedIndexer):
            providedIndexer = sickbeard.INDEXER_DEFAULT
        indexer = int(providedIndexer)
        indexer_id = int(whichSeries)
        show_name = ek(os.path.basename, ek(os.path.normpath, fullShowPath))
    if fullShowPath:
        show_dir = ek(os.path.normpath, fullShowPath)
    else:
        show_dir = ek(os.path.join, rootDir, sanitize_filename(show_name))
    if (ek(os.path.isdir, show_dir) and (not fullShowPath)):
        ui.notifications.error(_(u'Unable    to    add    show'), _(u'Folder    {show_dir}    exists    already').format(show_dir=show_dir))
        return self.redirect(u'/addShows/existingShows/')
    if sickbeard.ADD_SHOWS_WO_DIR:
        logger.log(((u'Skipping    initial    creation    of    ' + show_dir) + u'    due    to    config.ini    setting'))
    else:
        dir_exists = helpers.makeDir(show_dir)
        if (not dir_exists):
            logger.log(((u'Unable    to    create    the    folder    ' + show_dir) + u",    can't    add    the    show"), logger.ERROR)
            ui.notifications.error(_(u'Unable    to    add    show'), _(u"Unable    to    create    the    folder    {show_dir},    can't    add    the    show").format(show_dir=show_dir))
            return self.redirect(u'/home/')
        else:
            helpers.chmodAsParent(show_dir)
    scene = config.checkbox_to_value(scene)
    anime = config.checkbox_to_value(anime)
    season_folders = config.checkbox_to_value(season_folders)
    subtitles = config.checkbox_to_value(subtitles)
    subtitles_sr_metadata = config.checkbox_to_value(subtitles_sr_metadata)
    if whitelist:
        whitelist = short_group_names(whitelist)
    if blacklist:
        blacklist = short_group_names(blacklist)
    if (not anyQualities):
        anyQualities = []
    if ((not bestQualities) or try_int(quality_preset, None)):
        bestQualities = []
    if (not isinstance(anyQualities, list)):
        anyQualities = [anyQualities]
    if (not isinstance(bestQualities, list)):
        bestQualities = [bestQualities]
    newQuality = Quality.combineQualities([int(q) for q in anyQualities], [int(q) for q in bestQualities])
    sickbeard.showQueueScheduler.action.add_show(indexer, indexer_id, showDir=show_dir, default_status=int(defaultStatus), quality=newQuality, season_folders=season_folders, lang=indexerLang, subtitles=subtitles, subtitles_sr_metadata=subtitles_sr_metadata, anime=anime, scene=scene, paused=None, blacklist=blacklist, whitelist=whitelist, default_status_after=int(defaultStatusAfter), root_dir=None)
    ui.notifications.message(_(u'Show    added'), _(u'Adding    the    specified    show    into    {show_dir}').format(show_dir=show_dir))
    return finishAddShow()
