1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- # -*- coding: UTF-8 -*-
- #/*
- # * Copyright (C) 2011 Libor Zoubek
- # *
- # *
- # * This Program is free software; you can redistribute it and/or modify
- # * it under the terms of the GNU General Public License as published by
- # * the Free Software Foundation; either version 2, or (at your option)
- # * any later version.
- # *
- # * This Program is distributed in the hope that it will be useful,
- # * but WITHOUT ANY WARRANTY; without even the implied warranty of
- # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # * GNU General Public License for more details.
- # *
- # * You should have received a copy of the GNU General Public License
- # * along with this program; see the file COPYING. If not, write to
- # * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- # * http://www.gnu.org/copyleft/gpl.html
- # *
- # */
- import re,util,urllib2,traceback,resolver
-
- __name__ = 'mixturecloud'
-
- def supports(url):
- return not _regex(url) == None
-
- class MyHTTPRedirectHandler(urllib2.HTTPRedirectHandler):
-
- def http_error_302(self, req, fp, code, msg, headers):
- self.location = headers.getheader('Location')
- return urllib2.HTTPRedirectHandler.http_error_302(self, req, fp, code, msg, headers)
-
- # returns the steam url
- def resolve(url):
- m = _regex(url)
- if m:
- defrhandler = urllib2.HTTPRedirectHandler
- cookieprocessor = urllib2.HTTPCookieProcessor()
- redirecthandler = MyHTTPRedirectHandler()
- opener = urllib2.build_opener(redirecthandler, cookieprocessor)
- urllib2.install_opener(opener)
- req = urllib2.Request(url)
- response = urllib2.urlopen(req)
- response.close()
- urllib2.install_opener(urllib2.build_opener(defrhandler,cookieprocessor))
- # mixturevideo uses REDIRECT to 'secret url' ;-)
- url = redirecthandler.location
- item = resolver.item()
- item['surl'] = url
- item['name'] = __name__
- try:
- ishd = re.search('hd\.state=([^\&]+)',url).group(1)
- streamer = re.search('streamer=([^$]+)',url).group(1)+'&start=0&'
- if ishd == 'true':
- item['url'] = streamer + 'hd.file=' +re.search('hd\.file=([^\&]+)',url).group(1)
- item['quality'] = 'hd'
- else:
- item['url'] = streamer + 'file=' +re.search('file=([^\&]+)',url).group(1)
- return [item]
- except:
- traceback.print_exc()
- pass
-
- def _regex(url):
- return re.search('player\.mixturecloud\.com',url,re.IGNORECASE | re.DOTALL)
|