# -*- 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 __name__ = 'koukni.cz' def supports(url): return not _regex(url) == None # returns the steam url def url(url): m = _regex(url) if not m == None: iframe = _iframe(url) if iframe: return iframe[0]['url'] def resolve(url): m = _regex(url) if not m == None: try: iframe = _iframe(url) except: traceback.print_exc() return if iframe: return iframe # else: # return [{'name':__name__,'quality':'720p','url':url,'surl':url}] def _furl(url): if url.startswith('http'): return url url = url.lstrip('./') return 'http://www.koukni.cz/' + url def _iframe(url): index = url.find('&') if index > 0: url = url[:index] iframe = re.search('(\d+)$', url, re.IGNORECASE | re.DOTALL) if iframe: data = util.request(url) ress = re.search('var api = flowplayer\(\),\s+resolutions = \{([^\}]+)\}', data, re.IGNORECASE | re.DOTALL) valid_ress = re.compile("]*>([^<]+)", re.IGNORECASE | re.DOTALL).findall(data) subs = re.search('[^\"]+)', data, re.IGNORECASE | re.DOTALL) if ress: ret = [] ress = ress.group(1).strip().split(',') for r in ress: r = r.replace('"', '').split(':') res = r[0].strip() vurl = _furl(r[1].strip()) if res in valid_ress: v = {'name':__name__, 'url':vurl, 'quality':res, 'surl':url,'subs':''} if subs: v['subs'] = _furl(subs.group('url')) ret.append(v) if len(ret)>0: return ret video = re.search('url\: \'(?Pmp4[^\']+)', data, re.IGNORECASE | re.DOTALL) subs = re.search('captionUrl\: \'(?P[^\']+)', data, re.IGNORECASE | re.DOTALL) if video: ret = {'name':__name__, 'quality':'720p', 'surl':url} ret['url'] = 'rtmp://koukni.cz/mp4 playpath=%s' % video.group('url') if subs: ret['subs'] = _furl(subs.group('url')) return [ret] def _regex(url): return re.search('(www\.)?koukni.cz/(.+?)', url, re.IGNORECASE | re.DOTALL)