|
91
|
Programación / Scripting / Re: [Python] WS Downloader: ¡Descarga vídeos de YouTube!
|
en: 18 Noviembre 2010, 20:11 pm
|
Al principio traté de hacer una función que me limpiara todos los valores codificados, muy parecida a la que has puesto pero lastimosamente no me dio el resultado que esperaba ya que me complicó un poco más todo ( ¡Jejeje!). Con el resultado poco satisfactorio tomé la decisión de hacer la función usando listas, pues me sirvió y ayudó bastante para obtener la URL del vídeo más fácilmente, aunque como bien dices, no podía contemplar todos los valores posibles pero sí los estrictamente necesarios. Además podía establecer la igualdad que yo quisiera. Por ejemplo %7C le puse como valor <begin> Lo que me indicaba que allí empezaba el enlace hacia el servidor. ¡Jejejeje! De todos modos...¡Muchas gracias Novlucker!
|
|
|
92
|
Programación / Scripting / [Python] WS Downloader: ¡Descarga vídeos de YouTube!
|
en: 18 Noviembre 2010, 15:29 pm
|
#!/usr/bin/env python # -*- coding: utf-8 -*- # WS Downloader.py - v0.1 (Beta) # Autor(es): .:WindHack:. & swik # www.daw-labs.com | www.cibernodo.net # Registrado en SafeCreative # Licencia: Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 # 17/11/2010 import sys, urllib, os # # @Charset # Char = ['%3A','%2F','%26','%2C','%3D','%252C','%253A','%7C','%3F'] By = [':','/','&',',','=',',',':','<begin>','?'] # # URLDecode(sURL) # Descifra la URL teniendo en cuenta el Charset. # def URLDecode(sURL): for i in range(len(Char)): sURL = sURL.replace(Char[i],By[i]) return sURL # # GetSourceCode(sURL) # Obtiene el código de fuente del vídeo (sitio). # def GetSourceCode(sURL): try: URL = urllib.urlopen(sURL) sSource = URL.read() URL.close() return sSource except: print 'Error de conexión.' exit() # # GetIndexVideo(sSource,Tags) # Obtiene la posición de un "Tag" o etiqueta. # def GetIndexVideo(sSource,Tags): return sSource.find(Tags) # # GetVideoTitle(sSource) # Obtiene el título del vídeo. # def GetVideoTitle(sSource): sSource = sSource[2000:5500] Begin = GetIndexVideo(sSource,'<meta name="title" content="')+28 sSource = sSource[Begin:] End = GetIndexVideo(sSource,'>')-1 sSource = sSource[:End] if ' ' in sSource: sSource = sSource.replace(' ','_') return sSource # # GetVideoURL(sSource) # Obtiene la URL de descarga del vídeo. # def GetVideoURL(sSource): sSource = sSource[9000:30000] Begin = GetIndexVideo(sSource,'<begin>')+7 sSource = sSource[Begin:] End = GetIndexVideo(sSource,'id=')+19 sSource = sSource[:End]+'&title=Video(WS_Downloader)' return sSource # # GetSavePath(Title) # Obtiene la ruta en la cual se guardará el vídeo, teniendo en cuenta # el sistema operativo. # def GetSavePath(Title): if os.name == 'posix': return os.getenv('HOME')+'/'+Title+'.flv' if os.name == 'nt': return os.getenv('HOMEDRIVE')+'\\'+Title+'.flv' # # DownloadStatus(Bloque, Tamano, Total) # Muestra el estado de la descarga. # def DownloadStatus(Bloque, Tamano, Total): Cantidad = Bloque * Tamano / 1024000.0 Total = Total / 1024000.0 print 'Cantidad descargada: %s MB de %s MB ...' % (round(Cantidad,1),round(Total,1)) if Cantidad >= Total: print 'Descarga finalizada.' # # DownloadVideo(sURL, sName, sStatus) # Descarga el vídeo de los servidores de YouTube. # def DownloadVideo(sURL, sName, sStatus): try: Download = urllib.urlretrieve(sURL, sName, sStatus) return Download[0] except: print 'Error el descargar.' exit() def __main__(): __Help__ = ''' __ ______ ____ _ _ \ \ / / ___| | _ \ _____ ___ __ | | ___ __ _ __| | ___ _ __ \ \ /\ / /\___ \ | | | |/ _ \ \ /\ / / '_ \| |/ _ \ / _` |/ _` |/ _ \ '__| \ V V / ___) | | |_| | (_) \ V V /| | | | | (_) | (_| | (_| | __/ | \_/\_/ |____/ |____/ \___/ \_/\_/ |_| |_|_|\___/ \__,_|\__,_|\___|_| © Cibernodo & DaW - Labs Uso: ./WS_Downloader.py <Opción> <Id> Opciones: -D : Descargar video directamente. -G : Obtener URL de descarga. -help : Ver Ayuda. ''' try: Opt = sys.argv[1] if Opt == '-help': print __Help__ if len(sys.argv) > 2: Id = URLDecode(GetSourceCode('http://www.youtube.com/watch?v='+sys.argv[2])) Title = GetSavePath(GetVideoTitle(Id)) URL = GetVideoURL(Id) if Opt == '-G': print '======== Video URL ========\n',URL elif Opt == '-D': DownloadVideo(URL,Title,DownloadStatus) except: print __Help__ if __name__ == "__main__": __main__()
Más Información:DaW - Labs | WS Downloader: ¡Descarga vídeos de YouTube!Cibernodo | WS Downloader: ¡Descarga vídeos de YouTube!
|
|
|
95
|
Programación / Scripting / Re: [Python] Crear una lista a partir de una cadena
|
en: 15 Noviembre 2010, 04:55 am
|
El error es prácticamente una tontería. Está en que, pides la variable K como una cadena (str). #Introduccion de una cadena cadena = raw_input('Escribe una cadena: ') k = raw_input('Escribe un numero: ') # k = input('') lista= cadena.split() for i in range(len(lista)): #print len(lista[i]) if len(lista[i])==k: palabras+=1
En todo caso, podrías hacer un poco más limpio el código. Con el bucle for-in puedes recorrer directamente cada elemento de la lista. Por ejemplo: sString = raw_input('Escribe una cadena: ') List = sString.split() K = input('Escribe un numero: ') sWords = 0 for i in List: if len(i) == K: sWords += 1
Saludos.,
|
|
|
97
|
Programación / Scripting / Re: [Python] - Eliminar listas y par
|
en: 14 Noviembre 2010, 21:57 pm
|
No, no es así: Lo he estado probando a mi manera y no. El resultado debe ser así. [2, 5, 3] Mirando lo que significa remove. ME imagino que quitar, eliminar. Aquí hay tantas cosa que no se done pinchar. http://docs.python.org/search.html?q=removeGracias por tu tiempo. Perdón, fue error mío al no leer el enunciado del ejercicio. Entendí que se debía eliminar los números pares de la lista, cuando lo que pedían era remover los elementos que tuviesen un índice par. Bueno, creo que de esta manera funciona bien: List = [1, 2, 1, 5, 0, 3] i = 0 while (i < len(List)): del List[i] i += 1 print List
C:\Users\WindHack\Desktop\>PoC.py [2, 5, 3]
|
|
|
98
|
Programación / Scripting / Re: [Python] - Eliminar listas y par
|
en: 14 Noviembre 2010, 19:55 pm
|
El código está mal. Es así: List = [1,2,3,4,5,6,7,8,9,10] for i in List: if i % 2 == 0: List.remove(i) print List
|
|
|
99
|
Programación / Scripting / Re: [Python] Listas y números primos.
|
en: 14 Noviembre 2010, 04:25 am
|
Hay un error, no todos los números primos son los que dan como resto uno (1).
Tu código da como resultado: [1,3,5,7,9] cuando debería de dar [2,3,5,7]. Ya que uno (1) no es considerado ni primo, ni compuesto, la cuenta empieza desde dos (2), siendo este el primer y único número primo par.
|
|
|
100
|
Programación / Scripting / Re: [Python] Comparar listas de palabras
|
en: 14 Noviembre 2010, 03:26 am
|
Realmente el código no es extenso. A mí se me ocurrió hacerlo de la siguiente manera: sString = raw_input('Cadena: ') # Pedimos la cadena... sString = sString.lower() # Convertimos a minusculas... lListA = sString.split() # Creo la lista con todos los elementos de la cadena... lListB = [] # Lista vacia for i in lListA: # Recorro la lista original if i not in lListB: # Si el elemento no esta en la otra lista... lListB.append(i) #... lo agrego print lListB
|
|
|
|
|
|
|