Adicione milhares de clipes a uma lista de reprodução do YouTube a partir de um canal de Telegram

Com a compra de uma TV com a função de visualização do YouTube e a assinatura de muitos canais do Telegram, onde os clipes são organizados diariamente, eu queria remover movimentos desnecessários entre o meu telefone celular e a TV para assistir ao conteúdo mais recente.



A ideia é simples:

  • Dado : um ou mais canais de criação de conteúdo do Telegram com upload diário dos clipes mais recentes.
  • Tarefa : crie uma lista de reprodução no seu YouTube com todos esses clipes e capture automaticamente novos.
  • Ferramentas : Script do Google Apps (GAS), API do YouTube



Exportar histórico do canal de telegrama


Estamos procurando um canal de Telegram adequado que poste postagens com clipes do YouTube (por exemplo, use @fresh_farsh).

No canto superior direito, existem três pontos - " Exportar histórico do canal ".


Para a lista de links, precisamos apenas de texto, portanto , desmarcamos todas as caixas e definimos o período máximo de upload, ou seja, " da primeira mensagem até a data atual ".


A pasta ChatExport é carregada , dentro de vários arquivos de mensagens numeradas (2,3,4 ...) .Html , o número de arquivos depende da quantidade de conteúdo do canal.


Analisando um canal em uma planilha do Google


Precisamos fazer uma lista de links do YouTube para adicionar à planilha do Google. Eu escolhi este site .

Digite a expressão regular na linha superior:

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

Abaixo, inserimos o texto de todas as mensagens (2,3,4) .html em uma linha. No painel direito, o resultado é visível.

Clique no botão para fazer upload do resultado.


Pressione " Incluir correspondência completa nos dados exportados " para que correspondências desnecessárias não sejam descarregadas. Selecionamos CSV , descarregar.


Crie uma planilha do Google. Copiamos CSV

para ele , removemos linhas desnecessárias, trazemos todos os links para youtu.be


Crie um canal de lista de reprodução, API do YouTube


Nós vamos ao YouTube .

No canto superior direito, clique no ícone da conta - " Criar canal ".


Criamos um nome, lembre-se do ID do canal na barra de endereço:
https://www.youtube.com/playlist?list=<ID CHANNEL>

Agora precisamos ativar a API do YouTube.
Criamos o projeto de uma das seguintes maneiras:

  • Seguimos o link e selecionamos " API e serviços - Painel de controle - Criar projeto "
  • Ao clicar no link imediatamente .

Nomeamos o projeto, clique em " Criar ".

Em seguida, clique em " Ativar APIs e serviços ", procure " API de dados do YouTube v3 " - Ativar .

Portanto, a API está incluída .

Voltamos à tabela do Google.

" Ferramentas - editor de scripts ."


Colamos o código, onde no idCHannel inserimos o ID do nosso canal, " File - Save " (CTRL + S).


Código fonte
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);
    }
  }
}


Agora precisamos conectar a API ao nosso script.

" Recursos - Recursos avançados do Google - API de dados do YouTube - Ativado ".



Agora estamos prontos para executar o script.

No menu suspenso " Selecionar função " , selecione " fromSheetToYouTube ". Clique no

triângulo " Executar " à esquerda .

Se tudo estiver em ordem e não houver erros vermelhos, a função " Executando a função SheetToYouTube ... " está ativada , então o script está em execução.

Clips são adicionados, você pode verificar a lista de reprodução em paralelo.

A adição ocorre a uma velocidade de 1 clipe por segundo, além de uma pausa a cada 50 clipes (padrão 15 segundos)

Após a execução, você pode ver o log de erros no menu " Visualizar - Logs " ou pressionando "CTRL + ENTER", também há um link para visualizar todos os erros de inicialização roteirochamada „ barra de ferramentas Script de aplicativos"

Se virmos o erro" A solicitação não pode ser concluída porque você excedeu sua cota ", isso significa que excedeu a cota diária para operações de API.

Maneiras de exportar clipes. Quotas.


O YouTube tem restrições de API chamadas cotas .

Descrição das cotas do YouTube aqui .

O restante das cotas pode ser visto aqui nos gráficos (é melhor definir o intervalo de tempo imediatamente o menor para maior clareza).

O que precisamos saber da descrição sobre cotas:
Projetos que ativam a API de dados do YouTube têm uma alocação de cota padrão de 10 mil unidades por dia
10.000 cotas por dia .

Uma operação de gravação tem um custo de aproximadamente 50 unidades
Uma operação de gravação tem um custo de 50 cotas.

Se você calcular a calculadora de cotas , uma operação de adição de vídeo à playlistItems-insert da lista de reprodução nos deixará um pouco mais de 50 cotas se o snippet estiver ativado.

No total, temos 10000/53 sobre 188 clipes.

Se, por algum motivo, não houver acesso ao clipe ou o autor o excluir, a solicitação será desperdiçada, gastando uma cota de leitura.
Ou seja, considerando a porcentagem de vídeos "inacessíveis / excluídos", podemos enviar cerca de 180 clipes em um dia .

Vejamos todas as opções para baixar clipes do mais lento para o mais eficaz


  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


Se este é o nosso canal ou contatamos o administrador do canal, de onde os clipes foram analisados ​​e ele concordou em cooperar, você pode escrever um pequeno bot que rastreia novos clipes de canal e os adiciona à nossa lista de reprodução do YouTube.

Fazemos o bot de acordo com as instruções , criamos o nome. Depois de criar o bot, precisamos de um token no formato 123456789: ABCD ...

Entramos em nossa tabela do Google no editor de scripts.

Você pode usar o mesmo projeto que o nosso script fromSheetToYouTube anterior .

Nós inserimos a função doPost , ela captura as mensagens do bot na entrada, analisa os links com o normal e adiciona uma lista de reprodução ao nosso YouTube.

Código fonte
//     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);
      }
}


Adicionado, salvo, deve ser publicado para obter um link de acesso.

Clique em " Publicar - Implantar como aplicativo da Web ... "

Selecione os menus suspensos, como na captura de tela.


Em seguida, precisamos do conteúdo de todo o link https

: //script.google.com/macros/s ... Depois de termos o token de bot e um link para nosso aplicativo, podemos vinculá-los através do webhook .

https://api.telegram.org/bot<BOT TOKEN> / setWebHook? url = <LINK PARA O APLICATIVO>
Uma mensagem deve ser exibida

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

Escreverei imediatamente que a redefinição de um webhook (desatando o bot do aplicativo) é feita da seguinte maneira: https://api.telegram.org/bot<BOT TOKEN> /
setWebHook

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

Como ignorar o bloqueio

Em vários provedores, tudo relacionado à operação do Telegram por meio de um navegador está bloqueado . Consequentemente, uma chamada para https://api.telegram.org/ exibirá " Não foi possível acessar o site ".

Aqui a VPN nos ajudará, usei a extensão VPN Proxy Grátis Hotspot Shield - VPN ilimitada para o Google Chrome

Portanto, nosso bot está conectado ao script e, se você escrever algo no bot, a função doPost capturará e processará isso.

A estrutura de entrada das mensagens JSON está aqui .

Em princípio, algumas dessas funções serão suficientes para algumas pessoas - assinamos vários canais, analisamos tudo em uma lista de reprodução e enviamos novas postagens de todos os canais para os bots e sabemos que elas serão instantaneamente adicionadas à nossa lista de reprodução.

Automação

Para automatizar o processo, adicione o bot ao canal pelo administrador, depois de ler sobre as políticas de privacidade aqui .

Agora, com uma nova postagem no canal, nosso script receberá

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

e é o parâmetro de entrada.

Ao enviar de um bot, respectivamente

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

A seu critério, você pode verificar a existência de clipes, replays, registros nas células, etc., usando o manual .

Lembre-se de que o GAS não é processado na primeira inicialização imediatamente, mas após cerca de 10 a 30 segundos, sua primeira mensagem ao bot não será recebida imediatamente.

Conclusão


Então, aprendemos várias maneiras de adicionar clipes.

Além disso, temos um bot de telegrama conectado ao canal, capaz de capturar mensagens do canal e endereçadas a ele, analisá-las no GAS e adicioná-las à lista de reprodução do YouTube.
O problema está resolvido.

Fontes


Descrição de todos os métodos de trabalho com bots Telegram aqui .
Referência da API do YouTube aqui
Todas as equipes de scripts do Google Apps aqui

All Articles