Página 1 de 2
Url de youtube para reproducir?
Publicado: 08 Jul 2017, 18:39
por Intel1
Hola a todos, tengo esta url:
https://youtube.googleapis.com/embed/?s ... autoplay=1
Pero no lo reproduce pelisalacarta pero en el navegador si reproduce.
He probado en el canal: Tengo una url pero no es reconocido
He visto la fuente de esa url, pero no encuentro algún link al video
Como puedo convertir esa url para que pueda ser reproducido?
Gracias

Re: Url de youtube para reproducir?
Publicado: 09 Jul 2017, 22:24
por robalo
Intel1 esa url solicita la información del vídeo de
Código: Seleccionar todo
https://docs.google.com/get_video_info?docid=<docid_de_la_solicitante>&eurl
En el cuerpo de la respuesta debería estar la información que necesitas para
...., action="play", server="directo", ....
Te recomiendo usar la última url "|https....." + "|Cookie=....." pero es cuestión de ir probando.
Para sacar la cookie usa 'cookies=False' en la petición.
Re: Url de youtube para reproducir?
Publicado: 10 Jul 2017, 23:47
por Intel1
robalo escribió: ↑09 Jul 2017, 22:24
Intel1 esa url solicita la información del vídeo de
Código: Seleccionar todo
https://docs.google.com/get_video_info?docid=<docid_de_la_solicitante>&eurl
En el cuerpo de la respuesta debería estar la información que necesitas para
...., action="play", server="directo", ....
Te recomiendo usar la última url "|https....." + "|Cookie=....." pero es cuestión de ir probando.
Para sacar la cookie usa 'cookies=False' en la petición.
Hola rabalo, gracias por responder, ya pude extraer la url gracias a un codigo del canal de hernan "doomtv":
Código: Seleccionar todo
doc_url = "http://docs.google.com/get_video_info?docid=" + id
response = httptools.downloadpage(doc_url, cookies=False)
cookies = ""
cookie = response.headers["set-cookie"].split("HttpOnly, ")
for c in cookie:
cookies += c.split(";", 1)[0] + "; "
data = response.data.decode('unicode-escape')
data = urllib.unquote_plus(urllib.unquote_plus(data))
headers_string = "|Cookie=" + cookies
url_streams = scrapertools.find_single_match(data, 'url_encoded_fmt_stream_map=(.*)')
streams = scrapertools.find_multiple_matches(url_streams,
'itag=(\d+)&url=(.*?)(?:;.*?quality=.*?(?:,|&)|&quality=.*?(?:,|&))')
itags = {'18':'360p', '22':'720p', '34':'360p', '35':'480p', '37':'1080p', '59':'480p'}
for itag, video_url in streams:
video_url += headers_string
video_urls.append([video_url, itags[itag]])
Este código me saca las url de los videos que necesito
Pero lo que no entiendo es como sabías que jalaba de aqui los datos:
https://docs.google.com/get_video_info? ... ante>&eurl
Yo no encontré alguna referencia de alguna url para hacerle el seguimiento
Gracias por la ayuda

Re: Url de youtube para reproducir?
Publicado: 12 Jul 2017, 06:41
por robalo
Mejor pregúntale a hernan que se ha currao el code para todos los vídeos, lo mio es un test
Código: Seleccionar todo
[....]
itemlist.append( Item(channel="tfm", action="ytApiVideoInfo", title="ytApiVideoInfo", url="https://youtube.googleapis.com/embed/?status=ok&allow_embed=0&ps=docs&partnerid=30&docid=0B3s2x7j5IvXlQTlCYW1Hcy1OckE&showinfo=0&autoplay=1"))
[....]
def ytApiVideoInfo(i):
from urllib import unquote as u
from core.httptools import downloadpage as dw
from core.scrapertools import find_single_match as f, find_multiple_matches as fa
docid = f(i.url, "docid=([^&]+)&")
r = dw("https://docs.google.com/get_video_info?docid=%s&eurl" % docid, cookies=False)
urls = fa(u(r.data), "\|(https.*?explorer),")
return [i.clone(title="Play", action="play", server="directo", url=urls[-1]+"|Cookie="+r.headers['set-cookie'])]
Re: Url de youtube para reproducir?
Publicado: 12 Jul 2017, 09:33
por Inter95
robalo escribió: ↑12 Jul 2017, 06:41
Mejor pregúntale a hernan que se ha currao el code para todos los vídeos, lo mio es un test
Código: Seleccionar todo
[....]
itemlist.append( Item(channel="tfm", action="ytApiVideoInfo", title="ytApiVideoInfo", url="https://youtube.googleapis.com/embed/?status=ok&allow_embed=0&ps=docs&partnerid=30&docid=0B3s2x7j5IvXlQTlCYW1Hcy1OckE&showinfo=0&autoplay=1"))
[....]
def ytApiVideoInfo(i):
from urllib import unquote as u
from core.httptools import downloadpage as dw
from core.scrapertools import find_single_match as f, find_multiple_matches as fa
docid = f(i.url, "docid=([^&]+)&")
r = dw("https://docs.google.com/get_video_info?docid=%s&eurl" % docid, cookies=False)
urls = fa(u(r.data), "\|(https.*?explorer),")
return [i.clone(title="Play", action="play", server="directo", url=urls[-1]+"|Cookie="+r.headers['set-cookie'])]
Una explicación parecida a esta es que estaba esperando con el problema que tenia con el canal que estaba creando, digo tenía porque al parecer modificaron algo en la web o dejaron de pagar la seguridad y ahora puedo obtener los datos sin problemas
No me animo a publicar ese canal, porque luego activan la seguridad y por el momento no tengo la capacidad para solventar ese problema.
Gracias por esta explicación, me cayo como anillo al dedo, con un par de ajustes lo aplique a un canal que estoy creando, que por cierto casi todos sus enlaces son de docs.google y fui capaz hasta de sacar todas las resoluciones de los videos, claro gracias a una fusión de este código con el de hernan. Gracias nuevamente y Saludos!

Re: Url de youtube para reproducir?
Publicado: 14 Jul 2017, 19:12
por bugatsinho
para este url '
https://youtube.googleapis.com/embed/?s ... 25FbG1UTTQ'
funciona lo mismo?
porque muchas paginas con contenido latino usan estos urls ahora.
Gracias
Re: Url de youtube para reproducir?
Publicado: 15 Jul 2017, 07:27
por robalo
Para solicitar la información del vídeo y la cookie sólo se necesita '
https://youtube.googleapis.com/embed/?docid=<docid>', el resto de parámetros no son necesarios.
Para que funcione cualquier url en el código del test, independiemente de la cantidad parámetros que incluya y de como estén ordenados, se tiene que modificar el patrón del scraper del 'codid'.
por
Re: Url de youtube para reproducir?
Publicado: 17 Jul 2017, 17:37
por Intel1
robalo escribió: ↑12 Jul 2017, 06:41
Mejor pregúntale a hernan que se ha currao el code para todos los vídeos, lo mio es un test
Código: Seleccionar todo
[....]
itemlist.append( Item(channel="tfm", action="ytApiVideoInfo", title="ytApiVideoInfo", url="https://youtube.googleapis.com/embed/?status=ok&allow_embed=0&ps=docs&partnerid=30&docid=0B3s2x7j5IvXlQTlCYW1Hcy1OckE&showinfo=0&autoplay=1"))
[....]
def ytApiVideoInfo(i):
from urllib import unquote as u
from core.httptools import downloadpage as dw
from core.scrapertools import find_single_match as f, find_multiple_matches as fa
docid = f(i.url, "docid=([^&]+)&")
r = dw("https://docs.google.com/get_video_info?docid=%s&eurl" % docid, cookies=False)
urls = fa(u(r.data), "\|(https.*?explorer),")
return [i.clone(title="Play", action="play", server="directo", url=urls[-1]+"|Cookie="+r.headers['set-cookie'])]
Hola robalo, estube probando tu código ytApiVideoInfo() y me funciona con muchas url, pero hay una que estoy probando (y algunas otras mas) y no funciona
URL:
https://youtube.googleapis.com/embed/?s ... autoplay=1
En esta parte:
Código: Seleccionar todo
r = dw("https://docs.google.com/get_video_info?docid=%s&eurl" % docid, cookies=False)
El r.data me devuelve esto:
status=fail&hl=es&allow_embed=0&ps=docs&partnerid=30&errorcode=150&reason=No+es+posible+reproducir+el+v%C3%ADdeo+en+este+momento.+Se+ha+excedido+el+n%C3%BAmero+de+reproducciones+permitidas.+Vuelve+a+intentarlo+en+otro+momento.×tamp=1500308551291&suberrorcode=4
Pero en la web el url reproduce sin problemas, y también en el archivo (get_video_info) de
https://docs.google.com/get_video_info está la data correcta.
Podría ser algo de headers o cookies?. He probado algunas cosas pero no puedo resolverlo.
Disculpa las molestias
Gracias.
Re: Url de youtube para reproducir?
Publicado: 17 Jul 2017, 18:14
por robalo
Qué web? La url no funciona en el navegador.
Re: Url de youtube para reproducir?
Publicado: 17 Jul 2017, 18:18
por Intel1