Ajouter des milliers de clips à une liste de lecture YouTube à partir d'une chaîne Telegram

Avec l'achat d'un téléviseur avec la fonction de visualisation YouTube et un abonnement à de nombreuses chaînes Telegram où des clips sont présentés quotidiennement, je voulais supprimer les mouvements inutiles entre mon téléphone portable et le téléviseur pour regarder les derniers contenus récents.



L'idée est simple:

  • Éléments fournis : une ou plusieurs chaînes de création de contenu Telegram avec téléchargement quotidien des derniers clips.
  • Tâche : créez une liste de lecture sur votre YouTube avec tous ces clips et en attrapez automatiquement de nouveaux.
  • Outils : Google Apps Script (GAS), API YouTube



Exporter l'historique du canal télégramme


Nous recherchons une chaîne Telegram appropriée qui publie des publications avec des clips YouTube (par exemple, prenez @fresh_farsh).

Dans le coin supérieur droit, il y a trois points - " Exporter l'historique des chaînes ".


Pour la liste des liens, nous avons seulement besoin de texte, donc nous décochons toutes les cases et définissons la période de téléchargement maximale, c'est-à-dire " du premier message à la date actuelle ".


Le dossier ChatExport est téléchargé , à l'intérieur de plusieurs fichiers de messages numérotés (2,3,4 ...) .Html , le nombre de fichiers dépend de la quantité de contenu de la chaîne.


Analyser une chaîne dans une feuille de calcul Google


Nous devons dresser une liste de liens YouTube à ajouter au tableau Google. J'ai choisi ce site .

Entrez l'expression régulière dans la ligne supérieure:

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

Ci-dessous, nous insérons le texte de tous les messages (2,3,4) .html d'affilée. Dans le volet droit, le résultat est visible.

Cliquez sur le bouton pour télécharger le résultat.


Appuyez sur " Inclure la correspondance complète dans les données exportées " afin que les correspondances inutiles ne soient pas déchargées. Nous sélectionnons CSV , décharger.


Créez une feuille de calcul Google.

Nous y copions CSV , supprimons les lignes inutiles, apportons tous les liens vers youtu.be


Créer une chaîne de playlist, une API YouTube


Nous allons sur YouTube .

En haut à droite, cliquez sur l'icône du compte - " Créer une chaîne ".


Nous trouvons un nom, rappelez-vous l'ID de la chaîne dans la barre d'adresse:
https://www.youtube.com/playlist?list=< ID CHANNEL>

Maintenant, nous devons activer l'API YouTube.
Nous créons le projet de l'une des manières suivantes:

  • Nous suivons le lien , puis sélectionnons « API et services - Panneau de configuration - Créer un projet »
  • En cliquant sur le lien immédiatement .

Nous nommons le projet, cliquez sur " Créer ".

Ensuite, cliquez sur " Activer les API et les services ", recherchez " YouTube Data API v3 " - Activer .

Ainsi, l' API est incluse .

Nous revenons à la table Google.

" Outils - éditeur de script ."


Nous collons le code, où dans l'idCHannel nous insérons l'ID de notre chaîne, " File - Save " (CTRL + S).


Code source
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);
    }
  }
}


Maintenant, nous devons connecter l'API à notre script.

" Ressources - Fonctionnalités avancées de Google - API de données YouTube - Activé ."



Nous sommes maintenant prêts à exécuter le script.

Dans le menu déroulant " Sélectionner une fonction " , sélectionnez " fromSheetToYouTube ". Cliquez sur le

triangle " Exécuter " à gauche .

Si tout est en ordre et qu'il n'y a pas d'erreurs rouges, " Running function fromSheetToYouTube ... " est activé , alors notre script est en cours d'exécution.

Des clips sont ajoutés, vous pouvez vérifier la playlist en parallèle.

L'ajout se fait à une vitesse de 1 clip par seconde, plus une pause tous les 50 clips (par défaut 15 secondes).

Après l'exécution, vous pouvez voir le journal des erreurs dans le menu " Affichage - Journaux " ou en appuyant sur "CTRL + ENTRÉE", il existe également un lien pour afficher toutes les erreurs de démarrage scénarioappelé « Barre d'outils Apps Script«

Si nous voyons l'erreur« La demande ne peut pas être traitée car vous avez dépassé votre quota », cela signifie que nous avons dépassé le quota quotidien pour les opérations API.

Façons d'exporter des clips. Quotas.


YouTube a des restrictions d'API appelées quotas .

Description des quotas YouTube ici .

Le reste des quotas peut être vu ici sur les graphiques (il est préférable de définir l'intervalle de temps immédiatement le plus petit pour plus de clarté).

Ce que nous devons savoir de la description des quotas:
Les projets qui activent l'API YouTube Data ont une allocation de quota par défaut de 10 000 unités par jour
10 000 quotas par jour .

Une opération d'écriture a un coût d'environ 50 unités
Une opération d'écriture a un coût de 50 quotas.

Si vous calculez le calculateur de quotas , une opération d'ajout d'une vidéo à la playlist playlistItems-insert nous laissera un peu plus de 50 quotas si l'extrait est activé.

Au total, nous obtenons 10000/53 environ 188 clips.

Si pour une raison quelconque, le clip n'est pas accessible ou que l'auteur l'a supprimé, la demande sera gaspillée, dépensant un quota de lecture.
Autrement dit, compte tenu du pourcentage de vidéos «inaccessibles / supprimées», nous pouvons envoyer environ 180 clips en une journée .

Examinons toutes les options de téléchargement de clips du plus lent au plus efficace


  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


S'il s'agit de notre chaîne ou si nous avons contacté l'administrateur de la chaîne, d'où les clips ont été analysés et qu'il a accepté de coopérer, vous pouvez écrire un petit bot qui suit les nouveaux clips de chaîne et les ajoute à notre playlist YouTube.

Nous faisons le bot selon les instructions , nous trouvons le nom. Après avoir créé le bot, nous avons besoin d'un token du formulaire 123456789: ABCD ...

Nous allons dans notre table Google dans l'éditeur de script.

Vous pouvez utiliser le même projet que notre précédent script fromSheetToYouTube .

Nous insérons la fonction doPost , elle attrapera les messages du bot sur l'entrée, analysera les liens avec le normal et ajoutera une playlist à notre YouTube.

Code source
//     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);
      }
}


Ajouté, enregistré, doit être publié pour obtenir un lien d'accès.

Cliquez sur " Publier - Déployer en tant qu'application Web ... "

Sélectionnez les menus déroulants, comme dans la capture d'écran.


Ensuite, nous avons besoin du contenu de l'ensemble du lien https

: //script.google.com/macros/s ... Une fois que nous avons le jeton de robot et un lien vers notre application, nous pouvons les lier via webhook .

https://api.telegram.org/bot<BOT TOKEN> / setWebHook? url = <LIEN VERS L'APPLICATION>
Un message doit s'afficher

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

J'écrirai tout de suite que la réinitialisation d'un webhook (détacher le bot de l'application) se fait comme ceci: https://api.telegram.org/bot<BOT TOKEN> /
setWebHook

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

Comment contourner le blocage

Sur un certain nombre de fournisseurs, tout ce qui concerne le fonctionnement de Telegram via un navigateur est bloqué . En conséquence, un appel à https://api.telegram.org/ affichera « Impossible d'accéder au site ».

Ici, le VPN va nous aider, j'ai utilisé le proxy VPN gratuit Hotspot Shield - extension VPN illimitée pour Google Chrome

Donc, notre bot est connecté au script et si vous écrivez quelque chose dans le bot, la fonction doPost le détectera et le traitera.

La structure d'entrée des messages JSON est ici .

En principe, certaines de ces fonctions seront suffisantes pour certaines personnes - nous nous abonnons à de nombreuses chaînes, analysons tout dans une liste de lecture, puis envoyons de nouveaux messages de toutes les chaînes aux robots et nous savons qu'ils seront instantanément ajoutés à notre liste de lecture.

Automatisation

Pour automatiser le processus, ajoutez le bot au canal par l'administrateur, après avoir lu les politiques de confidentialité ici .

Maintenant, avec un nouveau message dans la chaîne, notre script recevra

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

e est le paramètre d'entrée.

Lors de l'envoi depuis un bot, respectivement

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

À votre discrétion, vous pouvez fixer la vérification de l'existence de clips, de relectures, de journaux dans les cellules, etc., à l'aide du manuel .

N'oubliez pas que le GAS n'est pas traité au premier démarrage immédiatement, mais après environ 10-30 secondes, donc votre premier message au bot ne viendra pas immédiatement.

Conclusion


Nous avons donc appris plusieurs façons d'ajouter des clips.

De plus, nous avons un bot Telegram attaché à la chaîne, capable d'attraper les messages à la fois de la chaîne et de lui être adressé, de les analyser dans GAS et de les ajouter à la liste de lecture YouTube.
Le problème est résolu.

Sources


Description de toutes les méthodes de travail avec les robots Telegram ici .
Référence de l'API YouTube ici
Toutes les équipes de script Google Apps ici

All Articles