Streamer w。约5k追随者。试图使用JS从表中刮取数据?

问题描述:

我是一个中等大小的流媒体人员,他最近从StreamLabs中选取了忠诚度系统,其中包含每个用户积累在流中的积分。但是,我无法使用自己的JavaScript来自定义点系统并添加新功能,所以我想与StreamLabs系统一起使用另一个开放源代码抽动机器人(Phantombot)。我的观众太依附于StreamLabs叠加层,所以我不能只使用纯粹的Phantombot路径。Streamer w。约5k追随者。试图使用JS从表中刮取数据?

我有超过1,000个用户都有自己的需要转移的点数。 StreamLabs没有提供一种干净的方式来导出包含用户点数值的Excel文档。我检查,列出所有点的页面,它的结构是这样的:

<tbody> 
<tr> 
    <td class="table_name"> String </td> <!-- The name of the user --> 
    <td class="table__message"> Number </td> <!-- The user's amount of points --> 
    <td class="table__controls"> 
     <div class="pane-dropdown"> 
      <a class="pane-dropdown__toggle"> <!-- The cog opens the dropdown list --> 
       <span> 
        <i class="fa fa-cog"> <!-- There she is. --> 
         ::before 
        </i> 
       </span> 
      </a> 
      <div class="pane-dropdown__menu" style="display: none;"> 
       <span> 
        <ul class="pane-dropdown__list"> 
         <li> 
          <a class="pane-dropdown__link">Edit Points</a> 
         <li> 
         <li> 
          <a class="pane-dropdown__link warn">Block User</a> 
         </li> 
         <li> 
          <a class="pane-dropdown__link warn">Reset Points</a> 
         </li> 
        </ul> 
       </span> 
      </div> 
     </div> 
    </td> 
</tr> 
<!-- More table rows for each user --> 

这里是页面的外观像一个链接:

https://imgur.com/JSBFHYi

有没有一种方式,我循环浏览每个页面,为每个用户获取积分,并将这些信息放在一个有意义的格式中,例如Excel文档?

我知道我主要教给自己的基本JavaScript,并且具有良好的直觉 - 但像这样的项目完全超出了我的技能。我正在考虑使用for循环来为每个用户推送一个对象,其中有一个用于点和属性名称的属性,然后将这两个属性全部导出到一个.csv文档中。然而,我不知道该怎么做,或者甚至有可能(但如果它是冰棒,这是可能的),所以我认为这是可能的。任何在正确的方向微调将不胜感激。

我的想法是,当构建脚本时,类table_name和table__message可能是一个很好的开始 - 任何指导?

+2

一切都是可能的JS ......我们是在谈论一个简单的浏览器脚本或专业服务器端(的NodeJS)fetchings? –

+2

您是否检查过StreamLabs API? https://dev.streamlabs.com – Nope

+0

@Fran除了捐赠警报之外,streamlabs API并没有提供太多的东西,除此之外,它非常有限,我无法对他们没有为我创建的积分系统做任何事情他们自己 – Streamer

在browserside你可以遍历所有TR S,并得到他们的第一和第二儿童值:

const result = 
[...document.getElementsByTagName("tr")] 
.map(el => [ el.children[0].textContent, el.children[1].textContent ]) 

看来Streamlabs API有几个选项与点进行交互。通过实例

来看,“本集团获得积分”可能是你在找什么:

var data = JSON.stringify(false); 

var xhr = new XMLHttpRequest(); 
xhr.withCredentials = true; 

xhr.addEventListener("readystatechange", function() { 
    if (this.readyState === this.DONE) { 
    console.log(this.responseText); 
    } 
}); 

xhr.open("GET", "https://streamlabs.com/api/v1.0/points/group_get_points?access_token=access_token&channel=channel&usernames=usernames"); 

xhr.send(data); 

这将导致他们的点,类似这样的用户的数组:

[ 
    { 
    username: "sunny601", 
    points: 94 
    }, 
    { 
    username: "sunny602", 
    points: 103 
    } 
] 

见Streamlabs API Documentation on Points更多细节

+0

太棒了!问题 - 我应该用什么来运行这个脚本?有一个浏览器扩展,对吧?你有推荐吗?另外,你对我如何将它导出为Excel文档有什么看法?谢谢!!! – Streamer

+0

我从未使用过API,但是快速搜索发现了一个关于如何将JSON存储为CSV的小例子,然后您可以在Excel中打开它。 http://jsfiddle.net/hybrid13i/JXrwM/ - 你可以在一个定制的HTML页面上通过一个按钮在本地运行它,引用一个日志JS文件。或者使用NodeJs,我可以编写它的命令行版本。 – Nope

+0

哇。你真了不起。这是我可以在浏览器中运行的东西吗?我非常感谢所有的帮助。我只需要知道我可以去哪里/我应该用什么来从API运行脚本并复制数据。然后我可以运行从JSON到CSV的转换。 – Streamer