- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import os
- import sys
- import youtube_dl
- from urllib2 import urlopen
- import StringIO
- import cPickle as pickle
- FILE_DESCARGAS = "descargas.dat" #archivo donde se guardaran los links
- FORMAT_ASP = ["best", "worst", "bestaudio", "worstaudio", "bestvideo", "worstvideo"]
- EXTENSIONS = ["mp4", "flv", "webm", "3gp", "m4a", "mp3", "ogg", "aac", "wav"]
- class VideoDownloader(object):
- """
- Clase para la descarga de videos.
- """
- def Downloader(self, url, format_asp=None, continuedl=False):
- """
- Descarga el video de la url indicada, en el outpath indicado.
- format_asp es opcional.
- --format_asp = best, worst, bestaudio, worstaudio, bestvideo, worstvideo
- --extension = mp4, flv, webm, 3gp, m4a, mp3, ogg, aac, wav
- --continuedl = True|False (para continuar la descarga en donde la dejamos.
- """
- parameters = {"outtmpl": "%(title)s_%(format_id)s.%(ext)s"}
- if format_asp:
- parameters["format"] = format_asp
- if continuedl:
- parameters["continuedl"] = True
- ydl = youtube_dl.YoutubeDL( parameters )
- ydl.extract_info(url, True)
- def ContinueDownloader(self, url, outpath, format_asp=None):
- """
- Continua la descarga del video que no termino de descargarse.
- """
- return self.Downloader(url, outpath, format_asp, True)
- def ExtractInfo(self, url):
- """
- Obtiene la informacion de la url. retorna info
- """
- ydl = youtube_dl.YoutubeDL()
- return ydl.extract_info(url, False)
- def GetFormats(self, info):
- """
- Obtiene los distintos formatos disponibles del video
- con sus size. [ (format_id, format, size) ]
- """
- try:
- lista = info["formats"]
- except KeyError:
- return [
- (info.get("format_id", ""),
- info.get("format", ""),
- info.get("filesize", 0),
- info.get("ext", "") )
- ]
- formats = []
- for dic in lista:
- formats.append( (
- dic.get("format_id", ""),
- dic.get("format", ""),
- dic.get("filesize", 0),
- dic.get("ext", "")
- ) )
- return formats
- def GetTitle(self, info):
- """
- Obtiene el titulo del video
- """
- return info.get("title", "Sin_titulo")
- def GetDescription(self, info):
- """
- Obtiene la descripcion del video
- """
- return info.get("description", "")
- def Thumbnails(self, info):
- """Obtiene el link de la imagen que se muestra en el video.
- """
- return info.get("thumbnail", None)
- def WriteFile(self, data, filename):
- """Escribe en un archivo en disco.
- """
- f = file(filename, "wb")
- pickle.dump(data, f)
- f.close()
- def ReadFile(self, filename):
- """Lee un archivo del disco.
- """
- try:
- f = file(filename, "rb")
- data = pickle.load(f)
- f.close()
- except BaseException as e:
- self.WriteFile({}, filename)
- data = {}
- print(e)
- return data
- vd = VideoDownloader()
Descargar vídeos de YouTube y otros sitios
Código fuente Python para la descarga de vídeos de YouTube y otros sitios soportados. Para esto es necesaria la librería externa youtube-dl
Suscribirse a:
Entradas
(
Atom
)