'Find all the streams for the ITV url
:return: Mapping of quality to stream'

def _get_streams(self):

    soap_message = self._soap_request()
    headers = {'Content-Length': '{0:d}'.format(len(soap_message)), 'Content-Type': 'text/xml;    charset=utf-8', 'Host': 'mercury.itv.com', 'Origin': 'http://www.itv.com', 'Referer': 'http://www.itv.com/Mercury/Mercury_VideoPlayer.swf?v=null', 'SOAPAction': 'http://tempuri.org/PlaylistService/GetPlaylist', 'User-Agent': ITV_PLAYER_USER_AGENT, 'X-Requested-With': 'ShockwaveFlash/16.0.0.305'}
    res = http.post('http://mercury.itv.com/PlaylistService.svc?wsdl', headers=headers, data=soap_message)
    xmldoc = http.xml(res)
    mediafiles = xmldoc.find('.//VideoEntries//MediaFiles')
    if (not mediafiles):
        return None
    rtmp = mediafiles.attrib['base']
    streams = {}
    for mediafile in mediafiles.findall('MediaFile'):
        playpath = mediafile.find('URL').text
        rtmp_url = urlparse(rtmp)
        app = ((rtmp_url.path[1:] + '?') + rtmp_url.query).rstrip('?')
        live = (app == 'live')
        params = dict(rtmp='{u.scheme}://{u.netloc}{u.path}'.format(u=rtmp_url), app=app.rstrip('?'), playpath=playpath, swfVfy=(LIVE_SWF_URL if live else ONDEMAND_SWF_URL), timeout=10)
        if live:
            params['live'] = True
        bitrate = (int(mediafile.attrib['bitrate']) / 1000)
        quality = '{0}k'.format(bitrate)
        streams[quality] = RTMPStream(self.session, params)
    return streams
