Export SteamDB Search

Adds a button to export current search in SteamDB as TSV

  1. // ==UserScript==
  2. // @name Export SteamDB Search
  3. // @name:bg Експортиране на SteamDB търсене
  4. // @name:cs Exportovat vyhledávání SteamDB
  5. // @name:da Eksporter SteamDB-søgning
  6. // @name:de SteamDB-Suchen exportieren
  7. // @name:el Εξαγωγή αναζήτησης SteamDB
  8. // @name:en Export SteamDB Search
  9. // @name:eo Eksporti SteamDB serĉon
  10. // @name:es Exportar Búsquedas de SteamDB
  11. // @name:es-la Exportar Búsquedas de SteamDB
  12. // @name:es-419 Exportar Búsquedas de SteamDB
  13. // @name:fi Vie SteamDB-haku
  14. // @name:fr Exporter les recherches SteamDB
  15. // @name:fr-CA Exporter les recherches SteamDB
  16. // @name:he ייצוא חיפוש SteamDB
  17. // @name:hr Izvoz SteamDB pretrage
  18. // @name:hu SteamDB keresés exportálása
  19. // @name:id Ekspor Pencarian SteamDB
  20. // @name:it Esporta Ricerca SteamDB
  21. // @name:ja SteamDB検索をエクスポート
  22. // @name:ka SteamDB ძიების ექსპორტი
  23. // @name:ko SteamDB 검색 내보내기
  24. // @name:nb Eksporter SteamDB-søk
  25. // @name:nl Exporteer SteamDB-zoekopdracht
  26. // @name:pl Eksportuj wyszukiwanie SteamDB
  27. // @name:pt-BR Exportar Pesquisa SteamDB
  28. // @name:ro Exportă căutarea SteamDB
  29. // @name:sv Exportera SteamDB-sökning
  30. // @name:th ส่งออกการค้นหา SteamDB
  31. // @name:tr SteamDB Aramasını Dışa Aktar
  32. // @name:ug SteamDB ئىزدەشنى چىقىرىۋېتىش
  33. // @name:uk Експортувати пошук SteamDB
  34. // @name:vi Xuất tìm kiếm SteamDB
  35. // @name:zh-TW 匯出 SteamDB 搜尋
  36. // @namespace https://jlcareglio.github.io/
  37. // @version 2.3.9
  38. // @description Adds a button to export current search in SteamDB as TSV
  39. // @description:bg Добавя бутон за експортиране на текущото търсене в SteamDB като TSV
  40. // @description:cs Přidává tlačítko pro export aktuálního vyhledávání ve SteamDB jako TSV
  41. // @description:da Tilføjer en knap til at eksportere den aktuelle søgning i SteamDB som TSV
  42. // @description:de Fügt eine Schaltfläche hinzu, um die aktuelle Suche in SteamDB als TSV zu exportieren
  43. // @description:el Προσθέτει ένα κουμπί για την εξαγωγή της τρέχουσας αναζήτησης στο SteamDB ως TSV
  44. // @description:en Adds a button to export current search in SteamDB as TSV
  45. // @description:eo Aldonas butonon por eksporti la nunan serĉon en SteamDB kiel TSV
  46. // @description:es Agrega un botón para exportar como TSV el listado de búsqueda en SteamDB
  47. // @description:es-la Agrega un botón para exportar como TSV el listado de búsqueda en SteamDB
  48. // @description:es-419 Agrega un botón para exportar como TSV el listado de búsqueda en SteamDB
  49. // @description:fi Lisää painikkeen nykyisen haun viemiseksi SteamDB:stä TSV-muodossa
  50. // @description:fr Ajoute un bouton pour exporter la recherche actuelle dans SteamDB en TSV
  51. // @description:fr-CA Ajoute un bouton pour exporter la recherche actuelle dans SteamDB en TSV
  52. // @description:he מוסיף כפתור לייצוא החיפוש הנוכחי ב-SteamDB כ-TSV
  53. // @description:hr Dodaje gumb za izvoz trenutne pretrage u SteamDB kao TSV
  54. // @description:hu Hozzáad egy gombot a SteamDB jelenlegi keresésének TSV formátumban történő exportálásához
  55. // @description:id Menambahkan tombol untuk mengekspor pencarian saat ini di SteamDB sebagai TSV
  56. // @description:it Aggiunge un pulsante per esportare la ricerca corrente in SteamDB come TSV
  57. // @description:ja SteamDBの現在の検索をTSVとしてエクスポートするボタンを追加します
  58. // @description:ka SteamDB ძიების ექსპორტი TSV ფორმატში
  59. // @description:ko SteamDB 현재 검색을 TSV로 내보내는 버튼을 추가합니다
  60. // @description:nb Legger til en knapp for å eksportere gjeldende søk i SteamDB som TSV
  61. // @description:nl Voegt een knop toe om de huidige zoekopdracht in SteamDB als TSV te exporteren
  62. // @description:pl Dodaje przycisk do eksportowania bieżącego wyszukiwania w SteamDB jako TSV
  63. // @description:pt-BR Adiciona um botão para exportar a pesquisa atual no SteamDB como TSV
  64. // @description:ro Adaugă un buton pentru a exporta căutarea curentă în SteamDB ca TSV
  65. // @description:sv Lägger till en knapp för att exportera aktuell sökning i SteamDB som TSV
  66. // @description:th เพิ่มปุ่มเพื่อส่งออกการค้นหาปัจจุบันใน SteamDB เป็น TSV
  67. // @description:tr SteamDB'deki mevcut aramayı TSV olarak dışa aktarmak için bir düğme ekler
  68. // @description:ug SteamDB ئىزدەشنى TSV دەپ چىقىرىۋېتىش كۇنۇپكىسى قوشۇش
  69. // @description:uk Додає кнопку для експорту поточного пошуку в SteamDB у форматі TSV
  70. // @description:vi Thêm nút để xuất tìm kiếm hiện tại trong SteamDB dưới dạng TSV
  71. // @description:zh-TW 添加一個按鈕以TSV格式匯出SteamDB的當前搜索
  72. // @icon https://www.google.com/s2/favicons?sz=64&domain=steamdb.info
  73. // @grant none
  74. // @author Jesús Lautaro Careglio Albornoz
  75. // @source https://gist.githubusercontent.com/JLCareglio/3d9c4694430b181d2de2780aa2479572/raw/01_Export-SteamDB-Search.user.js
  76. // @match *://steamdb.info/search*
  77. // @license MIT
  78. // @compatible firefox
  79. // @compatible chrome
  80. // @compatible opera
  81. // @compatible safari
  82. // @compatible edge
  83. // @compatible brave
  84. // @supportURL https://gist.github.com/JLCareglio/3d9c4694430b181d2de2780aa2479572/
  85. // ==/UserScript==
  86.  
  87. (async () => {
  88. async function HandlerClick() {
  89. btnExport.innerText = "Exporting, please wait...";
  90. await new Promise((resolve) => setTimeout(resolve, 50));
  91. try {
  92. const shown = document.querySelector("#dt-length-0");
  93. shown.value = -1;
  94. shown.dispatchEvent(new Event("change"));
  95. } catch (error) {
  96. console.error(error);
  97. btnExport.style.color = "red";
  98. btnExport.innerText = "Error, please click the search button first";
  99. return;
  100. }
  101.  
  102. const rows = Array.from(
  103. document.querySelectorAll("#table-sortable tbody tr")
  104. );
  105. const tsvRows = [];
  106. // console.log({ rows });
  107.  
  108. for (const row of rows) {
  109. // console.log({ row });
  110. const app_id = row.dataset.appid;
  111. const name = row
  112. .querySelector("td:nth-child(3) > a")
  113. .textContent.replaceAll("#", String.raw`\#`);
  114. let lastUpdate = row.querySelector("td.timeago").dataset.time;
  115. let lastUpdateUTC = new Date(lastUpdate).toUTCString();
  116.  
  117. tsvRows.push([app_id, name, lastUpdateUTC]);
  118. }
  119.  
  120. const headers = ["AppID", "Name", "Last Update (UTC)"];
  121. const tsvContent = [headers, ...tsvRows]
  122. .map((row) => row.join("\t"))
  123. .join("\n");
  124. DownloadTsvFile(tsvContent, "SteamDB_Search.tsv");
  125. btnExport.innerText = "Export TSV";
  126. }
  127.  
  128. function DownloadTsvFile(data, filename) {
  129. const blob = new Blob([data], { type: "text/tab-separated-values" });
  130. const url = URL.createObjectURL(blob);
  131. const link = document.createElement("a");
  132. link.href = url;
  133. link.download = filename;
  134. document.body.appendChild(link);
  135. link.click();
  136. document.body.removeChild(link);
  137. URL.revokeObjectURL(url);
  138. }
  139.  
  140. const btnExport = document.createElement("a");
  141. btnExport.classList.value = "btn btn-link";
  142. btnExport.style.padding = "11px";
  143. btnExport.innerText = "Export TSV";
  144. btnExport.onclick = HandlerClick;
  145.  
  146. document
  147. .querySelector("#apps > form > dl:nth-child(6) > dd")
  148. .appendChild(btnExport);
  149. })();