'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, flatten_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, archive=None):

    if (indexerLang is None):
        indexerLang = sickrage.srCore.srConfig.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 any([rootDir, fullShowPath, whichSeries])):
        return self.redirect(u'/home/')
    series_pieces = whichSeries.split(u'|')
    if ((whichSeries and rootDir) or (whichSeries and fullShowPath and (len(series_pieces) > 1))):
        if (len(series_pieces) < 6):
            sickrage.srCore.srLogger.error((u'Unable    to    add    show    due    to    show    selection.    Not    anough    arguments:    %s' % repr(series_pieces)))
            sickrage.srCore.srNotifications.error(u'Unknown    error.    Unable    to    add    show    due    to    problem    with    show    selection.')
            return self.redirect(u'/home/addShows/existingShows/')
        indexer = int(series_pieces[1])
        indexer_id = int(series_pieces[3])
        show_name = series_pieces[4]
    else:
        if (not providedIndexer):
            providedIndexer = sickrage.srCore.srConfig.INDEXER_DEFAULT
        indexer = int(providedIndexer)
        indexer_id = int(whichSeries)
        show_name = os.path.basename(os.path.normpath(fullShowPath))
    if fullShowPath:
        show_dir = os.path.normpath(fullShowPath)
    else:
        show_dir = os.path.join(rootDir, sanitizeFileName(show_name))
    if (os.path.isdir(show_dir) and (not fullShowPath)):
        sickrage.srCore.srNotifications.error(u'Unable    to    add    show', ((u'Folder    ' + show_dir) + u'    exists    already'))
        return self.redirect(u'/home/addShows/existingShows/')
    if sickrage.srCore.srConfig.ADD_SHOWS_WO_DIR:
        sickrage.srCore.srLogger.info(((u'Skipping    initial    creation    of    ' + show_dir) + u'    due    to    sickrage.CONFIG.ini    setting'))
    else:
        dir_exists = makeDir(show_dir)
        if (not dir_exists):
            sickrage.srCore.srLogger.error(((u'Unable    to    create    the    folder    ' + show_dir) + u",    can't    add    the    show"))
            sickrage.srCore.srNotifications.error(u'Unable    to    add    show', ((u'Unable    to    create    the    folder    ' + show_dir) + u",    can't    add    the    show"))
            return self.redirect(u'/home/')
        else:
            chmodAsParent(show_dir)
    scene = sickrage.srCore.srConfig.checkbox_to_value(scene)
    anime = sickrage.srCore.srConfig.checkbox_to_value(anime)
    flatten_folders = sickrage.srCore.srConfig.checkbox_to_value(flatten_folders)
    subtitles = sickrage.srCore.srConfig.checkbox_to_value(subtitles)
    subtitles_sr_metadata = sickrage.srCore.srConfig.checkbox_to_value(subtitles_sr_metadata)
    archive = sickrage.srCore.srConfig.checkbox_to_value(archive)
    if whitelist:
        whitelist = short_group_names(whitelist)
    if blacklist:
        blacklist = short_group_names(blacklist)
    if (not anyQualities):
        anyQualities = []
    if (not bestQualities):
        bestQualities = []
    if (not isinstance(anyQualities, list)):
        anyQualities = [anyQualities]
    if (not isinstance(bestQualities, list)):
        bestQualities = [bestQualities]
    newQuality = tryInt(quality_preset, None)
    if (not newQuality):
        newQuality = Quality.combineQualities(map(int, anyQualities), map(int, bestQualities))
    sickrage.srCore.SHOWQUEUE.addShow(indexer=indexer, indexer_id=indexer_id, showDir=show_dir, default_status=int(defaultStatus), quality=newQuality, flatten_folders=flatten_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), archive=archive)
    sickrage.srCore.srNotifications.message(u'Adding    Show', (u'Adding    the    specified    show    into    ' + show_dir))
    return finishAddShow()
