Agregue miles de clips a una lista de reproducción de YouTube desde un canal de Telegram

Con la compra de un televisor con la función de visualización de YouTube y una suscripción a muchos canales de Telegram donde se distribuyen clips diariamente, quería eliminar movimientos innecesarios entre mi teléfono móvil y el televisor para ver el contenido más reciente.



La idea es simple:

  • Dado : Uno o más canales de creación de contenido de Telegram con carga diaria de los últimos clips.
  • Tarea : cree una lista de reproducción en su YouTube con todos estos clips y capture automáticamente otros nuevos.
  • Herramientas : Google Apps Script (GAS), API de YouTube



Exportar historial de canales de Telegram


Estamos buscando un canal de Telegram adecuado que publique publicaciones con clips de YouTube (por ejemplo, tome @fresh_farsh).

En la esquina superior derecha hay tres puntos: " Exportar historial del canal ".


Para la lista de enlaces, solo necesitamos texto, por lo que desmarcamos todas las casillas y establecemos el período máximo de carga, es decir, " desde el primer mensaje hasta la fecha actual ".


La carpeta ChatExport se carga , dentro de varios archivos de mensajes numerados (2,3,4 ...). Html , la cantidad de archivos depende de la cantidad de contenido del canal.


Analizar un canal en una hoja de cálculo de Google


Necesitamos hacer una lista de enlaces de YouTube para agregar a la hoja de cálculo de Google. Elegí este sitio .

Ingrese la expresión regular en la línea superior:

">(https:\/\/<a href="about:blank">www.youtube.com\/.*</a>?)<\/a>|">(https:\/\/youtu.be\/.*?)<\/a>

A continuación, insertamos el texto de todos los mensajes (2,3,4) .html en una fila. En el panel derecho, el resultado es visible.

Haga clic en el botón para cargar el resultado.


Presione " Incluir coincidencia completa en los datos exportados " para que no se descarguen coincidencias innecesarias. Seleccionamos CSV , descargamos.


Crea una hoja de cálculo de Google.

Copiamos CSV en él , eliminamos líneas innecesarias, traemos todos los enlaces a youtu.be


Crea un canal de lista de reproducción, API de YouTube


Vamos a YouTube .

En la esquina superior derecha, haz clic en el ícono de la cuenta - " Crear canal ".


Se nos ocurre un nombre, recuerde la ID del canal de la barra de direcciones:
https://www.youtube.com/playlist?list=<ID CHANNEL>

Ahora necesitamos habilitar la API de YouTube.
Creamos el proyecto de una de las formas:

  • Seguimos el enlace , luego seleccionamos " API y servicios - Panel de control - Crear proyecto "
  • Al hacer clic en el enlace de inmediato .

Denominamos el proyecto, haga clic en " Crear ".

A continuación, haga clic en " Habilitar API y servicios ", busque " YouTube Data API v3 " - Habilitar .

Entonces, la API está incluida .

Regresamos a la mesa de Google.

" Herramientas - editor de script ".


Pegamos el código, donde en el idCHannel insertamos la ID de nuestro canal, " Archivo - Guardar " (CTRL + S).


Código fuente
idCHannel = 'PLZqUj_5dkPHaAYSECFNOKqnsr2JypZnoo' // ID 

//     Google    YouTube
function fromSheetToYouTube(){
  //    
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var s = ss.getSheets()[0]
  //      
  var data = s.getDataRange().getValues()
  //   . 
  for (var d=1; d<=200; d++) {
    try {
      YouTube.PlaylistItems.insert({
        snippet: {
          playlistId: idCHannel,
          resourceId: {
            kind: "youtube#video",
            videoId: data[d][0].replace('https://youtu.be/','')
          }
        }
      }, "snippet")
      //     B  ,   
      s.getRange("B"+parseInt(d+1)).setValue('')
      //      
      Utilities.sleep(1000)
      //   15    50 
      if (d%50 == 0) Utilities.sleep(15000)
    } catch (e) {
      console.error(e);
    }
  }
}


Ahora necesitamos conectar la API a nuestro script.

" Recursos - Funciones avanzadas de Google - API de datos de YouTube - Activado ".



Ahora estamos listos para ejecutar el script.

En el menú desplegable " Seleccionar función " , seleccione " fromSheetToYouTube ". Haga clic en el

triángulo " Ejecutar " a la izquierda .

Si todo está en orden y no hay errores rojos, la " Función de ejecución de SheetToYouTube ... " está activada , entonces nuestro script se está ejecutando.

Se agregan clips, puede consultar la lista de reproducción en paralelo.

Agregar va a una velocidad de 1 clip por segundo, además de pausar cada 50 clips (por defecto 15 segundos).

Después de la ejecución, puede ver el registro de errores en el menú " Ver - Registros " o presionando "CTRL + ENTRAR", también hay un enlace para ver todos los errores de inicio guiónllamado „ Barra de herramientas de Script de aplicaciones"

Si vemos el error" La solicitud no se puede completar porque ha excedido su cuota ", esto significa que hemos excedido la cuota diaria para las operaciones de API.

Formas de exportar clips. Cuotas


YouTube tiene restricciones de API llamadas cuotas .

Descripción de las cuotas de YouTube aquí .

El resto de las cuotas se puede ver aquí en los gráficos (es mejor establecer el intervalo de tiempo inmediatamente más pequeño para mayor claridad).

Lo que necesitamos saber de la descripción sobre las cuotas:
Los proyectos que habilitan la API de datos de YouTube tienen una asignación de cuota predeterminada de 10 mil unidades por día
10,000 cuotas por día .

Una operación de escritura tiene un costo de aproximadamente 50 unidades
Una operación de escritura tiene un costo de 50 cuotas.

Si calcula la calculadora de cuotas , entonces una operación de agregar un video a la lista de reproducción playlistItems-insert nos dejará un poco más de 50 cuotas si el fragmento está habilitado.

Total obtenemos 10000/53 sobre 188 clips.

Si por alguna razón no hay acceso al clip o el autor lo eliminó, la solicitud se desperdiciará, gastando una cuota de lectura.
Es decir, teniendo en cuenta el porcentaje de videos "inaccesibles / eliminados", podemos enviar unos 180 clips en un día .

Veamos todas las opciones para descargar clips, desde los más lentos hasta los más efectivos.


  1. , .
    — “ — URL», , " ".

    , . Selenium IDE — Katalon, Katalon Recorder (Selenium IDE++ Chrome Firefox)
  2. 180
    .
    , 15 , 15:00 180 .
  3. 180
    Google: "", "1".

    "" , "1", , "", ( ).

    fromSheetToYouTube ( ""), "1".

    "" — " — — ".



    " " .

    "1" "".

    "1" "".

    ""


    "".


    " ".

    .

    : 5-6 1000 .

    , , .



    1. .
    2. Google , IP Google .


    VPN IP ( ).

    IP+VPN .

    , , .



    .

    TODO

    " " API Google (Google Sheets API v4) R googlesheets4.
  4. :

    • Google (. ).
    • .
  5. 50 . !
    , .

    YouTube , ID ( 50 ).
    : https://www.youtube.com/watch_videos?video_ids=<ID1,ID2,ID3>

    , , ID.

    https://www.youtube.com/watch?v=jSPUkvjaiBs&list=< ID>
    : https://www.youtube.com/playlist?disable_polymer=true&list=< ID>

    disable_polymer .

    , "" ( 3 — «»).


    : 50 , .

    :

    • .
    • ! 50 .

Telegram GAS


Si este es nuestro canal o nos contactamos con el administrador del canal, desde donde se analizaron los clips y accedió a cooperar, puede escribir un pequeño bot que rastree los nuevos clips del canal y los agregue a nuestra lista de reproducción de YouTube.

Hacemos el bot de acuerdo con las instrucciones , se nos ocurre el nombre. Después de crear el bot, necesitamos un token del formulario 123456789: ABCD ...

Entramos en nuestra tabla de Google en el editor de scripts.

Puede usar el mismo proyecto que nuestro script fromSheetToYouTube anterior . Insertamos la

función doPost , capturará los mensajes del bot en la entrada, analizará los enlaces con el normal y agregará una lista de reproducción a nuestro YouTube.

Código fuente
//     Telegram
function doPost(e) {
  //     JSON
  var inp = JSON.parse(e.postData.contents)
  //   .   ,  channel_post,      message
  if (typeof inp.channel_post === 'undefined'){
    var inpTxt = inp.message.text
  }else{
    var inpTxt = inp.channel_post.text
  }
  //   
  var y = /(?<=youtube.com\/watch\?v=)(.*?)$|(?<=youtu.be\/)(.*?)$/.exec(inpTxt)[0]
  try {
    YouTube.PlaylistItems.insert({
      snippet: {
        playlistId: idCHannel, // 
        resourceId: {
          kind: "youtube#video",
          videoId: y // 
        }
      }
    }, "snippet")
      } catch (e) {
        console.error(e);
      }
}


Agregado, guardado, debe publicarse para obtener un enlace de acceso.

Haga clic en " Publicar - Implementar como aplicación web ... "

Seleccione los menús desplegables, como en la captura de pantalla.


A continuación, necesitamos el contenido de todo el enlace https

: //script.google.com/macros/s ... Una vez que tengamos el token bot y un enlace a nuestra aplicación, podemos vincularlos a través de webhook .

https://api.telegram.org/bot<BOT TOKEN> / setWebHook? url = <ENLACE A LA APLICACIÓN>
Se debe mostrar un mensaje

{"ok":true,"result":true,"description":"Webhook was set"}

Escribiré de inmediato que restablecer un webhook (desatar el bot de la aplicación) se hace así: https://api.telegram.org/bot <BOTToken> /
setWebHook

{"ok":true,"result":true,"description":"Webhook was deleted"}

Cómo omitir el bloqueo

en una serie de proveedores, todo lo relacionado con el funcionamiento del telegrama a través de un navegador está bloqueado . En consecuencia, una llamada a https://api.telegram.org/ mostrará " No se puede acceder al sitio ".

Aquí la VPN nos ayudará, utilicé el Proxy VPN gratuito de Hotspot Shield: extensión VPN ilimitada para Google Chrome

Entonces, nuestro bot está conectado al script y si escribe algo en el bot, la función doPost lo detectará y procesará.

La estructura de entrada de los mensajes JSON está aquí .

En principio, algunas de estas funciones serán suficientes para algunas personas: nos suscribimos a muchos canales, analizamos todo en una lista de reproducción y luego enviamos nuevas publicaciones a los bots desde todos los canales y sabemos que se agregarán instantáneamente a nuestra lista de reproducción.

Automatización

Para automatizar el proceso, agregue el bot al canal por el administrador, después de leer sobre las políticas de privacidad aquí .

Ahora, con una nueva publicación en el canal, nuestro script recibirá

JSON.parse(e.postData.contents).channel_post.text

e es el parámetro de entrada.

Cuando se envía desde un bot, respectivamente

JSON.parse(e.postData.contents).message.text

A su discreción, puede fijar la verificación de la existencia de clips, repeticiones, registros en celdas, etc., utilizando el manual .

Recuerde que el GAS no se procesa en el primer inicio inmediatamente, sino después de unos 10-30 segundos, por lo que su primer mensaje al bot no llegará de inmediato.

Conclusión


Entonces, hemos aprendido varias formas de agregar clips.

Además, tenemos un bot de Telegram adjunto al canal, capaz de captar mensajes tanto del canal como dirigidos a él, analizarlos en GAS y agregarlos a la lista de reproducción de YouTube.
El problema esta resuelto.

Fuentes


Descripción de todos los métodos de trabajo con los bots de Telegram aquí .
Referencia de la API de YouTube aquí
Todos los equipos de Google Apps Script aquí

All Articles