'Takes a series ID, gets the episodes URL and parses the TVDB
XML file into the shows dict in layout:
shows[series_id][season_number][episode_number]'

@login_required
def _getShowData(self, sid):

    sickrage.srCore.srLogger.debug(u'Getting    all    series    data    for    {}'.format(sid))
    try:
        series_info = self._request(u'get', self.config[u'api'][u'series'].format(id=sid), lang=self.config[u'api'][u'lang'])[u'data']
        if (not (self.config[u'language'] == self.config[u'api'][u'lang'])):
            series_info.update(((k, v) for (k, v) in self._request(u'get', self.config[u'api'][u'series'].format(id=sid))[u'data'].iteritems() if v))
    except Exception:
        sickrage.srCore.srLogger.debug(u'[{}]:    Series    result    returned    zero'.format(sid))
        raise tvdb_error(u'[{}]:    Series    result    returned    zero'.format(sid))
    for (k, v) in series_info.items():
        if (v is not None):
            if (k in [u'banner', u'fanart', u'poster']):
                v = self.config[u'api'][u'imagesPrefix'].format(id=v)
            elif isinstance(v, list):
                v = u'|'.join(v)
            else:
                v = self._cleanData(v)
        self._setShowData(sid, k, v)
    self._parseImages(sid)
    self._parseActors(sid)
    sickrage.srCore.srLogger.debug(u'Getting    all    episode    data    for    {}'.format(sid))
    p = 1
    episodes = []
    while True:
        try:
            episode_info = self._request(u'get', self.config[u'api'][u'episodes'].format(id=sid), lang=self.config[u'api'][u'lang'], params={u'page': p})[u'data']
            if (not (self.config[u'language'] == self.config[u'api'][u'lang'])):
                for (i, x) in enumerate(episode_info):
                    x.update(((k, v) for (k, v) in self._request(u'get', self.config[u'api'][u'episodes'].format(id=sid))[u'data'][i].iteritems() if v))
                    episode_info[i] = x
            episodes += episode_info
            p += 1
        except tvdb_error:
            break
    if (not len(episodes)):
        sickrage.srCore.srLogger.debug(u'Series    results    incomplete')
        return
    for cur_ep in episodes:
        try:
            use_dvd = False
            if self.config[u'dvdorder']:
                sickrage.srCore.srLogger.debug(u'Using    DVD    ordering.')
                use_dvd = all([cur_ep.get(u'dvdseason'), cur_ep.get(u'dvdepisodenumber')])
            (seasnum, epno) = (cur_ep.get(u'airedseason'), cur_ep.get(u'airedepisodenumber'))
            if use_dvd:
                (seasnum, epno) = (cur_ep.get(u'dvdseason'), cur_ep.get(u'dvdepisodenumber'))
            if ((seasnum is None) or (epno is None)):
                raise Exception
        except Exception as e:
            sickrage.srCore.srLogger.warning(u'Episode    has    incomplete    season/episode    numbers,    skipping!')
            continue
        seas_no = int(float(seasnum))
        ep_no = int(float(epno))
        for (k, v) in cur_ep.items():
            k = k.lower()
            if (v is not None):
                if (k == u'filename'):
                    v = self.config[u'api'][u'imagesPrefix'].format(id=v)
                elif isinstance(v, list):
                    v = u'|'.join(v)
                else:
                    v = self._cleanData(v)
            self._setItem(sid, seas_no, ep_no, k, v)
    self._setShowData(sid, u'last_updated', int(time.mktime(datetime.datetime.now().timetuple())))
    return self.shows[int(sid)]
