2017-10-12 28 views
0

我是一箇中等大小的流媒體人員,他最近從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

回答

0

在browserside你可以遍歷所有TR S,並得到他們的第一和第二兒童值:

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

看來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