SoloCodigo

Programación Web y Scripting => Python => Mensaje iniciado por: RadicalEd en Miércoles 3 de Diciembre de 2008, 19:23

Título: Descarga Videos de YouTube
Publicado por: RadicalEd en Miércoles 3 de Diciembre de 2008, 19:23
Un pequeño script para descargar Videos del YouTube
Código: Python
  1. #!/usr/bin/env python
  2. #Probado con un video de Dragon Ball Z
  3. #http://es.youtube.com/watch?v=MJoAZPTiWBA
  4. #Desarrollado por RadicalEd
  5. import re, sys, urllib2
  6. #se toman los datos ingresados por la linea de comandos
  7. arg = sys.argv
  8. #obtenemos el fuente de la pagina
  9. s = urllib2.urlopen(arg[1]).read()
  10. #Con expresiones regulares se obtiene todo lo que venga despues del 'video_id='
  11. m = re.search('(?<=video_id=).*', s)
  12. video = m.group(0)
  13. #Quitamos la comilla simple o doble que haya al final
  14. video = video.replace("';", '')
  15. video = video.replace('";', '')
  16. flv = urllib2.urlopen('http://www.youtube.com/get_video?video_id='+video)
  17. #Guardamos el archivo
  18. archiflv = open('video.flv', 'w')
  19. archiflv.write(flv.read())
  20. archiflv.close()
  21. #La siguiente línea se puede descomentar si tienes un linux instalado con el paquete ffmpeg
  22. #os.system('ffmpeg -i video.flv video.avi')
  23.  
Título: Re: Descarga Videos de YouTube
Publicado por: migue_1988 en Jueves 19 de Marzo de 2009, 17:31
Hola, me interesa mucho tu código pero no logro hacerlo andar, me sale este error:

Citar
Traceback (most recent call last):
  File "C:/Documents and Settings/Administrador/Escritorio/guardarvideoyoutube.py", line 10, in <module>
    s = urllib2.urlopen(arg[1]).read()
IndexError: list index out of range

Probé modificandolo para que se ingrese la dirección mediante raw_input, pero nada...

Se que esto fue posteado hace algún tiempo,  pero espero tu respuesta
Título: Re: Descarga Videos de YouTube
Publicado por: RadicalEd en Jueves 19 de Marzo de 2009, 17:33
Cómo utilizas el script???
De esta forma mola
script.py http://es.youtube.com/watch?v=MJoAZPTiWBA (http://es.youtube.com/watch?v=MJoAZPTiWBA" onclick="window.open(this.href);return false;)

Lo que te quizo decir es que le falta el parámetro de la url.
Título: Re: Descarga Videos de YouTube
Publicado por: migue_1988 en Martes 24 de Marzo de 2009, 23:56
Disculpa la ignorancia Edo, pero estoy iniciándome en Python y no logro hacer funcionar tu script.
Guardo tu codigo como ___.py y luego lo llamo desde otro guardado en la misma carpeta pero vuelvo a tener el mismo error.
Si podés modificarlo para poder ingresar los datos mediante raw_input() te lo agradeceré.
Saludos.
Título: Re: Descarga Videos de YouTube
Publicado por: RadicalEd en Miércoles 25 de Marzo de 2009, 13:40
Código: Python
  1. #!/usr/bin/env python
  2. #Probado con un video de Dragon Ball Z
  3. #http://es.youtube.com/watch?v=MJoAZPTiWBA
  4. #Desarrollado por RadicalEd
  5. import re, sys, urllib2
  6. #se toman los datos ingresados por la linea de comandos
  7. arg = sys.argv
  8. #Obtener los datos por medio de entrada
  9. url = raw_input('Introducir url: ')
  10. #obtenemos el fuente de la pagina
  11. #s = urllib2.urlopen(arg[1]).read()
  12. s = urllib2.urlopen(url).read()
  13. #Con expresiones regulares se obtiene todo lo que venga despues del 'video_id='
  14. m = re.search('(?<=video_id=).*', s)
  15. video = m.group(0)
  16. #Quitamos la comilla simple o doble que haya al final
  17. video = video.replace("';", '')
  18. video = video.replace('";', '')
  19. flv = urllib2.urlopen('http://www.youtube.com/get_video?video_id='+video)
  20. #Guardamos el archivo
  21. archiflv = open('video.flv', 'w')
  22. archiflv.write(flv.read())
  23. archiflv.close()
  24. #La siguiente linea se puede descomentar si tienes un linux instalado con el paquete ffmpeg
  25. #os.system('ffmpeg -i video.flv video.avi')
  26.  
Ojala te sirva.
Chao
Título: Re: Descarga Videos de YouTube
Publicado por: migue_1988 en Miércoles 25 de Marzo de 2009, 15:21
Gracias Edo, luego lo adapto, lo pruebo y te comento que tal.
Saludos.
Título: Re: Descarga Videos de YouTube
Publicado por: tabris en Sábado 4 de Abril de 2009, 18:00
mmmm sta interesante pero no me funciona
me sale este error:

video = m.group(0)
AttributeError: 'NoneType ' objet has no attribute 'group'

haber si alguien sabe como corregirlo gracias xD
Título: Re: Descarga Videos de YouTube
Publicado por: DRiMeR en Lunes 18 de Mayo de 2009, 17:28
Anda. Está muy apañado el script. Es curioso, pero con algunos videos funciona de maravilla, y con otros no.

Me he fijado en que el error que da es el típico HTTPError 500!! (número satánico xD) Server error...

Ese fallo lo da en esta línea:  flv = urllib2.urlopen('http://www.youtube.com/get_video?video_id='+video)

Por ejemplo, en la web que das en el mismo script, funciona:  http://es.youtube.com/watch?v=MJoAZPTiWBA (http://es.youtube.com/watch?v=MJoAZPTiWBA)

Pero luego hay otras que no, como por ejemplo esta:  http://www.youtube.com/watch?v=fBFFlL58UTM (http://www.youtube.com/watch?v=fBFFlL58UTM) (es la primera que he encontrado).

Yo lo que he pensado es que la dirección 'http://www.youtube.com/get_video?video_id='+video haya vesces que no exista. Pero no lo he podido comprobar, porque en el navegador no me da ningún fallo con este video que he puesto.
Título: Re: Descarga Videos de YouTube
Publicado por: RadicalEd en Lunes 18 de Mayo de 2009, 17:34
Gracias por el aporte, voy a revisar lo que dices.