从电报频道向YouTube播放列表添加数千个剪辑

购买了具有YouTube观看功能的电视,并订阅了许多Telegram频道,每天都在这些频道中播放剪辑,因此,我想消除手机和电视之间不必要的移动,以观看最新的新鲜内容。



这个想法很简单:

  • 给出:一个或多个电报内容制作者频道,每天上传最新剪辑。
  • 任务:使用所有这些剪辑在YouTube上创建一个播放列表,并自动捕获新的剪辑。
  • 工具:Google Apps脚本(GAS),YouTube API



导出电报频道历史记录


我们正在寻找一个合适的电报频道来发布带有YouTube剪辑的帖子(例如,使用@fresh_farsh)。

在右上角有三个点-“ 导出频道历史记录 ”。


对于链接列表,我们仅需要文本,因此我们取消选中所有复选框并设置最大上传时间,即“ 从第一条消息到当前日期”


ChatExport文件夹被上载到几个编号的消息文件(2,3,4 ...)中


解析Google电子表格中的频道


我们需要列出要添加到Google电子表格的YouTube链接列表。我选择了这个网站

在第一行输入正则表达式:

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

在下面,我们连续插入所有消息(2,3,4).html的文本在右窗格中,结果可见。

点击按钮上传结果。


按“ 在导出的数据中包含完全匹配 ”,这样就不会卸载不必要的匹配。我们选择CSV,然后卸载。


创建一个Google电子表格。

我们将CSV复制到其中,删除不必要的行,将所有链接都添加到youtu.be


创建一个播放列表频道,YouTube API


我们去YouTube

点击右上角的帐户图标-“ 创建频道 ”。


我们想出 一个名字,记住地址栏中的频道ID
https : //www.youtube.com/playlist?list=< ID CHANNEL>

现在我们需要启用YouTube API。
我们通过以下方式之一创建项目:

  • 我们点击链接,然后选择“ API和服务-控制面板-创建项目
  • 通过立即单击链接

我们为项目命名,单击“ 创建”

接下来,点击“ 启用API和服务 ”,找到“ YouTube Data API v3 ”-启用

因此,包含API

我们返回到Google表格。

工具-脚本编辑器。”


我们粘贴代码,在idCHannel中插入频道ID,即“ 文件-保存 ”(CTRL + S)。


源代码
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);
    }
  }
}


现在,我们需要将API连接到脚本。

资源-高级Google功能-YouTube数据API-上。”



现在,我们准备运行脚本。

在“ 选择功能下拉菜单中,选择“ fromSheetToYouTube ”。单击

左侧运行三角形

如果一切正常,并且没有红色错误,则“正在运行函数fromSheetToYouTube ... ”处于打开状态,则我们的脚本正在运行。

添加了剪辑,您可以并行检查播放列表。

添加的速度为每秒1个剪辑,然后每50个剪辑暂停一次(默认为15秒)。

执行后,您可以在“ 查看-日志菜单中查看错误日志,或者按“ CTRL + ENTER”,还有一个链接可以查看所有启动错误脚本称为“ Apps脚本工具栏

如果我们看到错误“ 由于您已经超出配额请求无法完成 ”,这意味着我们已经超出了 API操作的每日配额

导出剪辑的方法。配额。


YouTube有称为配额的 API限制

YouTube配额的说明在此处

其余配额可以在此处的图表上看到(为清楚起见,最好将时间间隔立即设置为最小)。

我们需要从有关配额的描述中了解什么:
启用YouTube数据API的项目的默认配额分配为每天1万个单位
每天10,000个配额

写入操作的成本约为50个单位
一次写操作需要50个配额。

如果您计算配额计算器,那么在启用了代码段的情况下,将视频添加到播放列表playlistItems-insert的一项操作将给我们留下超过50个 配额

总共我们得到10000/53约188个剪辑。

如果由于某种原因无法访问该剪辑或作者删除了该剪辑,该请求将被浪费,花费一个阅读配额。
也就是说,考虑到“无法访问/删除”的视频的百分比,我们一天可以发送约180个剪辑

让我们看看从最慢到最有效下载剪辑的所有选项


  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


如果这是我们的频道,或者我们联系了解析片段的渠道管理员,并且他同意合作,那么您可以编写一个小型机器人来跟踪新的频道片段并将其添加到我们的YouTube播放列表中。

我们根据说明制作机器人,并命名。创建自动程序后,我们需要一个形式为123456789的令牌:ABCD ...

我们在脚本编辑器中进入Google表。

您可以使用与之前的fromSheetToYouTube脚本相同的项目

我们插入doPost函数,它将在输入中捕获来自机器人的消息,解析与常规消息的链接,并将播放列表添加到我们的YouTube。

源代码
//     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);
      }
}


添加,保存的必须发布才能获得访问链接。

单击“ 发布-部署为Web应用程序... ”,

选择下拉菜单,如屏幕截图所示。


接下来,我们需要整个链接https://script.google.com/macros/s ...的内容

一旦有了bot令牌和应用程序的链接,便可以通过webhook链接它们

https://api.telegram.org/bot<BOT令牌> / setWebHook?url = <链接到应用程序>
应该显示一条消息

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

我马上就写一个重置网络挂钩(从应用程序中删除机器人)的方法是这样的:https
: //api.telegram.org/bot<BOT TOKEN> / setWebHook

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

如何绕过阻止

在许多提供程序上,与通过浏览器进行Telegram操作有关的所有内容都被阻止。因此,对https://api.telegram.org/的呼叫将显示“ 无法访问该站点”

这里的VPN将为我们提供帮助,我使用了适用于Google Chrome的Hotspot Shield Free VPN Proxy-Unlimited VPN扩展。

因此,我们的机器人已连接到脚本,并且如果您在机器人中编写内容,doPost函数将捕获并处理它。

JSON消息的输入结构在此处

原则上,其中一些功能对于某些人来说就足够了-我们订阅了许多频道,将所有内容解析到一个播放列表中,然后将所有频道中的新帖子发送到漫游器,我们知道它们会立即添加到我们的播放列表中。

自动化

要自动化该过程,请在此处阅读有关隐私策略的信息后,由管理员将漫游器添加到渠道中

现在,在频道中有新帖子,我们的脚本将收到

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

e是输入参数。

从机器人发送时

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

您可以使用手册自行决定是否检查剪辑,重播,单元格等的存在

请记住,GAS不会在首次启动时立即处理,而是会在大约10-30秒后立即处理,因此不会立即向机器人发送您的第一条消息。

结论


因此,我们学习了几种添加剪辑的方法。

此外,我们在频道上附加了一个Telegram漫游器,可以捕获来自该频道并发给该频道的消息,并在GAS中对其进行解析并添加到YouTube播放列表中。
问题已经解决了。

资料来源


与电报工作的所有方法说明机器人在这里
YouTube API参考在这里
所有Google Apps脚本团队在这里

All Articles