Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
108 lines (90 sloc) 4.44 KB
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This file is part of spaintvs.
#
# spaintvs is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# spaintvs is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with spaintvs. If not, see <http://www.gnu.org/licenses/>.
# Se establece la Clase del objeto a3: que maneja los métodos para descargar
# los vídeos de la página de Antena 3 Televisón:
__author__="aabilio"
__date__ ="$12-oct-2012 11:03:38$"
import re
try: import simplejson as json
except: import json
from hashlib import md5
from time import sleep
import xml.etree.ElementTree
import urllib2
import urllib
import hmac
from cookielib import CookieJar
from secrets import A3PLAYER_SECRET
import Canal
import Descargar
import Utiles
import Error
url_validas = ["antena3.com", "lasexta.com", "lasextadeportes.com", "lasextanoticias.com", "atresplayer.com"]
class GrupoA3(Canal.Canal):
'''
Clase para manejar los vídeos de la Grupo Atresmedia (todos).
'''
def __init__(self, url="", opcs=None):
Canal.Canal.__init__(self, url, opcs, url_validas, __name__)
# Métodos propios del canal, start the party!
# Attributos disponibles:
# - self.url (url recibida)
# - self.opcs (diccionario de opciones) Ver Módulo Canal "_default_opcs" para opciones
# Métodos disponibles de clase Canal:
# - self.log() para mostrar por pantalla (está disponible si self.opcs["log"] es True)
# - self.debug() mostrar información de debug (está disponible si self.opcs["debug"] es True)
# Comunicación de errores con nivel de aplicación:
# - lanzar la excepción: raise Error.GeneralPyspainTVsError("mensaje")
def getInfo(self):
'''
Devuelve toda la información asociada a la URL recibida, de la siguiente forma:
{
"exito" : bool, <-- True (si se han obtenido videos)
"num_video" : int, <-- Número de vídeos obtenidos
"mensaje" : u"" , <-- Mensajes de la API (ej.: El vídeo no ha sido encontrado ["exito": False])
"videos" : [{
"url_video" : [], <-- Url de descarga de vídeo
"url_img" : "", <-- Url de la miniatura del video
"filename" : [], <-- Nombre de las partes para guardar en disco
"tipo" : "", <-- http, rtmp[e,..], mms, ...
"partes" : int, <-- Número de partes que tiene el vídeo
"rtmpd_cmd" : [], <-- Comando rtmpdump (si tipo == rtmp) sino None
"menco_cmd" : [], <-- Comando mencoder (Si tipo == rtmp) sino None
"url_publi" : "", <-- Url del vídeo de publicidad asociado al vídeo
"otros" : [], <-- Lista donde se pueden pasar cosas opcionales
"mensaje" : "" <-- Mensajes de la API
}], <-- Debe ser una lista de tamaño "num_videos"
"titulos" : [u""], <-- Titulos de los videos
"descs" : [u""] <-- Descripción de cada vídeo
}
Los valores que no se rellenen, deberán devolver None.
La clave "exito" es obligatoria, sino se puede encontrar el vídeo se puede devolver directamente:
{
"exito": False,
"mensaje": "No se pudo descargar el video"
}
"videos", "mesajes" y "descs" deben ser listas de cadenas (si no son None)
"url_video", "filename", "rtmp_cmd", "menco_cmd" (de "videos") deben ser listas de cadenas (si no son None)
'''
return {
"exito" : False,
"num_videos" : 0,
"mensaje" : u"Atresmedia no soportado por petición de sus servicios jurídicos",
"videos":None,
"titulos": None,
"descs": None
}