예제 #1
0
파일: init.py 프로젝트: AnyarInc/VisTrails
    def execute(self):
        # Parse URL
        password = None
        portnum = None
        if self.url.startswith('ssh:'):
            m = self.SSH_FORMAT.match(self.url)
            if m is None:
                raise ModuleError(self.module,
                                  "SSH error: invalid URL %r" % self.url)
            username, password, hostname, portnum, path = m.groups()
            password = urllib.unquote_plus(password)
            path = urllib.unquote_plus(path)
        elif self.url.startswith('scp:'):
            m = self.SCP_FORMAT.match(self.url)
            if m is None:
                raise ModuleError(self.module,
                                  "SSH error: invalid URL %r" % self.url)
            username, hostname, path = m.groups()
        else:
            raise ModuleError(self.module, "SSHDownloader: Invalid URL")

        if portnum is None:
            portnum = 22
        else:
            portnum = int(portnum)
        return self._open_ssh(username, password, hostname, portnum, path)
예제 #2
0
def get_subscriptions():
    try:
        content = read_from_file(SUBSCRIPTION_FILE)
        lines = content.split('\n')
        
        for line in lines:
            data = line.split('\t')
            if len(data) == 2:
                if data[1].startswith('tt'):
                    tv_show_name = data[0]
                    tv_show_imdb = data[1]
                    tv_show_mode = "strm tv show dialog"
                    create_tv_show_strm_files(tv_show_name, tv_show_imdb, tv_show_mode, TV_SHOWS_PATH)
                else:
                    mode = data[1]
                    items = get_menu_items(name, mode, "", "")
                    
                    for (url, li, isFolder) in items:
                        paramstring = url.replace(sys.argv[0], '')
                        params = get_params(paramstring)
                        movie_name = urllib.unquote_plus(params["name"])
                        movie_data = urllib.unquote_plus(params["name"])
                        movie_imdb = urllib.unquote_plus(params["imdb_id"])
                        movie_mode = "strm movie dialog"
                        create_strm_file(movie_name, movie_data, movie_imdb, movie_mode, MOVIES_PATH)
                    
    except:
        xbmc.log("[What the Furk] Failed to fetch subscription")
예제 #3
0
def processWithRE(qs):
	# return dict(map(remapGET, re.findall("&?([^&=]+)=?([^&]*)", qs)))
	r = {}
	for item in detectRE(qs):  # An iterator!
		if not item[1:]:
			item = list(item)
			item[1] = None
		key, val = item
		if "[" in key:
			brackets = splitBrackets(key)
			# It's a Array, and it's recursive
			brackets.insert(0, key.split("[")[0])
			children = r  # Children is just a pointer to r
			c = 0  # Initialize at zero
			l = len(brackets) - 1  # Length-1 to detect end
			for key_child in brackets:
				if not key_child and c > 0:
					key_child = str(len(children))
				children[key_child] = children.get(key_child, {})
				if c != l:
					children = children[key_child]  # Replaces the pointer			
				else: 
					children[key_child] = urllib.unquote_plus(val)  # set the value
				c += 1
		else:
			# It's not a array \o/
			r[key] = urllib.unquote_plus(val)
	return convertToList(r)
예제 #4
0
def get_clean_body(response):
    """
    :see: BlindSqliResponseDiff.get_clean_body()

    Definition of clean in this method:
        - input:
            - response.get_url() == http://host.tld/aaaaaaa/
            - response.get_body() == 'spam aaaaaaa eggs'

        - output:
            - self._clean_body( response ) == 'spam  eggs'

    The same works with file names.
    All of them, are removed encoded and "as is".

    :param response: The HTTPResponse object to clean
    :return: A string that represents the "cleaned" response body of the
             response.
    """
    body = response.body

    if response.is_text_or_html():
        url = response.get_url()
        to_replace = url.url_string.split('/')
        to_replace.append(url.url_string)

        for repl in to_replace:
            if len(repl) > 6:
                body = body.replace(repl, '')
                body = body.replace(urllib.unquote_plus(repl), '')
                body = body.replace(cgi.escape(repl), '')
                body = body.replace(cgi.escape(urllib.unquote_plus(repl)), '')

    return body
예제 #5
0
	def __init__(self):
		global action
		params = {}
		splitparams = sys.argv[2][sys.argv[2].find('?') + 1:].split('&')
		for param in splitparams:
			if (len(param) > 0):
				splitparam = param.split('=')
				key = splitparam[0]
				try:    value = splitparam[1].encode("utf-8")
				except: value = splitparam[1]
				params[key] = value

		try:        action = urllib.unquote_plus(params["action"])
		except:     action = None
		try:        categoryid = urllib.unquote_plus(params["categoryid"])
		except:     categoryid = None
		try:        offset = urllib.unquote_plus(params["offset"])
		except:     offset = 0
		try:        movie_id = urllib.unquote_plus(params["movie_id"])
		except:     movie_id = 0
		try:        episode = urllib.unquote_plus(params["episode"])
		except:     episode = 0


		if action == None:                            self.main_menu()
		elif action == 'list_movies':                 self.list_movies(categoryid, offset)
		elif action == 'play_movie':                  self.play_movie(movie_id, episode)
		elif action == 'list_seasons':                self.list_seasons(movie_id)
		elif action == 'list_episodes':               self.list_episodes(movie_id)
		elif action == 'Search':					  self.Search()
예제 #6
0
    def get_sources(self, url, hosthdDict, hostDict, locDict):
        try:
            sources = []

            if url == None: return sources

            url = urlparse.urljoin(self.base_link, url)

            result = client.source(url)

            video_id = re.compile('video_id *= *[\'|\"](.+?)[\'|\"]').findall(result)[0]
            post = urllib.urlencode({'video_id': video_id})

            result = client.source(urlparse.urljoin(self.base_link, self.info_link), post=post)

            u = [i for i in result.split('&') if 'google' in i][0]
            u = urllib.unquote_plus(u)
            u = [urllib.unquote_plus(i.split('|')[-1]) for i in u.split(',')]
            u = [googleplus.tag(i)[0] for i in u]
            u = [i for i in u if i['quality'] in ['1080p', 'HD']]

            for i in u: sources.append({'source': 'GVideo', 'quality': i['quality'], 'provider': 'Afdah', 'url': i['url']})

            return sources
        except:
            return sources
예제 #7
0
def processWithMap(qs):
	r = {}
	for item in qs.split("&"):
		item = item.split("=", 1)
		if not item[1:]:
			item[1] = None
		key, val = item
		if "[" in key:
			brackets = key.split("[")
			# It's a Array, and it's recursive
			children = r  # Children is just a pointer to r
			c = 0  # Initialize at zero
			l = len(brackets) - 1  # Length-1 to detect end
			for bracket in brackets:
				key_child = bracket.split("]")[0]
				if not key_child and c > 0:
					key_child = str(len(children))
				children[key_child] = children.get(key_child, {})
				if c == l:
					children[key_child] = urllib.unquote_plus(val)
				else:
					children = children[key_child]  # Replaces the pointer
				c += 1
		else:
			# It's not a array \o/
			r[key] = urllib.unquote_plus(val)
	return convertToList(r)
def detail(params,url,category):
	xbmc.output("[peliculasyonkis.py] detail")

	title = urllib.unquote_plus( params.get("title") )
	thumbnail = urllib.unquote_plus( params.get("thumbnail") )
	plot = unicode( xbmc.getInfoLabel( "ListItem.Plot" ), "utf-8" )

	# Descarga la página
	data = scrapertools.cachePage(url)
	#xbmc.output(data)

	# ------------------------------------------------------------------------------------
	# Busca los enlaces a los videos
	# ------------------------------------------------------------------------------------
	patronvideos  = 'href="http://www.peliculasyonkis.com/player/visor_pymeno2.*?id=([^&]+)&al=[^"]+"'
	matches = re.compile(patronvideos,re.DOTALL).findall(data)
	if len(matches)>0:
		scrapertools.printMatches(matches)
	
	
		id = matches[0]
		xbmc.output("[peliculasyonkis.py]  id="+id)
		dec = Yonkis.DecryptYonkis()
		url = dec.decryptID(dec.unescape(id))
		if ":" in url:
			match = url.split(":")
			url = choiceOne(match)
			if url == "": return
		print 'codigo :%s' %url
	else:
		xbmctools.alertnodisponible()
		return
	
	
	xbmctools.playvideo(CHANNELNAME,"Megavideo",url,category,title,thumbnail,plot)
예제 #9
0
    def __init__(self):
        global action
        params = {}
        splitparams = sys.argv[2][sys.argv[2].find('?') + 1:].split('&')
        for param in splitparams:
            if (len(param) > 0):
                splitparam = param.split('=')
                key = splitparam[0]
                try:    value = splitparam[1].encode("utf-8")
                except: value = splitparam[1]
                params[key] = value

        try:        action = urllib.unquote_plus(params["action"])
        except:     action = None
        try:        channel = urllib.unquote_plus(params["channel"])
        except:     channel = None

        if action == None:                          channels().get()
        elif action == 'dialog':                    channels().dialog()
        elif action == 'epg_menu':                  contextMenu().epg(channel)
        elif action == 'refresh':                   index().container_refresh()
        elif action == 'play':                      resolver().run(channel)

        xbmcplugin.setContent(int(sys.argv[1]), 'Episodes')
        xbmcplugin.setPluginFanart(int(sys.argv[1]), addonFanart)
        xbmcplugin.endOfDirectory(int(sys.argv[1]))
        return
예제 #10
0
def play(params):
    referer = urllib.unquote_plus(params['referer'])
    file = urllib.unquote_plus(params['file'])
    headers['Referer'] = referer

    i = xbmcgui.ListItem(path=getFile(file))
    xbmcplugin.setResolvedUrl(h, True, i)
예제 #11
0
파일: http_core.py 프로젝트: enyst/plexnet
def parse_uri(uri_string):
  """Creates a Uri object which corresponds to the URI string.
 
  This method can accept partial URIs, but it will leave missing
  members of the Uri unset.
  """
  parts = urlparse.urlparse(uri_string)
  uri = Uri()
  if parts[0]:
    uri.scheme = parts[0]
  if parts[1]:
    host_parts = parts[1].split(':')
    if host_parts[0]:
      uri.host = host_parts[0]
    if len(host_parts) > 1:
      uri.port = int(host_parts[1])
  if parts[2]:
    uri.path = parts[2]
  if parts[4]:
    param_pairs = parts[4].split('&')
    for pair in param_pairs:
      pair_parts = pair.split('=')
      if len(pair_parts) > 1:
        uri.query[urllib.unquote_plus(pair_parts[0])] = (
            urllib.unquote_plus(pair_parts[1]))
      elif len(pair_parts) == 1:
        uri.query[urllib.unquote_plus(pair_parts[0])] = None
  return uri
예제 #12
0
파일: parameters.py 프로젝트: ssneoh/sstv
def params_end():

        url=None
        name=None
        mode=None
        iconimage=None
        fanart=None
        description=None

        try:
                url=urllib.unquote_plus(params["url"])
        except:
                pass
        try:
                name=urllib.unquote_plus(params["name"])
        except:
                pass
        try:
                iconimage=urllib.unquote_plus(params["iconimage"])
        except:
                pass
        try:        
                mode=int(params["mode"])
        except:
                pass
        try:        
                fanart=urllib.unquote_plus(params["fanart"])
        except:
                pass
        try:        
                description=urllib.unquote_plus(params["description"])
        except:
                pass
예제 #13
0
def remFav(url):
    log("> remFav()")
    if url:
        try:
            favoritesRE=re.compile('(?i)name=(.+?)&url=(.+?)\n')
            favorites = favoritesRE.findall(url)
            for favorite in favorites:
                name = favorite[0]
                url = favorite[1]
            nameurl = 'name=%s&url=%s%s' % (name, url, '\n')
            if dialog.yesno( __plugin__ + ' v' + __version__, __language__(30009), '', urllib.unquote_plus(name).decode('utf-8') ):
                doc = open(FILE_FAVS, "rU")
                text = doc.read().decode('utf-8')
                doc.close()
                doc = open(FILE_FAVS, "w")
                doc.write(text.replace(nameurl, ''))
                doc.close()    
                xbmc.executebuiltin('Container.Refresh')
                dialog.ok( __plugin__ + ' v' + __version__, __language__(30010), '', urllib.unquote_plus(name).decode('utf-8') )
                doc = open(FILE_FAVS).read().decode('utf-8')
                if doc == 'This is your favorites file.\n':
                    dialog.ok( __plugin__ + ' v' + __version__, __language__(30016) )
        except:
            dialog.ok( __plugin__ + ' v' + __version__, __language__(30011), '', urllib.unquote_plus(name).decode('utf-8') )
    return True
예제 #14
0
def removePlaylist(title,murl,folders):
    if os.path.exists(PlaylistFile):
        playlist=re.compile("{'name': '(.*?)', 'url': '(.*?)', 'fanart': '(.*?)', 'folder': '(.*?)', 'typeXml': '(.*?)', 'thumb': '(.*?)'}").findall(open(PlaylistFile,'r').read())
        if len(playlist)<=1 and str(playlist).find(title):
            os.remove(PlaylistFile)
            xbmc.executebuiltin("Container.Refresh")
        if os.path.exists(PlaylistFile):
            for name,url,fanart,folder,typeXml,thumb in reversed (playlist):
                if title == urllib.unquote_plus(name) and urllib.unquote_plus(folders)==urllib.unquote_plus(folder):
                    playlist.remove((name,url,fanart,folder,typeXml,thumb))
                    os.remove(PlaylistFile)
                    for name,url,fanart,folder,typeXml,thumb in playlist:
                        try:
                            playlists = {}
                            playlists['name'] = name
                            playlists['url'] = url.replace('\\\\','\\')
                            playlists['thumb'] = thumb
                            playlists['fanart'] = fanart
                            playlists['folder'] = folder
                            playlists['typeXml'] = typeXml
                            open(PlaylistFile,'a').write(str(playlists))
                            xbmc.executebuiltin("Container.Refresh")
                            xbmc.executebuiltin("XBMC.Notification([B][COLOR=FF67cc33]"+title+"[/COLOR][/B],[B]Playlist Removed[/B],4000,"")")
                        except: pass
        else: xbmc.executebuiltin("XBMC.Notification([B][COLOR green]Mash Up[/COLOR][/B],[B]You Have No Playlists[/B],1000,"")")
    return
예제 #15
0
def get_clean_body(mutant, response):
    '''
    @see: Very similar to fingerprint_404.py get_clean_body() bug not quite
          the same maybe in the future I can merge both?

    Definition of clean in this method:
        - input:
            - response.get_url() == http://host.tld/aaaaaaa/?id=1 OR 23=23
            - response.get_body() == '...<x>1 OR 23=23</x>...'

        - output:
            - self._clean_body( response ) == '...<x></x>...'

    All injected values are removed encoded and "as is".

    :param mutant: The mutant where I can get the value from.
    :param response: The HTTPResponse object to clean
    :return: A string that represents the "cleaned" response body.
    '''

    body = response.body

    if response.is_text_or_html():
        mod_value = mutant.get_mod_value()

        body = body.replace(mod_value, '')
        body = body.replace(urllib.unquote_plus(mod_value), '')
        body = body.replace(cgi.escape(mod_value), '')
        body = body.replace(cgi.escape(urllib.unquote_plus(mod_value)), '')

    return body
예제 #16
0
파일: http.py 프로젝트: halayli/lime
 def get_body(self, length):
     # at this point, we have received a complete header and we are ready
     # to process the body
     while 1:
         try:
             try:
                 self._data_recvd += self._sock.recv(length)
             except:
                 return 3
             ln = len(self._data_recvd)
             if ln > Http.max_post_length: 
                 raise HttpError(self.get_peer(), 413, ln)
             if self._method == 'POST':
                 body = self._data_recvd[self._header_length:]
                 if int(self._client_headers['content-length']) !=len(body):
                     return 1
                 else:
                     body_fields = body.split('&')
                     # fields of more than 50 chars are not allowed 
                     # because we are using dicts. 
                     for field_value in body_fields:
                         field, value = field_value.split('=')
                         field = urllib.unquote_plus(field)[0:50]
                         value = urllib.unquote_plus(value)
                         self._post[field] = value
         except Exception, e:
             raise HttpError(self.get_peer(), 400, str(e))
         break
예제 #17
0
def parse_params(param_str):
    param_dic = {}
    # Parameters are on the 3rd arg passed to the script
    param_str = sys.argv[2]
    if len(param_str) > 1:
        param_str = param_str.replace('?', '')

        # Ignore last char if it is a '/'
        if param_str[len(param_str) - 1] == '/':
            param_str = param_str[0:len(param_str) - 2]

        # Processing each parameter splited on  '&'
        for param in param_str.split('&'):
            try:
                # Spliting couple key/value
                key, value = param.split('=')
            except:
                key = param
                value = ''

            key = urllib.unquote_plus(key)
            value = urllib.unquote_plus(value)

            # Filling dictionnary
            param_dic[key] = value

    return param_dic
예제 #18
0
  def render(self, request):
    request.setHeader('Content-Type', 'text/xml')

    # Reload the nagios data files
    self.status_parsed = self.parse_status()
    self.objects_parsed = self.parse_objects()

    # Parse the request..
    try:
      action, hostname, service = request.postpath
      hostname = urllib.unquote_plus(hostname)
      service = urllib.unquote_plus(service)
    except (KeyError, ValueError):
      return '<Response/>'

    # Trigger the correct action
    if action == 'host':
      response = self.hostalert(request, hostname)
    elif action == 'hostaction':
      response = self.hostaction(request, hostname)
    elif action == 'service':
      response = self.servicealert(request, hostname, service)
    elif action == 'serviceaction':
      response = self.serviceaction(request, hostname, service)

    return response
예제 #19
0
def detail(params,url,category):
	logger.info("[divxonline.py] detail")
	title=''
	thumbnail=''
	plot=''

	try:
		title = urllib.unquote_plus( params.get("title") )
		thumbnail = urllib.unquote_plus( params.get("thumbnail") )
		plot = urllib.unquote_plus( params.get("plot") )
	except:
		pass
	# Descarga la página
	data = scrapertools.cachePage(url)
	#logger.info(data)

	# ------------------------------------------------------------------------------------
	# Busca los enlaces a los videos
	# ------------------------------------------------------------------------------------
	
	data=decryptinks(data);
	listavideos = servertools.findvideos(data)

	for video in listavideos:
		videotitle = video[0]
		url = video[1]
		server = video[2]
		xbmctools.addnewvideo( CHANNELNAME , "play" , category , server , title.strip() + " - " + videotitle , url , thumbnail , plot )
	# ------------------------------------------------------------------------------------

	# Cierra el directorio
	xbmcplugin.setPluginCategory( handle=pluginhandle, category=category )
	xbmcplugin.addSortMethod( handle=pluginhandle, sortMethod=xbmcplugin.SORT_METHOD_NONE )
	xbmcplugin.endOfDirectory( handle=pluginhandle, succeeded=True )
예제 #20
0
 def construct_video_url_keepvid( self, url, quality=18, encoding="utf-8" ):
     try:
         url = unquote_plus( url )
         video_id = url.split( "v=" )[ 1 ]
         # we need to unquote the play url
         url = "http://keepvid.com/?url=" + quote_plus( url )
         # spam url to log for checking
         if ( not DEBUG ):
             xbmc.log( "[PLUGIN] '%s: version %s' - (quality=%d, video url=%s)" % ( sys.modules[ "__main__" ].__plugin__, sys.modules[ "__main__" ].__version__, quality, url, ), xbmc.LOGDEBUG )
         # we need to request the url to be redirected to the swf player url to grab the session id
         request = urllib2.Request( url )
         # add a faked header, we use ie 8.0. it gives correct results for regex
         request.add_header( 'User-Agent', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)' )
         # create an opener object to grab the info
         opener = urllib2.urlopen( request )
         # read source
         htmlSource = opener.read()
         # close opener
         opener.close()
         # get the video id and session id
         video_url = unquote_plus( re.findall( "<a href=\"/save-video.mp4?(.+?)\"", htmlSource )[ 0 ] )[ 1 : ]
         # get details for the video and return the details
         title, author, genre, rating, runtime, count, date, thumbnail_url, plot = self.get_details( video_id )
         # return our values
         return video_url, title, author, genre, rating, runtime, count, date, thumbnail_url, plot, video_id
     except:
         # oops return an empty string
         print "ERROR: %s::%s (%d) - %s" % ( self.__class__.__name__, sys.exc_info()[ 2 ].tb_frame.f_code.co_name, sys.exc_info()[ 2 ].tb_lineno, sys.exc_info()[ 1 ], )
         return [ "" ] * 11
예제 #21
0
 def openSection(self, params = {}):
     get = params.get
     url = urllib.unquote_plus(get("url"))
     try: external=urllib.unquote_plus(get("external"))
     except: external=None
     filesList = []
     if None == get('isApi'):
         progressBar = xbmcgui.DialogProgress()
         progressBar.create(Localization.localize('Please Wait'), Localization.localize('Materials are loading now.'))
         iterator = 0
     searchersList = []
     dirList = os.listdir(self.ROOT + os.sep + 'resources' + os.sep + 'searchers')
     if not external or external=='torrenterall':
         for searcherFile in dirList:
             if re.match('^(\w+)\.py$', searcherFile):
                 searchersList.append(searcherFile)
     else: searchersList.append(external+'.py')
     for searcherFile in searchersList:
         searcher = re.search('^(\w+)\.py$', searcherFile).group(1)
         if searcher:
             if None == get('isApi'):
                 progressBar.update(int(iterator), searcher)
                 iterator += 100 / len(searchersList)
             filesList += self.searchWithSearcher(url, searcher)
         if None == get('isApi') and progressBar.iscanceled():
             progressBar.update(0)
             progressBar.close()
             return
     if None == get('isApi'):
         progressBar.update(0)
         progressBar.close()
     filesList = sorted(filesList, key=lambda x: x[0], reverse=True)
     self.showFilesList(filesList, params)
예제 #22
0
def play(params,url,category):
	xbmc.output("[yotix.py] play")

	title = urllib.unquote_plus( params.get("title") )
	thumbnail = urllib.unquote_plus( params.get("thumbnail") )
	plot = urllib.unquote_plus( params.get("plot") )
	server = urllib.unquote_plus( params.get("server") )

	# Abre dialogo
	dialogWait = xbmcgui.DialogProgress()
	dialogWait.create( 'Accediendo al video...', title , plot )

	if server=="Directo":
		# Descarga la página del reproductor
		# http://yotix.com/flash/UPY6KEB4/cleaner.html
		xbmc.output("url="+url)
		data = scrapertools.cachePage(url)

		patron = 'so.addParam\(\'flashvars\',\'\&file\=([^\&]+)\&'
		matches = re.compile(patron,re.DOTALL).findall(data)
		if len(matches)>0:
			url = matches[0]
	else:
		patron = 'http://yotix.tv/flash/([^\/]+)/'
		matches = re.compile(patron,re.DOTALL).findall(url)
		if len(matches)>0:
			url = matches[0]

	xbmc.output("url="+url)

	# Cierra dialogo
	dialogWait.close()
	del dialogWait

	xbmctools.playvideo(CHANNELNAME,server,url,category,title,thumbnail,plot)
예제 #23
0
def variable_edit(name=None, scope=None):
  from models.variable import Variable
  
  if name and scope:
    variable = Variable.query.filter_by(name=urllib.unquote_plus(name), scope=urllib.unquote_plus(scope)).first_or_404()
  else:
    variable = Variable()
  
  errors = []
  
  if request.method == 'POST' and request.values.get( 'csrf_token', None ):
    variable.scope = request.form.get('variable_scope')
    variable.name = request.form.get('variable_name')
    variable.raw_value = request.form.get('variable_raw_value')
    errors = variable.validate()
    if not len(errors):
      variable.save()
      flash( g._t('variable submit success'))
      return redirect(url_for('variable_index'))
  
  if name:
    title = g._t('edit')
  else:
    title = g._t('add')
  breadcrumbs = (
    (g._t('administration'), url_for('administration_index')),
    (g._t('variables'), url_for('variable_index')),
    (title, "#")
  )
  
  return render_template('administration/variable/edit.html', title=title, breadcrumbs=breadcrumbs, variable=variable, errors=errors)
def mirrors(params,url,category):
	logger.info("[capitancinema.py] mirrors")

	title = urllib.unquote_plus( params.get("title") )
	thumbnail = urllib.unquote_plus( params.get("thumbnail") )
	plot = urllib.unquote_plus( params.get("plot") )

	# Descarga la página
	data = scrapertools.cachePage(url)
	patronvideos  = '<li><strong>DISPONIBLE EN EL FORO</strong>[^<]+<a href="([^"]+)"'
	matches = re.compile(patronvideos,re.DOTALL).findall(data)
	if len(matches)>0:
		url = matches[0]
		data = scrapertools.cachePage(url)

		# ------------------------------------------------------------------------------------
		# Busca los enlaces a los videos
		# ------------------------------------------------------------------------------------
		listavideos = servertools.findvideos(data)

		for video in listavideos:
			videotitle = video[0]
			url = video[1]
			server = video[2]
			xbmctools.addnewvideo( CHANNELNAME , "play" , category , server , title.strip() + " - " + videotitle , url , thumbnail , plot )
		# ------------------------------------------------------------------------------------

	# Cierra el directorio
	xbmcplugin.setPluginCategory( handle=pluginhandle, category=category )
	xbmcplugin.addSortMethod( handle=pluginhandle, sortMethod=xbmcplugin.SORT_METHOD_NONE )
	xbmcplugin.endOfDirectory( handle=pluginhandle, succeeded=True )
예제 #25
0
def playDM(id):
    try:
        if xbox:
            addToHistory("plugin://video/My Music TV/?url="+id+"&mode=playDM")
        else:
            addToHistory("plugin://"+addonID+"/?url="+id+"&mode=playDM")
        content = opener.open("http://www.dailymotion.com/embed/video/"+id).read()
        if '"statusCode":410' in content or '"statusCode":403' in content:
            xbmc.executebuiltin('XBMC.Notification(Dailymotion:, Video is not available,5000)')
        else:
            matchFullHD = re.compile('"stream_h264_hd1080_url":"(.+?)"', re.DOTALL).findall(content)
            matchHD = re.compile('"stream_h264_hd_url":"(.+?)"', re.DOTALL).findall(content)
            matchHQ = re.compile('"stream_h264_hq_url":"(.+?)"', re.DOTALL).findall(content)
            matchSD = re.compile('"stream_h264_url":"(.+?)"', re.DOTALL).findall(content)
            matchLD = re.compile('"stream_h264_ld_url":"(.+?)"', re.DOTALL).findall(content)
            url = ""
            if matchFullHD and resolutionDM == "1080p":
                url = urllib.unquote_plus(matchFullHD[0]).replace("\\", "")
            elif matchHD and (resolutionDM == "720p" or resolutionDM == "1080p"):
                url = urllib.unquote_plus(matchHD[0]).replace("\\", "")
            elif matchHQ:
                url = urllib.unquote_plus(matchHQ[0]).replace("\\", "")
            elif matchSD:
                url = urllib.unquote_plus(matchSD[0]).replace("\\", "")
            elif matchLD:
                url = urllib.unquote_plus(matchLD[0]).replace("\\", "")
            listitem = xbmcgui.ListItem(path=url)
            xbmcplugin.setResolvedUrl(pluginhandle, True, listitem)
            if infoEnabled:
                showInfo()
    except:
        pass
def playLiveVideo(id):
    content = getUrl2("http://www.dailymotion.com/sequence/"+id)
    if content.find('"statusCode":410') > 0 or content.find('"statusCode":403') > 0:
        xbmc.executebuiltin('XBMC.Notification(Info:,'+translation(30022)+' (DailyMotion)!,5000)')
    else:
        matchFullHD = re.compile('"hd1080URL":"(.+?)"', re.DOTALL).findall(content)
        matchHD = re.compile('"hd720URL":"(.+?)"', re.DOTALL).findall(content)
        matchHQ = re.compile('"hqURL":"(.+?)"', re.DOTALL).findall(content)
        matchSD = re.compile('"sdURL":"(.+?)"', re.DOTALL).findall(content)
        matchLD = re.compile('"video_url":"(.+?)"', re.DOTALL).findall(content)
        url = ""
        if matchFullHD and maxVideoQuality == "1080p":
            url = urllib.unquote_plus(matchFullHD[0]).replace("\\", "")
        elif matchHD and (maxVideoQuality == "720p" or maxVideoQuality == "1080p"):
            url = urllib.unquote_plus(matchHD[0]).replace("\\", "")
        elif matchHQ:
            url = urllib.unquote_plus(matchHQ[0]).replace("\\", "")
        elif matchSD:
            url = urllib.unquote_plus(matchSD[0]).replace("\\", "")
        elif matchLD:
            url = urllib.unquote_plus(matchSD2[0]).replace("\\", "")
        if url:
            url = getUrl(url)
            listitem = xbmcgui.ListItem(path=url)
            xbmcplugin.setResolvedUrl(pluginhandle, True, listitem)
예제 #27
0
def parse(query_string, unquote=True):
    '''
    Main parse function
    @param query_string:
    @param unquote: unquote html query string ?
    '''
    mydict = {}
    plist = []
    if query_string == "":
        return mydict
    for element in query_string.split("&"):
        try:
            if unquote:
                (var, val) = element.split("=")
                var = urllib.unquote_plus(var)
                val = urllib.unquote_plus(val)
            else:
                (var, val) = element.split("=")
        except ValueError:
            raise MalformedQueryStringError
        plist.append(parser_helper(var, val))
    for di in plist:
        (k, v) = di.popitem()
        tempdict = mydict
        while k in tempdict and type(v) is dict:
            tempdict = tempdict[k]
            (k, v) = v.popitem()
        if k in tempdict and type(tempdict[k]).__name__ == 'list':
            tempdict[k].append(v)
        elif k in tempdict:
            tempdict[k] = [tempdict[k], v]
        else:
            tempdict[k] = v
    return mydict
예제 #28
0
    def parse(self):
        """Call feed first"""
        track = self.cut_content_simple('%2C+', '+%2A')[0]
        artist, title = track.split('%2C+')

        self.artist = self.capstext(urllib.unquote_plus(artist))
        self.title = urllib.unquote_plus(title)
    def get_media_url(self, host, media_id):
        if self.get_setting('login') == 'true':
            if self.login_stale():
                self.login()
        self.net.set_cookies(self.cookie_file)
        web_url = self.get_url(host, media_id)
        if web_url[-1:1]=="#": web_url.replace("#",""); 

        #find session_hash
        try:
            html = self.net.http_GET(web_url).content
            if ">This file doesn't exist, or has been removed.<" in html: raise Exception (host+": This file doesn't exist, or has been removed.")
            elif "This file might have been moved, replaced or deleted.<" in html: raise Exception (host+": This file might have been moved, replaced or deleted.")
            #Shortcut for logged in users
            pattern = '<a href="(/.+?)" class="download_file_link" style="margin:0px 0px;">Download File</a>'
            link = re.search(pattern, html)
            if link:
                common.addon.log('Direct link found: %s' % link.group(1))
                if 'putlocker' in host:
                    return 'http://www.filedrive.com%s' % link.group(1)
                    #return 'http://www.putlocker.com%s' % link.group(1)
                elif 'filedrive' in host:
                    return 'http://www.filedrive.com%s' % link.group(1)
                elif 'firedrive' in host:
                    return 'http://www.firedrive.com%s' % link.group(1)

            if ('firedrive' in host) or ('filedrive' in host) or ('putlocker' in host):
                try:
                	data = {}; r = re.findall(r'type="hidden" name="(.+?)"\s* value="?(.+?)"/>', html); #data['usr_login']=''
                	for name, value in r: data[name] = value
                	#data['imhuman']='Proceed to video'; data['btn_download']='Proceed to video'
                	#xbmc.sleep(2000)
                	html = self.net.http_POST(web_url, data).content
                except urllib2.URLError, e:
                    common.addon.log_error(host+': got http error %d fetching 2nd url %s' % (e.code, web_url))
                    return self.unresolvable(code=3, msg='Exception: %s' % e) #return False
                if "file: '" in html:
                    r = re.search("file\s*:\s*'(.+?)'", html)
                    if r: return urllib.unquote_plus(r.group(1))
                if '" target="_blank" '+"id='top_external_download' title='Download This File'>" in html:
                    r = re.search('<a href="(.+?)" target="_blank" '+"id='top_external_download' title='Download This File'>", html)
                    if r: return urllib.unquote_plus(r.group(1))
                if "id='external_download' title='Download This File'>" in html:
                    r = re.search('<a href="(.+?)" id=\'external_download\' title=\'Download This File\'>', html)
                    if r: return urllib.unquote_plus(r.group(1))
                if "<a id='fd_vid_btm_download_front' title='Copy to my computer' class='video_bottom_buttons' target='_blank' href='" in html:
                    r = re.search("<a id='fd_vid_btm_download_front' title='Copy to my computer' class='video_bottom_buttons' target='_blank' href='(.+?)'>", html)
                    if r: return urllib.unquote_plus(r.group(1))
                #if r:
                #    return urllib.unquote_plus(r.group(1))
                #else:
                #    common.addon.log_error(host+': stream url not found')
                #    return self.unresolvable(code=0, msg='no file located') #return False
                r = re.search("$.post('(.+?)', function(data) {", html)
                if r:
                    return urllib.unquote_plus(r.group(1))
                else:
                    common.addon.log_error(host+': stream url not found')
                    return self.unresolvable(code=0, msg='no file located') #return False
            else:
예제 #30
0
파일: default.py 프로젝트: vkravets/ru
def getGenreList(params):
    http = client.GET(urllib.unquote_plus(params['href']), httpSiteUrl)
    if http is None:
        return False

    beautifulSoup = BeautifulSoup(http)
    items = beautifulSoup.find('div', params['css']).findAll('a')

    if len(items) == 0:
        show_message('ОШИБКА', 'Неверная страница', 3000)
        return False
    else:
        for item in items:
            li = xbmcgui.ListItem(item.string)
            li.setProperty('IsPlayable', 'false')
            uri = strutils.construct_request({
                'href': client.get_full_url(item['href'].encode('utf-8')),
                'mode': 'readcategory',
                'section': params['section'],
                'filter': '',
                'cleanUrl': urllib.unquote_plus(params['cleanUrl']),
                'start': 0,
                'hideFirstPageData': 1
            })
            xbmcplugin.addDirectoryItem(h, uri, li, True)
        xbmcplugin.endOfDirectory(h)
예제 #31
0
#     print cookie
##创建一个Pattern 编译好的正则表达式
pat = re.compile('and the next busynothing is (\d+)')  ##()表示一个分组 为之后的匹配提供索引
##r开头的字符串都是raw字符串 所有的字符串都不会被转义e.r'\n' 不会被认为是换行
url_template = r'http://www.pythonchallenge.com/pc/def/linkedlist.php?busynothing={0}'  ##{0}处待替换的数据
next_num = '12345'
cookies = []
while True:
    f = opener.open(url_template.format(next_num))
    html = f.read()
    for cookie in cj:
        cookies.append(cookie)
        # print cookie
    matchRes = pat.findall(html)
    if matchRes:
        next_num = matchRes[0]
        print next_num
    else:
        break
print len(cookies)
print type(cookies[0])
values = [x.value for x in cookies]
msg = urllib.unquote_plus("".join(values))
print bz2.decompress(msg)

proxy = xmlrpclib.ServerProxy(
    "http://www.pythonchallenge.com/pc/phonebook.php")
print proxy.phone("Leopold")

list(cj)[0].value = 'the+flowers+are+on+their+way'
print opener.open('http://www.pythonchallenge.com/pc/stuff/violin.php').read()
예제 #32
0
            if (len(splitparams)) == 2:
                param[splitparams[0]] = splitparams[1]

    return param


params = get_params()
url = None
name = None
mode = None
iconimage = None
fanart = None
description = None

try:
    url = urllib.unquote_plus(params["url"])
except:
    pass
try:
    name = urllib.unquote_plus(params["name"])
except:
    pass
try:
    iconimage = urllib.unquote_plus(params["iconimage"])
except:
    pass
try:
    mode = int(params["mode"])
except:
    pass
try:
예제 #33
0
        'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3'
    )
    response = urllib2.urlopen(req)
    link = response.read()
    response.close()
    return link


params = get_params()
url = None
name = None
mode = None
page = 1

try:
    url = urllib.unquote_plus(params["url"])
except:
    pass
try:
    name = urllib.unquote_plus(params["name"])
except:
    pass
try:
    mode = int(params["mode"])
except:
    pass
try:
    page = int(params["page"])
except:
    pass
예제 #34
0
def lambda_handler(event, context):
    '''Demonstrates S3 trigger that uses
    Rekognition APIs to detect faces, labels and index faces in S3 Object.
    '''
    #print("Received event: " + json.dumps(event, indent=2))

    # Get the object from the event
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = urllib.unquote_plus(
        event['Records'][0]['s3']['object']['key'].encode('utf8'))
    try:
        # Calls rekognition DetectFaces API to detect faces in S3 object
        # response = detect_faces(bucket, key)

        # Calls rekognition DetectLabels API to detect labels in S3 object
        response = detect_labels(bucket, key)

        for record in event['Records']:
            filename = record['s3']['object']['key']
            #filesize = record['s3']['object']['size'];
            #source = record['requestParameters']['sourceIPAddress'];
            eventTime = record['eventTime']

    #Iterate on rekognition labels. Enrich and prep them for storage in DynamoDB
        labels_on_watch_list = []
        for label in response['Labels']:

            lbl = label['Name']
            conf = label['Confidence']
            label['OnWatchList'] = False

            #Print labels and confidence to lambda console
            print('{} .. conf %{:.2f}'.format(lbl, conf))

            #Check label watch list and trigger action
            if (lbl.upper() in (label.upper() for label in label_watch_list)
                    and conf >= label_watch_min_conf):

                label['OnWatchList'] = True
                labels_on_watch_list.append(deepcopy(label))

        tosend = ""

        for Label in response["Labels"]:
            print('{0} - {1}%'.format(Label["Name"], Label["Confidence"]))
            tosend += '{0} - {1}%'.format(Label["Name"],
                                          round(Label["Confidence"], 2))

        # Calls rekognition IndexFaces API to detect faces in S3 object and index faces into specified collection
        #response = index_faces(bucket, key)

        # Print response to console.
        print(response)

        def pushover_handler(message):
            """ Send parsed message to Pushover """
            #logger.info('Received message' + json.dumps(message))
            conn = HTTPSConnection("api.pushover.net:443")
            conn.request(
                "POST", "/1/messages.json",
                urllib.urlencode({
                    "token": '----',
                    "user": '******',
                    "message": filename + "  " + tosend,
                    "sound": 'pushover',
                    "priority": 0,
                    "title": "SecuritySpy"
                }), {"Content-type": "application/x-www-form-urlencoded"})
            response = conn.getresponse()
            return response.status

        if len(labels_on_watch_list) > 0:
            return pushover_handler(tosend)

        return response
    except Exception as e:
        print(e)
        print(
            "Error processing object {} from bucket {}. ".format(key, bucket) +
            "Make sure your object and bucket exist and your bucket is in the same region as this function."
        )
        raise e
예제 #35
0
파일: default.py 프로젝트: ECCx/kodi-1
    def search(self, keyword, external):
        self.log("*** Search")

        keyword = urllib.unquote_plus(keyword) if (
            external != None) else self.getUserInput()

        if keyword:
            url = self.url + '/?do=search'

            # Advanced search: titles only
            values = {
                "do": "search",
                "subaction": "search",
                "mode": "simple",
                "story": keyword.encode("cp1251"),
                "x": "0",
                "y": "0"
            }

            data = urllib.urlencode(values)
            request = urllib2.Request(url, data)
            response = urllib2.urlopen(request).read()

            container = common.parseDOM(response,
                                        "div",
                                        attrs={"id": "container"})
            posts = common.parseDOM(container,
                                    "div",
                                    attrs={"class": "custom-post"})

            if posts:
                for i, post in enumerate(posts):
                    poster = common.parseDOM(post,
                                             "div",
                                             attrs={"class": "custom-poster"})
                    title = self.encode(
                        common.stripTags(common.parseDOM(post, "a")[0]))
                    link = common.parseDOM(post, "a", ret="href")[0]
                    image = common.parseDOM(post, "img", ret="src")[0]

                    uri = sys.argv[0] + '?mode=show&url=%s' % link
                    item = xbmcgui.ListItem(title, thumbnailImage=image)

                    self.favorites.addContextMenuItem(
                        item, {
                            'title': title,
                            'url': link,
                            'image': image,
                            'playable': False,
                            'action': 'add',
                            'plugin': self.id
                        })

                    xbmcplugin.addDirectoryItem(self.handle, uri, item, True)

                xbmcplugin.setContent(self.handle, 'movies')
            #else:
            #    if external != "usearch":
            #        item = xbmcgui.ListItem(self.language(2001), iconImage=self.icon, thumbnailImage=self.icon)
            #        xbmcplugin.addDirectoryItem(self.handle, '', item, True)
            xbmcplugin.endOfDirectory(self.handle, True)
        else:
            self.menu()
예제 #36
0
    def run(self, argv=None):

        self.addon = Addon('plugin.video.SportsDevil', argv)

        common.log('SportsDevil running')

        base = argv[0]
        handle = int(argv[1])
        parameter = argv[2]
        self.base = base
        self.handle = handle

        paramstring = urllib.unquote_plus(parameter)

        try:

            # if addon is started
            listItemPath = xbmcUtils.getListItemPath()
            if not listItemPath.startswith(self.base):
                if not ('mode=' in paramstring
                        and not 'mode=1&' in paramstring):
                    xbmcplugin.setPluginFanart(self.handle,
                                               common.Paths.pluginFanart)
                    self.clearCache()

                    #if common.getSetting('autoupdate') == 'true':
                    #    self.update()

            # Main Menu
            if len(paramstring) <= 2:
                mainMenu = ListItem.create()
                mainMenu['url'] = self.MAIN_MENU_FILE
                tmpList = self.parseView(mainMenu)
                if tmpList:
                    self.currentlist = tmpList

            else:
                [mode, item] = self._parseParameters()

                # switch(mode)
                if mode == Mode.VIEW:
                    tmpList = self.parseView(item)
                    if tmpList:
                        self.currentlist = tmpList
                        count = len(self.currentlist.items)
                        if count == 1:
                            # Autoplay single video
                            autoplayEnabled = common.getSetting(
                                'autoplay') == 'true'
                            if autoplayEnabled:
                                videos = self.currentlist.getVideos()
                                if len(videos) == 1:
                                    self.playVideo(videos[0], True)

                elif mode == Mode.ADDITEM:
                    tmp = os.path.normpath(paramstring.split('url=')[1])
                    if tmp:
                        suffix = tmp.split(os.path.sep)[-1]
                        tmp = tmp.replace(suffix,
                                          '') + urllib.quote_plus(suffix)
                    if self.favouritesManager.add(tmp):
                        xbmc.executebuiltin('Container.Refresh()')

                elif mode in [
                        Mode.ADDTOFAVOURITES, Mode.REMOVEFROMFAVOURITES,
                        Mode.EDITITEM
                ]:

                    if mode == Mode.ADDTOFAVOURITES:
                        self.favouritesManager.addItem(item)
                    elif mode == Mode.REMOVEFROMFAVOURITES:
                        self.favouritesManager.removeItem(item)
                        xbmc.executebuiltin('Container.Refresh()')
                    elif mode == Mode.EDITITEM:
                        if self.favouritesManager.editItem(item):
                            xbmc.executebuiltin('Container.Refresh()')

                elif mode == Mode.EXECUTE:
                    self.executeItem(item)

                elif mode == Mode.PLAY:
                    self.playVideo(item)

                elif mode == Mode.QUEUE:
                    self.queueAllVideos(item)

                elif mode == Mode.DOWNLOAD:
                    url = urllib.unquote(item['url'])
                    title = item['title']
                    self.downloadVideo(url, title)

                elif mode == Mode.REMOVEFROMCUSTOMMODULES:
                    self.removeCustomModule(item)

                #elif mode == Mode.UPDATE:
                #    self.update()

                elif mode == Mode.DOWNLOADCUSTOMMODULE:
                    self.downloadCustomModule()

                elif mode == Mode.INSTALLADDON:
                    success = install(item['url'])
                    if success:
                        xbmc.sleep(100)
                        if xbmcUtils.getCurrentWindowXmlFile(
                        ) == 'DialogAddonSettings.xml':
                            # workaround to update settings dialog
                            common.setSetting('', '')

        except Exception, e:
            common.showError('Error running SportsDevil')
            common.log('Error running SportsDevil. Reason:' + str(e))
예제 #37
0
    def createXBMCListItem(self, item):
        title = enc.clean_safe(item['title'])

        m_type = item['type']

        icon = item['icon']

        if icon and not icon.startswith('http'):
            try:
                if not fu.fileExists(icon):
                    tryFile = os.path.join(common.Paths.modulesDir, icon)
                    if not fu.fileExists(tryFile):
                        tryFile = os.path.join(common.Paths.customModulesDir,
                                               icon)
                    if fu.fileExists(tryFile):
                        icon = tryFile
            except:
                pass

        if not icon:
            if m_type == 'video':
                icon = common.Paths.defaultVideoIcon
            else:
                icon = common.Paths.defaultCategoryIcon

        liz = xbmcgui.ListItem(title,
                               title,
                               iconImage=icon,
                               thumbnailImage=icon)

        fanart = item['fanart']
        if not fanart:
            fanart = common.Paths.pluginFanart
        liz.setProperty('fanart_image', fanart)
        """
        General Values that apply to all types:
            count         : integer (12) - can be used to store an id for later, or for sorting purposes
            size          : long (1024) - size in bytes
            date          : string (%d.%m.%Y / 01.01.2009) - file date

        Video Values:
            genre         : string (Comedy)
            year          : integer (2009)
            episode       : integer (4)
            season        : integer (1)
            top250        : integer (192)
            tracknumber   : integer (3)
            rating        : float (6.4) - range is 0..10
            watched       : depreciated - use playcount instead
            playcount     : integer (2) - number of times this item has been played
            overlay       : integer (2) - range is 0..8.  See GUIListItem.h for values
            cast          : list (Michal C. Hall)
            castandrole   : list (Michael C. Hall|Dexter)
            director      : string (Dagur Kari)
            mpaa          : string (PG-13)
            plot          : string (Long Description)
            plotoutline   : string (Short Description)
            title         : string (Big Fan)
            originaltitle : string (Big Fan)
            duration      : string (3:18)
            studio        : string (Warner Bros.)
            tagline       : string (An awesome movie) - short description of movie
            writer        : string (Robert D. Siegel)
            tvshowtitle   : string (Heroes)
            premiered     : string (2005-03-04)
            status        : string (Continuing) - status of a TVshow
            code          : string (tt0110293) - IMDb code
            aired         : string (2008-12-07)
            credits       : string (Andy Kaufman) - writing credits
            lastplayed    : string (%Y-%m-%d %h:%m:%s = 2009-04-05 23:16:04)
            album         : string (The Joshua Tree)
            votes         : string (12345 votes)
            trailer       : string (/home/user/trailer.avi)
        """

        infoLabels = {}
        for video_info_name in item.infos.keys():
            infoLabels[video_info_name] = enc.clean_safe(item[video_info_name])
        infoLabels['title'] = title

        liz.setInfo('video', infoLabels)

        url = urllib.unquote_plus(item['url'])
        liz.setPath(url)

        if m_type == 'video':
            liz.setProperty('IsPlayable', 'true')

        return liz
예제 #38
0
def detail(params, url, category):
    logger.info("[newdivx.py] detail")

    title = urllib.unquote_plus(params.get("title"))
    thumbnail = urllib.unquote_plus(params.get("thumbnail"))
    plot = urllib.unquote_plus(params.get("plot"))

    # Descarga la p�gina
    data = scrapertools.cachePage(url)
    #logger.info(data)
    patronvideos = '<p class="Estilo2">([^<]+)</p>'
    matches = re.compile(patronvideos, re.DOTALL).findall(data)
    if len(matches) > 0:
        title = matches[0]
    # ------------------------------------------------------------------------------------
    # Busca los enlaces a los videos en los servidores habilitados
    # ------------------------------------------------------------------------------------
    listavideos = servertools.findvideos(data)

    for video in listavideos:
        if "stagevu.com/embed" not in video[1]:
            videotitle = video[0]
            url = video[1]
            server = video[2]
            xbmctools.addnewvideo(CHANNELNAME, "play", category, server,
                                  title.strip() + " - " + videotitle, url,
                                  thumbnail, plot)
    # ------------------------------------------------------------------------------------
    #--- Busca los videos Directos
    ## ------------------------------------------------------------------------------------##
    #               Busca  enlaces en el servidor  przeklej                                 #
    ## ------------------------------------------------------------------------------------##
    patronvideos = '<param name="src" value="([^"]+)"'
    matches = re.compile(patronvideos, re.DOTALL).findall(data)

    if len(matches) > 0:
        if len(matches) == 1:
            subtitle = "[Divx-Directo-Przeklej]"
            xbmctools.addnewvideo(CHANNELNAME, "play", category, "Directo",
                                  title + " - " + subtitle, matches[0],
                                  thumbnail, plot)

        else:
            parte = 0
            subtitle = "[Divx-Directo-Przeklej]"
            for match in matches:
                logger.info(" matches = " + match)
                parte = parte + 1
                xbmctools.addnewvideo(
                    CHANNELNAME, "play", category, "Directo",
                    title + " - " + subtitle + " " + str(parte), match,
                    thumbnail, plot)

## --------------------------------------------------------------------------------------##
#  				 Busca enlaces en el servidor Fishker                                    #
## --------------------------------------------------------------------------------------##
    patronvideos = '<a href="(http\:\/\/www.fishker.com\/[^"]+)"'
    matches = re.compile(patronvideos, re.DOTALL).findall(data)
    if len(matches) > 0:
        data2 = scrapertools.cachePage(matches[0])
        #print data2
        #<param name="flashvars" value="comment=Q&amp;m=video&amp;file=http://fish14.st.fishker.com/videos/1249504.flv?c=3948597662&amp;st=/plstyle.txt?video=1"
        patron = 'file=([^"]+)"'
        matches2 = re.compile(patron, re.DOTALL).findall(data2)
        if len(matches2) > 0:
            videourl = matches2[0].replace("&amp;", "&")
            subtitle = "[FLV-Directo-Fishker]"
            xbmctools.addnewvideo(CHANNELNAME, "play", category, "Directo",
                                  title + " - " + subtitle, videourl,
                                  thumbnail, plot)

## --------------------------------------------------------------------------------------##
#  				 Busca enlaces en el servidor Cinshare                                  #
## --------------------------------------------------------------------------------------##

    patronvideos = '<iframe src="(http://www.cinshare.com/[^"]+)"'
    matches = re.compile(patronvideos, re.DOTALL).findall(data)
    if len(matches) > 0:
        ####
        '''
		data2 = scrapertools.cachePage(matches[0])
		#print data2
		
		patron = '<param name="src" value="([^"]+)"'
		matches2 = re.compile(patron,re.DOTALL).findall(data2)
		if len(matches2)>0:
		'''
        ####
        import cinshare
        videourl = matches[0]
        subtitle = "[divx-Directo-Cinshare]"
        xbmctools.addnewvideo(CHANNELNAME, "play", category, "Cinshare",
                              title + " - " + subtitle, videourl, thumbnail,
                              plot)

    ## --------------------------------------------------------------------------------------##
    #               Busca enlaces a videos .flv o (.mp4 dentro de un xml)                     #
    ## --------------------------------------------------------------------------------------##
    patronvideos = 'file=(http\:\/\/[^\&]+)\&'
    matches = re.compile(patronvideos, re.DOTALL).findall(data)
    if len(matches) > 0:
        subtitle = "[FLV-Directo]"
        if ("xml" in matches[0]):
            data2 = scrapertools.cachePage(matches[0])
            logger.info("data2=" + data2)
            patronvideos = '<track>.*?'
            patronvideos += '<title>([^<]+)</title>(?:[^<]+'
            patronvideos += '<annotation>([^<]+)</annotation>[^<]+|[^<]+)'
            patronvideos += '<location>([^<]+)</location>[^<]+'
            patronvideos += '</track>'
            matches = re.compile(patronvideos, re.DOTALL).findall(data2)
            scrapertools.printMatches(matches)

            for match in matches:
                if ".mp4" in match[2]:
                    subtitle = "[MP4-Directo]"
                scrapedtitle = '%s (%s) - %s  %s' % (title, match[1].strip(),
                                                     match[0], subtitle)
                scrapedurl = match[2].strip()
                scrapedthumbnail = thumbnail
                scrapedplot = plot
                if (DEBUG):
                    logger.info("title=[" + scrapedtitle + "], url=[" +
                                scrapedurl + "], thumbnail=[" +
                                scrapedthumbnail + "]")

                # A�ade al listado de XBMC
                xbmctools.addnewvideo(CHANNELNAME, "play", category, "Directo",
                                      scrapedtitle, scrapedurl,
                                      scrapedthumbnail, scrapedplot)
        else:

            xbmctools.addnewvideo(CHANNELNAME, "play", category, "Directo",
                                  title + " - " + subtitle, matches[0],
                                  thumbnail, plot)

    ## --------------------------------------------------------------------------------------##
    #            Busca enlaces a video en el servidor Dailymotion                             #
    ## --------------------------------------------------------------------------------------##
    patronvideos = '<param name="movie" value="http://www.dailymotion.com/swf/video/([^\_]+)\_[^"]+"'
    matches = re.compile(patronvideos, re.DOTALL).findall(data)
    playWithSubt = "play"
    if len(matches) > 0:
        daily = 'http://www.dailymotion.com/video/%s' % matches[0]
        data2 = scrapertools.cachePage(daily)

        # Busca los subtitulos en espa�ol
        subtitulo = re.compile('%22es%22%3A%22(.+?)%22').findall(data2)
        subtit = urllib.unquote(subtitulo[0])
        subtit = subtit.replace("\/", "/")
        #subt_ok = downloadstr(subtit,title)
        #print "subtitulo subt_ok = %s" % str(subt_ok)

        # Busca el enlace al video con formato FLV
        Lowres = re.compile('%22sdURL%22%3A%22(.+?)%22').findall(data2)
        if len(Lowres) > 0:
            videourl = urllib.unquote(Lowres[0])
            videourl = videourl.replace("\/", "/")
            if len(subtit) > 0:
                videourl = videourl + "|" + subtit
                playWithSubt = "play2"
            subtitle = "[FLV-Directo-Dailymotion]"
            xbmctools.addnewvideo(CHANNELNAME, playWithSubt, category,
                                  "Directo", title + " - " + subtitle,
                                  videourl, thumbnail, plot)

        # Busca el enlace al video con formato HQ (H264)
        Highres = re.compile('%22hqURL%22%3A%22(.+?)%22').findall(data2)
        if len(Highres) > 0:
            videourl = urllib.unquote(Highres[0])
            videourl = videourl.replace("\/", "/")
            if len(subtit) > 0:
                videourl = videourl + "|" + subtit
                playWithSubt = "play2"
            subtitle = "[h264-Directo-Dailymotion-este video no es soportado en versiones antiguas o xbox plataforma]"
            xbmctools.addnewvideo(CHANNELNAME, playWithSubt, category,
                                  "Directo", title + " - " + subtitle,
                                  videourl, thumbnail, plot)
    ## --------------------------------------------------------------------------------------##
    #            Busca enlaces a video en el servidor Gigabyteupload.com                      #
    ## --------------------------------------------------------------------------------------##

    patronvideos = '<a href="(http://www.gigabyteupload.com/[^"]+)"'
    matches = re.compile(patronvideos, re.DOTALL).findall(data)
    if len(matches) > 0:
        print " encontro: %s" % matches[0]
        import gigabyteupload as giga
        videourl = giga.geturl(matches[0])
        if len(videourl) > 0:
            subtitle = "[Divx-Directo-Gigabyteupload]"
            xbmctools.addnewvideo(CHANNELNAME, "play", category, "Directo",
                                  title + " - " + subtitle, videourl,
                                  thumbnail, plot)
    ## --------------------------------------------------------------------------------------##
    #            Busca enlaces de videos para el servidor vk.com                             #
    ## --------------------------------------------------------------------------------------##
    '''
	var video_host = 'http://cs12644.vk.com/';
	var video_uid = '87155741';
	var video_vtag = 'fc697084d3';
	var video_no_flv = 1;
	var video_max_hd = '1'
	'''
    patronvideos = '<iframe src="(http:\/\/vk[^\/]+\/video_ext.php[^"]+)"'
    matches = re.compile(patronvideos, re.DOTALL).findall(data)
    if len(matches) > 0:
        print " encontro VKServer :%s" % matches[0]
        videourl = vk.geturl(matches[0])
        xbmctools.addnewvideo(CHANNELNAME, "play", category, "Directo",
                              title + " - " + "[VKServer]", videourl,
                              thumbnail, plot)
    """	
		data2 = scrapertools.cachePage(matches[0])
		print data2
		
		patron  = "var video_host = '([^']+)'.*?"
		patron += "var video_uid = '([^']+)'.*?"
		patron += "var video_vtag = '([^']+)'.*?"
		patron += "var video_no_flv = ([^;]+);.*?"
		patron += "var video_max_hd = '([^']+)'"
		matches2 = re.compile(patron,re.DOTALL).findall(data2)
		if len(matches2)>0:    #http://cs12387.vk.com/u87155741/video/fe5ee11ddb.360.mp4
			for match in matches2:
				if match[3].strip() == "0":
					tipo = "flv"
					videourl = "%s/u%s/video/%s.%s" % (match[0],match[1],match[2],tipo)
					xbmctools.addnewvideo( CHANNELNAME , "play" , category , "Directo" , title + " - "+"[VK] [%s]" %tipo, videourl , thumbnail , plot )
				else:
					tipo = "360.mp4"
					videourl = "%s/u%s/video/%s.%s" % (match[0],match[1],match[2],tipo)
					xbmctools.addnewvideo( CHANNELNAME , "play" , category , "Directo" , title + " - "+"[VK] [%s]" %tipo, videourl , thumbnail , plot )
					tipo = "240.mp4"
					videourl = "%s/u%s/video/%s.%s" % (match[0],match[1],match[2],tipo)
					xbmctools.addnewvideo( CHANNELNAME , "play" , category , "Directo" , title + " - "+"[VK] [%s]" %tipo, videourl , thumbnail , plot )
	"""

    # Label (top-right)...
    xbmcplugin.setPluginCategory(handle=pluginhandle, category=category)

    # Disable sorting...
    xbmcplugin.addSortMethod(handle=pluginhandle,
                             sortMethod=xbmcplugin.SORT_METHOD_NONE)

    # End of directory...
    xbmcplugin.endOfDirectory(handle=pluginhandle, succeeded=True)
예제 #39
0
    def run(self):
        # Echo server program
        try:
            import socket
            import _pydev_log
            log = _pydev_log.Log()

            dbg(SERVER_NAME + ' creating socket', INFO1)
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.bind((HOST, self.thisPort))
            s.listen(1)  #socket to receive messages.

            #we stay here until we are connected.
            #we only accept 1 client.
            #the exit message for the server is @@KILL_SERVER_END@@
            dbg(SERVER_NAME + ' waiting for connection', INFO1)
            conn, addr = s.accept()
            time.sleep(0.5)  #wait a little before connecting to JAVA server

            dbg(SERVER_NAME + ' waiting to java client', INFO1)
            #after being connected, create a socket as a client.
            self.connectToServer()

            dbg(SERVER_NAME + ' Connected by ' + str(addr), INFO1)

            while 1:
                data = ''
                returnMsg = ''
                keepAliveThread = KeepAliveThread(self.socket)

                while data.find(MSG_END) == -1:
                    received = conn.recv(BUFFER_SIZE)
                    if len(received) == 0:
                        sys.exit(0)  #ok, connection ended
                    if IS_PYTHON3K:
                        data = data + received.decode('utf-8')
                    else:
                        data = data + received

                try:
                    try:
                        if data.find(MSG_KILL_SERVER) != -1:
                            dbg(SERVER_NAME + ' kill message received', INFO1)
                            #break if we received kill message.
                            self.ended = True
                            sys.exit(0)

                        dbg(SERVER_NAME + ' starting keep alive thread', INFO2)
                        keepAliveThread.start()

                        if data.find(MSG_PYTHONPATH) != -1:
                            comps = []
                            for p in _sys_path:
                                comps.append((p, ' '))
                            returnMsg = self.getCompletionsMessage(None, comps)

                        else:
                            data = data[:data.rfind(MSG_END)]

                            if data.startswith(MSG_IMPORTS):
                                data = data.replace(MSG_IMPORTS, '')
                                data = unquote_plus(data)
                                defFile, comps = importsTipper.GenerateTip(
                                    data, log)
                                returnMsg = self.getCompletionsMessage(
                                    defFile, comps)

                            elif data.startswith(MSG_CHANGE_PYTHONPATH):
                                data = data.replace(MSG_CHANGE_PYTHONPATH, '')
                                data = unquote_plus(data)
                                ChangePythonPath(data)
                                returnMsg = MSG_OK

                            elif data.startswith(MSG_SEARCH):
                                data = data.replace(MSG_SEARCH, '')
                                data = unquote_plus(data)
                                (f, line,
                                 col), foundAs = importsTipper.Search(data)
                                returnMsg = self.getCompletionsMessage(
                                    f, [(line, col, foundAs)])

                            elif data.startswith(MSG_CHANGE_DIR):
                                data = data.replace(MSG_CHANGE_DIR, '')
                                data = unquote_plus(data)
                                CompleteFromDir(data)
                                returnMsg = MSG_OK

                            elif data.startswith(MSG_BIKE):
                                returnMsg = MSG_INVALID_REQUEST  #No longer supported.

                            else:
                                returnMsg = MSG_INVALID_REQUEST
                    except SystemExit:
                        returnMsg = self.getCompletionsMessage(
                            None, [('Exit:', 'SystemExit', '')])
                        keepAliveThread.lastMsg = returnMsg
                        raise
                    except:
                        dbg(SERVER_NAME + ' exception occurred', ERROR)
                        s = StringIO.StringIO()
                        traceback.print_exc(file=s)

                        err = s.getvalue()
                        dbg(SERVER_NAME + ' received error: ' + str(err),
                            ERROR)
                        returnMsg = self.getCompletionsMessage(
                            None, [('ERROR:', '%s\nLog:%s' %
                                    (err, log.GetContents()), '')])

                finally:
                    log.Clear()
                    keepAliveThread.lastMsg = returnMsg

            conn.close()
            self.ended = True
            sys.exit(0)  #connection broken

        except SystemExit:
            raise
            #No need to log SystemExit error
        except:
            s = StringIO.StringIO()
            exc_info = sys.exc_info()

            traceback.print_exception(exc_info[0],
                                      exc_info[1],
                                      exc_info[2],
                                      limit=None,
                                      file=s)
            err = s.getvalue()
            dbg(SERVER_NAME + ' received error: ' + str(err), ERROR)
            raise
예제 #40
0
    tools.addDir('Integrate With TV Guide', 'tv', 10, icon, fanart, '')
    tools.addDir('Run a Speed Test', 'ST', 10, icon, fanart, '')
    tools.addDir('Clear Cache', 'CC', 10, icon, fanart, '')


params = tools.get_params()
url = None
name = None
mode = None
iconimage = None
description = None
query = None
type = None

try:
    url = urllib.unquote_plus(params["url"])
except:
    pass
try:
    name = urllib.unquote_plus(params["name"])
except:
    pass
try:
    iconimage = urllib.unquote_plus(params["iconimage"])
except:
    pass
try:
    mode = int(params["mode"])
except:
    pass
try:
예제 #41
0
 def Decode(formdict):
     return simplejson.loads(urllib.unquote_plus(formdict))
예제 #42
0
    def do_GET(self):
        global g_param
        try:
            dprint(__name__, 2, "http request header:\n{0}", self.headers)
            dprint(__name__, 2, "http request path:\n{0}", self.path)

            # check for PMS address
            PMSaddress = ''
            pms_end = self.path.find(')')
            if self.path.startswith('/PMS(') and pms_end > -1:
                PMSaddress = urllib.unquote_plus(self.path[5:pms_end])
                self.path = self.path[pms_end + 1:]

            # break up path, separate PlexConnect options
            # clean path needed for filetype decoding
            parts = re.split(
                r'[?&]', self.path,
                1)  # should be '?' only, but we do some things different :-)
            if len(parts) == 1:
                self.path = parts[0]
                options = {}
                query = ''
            else:
                self.path = parts[0]

                # break up query string
                options = {}
                query = ''
                parts = parts[1].split('&')
                for part in parts:
                    if part.startswith('PlexConnect'):
                        # get options[]
                        opt = part.split('=', 1)
                        if len(opt) == 1:
                            options[opt[0]] = ''
                        else:
                            options[opt[0]] = urllib.unquote(opt[1])
                    else:
                        # recreate query string (non-PlexConnect) - has to be merged back when forwarded
                        if query == '':
                            query = '?' + part
                        else:
                            query += '&' + part

            # get aTV language setting
            options['aTVLanguage'] = Localize.pickLanguage(
                self.headers.get('Accept-Language', 'en'))

            # add client address - to be used in case UDID is unknown
            if 'X-Forwarded-For' in self.headers:
                options['aTVAddress'] = self.headers['X-Forwarded-For'].split(
                    ',', 1)[0]
            else:
                options['aTVAddress'] = self.client_address[0]

            # get aTV hard-/software parameters
            options['aTVFirmwareVersion'] = self.headers.get(
                'X-Apple-TV-Version', '5.1')
            options['aTVScreenResolution'] = self.headers.get(
                'X-Apple-TV-Resolution', '720')

            dprint(__name__, 2, "pms address:\n{0}", PMSaddress)
            dprint(__name__, 2, "cleaned path:\n{0}", self.path)
            dprint(__name__, 2, "PlexConnect options:\n{0}", options)
            dprint(__name__, 2, "additional arguments:\n{0}", query)

            if 'User-Agent' in self.headers and \
               'AppleTV' in self.headers['User-Agent']:

                # recieve simple logging messages from the ATV
                if 'PlexConnectATVLogLevel' in options:
                    dprint('ATVLogger', int(options['PlexConnectATVLogLevel']),
                           options['PlexConnectLog'])
                    self.send_response(200)
                    self.send_header('Content-type', 'text/plain')
                    self.end_headers()
                    return

                # serve "*.cer" - Serve up certificate file to atv
                if self.path.endswith(".cer"):
                    dprint(__name__, 1, "serving *.cer: " + self.path)
                    if g_param['CSettings'].getSetting('certfile').startswith(
                            '.'):
                        # relative to current path
                        cfg_certfile = sys.path[0] + sep + g_param[
                            'CSettings'].getSetting('certfile')
                    else:
                        # absolute path
                        cfg_certfile = g_param['CSettings'].getSetting(
                            'certfile')
                    cfg_certfile = path.normpath(cfg_certfile)

                    cfg_certfile = path.splitext(cfg_certfile)[0] + '.cer'
                    try:
                        f = open(cfg_certfile, "rb")
                    except:
                        dprint(__name__, 0,
                               "Failed to access certificate: {0}",
                               cfg_certfile)
                        return

                    self.sendResponse(f.read(), 'text/xml', False)
                    f.close()
                    return

                # serve .js files to aTV
                # application, main: ignore path, send /assets/js/application.js
                # otherwise: path should be '/js', send /assets/js/*.js
                dirname = path.dirname(self.path)
                basename = path.basename(self.path)
                if basename in ("application.js", "main.js", "javascript-packed.js", "bootstrap.js") or \
                   basename.endswith(".js") and dirname == '/js':
                    if basename in ("main.js", "javascript-packed.js",
                                    "bootstrap.js"):
                        basename = "application.js"
                    dprint(__name__, 1, "serving /js/{0}", basename)
                    JS = JSConverter(basename, options)
                    self.sendResponse(JS, 'text/javascript', True)
                    return

                # serve "*.jpg" - thumbnails for old-style mainpage
                if self.path.endswith(".jpg"):
                    dprint(__name__, 1, "serving *.jpg: " + self.path)
                    f = open(sys.path[0] + sep + "assets" + self.path, "rb")
                    self.sendResponse(f.read(), 'image/jpeg', False)
                    f.close()
                    return

                # serve "*.png" - only png's support transparent colors
                if self.path.endswith(".png"):
                    dprint(__name__, 1, "serving *.png: " + self.path)
                    f = open(sys.path[0] + sep + "assets" + self.path, "rb")
                    self.sendResponse(f.read(), 'image/png', False)
                    f.close()
                    return

                # serve subtitle file - transcoded to aTV subtitle json
                if 'PlexConnect' in options and \
                   options['PlexConnect']=='Subtitle':
                    dprint(__name__, 1, "serving subtitle: " + self.path)
                    XML = Subtitle.getSubtitleJSON(PMSaddress,
                                                   self.path + query, options)
                    self.sendResponse(XML, 'application/json', True)
                    return

                # get everything else from XMLConverter - formerly limited to trailing "/" and &PlexConnect Cmds
                if True:
                    dprint(__name__, 1, "serving .xml: " + self.path)
                    XML = XMLConverter.XML_PMS2aTV(PMSaddress,
                                                   self.path + query, options)
                    self.sendResponse(XML, 'text/xml', True)
                    return
                """
                # unexpected request
                self.send_error(403,"Access denied: %s" % self.path)
                """

            else:
                self.send_error(
                    403, "Not Serving Client %s" % self.client_address[0])
        except IOError:
            self.send_error(404, "File Not Found: %s" % self.path)
예제 #43
0
    ok = True
    liz = xbmcgui.ListItem(name,
                           iconImage="DefaultFolder.png",
                           thumbnailImage=iconimage)
    liz.setInfo(type="Video", infoLabels={"Title": name})
    ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),
                                     url=u,
                                     listitem=liz,
                                     isFolder=True)
    return ok


params = parameters_string_to_dict(sys.argv[2])
mode = params.get('mode')
url = params.get('url')
if isinstance(url, type(str())):
    url = urllib.unquote_plus(url)

if mode == 'listVideos':
    listVideos(url)
elif mode == 'sortDirection':
    sortDirection(url)
elif mode == 'playVideo':
    playVideo(url)
elif mode == 'playAll':
    playAll(url)
elif mode == 'search':
    search()
else:
    index()
예제 #44
0
def decodeUrl(encodedUrl):
    if not encodedUrl: return encodedUrl
    return urllib.unquote_plus(encodedUrl)
예제 #45
0
파일: miniapp.py 프로젝트: caitsydney/meep
fullQueryList = requestInfoList[1].split('?')
#print fullQueryList

form_dict = {}

# no variables to get
if len(fullQueryList) == 1:
    path_info = fullQueryList[0]
# we need to do further processing on the variables
else:
    path_info = fullQueryList[0]
    tmpVariables = fullQueryList[1].split('&')
    for variablePair in tmpVariables:
        key, value = variablePair.split('=')
        form_dict[key] = urllib.unquote_plus(value)

print allLines

cookie = ''
# get the cookie
for line in allLines:
    tmp = line.split(':', 2)
    if tmp[0] == 'cookie':
        cookie = tmp[1].strip()

print 'cookie = ', cookie

environ = {}  # make a fake request dictionary
environ['PATH_INFO'] = path_info
environ['wsgi.input'] = ''
예제 #46
0
    ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),
                                     url=u,
                                     listitem=liz)
    return ok


def addDir(name, url, mode, iconimage):
    u = sys.argv[0] + "?url=" + urllib.quote_plus(url) + "&mode=" + str(mode)
    ok = True
    liz = xbmcgui.ListItem(name,
                           iconImage="DefaultFolder.png",
                           thumbnailImage=iconimage)
    liz.setInfo(type="Video", infoLabels={"Title": name})
    ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),
                                     url=u,
                                     listitem=liz,
                                     isFolder=True)
    return ok


params = parameters_string_to_dict(sys.argv[2])
mode = urllib.unquote_plus(params.get('mode', ''))
url = urllib.unquote_plus(params.get('url', ''))

if mode == 'listVideos':
    listVideos(url)
elif mode == 'playVideo':
    playVideo(url)
else:
    index()
예제 #47
0
파일: main.py 프로젝트: akuala/repo.kuala
    def createXBMCListItem(self, item):        
        
        title = item['title']
        m_type = item['type']
        icon = item['icon']    
        v_type = 'default'  
        try:
            v_type = item['videoType'] if item['videoType'] is not None else 'default'
        except:
            v_type = 'default'

        if icon and not icon.startswith('http'):
            try:
                if not fu.fileExists(icon):
                    tryFile = os.path.join(common.Paths.modulesDir, icon)
                    if not fu.fileExists(tryFile):
                        tryFile = os.path.join(common.Paths.customModulesDir, icon)
                    if fu.fileExists(tryFile):
                        icon = tryFile
            except:
                pass

        if not icon:
            if m_type == 'video':
                icon = common.Paths.defaultVideoIcon
            else:
                icon = common.Paths.defaultCategoryIcon

        fanart = item['fanart']
        if not fanart:
            fanart = common.Paths.pluginFanart

        liz = xbmcgui.ListItem(title)
        try:
            liz.setArt({'thumb': icon, 'fanart': fanart})
        except:
            liz.setProperty('fanart_image', fanart)
            liz.setThumbnailImage(icon)
            common.log('main.py:374: setThumbnailImage is deprecated')

        """
        General Values that apply to all types:
            count         : integer (12) - can be used to store an id for later, or for sorting purposes
            size          : long (1024) - size in bytes
            date          : string (%d.%m.%Y / 01.01.2009) - file date

        Video Values:
            genre         : string (Comedy)
            year          : integer (2009)
            episode       : integer (4)
            season        : integer (1)
            top250        : integer (192)
            tracknumber   : integer (3)
            rating        : float (6.4) - range is 0..10
            watched       : depreciated - use playcount instead
            playcount     : integer (2) - number of times this item has been played
            overlay       : integer (2) - range is 0..8.  See GUIListItem.h for values
            cast          : list (Michal C. Hall)
            castandrole   : list (Michael C. Hall|Dexter)
            director      : string (Dagur Kari)
            mpaa          : string (PG-13)
            plot          : string (Long Description)
            plotoutline   : string (Short Description)
            title         : string (Big Fan)
            originaltitle : string (Big Fan)
            duration      : string (3:18)
            studio        : string (Warner Bros.)
            tagline       : string (An awesome movie) - short description of movie
            writer        : string (Robert D. Siegel)
            tvshowtitle   : string (Heroes)
            premiered     : string (2005-03-04)
            status        : string (Continuing) - status of a TVshow
            code          : string (tt0110293) - IMDb code
            aired         : string (2008-12-07)
            credits       : string (Andy Kaufman) - writing credits
            lastplayed    : string (%Y-%m-%d %h:%m:%s = 2009-04-05 23:16:04)
            album         : string (The Joshua Tree)
            votes         : string (12345 votes)
            trailer       : string (/home/user/trailer.avi)
        """

        infoLabels = {}
        for video_info_name in item.infos.keys():
            infoLabels[video_info_name] = item[video_info_name]
        infoLabels['title'] = title

        liz.setInfo('video', infoLabels)

        url = urllib.unquote_plus(item['url'])
        liz.setPath(url)

        if m_type == 'video':
            liz.setProperty('IsPlayable','true')

        if title.startswith('castflash'):
            try:
                liz.setMimeType('application/vnd.apple.mpegurl')
                liz.setContentLookup(False)
            except:
                common.showError('Update Kodi to 16+ to view this stream')
                return None
            
        if title.startswith('nohead'):
            try:
                liz.setMimeType('video/x-mpegts')
                liz.setContentLookup(False)
            except:
                pass
        
        if v_type is not None and v_type != 'default':
            try:
                if float(common.xbmcVersion) >= 17.0:
                    common.log('Trying to use inputstream.adaptive to demux stream... ', xbmc.LOGINFO)
                    liz.setProperty('inputstreamaddon', 'inputstream.adaptive')
                    liz.setContentLookup(False)

                    if v_type == 'adaptive_hls':
                        if float(common.xbmcVersion) >= 17.5:
                            liz.setMimeType('application/vnd.apple.mpegurl')
                            liz.setProperty('inputstream.adaptive.manifest_type', 'hls')
                            if '|' in url:
                                url,strhdr = url.split('|')
                                liz.setProperty('inputstream.adaptive.stream_headers', strhdr)
                                liz.setPath(url)
                        else:
                            liz.setProperty('inputstreamaddon', None)
                            liz.setContentLookup(True)
                        
                    elif v_type == 'adaptive_mpd':                    
                        liz.setMimeType('application/dash+xml')
                        liz.setProperty('inputstream.adaptive.manifest_type', 'mpd')                                        
                        
                    elif v_type == 'adaptive_ism':
                        liz.setProperty('inputstream.adaptive.manifest_type', 'ism')
                        liz.setMimeType('application/vnd.ms-sstr+xml')
                    
                else:
                    pass
            except:
                common.log('Error using inputstream.adaptive. Make sure plugin is installed and Kodi is version 17+. Falling back to ffmpeg ...')
                #common.showError('Error using inputstream.adaptive. Make sure plugin is installed and Kodi is version 17+.')
                liz.setProperty('inputstreamaddon', None)
                liz.setContentLookup(True)
                pass

        return liz
예제 #48
0
            splitparams = pairsofparams[i].split('=')
            if (len(splitparams)) == 2:
                param[splitparams[0]] = splitparams[1]
    return param


params = get_params()
url = None
name = None
mode = None
iconimage = None
parser = None
parserfunction = None

try:
    url = urllib.unquote_plus(params["url"])
except:
    pass
try:
    name = urllib.unquote_plus(params["name"])
except:
    pass
try:
    mode = int(params["mode"])
except:
    pass
try:
    regexs = params["regexs"]
except:
    pass
try:
예제 #49
0
        if (params[len(params) - 1] == '/'):
            params = params[0:len(params) - 2]
        pairsofparams = cleanedparams.split('&')
        param = {}
        for i in range(len(pairsofparams)):
            splitparams = {}
            splitparams = pairsofparams[i].split('=')
            if (len(splitparams)) == 2:
                param[splitparams[0]] = splitparams[1]
    return param


params = get_params()

mode = int(params.get('mode', 0))
url = urllib.unquote_plus(params.get('url', ''))
name = urllib.unquote_plus(params.get('name', ''))
title = urllib.unquote_plus(params.get('title', ''))
thumbnail = urllib.unquote_plus(params.get('thumbnail', ''))
season = urllib.unquote_plus(params.get('season', ''))
episode = urllib.unquote_plus(params.get('episode', ''))
ep_name = urllib.unquote_plus(params.get('ep_name', ''))

if mode: print 'Mode: ' + str(mode)
if url: print 'URL: ' + str(url)

if mode == 0 or not url or len(url) < 1: MAIN()
elif mode == 1: getTVshows(url)
elif mode == 2: getSeasons(name, url)
elif mode == 3: getEpisodes(url, season, title, thumbnail)
elif mode == 4: TVSHOWS(url)
    def sources(self, url, hostDict, hostprDict):
        try:
            sources = []

            if url == None: return sources

            data = urlparse.parse_qs(url)
            data = dict([(i, data[i][0]) if data[i] else (i, '')
                         for i in data])
            title = data['tvshowtitle'] if 'tvshowtitle' in data else data[
                'title']
            imdb = data['imdb']
            aliases = eval(data['aliases'])
            headers = {}

            if 'tvshowtitle' in data:
                url = self.searchShow(title, int(data['season']),
                                      int(data['episode']), aliases, headers)
            else:
                url = self.searchMovie(title, data['year'], aliases, headers)

            r = client.request(url,
                               headers=headers,
                               output='extended',
                               timeout='10')

            if not imdb in r[0]: raise Exception()

            cookie = r[4]
            headers = r[3]
            result = r[0]

            try:
                r = re.findall('(https:.*?redirector.*?)[\'\"]', result)
                for i in r:
                    try:
                        sources.append({
                            'source':
                            'gvideo',
                            'quality':
                            directstream.googletag(i)[0]['quality'],
                            'language':
                            'en',
                            'url':
                            i,
                            'direct':
                            True,
                            'debridonly':
                            False
                        })
                    except:
                        pass
            except:
                pass

            try:
                auth = re.findall('__utmx=(.+)', cookie)[0].split(';')[0]
            except:
                auth = 'false'
            auth = 'Bearer %s' % urllib.unquote_plus(auth)
            headers['Authorization'] = auth
            headers['Referer'] = url

            u = '/ajax/vsozrflxcw.php'
            self.base_link = client.request(self.base_link,
                                            headers=headers,
                                            output='geturl')
            u = urlparse.urljoin(self.base_link, u)

            action = 'getEpisodeEmb' if '/episode/' in url else 'getMovieEmb'

            elid = urllib.quote(
                base64.encodestring(str(int(time.time()))).strip())

            token = re.findall("var\s+tok\s*=\s*'([^']+)", result)[0]

            idEl = re.findall('elid\s*=\s*"([^"]+)', result)[0]

            post = {
                'action': action,
                'idEl': idEl,
                'token': token,
                'nopop': '',
                'elid': elid
            }
            post = urllib.urlencode(post)
            cookie += ';%s=%s' % (idEl, elid)
            headers['Cookie'] = cookie

            r = client.request(u,
                               post=post,
                               headers=headers,
                               cookie=cookie,
                               XHR=True)
            r = str(json.loads(r))

            r = re.findall('\'(http.+?)\'', r) + re.findall('\"(http.+?)\"', r)

            for i in r:
                try:
                    if 'google' in i:
                        quality = 'SD'

                        if 'googleapis' in i:
                            try:
                                quality = source_utils.check_sd_url(i)
                            except Exception:
                                pass

                        if 'googleusercontent' in i:
                            i = directstream.googleproxy(i)
                            try:
                                quality = directstream.googletag(
                                    i)[0]['quality']
                            except Exception:
                                pass

                        sources.append({
                            'source': 'gvideo',
                            'quality': quality,
                            'language': 'en',
                            'url': i,
                            'direct': True,
                            'debridonly': False
                        })

                    elif 'llnwi.net' in i or 'vidcdn.pro' in i:
                        try:
                            quality = source_utils.check_sd_url(i)

                            sources.append({
                                'source': 'CDN',
                                'quality': quality,
                                'language': 'en',
                                'url': i,
                                'direct': True,
                                'debridonly': False
                            })

                        except Exception:
                            pass
                    else:
                        valid, hoster = source_utils.is_host_valid(i, hostDict)
                        if not valid: continue

                        sources.append({
                            'source': hoster,
                            'quality': '720p',
                            'language': 'en',
                            'url': i,
                            'direct': False,
                            'debridonly': False
                        })
                except Exception:
                    pass
            return sources
        except:
            failure = traceback.format_exc()
            log_utils.log('CartoonHD - Exception: \n' + str(failure))
            return sources
예제 #51
0
def findvideos(item):
    logger.info()
    if item.contentSeason != '':
        return episode_links(item)

    itemlist = []
    item.text_color = color3

    data = get_data(item.url)

    item.plot = scrapertools.find_single_match(data, 'SINOPSIS(?:</span>|</strong>):(.*?)</p>')
    year = scrapertools.find_single_match(data, '(?:<span class="bold">|<strong>)AÑO(?:</span>|</strong>):\s*(\d+)')
    if year:
        try:
            from core import tmdb
            item.infoLabels['year'] = year
            tmdb.set_infoLabels_item(item, __modo_grafico__)
        except:
            pass

    old_format = False
    # Patron torrent antiguo formato
    if "Enlaces de descarga</div>" in data:
        old_format = True
        matches = scrapertools.find_multiple_matches(data, 'class="separate3 magnet".*?href="([^"]+)"')
        for scrapedurl in matches:
            scrapedurl = scrapertools.find_single_match(scrapedurl, '(magnet.*)')
            scrapedurl = urllib.unquote(re.sub(r'&amp;b=4', '', scrapedurl))
            title = "[Torrent] "
            title += urllib.unquote(scrapertools.find_single_match(scrapedurl, 'dn=(.*?)(?i)WWW.DescargasMix'))
            itemlist.append(item.clone(action="play", server="torrent", title=title, url=scrapedurl,
                                       text_color="green"))

    # Patron online
    data_online = scrapertools.find_single_match(data, 'Ver online</div>(.*?)<div class="section-box related-posts">')
    if data_online:
        title = "Enlaces Online"
        if '"l-latino2"' in data_online:
            title += " [LAT]"
        elif '"l-esp2"' in data_online:
            title += " [ESP]"
        elif '"l-vose2"' in data_online:
            title += " [VOSE]"

        patron = 'make_links.*?,[\'"]([^"\']+)["\']'
        matches = scrapertools.find_multiple_matches(data_online, patron)
        for i, code in enumerate(matches):
            enlace = show_links(code)
            links = servertools.findvideos(data=enlace[0])
            if links and "peliculas.nu" not in links:
                if i == 0:
                    extra_info = scrapertools.find_single_match(data_online, '<span class="tooltiptext">(.*?)</span>')
                    size = scrapertools.find_single_match(data_online, '(?i)TAMAÑO:\s*(.*?)<').strip()

                    if size:
                        title += " [%s]" % size
                    new_item = item.clone(title=title, action="", text_color=color1)
                    if extra_info:
                        extra_info = scrapertools.htmlclean(extra_info)
                        new_item.infoLabels["plot"] = extra_info
                        new_item.title += " +INFO"
                    itemlist.append(new_item)

                title = "   Ver vídeo en " + links[0][2]
                itemlist.append(item.clone(action="play", server=links[0][2], title=title, url=links[0][1]))
    scriptg = scrapertools.find_single_match(data, "<script type='text/javascript'>str='([^']+)'")
    if scriptg:
        gvideo = urllib.unquote_plus(scriptg.replace("@", "%"))
        url = scrapertools.find_single_match(gvideo, 'src="([^"]+)"')
        if url:
            itemlist.append(item.clone(action="play", server="directo", url=url, extra=item.url,
                                       title="   Ver vídeo en Googlevideo (Máxima calidad)"))

    # Patron descarga
    patron = '<div class="(?:floatLeft |)double(?:nuevo|)">(.*?)</div>(.*?)' \
             '(?:<div(?: id="mirrors"|) class="(?:contentModuleSmall |)mirrors">|<div class="section-box related-' \
             'posts">)'
    bloques_descarga = scrapertools.find_multiple_matches(data, patron)
    for title_bloque, bloque in bloques_descarga:
        if title_bloque == "Ver online":
            continue
        if '"l-latino2"' in bloque:
            title_bloque += " [LAT]"
        elif '"l-esp2"' in bloque:
            title_bloque += " [ESP]"
        elif '"l-vose2"' in bloque:
            title_bloque += " [VOSE]"

        extra_info = scrapertools.find_single_match(bloque, '<span class="tooltiptext">(.*?)</span>')
        size = scrapertools.find_single_match(bloque, '(?i)TAMAÑO:\s*(.*?)<').strip()

        if size:
            title_bloque += " [%s]" % size
        new_item = item.clone(title=title_bloque, action="", text_color=color1)
        if extra_info:
            extra_info = scrapertools.htmlclean(extra_info)
            new_item.infoLabels["plot"] = extra_info
            new_item.title += " +INFO"
        itemlist.append(new_item)

        if '<div class="subiendo">' in bloque:
            itemlist.append(item.clone(title="   Los enlaces se están subiendo", action=""))
            continue
        patron = 'class="separate.*? ([^"]+)".*?(?:make_links.*?,|href=)[\'"]([^"\']+)["\']'
        matches = scrapertools.find_multiple_matches(bloque, patron)
        for scrapedserver, scrapedurl in matches:
            if (scrapedserver == "ul") | (scrapedserver == "uploaded"):
                scrapedserver = "uploadedto"
            titulo = unicode(scrapedserver, "utf-8").capitalize().encode("utf-8")
            if titulo == "Magnet" and old_format:
                continue
            elif titulo == "Magnet" and not old_format:
                title = "   Enlace Torrent"
                scrapedurl = scrapertools.find_single_match(scrapedurl, '(magnet.*)')
                scrapedurl = urllib.unquote(re.sub(r'&amp;b=4', '', scrapedurl))
                itemlist.append(item.clone(action="play", server="torrent", title=title, url=scrapedurl,
                                           text_color="green"))
                continue
            if servertools.is_server_enabled(scrapedserver):
                try:
                    # servers_module = __import__("servers." + scrapedserver)
                    # Saca numero de enlaces
                    urls = show_links(scrapedurl)
                    numero = str(len(urls))
                    titulo = "   %s - Nº enlaces: %s" % (titulo, numero)
                    itemlist.append(item.clone(action="enlaces", title=titulo, extra=scrapedurl, server=scrapedserver))
                except:
                    pass

    itemlist.append(item.clone(channel="trailertools", title="Buscar Tráiler", action="buscartrailer", context="",
                               text_color="magenta"))
    if item.extra != "findvideos" and config.get_videolibrary_support():
        itemlist.append(Item(channel=item.channel, title="Añadir a la videoteca", action="add_pelicula_to_library",
                             extra="findvideos", url=item.url, infoLabels={'title': item.fulltitle},
                             fulltitle=item.fulltitle, text_color="green"))

    return itemlist
예제 #52
0
    return param


params = get_params()
mode = -1

try:
    mode = int(params['mode'])
except:
    pass

cacheToDisc = True
doRefresh = False

if mode == _COUNTRY:
    label = urllib.unquote_plus(params['label'])
    abrv = urllib.unquote_plus(params['abrv'])

    Country(label, abrv)

elif mode == _VPN:
    label = urllib.unquote_plus(params['label'])
    abrv = urllib.unquote_plus(params['abrv'])
    server = urllib.unquote_plus(params['server'])

    if len(server) == 0:
        server = vpn.GetBest(abrv)[3]
        doRefresh = True

    success = connect(label, abrv, server)
예제 #53
0
    ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),
                                     url=u,
                                     listitem=liz,
                                     isFolder=False)
    return ok


params = get_params()

url = None
name = None
mode = None
iconimage = None

try:
    url = urllib.unquote_plus(params["url"])
except:
    pass
try:
    name = urllib.unquote_plus(params["name"])
except:
    pass
try:
    mode = int(params["mode"])
except:
    pass
try:
    iconimage = urllib.unquote_plus(params["iconimage"])
except:
    pass
try:
예제 #54
0
def doDownload(url, dest, title, image, headers):

    headers = json.loads(urllib.unquote_plus(headers))

    url = urllib.unquote_plus(url)

    title = urllib.unquote_plus(title)

    image = urllib.unquote_plus(image)

    dest = urllib.unquote_plus(dest)

    file = dest.rsplit(os.sep, 1)[-1]

    resp = getResponse(url, headers, 0)

    if not resp:
        xbmcgui.Dialog().ok(title, dest, 'Download failed',
                            'No response from server')
        return

    try:
        content = int(resp.headers['Content-Length'])
    except:
        content = 0

    try:
        resumable = 'bytes' in resp.headers['Accept-Ranges'].lower()
    except:
        resumable = False

    #print "Download Header"
    #print resp.headers
    if resumable:
        print "Download is resumable"

    if content < 1:
        xbmcgui.Dialog().ok(title, file, 'Unknown filesize',
                            'Unable to download')
        return

    size = 1024 * 1024
    mb = content / (1024 * 1024)

    if content < size:
        size = content

    total = 0
    notify = 0
    errors = 0
    count = 0
    resume = 0
    sleep = 0

    if xbmcgui.Dialog().yesno(title + ' - Confirm Download', file,
                              'Complete file is %dMB' % mb,
                              'Continue with download?', 'Confirm',
                              'Cancel') == 1:
        return

    print 'Download File Size : %dMB %s ' % (mb, dest)

    #f = open(dest, mode='wb')
    f = xbmcvfs.File(dest, 'w')

    chunk = None
    chunks = []

    while True:
        downloaded = total
        for c in chunks:
            downloaded += len(c)
        percent = min(100 * downloaded / content, 100)
        if percent >= notify:
            xbmc.executebuiltin("XBMC.Notification(%s,%s,%i,%s)" %
                                (title + ' - Download Progress - ' +
                                 str(percent) + '%', dest, 10000, image))

            print 'Download percent : %s %s %dMB downloaded : %sMB File Size : %sMB' % (
                str(percent) + '%', dest, mb, downloaded / 1000000,
                content / 1000000)

            notify += 10

        chunk = None
        error = False

        try:
            chunk = resp.read(size)
            if not chunk:
                if percent < 99:
                    error = True
                else:
                    while len(chunks) > 0:
                        c = chunks.pop(0)
                        f.write(c)
                        del c

                    f.close()
                    print '%s download complete' % (dest)
                    return done(title, dest, True)

        except Exception, e:
            print str(e)
            error = True
            sleep = 10
            errno = 0

            if hasattr(e, 'errno'):
                errno = e.errno

            if errno == 10035:  # 'A non-blocking socket operation could not be completed immediately'
                pass

            if errno == 10054:  #'An existing connection was forcibly closed by the remote host'
                errors = 10  #force resume
                sleep = 30

            if errno == 11001:  # 'getaddrinfo failed'
                errors = 10  #force resume
                sleep = 30

        if chunk:
            errors = 0
            chunks.append(chunk)
            if len(chunks) > 5:
                c = chunks.pop(0)
                f.write(c)
                total += len(c)
                del c

        if error:
            errors += 1
            count += 1
            print '%d Error(s) whilst downloading %s' % (count, dest)
            xbmc.sleep(sleep * 1000)

        if (resumable and errors > 0) or errors >= 10:
            if (not resumable and resume >= 50) or resume >= 500:
                #Give up!
                print '%s download canceled - too many error whilst downloading' % (
                    dest)
                return done(title, dest, False)

            resume += 1
            errors = 0
            if resumable:
                chunks = []
                #create new response
                print 'Download resumed (%d) %s' % (resume, dest)
                resp = getResponse(url, headers, total)
            else:
                #use existing response
                pass
예제 #55
0
geshou=None
cat=None
fname=None
order=None
date=None
page=None
thumb=None
listpage=None
timelist=None

try:
    mode=int(params["mode"])
except:
    pass
try:
    url=urllib.unquote_plus(params["url"])
except:
    pass
try:
    name=urllib.unquote_plus(params["name"])
except:
    pass
try:
    area=urllib.unquote_plus(params["area"])
except:
    pass
try:
    artist=urllib.unquote_plus(params["artist"])
except:
    pass
try:
예제 #56
0
def UnquotePlus(sUrl):
    return urllib.unquote_plus(sUrl)
예제 #57
0
def lambda_handler(event, context):
    sock = create_socket()

    if not validate_uuid(TOKEN):
        logger.critical('{} is not a valid token. Exiting.'.format(TOKEN))
        raise SystemExit
    else:
        # Get the object from the event and show its content type
        bucket = event['Records'][0]['s3']['bucket']['name']
        key = urllib.unquote_plus(event['Records'][0]['s3']['object']['key']).decode('utf8')

        try:
            response = s3.get_object(Bucket=bucket, Key=key)
            logger.info('Fetched file {} from S3 bucket {}'.format(key, bucket))
            body = response['Body']
            data = body.read()
            # If the name has a .gz extension, then decompress the data
            if key[-3:] == '.gz':
                with tempfile.TemporaryFile() as temporary_file:
                    temporary_file.write(data)
                    temporary_file.seek(0)

                    with gzip.GzipFile(fileobj=temporary_file, mode="r") as gz:
                        data = gz.read()

            lines = data.split("\n")
            logger.info('Total number of lines: {}'.format(len(list(lines))))

            if validate_elb_log(str(key)) is True:
                # timestamp elb client:port backend:port request_processing_time backend_processing_time
                # response_processing_time elb_status_code backend_status_code received_bytes sent_bytes
                # "request" "user_agent" ssl_cipher ssl_protocol
                logger.info('File={} is AWS ELB log format. Parsing and sending to R7'.format(key))
                rows = csv.reader(data.splitlines(), delimiter=' ', quotechar='"')
                for line in rows:
                    request = line[11].split(' ')
                    idx = request[1].find('/', 9)
                    url = request[1][idx:]
                    parsed = OrderedDict()
                    parsed['timestamp'] = line[0]
                    parsed['elb_name'] = line[1]
                    parsed['client_ip'] = hashlib.sha256((line[2].split(':')[0] + SALT).encode()).hexdigest()
                    parsed['backend_ip'] = line[3].split(':')[0]
                    parsed['request_processing_time'] = line[4]
                    parsed['backend_processing_time'] = line[5]
                    parsed['response_processing_time'] = line[6]
                    parsed['elb_status_code'] = line[7]
                    parsed['backend_status_code'] = line[8]
                    parsed['received_bytes'] = line[9]
                    parsed['sent_bytes'] = line[10]
                    parsed['method'] = request[0]
                    parsed['url'] = url
                    parsed['user_agent'] = line[12]
                    parsed['ssl_cipher'] = line[13]
                    parsed['ssl_protocol'] = line[14]
                    mask = [
                        'elb_name',
                        'ssl_cipher'
                    ]
                    msg = ' '.join([
                        '"{}"'.format(str(value)) for value in mask_parsed(parsed, mask).values()
                    ])
                    sock.sendall('{} {}\n'.format(TOKEN, msg))
                logger.info('Finished sending file={} to R7'.format(key))
            elif validate_alb_log(str(key)) is True:
                logger.info('File={} is AWS ALB log format. Parsing and sending to R7'.format(key))
                rows = csv.reader(data.splitlines(), delimiter=' ', quotechar='"')
                total_run_count = 0
                good_run_count = 0
                bad_run_count = 0
                for line in rows:
                    total_run_count += 1
                    try:
                        request = line[12].split(' ')
                        url = request[1]
                        try:
                            http_version = request[2].split('/')[-1:][0]
                        except:
                            http_version = request[2]
                        parsed = OrderedDict()
                        parsed['type'] = line[0]
                        parsed['timestamp'] = line[1]
                        parsed['elb_id'] = line[2]
                        parsed['client_ip'] = hashlib.sha256((line[3].split(':')[0] + SALT).encode()).hexdigest()
                        parsed['client_port'] = line[3].split(':')[1]
                        parsed['target_ip'] = line[4].split(':')[0]
                        parsed['target_port'] = line[4].split(':')[1]
                        parsed['request_processing_time'] = line[5]
                        parsed['target_processing_time'] = line[6]
                        parsed['response_processing_time'] = line[7]
                        parsed['elb_status_code'] = line[8]
                        parsed['target_status_code'] = line[9]
                        parsed['received_bytes'] = line[10]
                        parsed['sent_bytes'] = line[11]
                        parsed['method'] = request[0]
                        parsed['url'] = url
                        parsed['http_version'] = http_version
                        parsed['user_agent'] = line[13]
                        parsed['ssl_cipher'] = line[14]
                        parsed['ssl_protocol'] = line[15]
                        parsed['target_group_arn'] = line[16]
                        parsed['trace_id'] = line[17]
                        mask = [
                            'elb_id',
                            'ssl_cipher',
                            'target_group_arn',
                            'trace_id'
                        ]
                        msg = ' '.join([
                            '"{}"'.format(str(value)) for value in mask_parsed(parsed, mask).values()
                        ])
                        sock.sendall('{} {}\n'.format(TOKEN, msg))
                        good_run_count += 1
                    except IndexError:
                        bad_run_count += 1
                        logger.info('[ALB logs] bad log line: {}'.format(line))
                        pass
                logger.info('[ALB logs] total run count: {}'.format(total_run_count))
                logger.info('[ALB logs] processed-and-sent run count: {}'.format(good_run_count))
                logger.info('[ALB logs] bad run count: {}'.format(bad_run_count))
                logger.info('Finished sending file={} to R7'.format(key))
            elif validate_cf_log(str(key)) is True:
                # date time x-edge-location sc-bytes c-ip cs-method cs(Host)
                # cs-uri-stem sc-status cs(Referer) cs(User-Agent) cs-uri-query
                # cs(Cookie) x-edge-result-type x-edge-request-id x-host-header
                # cs-protocol cs-bytes time-taken x-forwarded-for ssl-protocol
                # ssl-cipher x-edge-response-result-type
                logger.info('File={} is AWS CloudFront log format. Parsing and sending to R7'.format(key))
                rows = csv.reader(data.splitlines(), delimiter='\t', quotechar='"')
                for line in rows:
                    # Skip headers and lines with insufficient values
                    if len(line) < 23:
                        continue
                    msg = "\"{0}T{1}Z\" x_edge_location=\"{2}\"" \
                          " sc_bytes=\"{3}\" c_ip=\"{4}\" cs_method=\"{5}\"" \
                          " cs_host=\"{6}\" cs_uri_stem=\"{7}\" sc_status=\"{8}\"" \
                          " cs_referer=\"{9}\" cs_user_agent=\"{10}\" cs_uri_query=\"{11}\"" \
                          " cs_cookie=\"{12}\" x_edge_result_type=\"{13}\"" \
                          " x_edge_request_id=\"{14}\" x_host_header=\"{15}\"" \
                          " cs_protocol=\"{16}\" cs_bytes=\"{17}\" time_taken=\"{18}\"" \
                          " x_forwarded_for=\"{19}\" ssl_protocol=\"{20}\"" \
                          " ssl_cipher=\"{21}\" x_edge_response_result_type=\"{22}\"\n" \
                        .format(*line)
                    sock.sendall('{} {}\n'.format(TOKEN, msg))
                logger.info('Finished sending file={} to R7'.format(key))
            elif validate_ct_log(str(key)) is True:
                logger.info('File={} is AWS CloudTrail log format. Parsing and sending to R7'.format(key))
                cloud_trail = json.loads(data)
                for event in cloud_trail['Records']:
                    sock.sendall('{} {}\n'.format(TOKEN, json.dumps(event)))
                logger.info('Finished sending file={} to R7'.format(key))
            else:
                logger.info('File={} is unrecognized log format. Sending raw lines to R7'.format(key))
                for line in lines:
                    sock.sendall('{} {}\n'.format(TOKEN, line))
                logger.info('Finished sending file={} to R7'.format(key))
        except Exception as e:
            logger.error('Exception: {}'.format(e))
        finally:
            sock.close()
            logger.info('Function execution finished.')
예제 #58
0
    def sources(self, url, hostDict, hostprDict):
        try:
            sources = []

            if url == None: return sources

            data = urlparse.parse_qs(url)
            data = dict([(i, data[i][0]) if data[i] else (i, '')
                         for i in data])
            title = data['tvshowtitle'] if 'tvshowtitle' in data else data[
                'title']
            imdb = data['imdb']
            aliases = eval(data['aliases'])
            headers = {}
            if 'tvshowtitle' in data:
                url = self.searchShow(title, int(data['season']),
                                      int(data['episode']), aliases, headers)
            else:
                url = self.searchMovie(title, data['year'], aliases, headers)

            result = client.request(url, headers=headers, timeout='10')
            result = client.parseDOM(result, 'title')[0]

            if '%TITLE%' in result: raise Exception()

            r = client.request(url,
                               headers=headers,
                               output='extended',
                               timeout='10')

            if not imdb in r[0]: raise Exception()

            cookie = r[4]
            headers = r[3]
            result = r[0]

            try:
                r = re.findall('(https:.*?redirector.*?)[\'\"]', result)
                for i in r:
                    try:
                        sources.append({
                            'source':
                            'gvideo',
                            'quality':
                            directstream.googletag(i)[0]['quality'],
                            'language':
                            'en',
                            'url':
                            i,
                            'direct':
                            True,
                            'debridonly':
                            False
                        })
                    except:
                        pass
            except:
                pass

            try:
                auth = re.findall('__utmx=(.+)', cookie)[0].split(';')[0]
            except:
                auth = 'false'
            auth = 'Bearer %s' % urllib.unquote_plus(auth)

            headers['Authorization'] = auth
            headers[
                'Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'
            headers[
                'Accept'] = 'application/json, text/javascript, */*; q=0.01'
            headers['Cookie'] = cookie
            headers['Referer'] = url

            u = urlparse.urljoin(self.base_link, self.streampost)

            action = 'getEpisodeEmb' if '/episode/' in url else 'getMovieEmb'

            elid = urllib.quote(
                base64.encodestring(str(int(time.time()))).strip())

            token = re.findall("var\s+tok\s*=\s*'([^']+)", result)[0]

            idEl = re.findall('elid\s*=\s*"([^"]+)', result)[0]
            post = {
                'action': action,
                'idEl': idEl,
                'token': token,
                'elid': elid
            }
            post = urllib.urlencode(post)

            with requests.session() as s:
                try:
                    headers_request = {
                        'referer':
                        url,
                        'user-agent':
                        'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
                        ' AppleWebKit/537.36 (KHTML, like Gecko) '
                        'Chrome/63.0.3239.84 Safari/537.36'
                    }
                    data = {
                        'action': 'getEpisodeEmb',
                        'idEl': idEl,
                        'token': token,
                        'nopop': ''
                    }
                    p = s.post(self.base_link + self.streampost,
                               data=data,
                               headers=headers_request)
                except:
                    print("Unexpected error in Flix Sources Script:",
                          sys.exc_info()[0])
                    pass

            r = str(json.loads(p.text))
            r = re.findall('\'(http.+?)\'', r) + re.findall('\"(http.+?)\"', r)

            for i in r:
                try:
                    if 'googleapis' in i:
                        sources.append({
                            'source': 'GVIDEO',
                            'quality': 'SD',
                            'language': 'en',
                            'url': i,
                            'direct': True,
                            'debridonly': False
                        })
                    else:
                        valid, hoster = source_utils.is_host_valid(i, hostDict)
                        urls, host, direct = source_utils.check_directstreams(
                            i, hoster)
                        if valid:
                            for x in urls:
                                sources.append({
                                    'source': host,
                                    'quality': x['quality'],
                                    'language': 'en',
                                    'url': x['url'],
                                    'direct': direct,
                                    'debridonly': False
                                })
                        else:
                            sources.append({
                                'source': 'CDN',
                                'quality': 'SD',
                                'language': 'en',
                                'url': i,
                                'direct': True,
                                'debridonly': False
                            })

                except:
                    pass

            return sources
        except:
            return sources
예제 #59
0
 def _get_valuelist(self):
     data = self.strvaluelist.split(',')
     result = []
     for d in data:
         result.append(urllib.unquote_plus(d))
     return result
예제 #60
0
 def _parse_argv( self ):
     # call _Info() with our formatted argv to create the self.args object
     exec "self.args = _Info(%s)" % ( sys.argv[ 2 ][ 1 : ].replace( "&", ", " ), )
     self.args.download_url = urllib.unquote_plus( self.args.download_url )
     self.args.repo = urllib.unquote_plus( self.args.repo )