Saltar al contenido

¿Cómo obtengo un video de YouTube aleatorio con la API de YouTube?

Sé libre de divulgar nuestros tutoriales y códigos con otro, danos de tu ayuda para aumentar esta comunidad.

Solución:

Paso 1: crear clave API

  1. Crea una cuenta de Google
  2. Visita: https://console.developers.google.com/
  3. Crear un nuevo proyecto: haga clic en Crear nuevo proyecto en el menú principal y asígnele un nombre
  4. Ahora active la API de YoutTubeData: haga clic en ella y habilítela.
  5. Inserte sus aplicaciones-información
  6. Haga clic en “crear credenciales”
  7. Haga clic en ¿qué necesito?
  8. Anote su clave API

Ahora puede acceder a la API de YouTube.

Paso 2: use la API de YouTube para rastrear videos

En este paso usamos la API de YouTube para obtener VideoId aleatorios. Con las siguientes muestras de código, obtendrá 50 Apis aleatorias de la búsqueda de YouTube. Eso es lo máximo. Puede almacenarlos en una base de datos o devolver una ID aleatoria directamente.

Atención: Hay un límite de 30.000 unidades / segundo / usuario y 1.000.000 por día.

Codesamples


[C#-Example]

using System;
using System.Linq;
using System.Net;
using Newtonsoft.Json;

namespace YouTube

   class Program
   
    private static Random random = new Random();

    public static string RandomString(int length)
    
        const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        return new string(Enumerable.Repeat(chars, length)
          .Select(s => s[random.Next(s.Length)]).ToArray());
    

    static void Main(string[] args)
    
        var count = 50;
        var API_KEY = "YOUR KEY";
        var q = RandomString(3);
        var url = "https://www.googleapis.com/youtube/v3/search?key=" + API_KEY + "&maxResults="+count+"&part=snippet&type=video&q=" +q;

        using (WebClient wc = new WebClient())
        
            var json = wc.DownloadString(url);
            dynamic jsonObject = JsonConvert.DeserializeObject(json);
            foreach (var line in jsonObject["items"])
            
                Console.WriteLine(line["id"]["videoId"]);
                /*store your id*/
            
            Console.Read();
        
    


[PHP-Example]

function crawlVideos($count = 50)

    $q = $this->generateRandomString(3);
    $url = "https://www.googleapis.com/youtube/v3/search?key=" . self::API_KEY . "&maxResults=$count&part=snippet&type=video&q=" . $q;
    $JSON = file_get_contents($url);
    $JSON_Data_search = json_decode($JSON);
    foreach ($JSON_Data_search->"items" as $result) 
        $videoId = ($result->"id"->"videoId");
        /*Insert video to your database*/
    


function generateRandomString($length = 10)

    return substr(str_shuffle(str_repeat($x = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length / strlen($x)))), 1, $length);

[Python-Example]

import json
import urllib.request
import string
import random

count = 50
API_KEY = 'your_key'
random = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(3))

urlData = "https://www.googleapis.com/youtube/v3/search?key=&maxResults=&part=snippet&type=video&q=".format(API_KEY,count,random)
webURL = urllib.request.urlopen(urlData)
data = webURL.read()
encoding = webURL.info().get_content_charset('utf-8')
results = json.loads(data.decode(encoding))

for data in results['items']:
    videoId = (data['id']['videoId'])
    print(videoId)
    #store your ids

Paso 3: Genere / devuelva su URL de video

Ahora lea una identificación aleatoria de la base de datos como:

SELECT 'id' 
FROM yttable
WHERE 1 ORDER BY RAND() LIMIT 1

Tu video aleatorio es:

https://www.youtube.com/embed/[random ID]

¡Divertirse!

Parece que no hay forma de hacer esto, sin embargo, hay formas de aproximarse a lo que está buscando. Consulte aquí para obtener ideas.

Las ideas básicas de esas páginas son usar el feed de cargas más recientes (si no le importa cuándo se cargó algo) o simplemente obtener un volcado de TODOS los videos de YouTube y seleccionar aleatoriamente una URL de esos.

Para citar al chico de la API de YouTube en el primer enlace:

Como han mencionado otros, ponemos a disposición los volcados de datos o similares. Toda su interacción con YouTube debe realizarse a través de la API estándar.

No puedo decir que tenga suficiente experiencia en estadísticas para sugerir cómo se puede recuperar una muestra de videos verdaderamente aleatoria. Sin embargo, creo que intentar generar identificadores de video de YouTube de 11 caracteres es probablemente el enfoque equivocado; hay demasiados identificadores de video inexistentes con los que te enfrentarás, y no creo que sea el mejor El uso de la API es realizar solicitudes que devolverán respuestas HTTP 404 el X% de las veces.

Es posible que tenga más suerte con solo usar la API para buscar palabras o frases que se seleccionan “al azar” y tomar una muestra de los resultados. Si hace eso, debería pensar en qué valor usar para el parámetro orderby = URL. El orden predeterminado es “relevancia”, lo que hará que los resultados principales sean los que nuestros algoritmos consideren más relevantes para sus términos de búsqueda. Esto podría sesgar sus resultados si siempre toma la primera entrada o similar. También puede ordenar por “publicado”, lo que le dará una secuencia de videos en orden inverso.

Saludos, -Jeff Posnick, equipo de API de YouTube en lo que respecta a randomyoutubevideo.net, esto es lo que dice la página “Acerca de” de ese sitio:

Entonces, ¿cómo podemos proporcionar enlaces verdaderamente aleatorios a videos de YouTube? Resulta que la interfaz de programación (API) de YouTube proporciona funciones adicionales que permiten descubrir videos mucho más aleatorios. Utilizando una serie de trucos, combinados con una pequeña manipulación del entramado del espacio-tiempo, hemos logrado crear un proceso que produce enlaces verdaderamente aleatorios a videos de YouTube.

La función aleatoria de YouTube en esta página actualmente usa un subconjunto de la base de datos. Con el tiempo, ampliaremos esta base de datos y, según la demanda, la pondremos a disposición de forma gratuita a través de una API.

Entiendo que esto significa que han estado extrayendo grandes listas de videos de la API y haciendo una base de datos de los cuales seleccionaron al azar.

¿Es un rastreador sucio una opción? Porque he usado un generador de enlaces de video de youtube aleatorio simple. Fue solo para acumular una gran base de datos de videos, no para producción.
Parece ser (muy) similar al enfoque de “youtuberandomvideo.com” como él lo describió.

import re, urllib
from random import randint

def random_str(str_size):
    res = ""
    for i in xrange(str_size):
        x = randint(0,25)
        c = chr(ord('a')+x)
        res += c
    return res

def find_watch(text,pos):
    start = text.find("watch?v=",pos)
    if (start<0):
        return None,None
    end = text.find(" ",start)
    if (end<0):
        return None,None

    if (end-start > 200): #silly heuristics, probably not a must
        return None,None

    return text[start:end-1], start


def find_instance_links():
    base_url = 'https://www.youtube.com/results?search_query='
    url = base_url+random_str(3)
    #print url

    r = urllib.urlopen(url).read()

    links = 

    pos = 0
    while True:
        link,pos =  find_watch(r,pos)
        if link == None or pos == None:
            break
        pos += 1
        #print link
        if (";" in link):
            continue
        links[link] = 1

    items_list = links.items()

    list_size = len(items_list)
    selected = randint(list_size/2,list_size-1)
    return items_list[selected][0]


for i in xrange(1000):
    link = find_instance_links()
    print link

Como puede ver, es bastante simplista y probablemente podría romperse fácilmente, pero IIRC logré obtener rápidamente miles de enlaces de video aleatorios, que era todo lo que necesitaba, y son solo unas pocas líneas de código …

Alguna explicación del código: (aleatorio-> pseudo aleatorio …)
1. Generación aleatoria de consultas de búsqueda (3 letras aquí)
2. Seleccionar al azar algún enlace de la mitad inferior de los enlaces de video (la motivación era evitar los comerciales)

Nota: El código es desordenado: solo debería servir como un ejemplo básico de la técnica, no del diseño de código adecuado y / o código elegante de Python.

Sección de Reseñas y Valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *