Export Steam TradeHistory

Export Steam trade history to a TSV file

安装此脚本
作者推荐脚本

您可能也喜欢Export Steam Family Games

安装此脚本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name                Export Steam TradeHistory
// @name:bg             Експортиране на историята на търговията в Steam
// @name:cs             Exportovat historii obchodů na Steamu
// @name:da             Eksporter Steam-handelshistorik
// @name:de             Steam-Handelsverlauf exportieren
// @name:el             Εξαγωγή ιστορικού συναλλαγών Steam
// @name:en             Export Steam TradeHistory
// @name:eo             Eksporti Steam-komercan historion
// @name:es             Exportar Historial de Intercambios de Steam
// @name:es-la          Exportar Historial de Intercambios de Steam
// @name:es-419         Exportar Historial de Intercambios de Steam
// @name:fi             Vie Steam-kauppahistoria
// @name:fr             Exporter l'historique des échanges Steam
// @name:fr-CA          Exporter l'historique des échanges Steam
// @name:he             ייצוא היסטוריית המסחר של Steam
// @name:hr             Izvoz povijesti trgovanja na Steamu
// @name:hu             Steam kereskedelmi előzmények exportálása
// @name:id             Ekspor Riwayat Perdagangan Steam
// @name:it             Esporta Cronologia Scambi di Steam
// @name:ja             Steam取引履歴のエクスポート
// @name:ka             ექსპორტი Steam-ის სავაჭრო ისტორია
// @name:ko             Steam 거래 내역 내보내기
// @name:nb             Eksporter Steam-handelshistorikk
// @name:nl             Exporteer Steam-handelsgeschiedenis
// @name:pl             Eksportuj historię handlu Steam
// @name:pt-BR          Exportar Histórico de Trocas do Steam
// @name:ro             Exportă istoricul tranzacțiilor Steam
// @name:sv             Exportera Steam-handels historik
// @name:th             ส่งออกประวัติการซื้อขาย Steam
// @name:tr             Steam Ticaret Geçmişini Dışa Aktar
// @name:ug             Steam سودا تارىخىنى ئېكسپورت قىلىش
// @name:uk             Експортувати історію торгів Steam
// @name:vi             Xuất lịch sử giao dịch Steam
// @name:zh-TW          匯出 Steam 交易歷史
// @namespace           https://jlcareglio.github.io/
// @version             1.2.2
// @description         Export Steam trade history to a TSV file
// @description:bg      Експортиране на историята на търговията в Steam в TSV файл
// @description:cs      Exportovat historii obchodů na Steamu do TSV souboru
// @description:da      Eksporter Steam-handelshistorik til en TSV-fil
// @description:de      Exportieren Sie den Steam-Handelsverlauf in eine TSV-Datei
// @description:el      Εξαγωγή ιστορικού συναλλαγών Steam σε αρχείο TSV
// @description:en      Export Steam trade history to a TSV file
// @description:eo      Eksporti Steam-komercan historion al TSV-dosiero
// @description:es      Permite exportar el historial de intercambios de Steam a un archivo TSV
// @description:es-la   Permite exportar el historial de intercambios de Steam a un archivo TSV
// @description:es-419  Permite exportar el historial de intercambios de Steam a un archivo TSV
// @description:fi      Vie Steam-kauppahistoria TSV-tiedostoon
// @description:fr      Exporter l'historique des échanges Steam dans un fichier TSV
// @description:fr-CA   Exporter l'historique des échanges Steam dans un fichier TSV
// @description:he      ייצוא היסטוריית המסחר של Steam לקובץ TSV
// @description:hr      Izvoz povijesti trgovanja na Steamu u TSV datoteku
// @description:hu      Steam kereskedelmi előzmények exportálása TSV fájlba
// @description:id      Ekspor Riwayat Perdagangan Steam ke file TSV
// @description:it      Esporta la cronologia degli scambi di Steam in un file TSV
// @description:ja      Steam取引履歴をTSVファイルにエクスポート
// @description:ka      ექსპორტი Steam-ის სავაჭრო ისტორია TSV ფაილში
// @description:ko      Steam 거래 내역을 TSV 파일로 내보내기
// @description:nb      Eksporter Steam-handelshistorikk til en TSV-fil
// @description:nl      Exporteer Steam-handelsgeschiedenis naar een TSV-bestand
// @description:pl      Eksportuj historię handlu Steam do pliku TSV
// @description:pt-BR   Exportar o histórico de trocas do Steam para um arquivo TSV
// @description:ro      Exportă istoricul tranzacțiilor Steam într-un fișier TSV
// @description:sv      Exportera Steam-handels historik till en TSV-fil
// @description:th      ส่งออกประวัติการซื้อขาย Steam เป็นไฟล์ TSV
// @description:tr      Steam ticaret geçmişini TSV dosyasına aktar
// @description:ug      Steam سودا تارىخىنى TSV ھۆججىتىگە ئېكسپورت قىلىش
// @description:uk      Експортувати історію торгів Steam у файл TSV
// @description:vi      Xuất lịch sử giao dịch Steam sang tệp TSV
// @description:zh-TW   匯出 Steam 交易歷史到 TSV 檔案
// @icon                https://www.google.com/s2/favicons?sz=64&domain=steamcommunity.com
// @grant               none
// @author              Jesús Lautaro Careglio Albornoz
// @source              https://gist.githubusercontent.com/JLCareglio/00bef3fb30b3dedd9f0dd849c9bd461a/raw/01_Export-Steam-TradeHistory.user.js
// @match               *://steamcommunity.com/profiles/*/tradehistory*
// @match               *://steamcommunity.com/id/*/tradehistory*
// @license             MIT
// @compatible          firefox
// @compatible          chrome
// @compatible          opera
// @compatible          safari
// @compatible          edge
// @compatible          brave
// @supportURL          https://gist.github.com/JLCareglio/00bef3fb30b3dedd9f0dd849c9bd461a/
// ==/UserScript==

(async () => {
  const pagInGrowBar = document.querySelector(".inventory_history_pagingrow");
  const btnNext = pagInGrowBar.querySelector(".inventory_history_nextbtn");
  const tradeHistoryRows = document.querySelectorAll(".tradehistoryrow");
  const btnExport = document.createElement("div");

  const exportTradeHistory = () => {
    const trades = Array.from(tradeHistoryRows).map((row) => {
      // Convertir fecha y hora al formato deseado
      const dateText = row
        .querySelector(".tradehistory_date")
        .childNodes[0].textContent.trim();
      const timeText = row
        .querySelector(".tradehistory_timestamp")
        .textContent.trim();

      const monthMap = {
        ENE: "01",
        FEB: "02",
        MAR: "03",
        ABR: "04",
        MAY: "05",
        JUN: "06",
        JUL: "07",
        AGO: "08",
        SEP: "09",
        OCT: "10",
        NOV: "11",
        DIC: "12",
      };

      const [day, month, year] = dateText.split(" ");
      const monthNum = monthMap[month];
      const time = timeText.replace(" a. m.", "").replace(" p. m.", "");

      const datetime = `${day.padStart(2, "0")}/${monthNum}/${year} ${time}`;

      const userLink = row.querySelector(".tradehistory_event_description a");
      const userId = userLink.href.split("/").pop();
      const username = userLink.textContent;
      const items = Array.from(row.querySelectorAll(".history_item_name")).map(
        (item) => item.textContent.trim()
      );

      return {
        datetime,
        user: {
          id: userId,
          name: username,
        },
        items,
      };
    });

    const tsvHeader = "Date&Time\tUserID\tUserName\tItems";
    const tsvContent = trades
      .map((trade) => {
        const items = trade.items.join(", ");
        return `${trade.datetime}\t${trade.user.id}\t${trade.user.name}\t${items}`;
      })
      .join("\n");

    const tsvData = `${tsvHeader}\n${tsvContent}`;

    const blob = new Blob([tsvData], { type: "text/tab-separated-values" });
    const url = URL.createObjectURL(blob);
    const a = document.createElement("a");
    a.href = url;
    a.download = "steam_trade_history.tsv";
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
    URL.revokeObjectURL(url);
  };

  const customStyle = document.createElement("style");
  customStyle.textContent = `
    .btnExport {
      position: relative;
    }
    .btnExport:before {
      pointer-events: none;
      content: "";
      position: absolute;
      left: 6px;
      top: 0;
      bottom: 0;
      width: 20px;
      background: url("data:image/svg+xml,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg' fill='%2366c0f4' fill-rule='evenodd' clip-rule='evenodd'%3E%3Cpath d='M16 2v7h-2v-5h-12v16h12v-5h2v7h-16v-20h16zm2 9v-4l6 5-6 5v-4h-10v-2h10z'/%3E%3C/svg%3E") center / contain no-repeat;
      transition: background-image 0.2s ease;
    }
    .btnExport:hover:before {
      background: url("data:image/svg+xml,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg' fill='%23fff' fill-rule='evenodd' clip-rule='evenodd'%3E%3Cpath d='M16 2v7h-2v-5h-12v16h12v-5h2v7h-16v-20h16zm2 9v-4l6 5-6 5v-4h-10v-2h10z'/%3E%3C/svg%3E") center / contain no-repeat;
    }

    .btnExport .pagebtn {
      padding-left: 28px !important;
      padding-right: 6px !important;
      transition: color 0.2s ease, background-color 0.2s ease;
    }
  `;

  document.head.appendChild(customStyle);

  btnExport.classList.add("inventory_history_nextbtn", "btnExport");
  btnExport.innerHTML = `<a class="pagebtn">TSV</a>`;
  btnExport.addEventListener("click", exportTradeHistory);
  pagInGrowBar.insertBefore(btnExport, btnNext.nextSibling);
})();