steamutils 1.3.51 → 1.3.52

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,64 @@
1
+ export default function CookieManager(cookie) {
2
+ const _CookieObj = {};
3
+ if (typeof cookie === "string") {
4
+ cookie.split(";").forEach(function (_cookie) {
5
+ setCookie(_cookie.split("=")[0].trim(), _cookie.split("=")[1].trim());
6
+ });
7
+ } else if (Array.isArray(cookie)) {
8
+ cookie.forEach(function (_cookie) {
9
+ if (typeof _cookie === "string") {
10
+ setCookie(_cookie.split("=")[0].trim(), _cookie.split("=")[1].trim());
11
+ } else {
12
+ //to do
13
+ }
14
+ });
15
+ } else if (typeof cookie === "object" && Object.keys(cookie).length) {
16
+ for (const key in cookie) {
17
+ setCookie(key, cookie[key]);
18
+ }
19
+ } else {
20
+ //to do
21
+ }
22
+
23
+ function setCookie(name, value) {
24
+ removeCookie(name);
25
+ _CookieObj[name] = value;
26
+ }
27
+
28
+ function removeCookie(name) {
29
+ const existedKey = Object.keys(_CookieObj).find((k) => k.toLowerCase() === name.toLowerCase());
30
+ if (existedKey) {
31
+ delete _CookieObj[existedKey];
32
+ }
33
+ }
34
+
35
+ function setCookies(cookies) {
36
+ if (Array.isArray(cookies)) {
37
+ for (let cookie of cookies) {
38
+ if (typeof cookie === "string") {
39
+ cookie = cookie.split(";")[0].trim();
40
+ setCookie(cookie.split("=")[0].trim(), cookie.split("=")[1].trim());
41
+ }
42
+ }
43
+ }
44
+ }
45
+
46
+ function getCookie(name) {
47
+ const existedKey = Object.keys(_CookieObj).find((k) => k.toLowerCase() === name.toLowerCase());
48
+ return _CookieObj[existedKey];
49
+ }
50
+
51
+ function toString() {
52
+ return Object.keys(_CookieObj)
53
+ .map((k) => `${k}=${_CookieObj[k]}`)
54
+ .join(";");
55
+ }
56
+
57
+ return {
58
+ setCookie,
59
+ removeCookie,
60
+ setCookies,
61
+ getCookie,
62
+ toString,
63
+ };
64
+ }
package/SteamClient.js CHANGED
@@ -680,8 +680,17 @@ function SteamClient({ username, password, cookie, clientJsToken, isAutoRequestF
680
680
  }
681
681
 
682
682
  async function sendHello() {
683
- steamClient.sendToGC(AppID, Protos.csgo.ECsgoGCMsg.k_EMsgGCCStrike15_v2_MatchmakingClient2GCHello, {}, Buffer.alloc(0));
684
- steamClient.sendToGC(AppID, Protos.csgo.EGCBaseClientMsg.k_EMsgGCClientHello, {}, Buffer.alloc(0));
683
+ steamClient.sendToGC(
684
+ AppID,
685
+ Protos.csgo.EGCBaseClientMsg.k_EMsgGCClientHello,
686
+ {},
687
+ protoEncode(Protos.csgo.CMsgClientHello, {
688
+ version: 2000258, //get from https://github.com/SteamDatabase/GameTracking-CS2/commits
689
+ client_session_need: 0,
690
+ client_launcher: 0,
691
+ steam_launcher: 0,
692
+ }),
693
+ );
685
694
  }
686
695
 
687
696
  async function requestCoPlays() {
@@ -1686,9 +1695,28 @@ function SteamClient({ username, password, cookie, clientJsToken, isAutoRequestF
1686
1695
  }
1687
1696
 
1688
1697
  async function login(reconnect = false) {
1698
+ function logOn(clientJsToken) {
1699
+ if (clientJsToken.steamid) {
1700
+ Object.assign(clientJsToken, {
1701
+ steamId: new SteamID(clientJsToken.steamid),
1702
+ accountName: clientJsToken.account_name,
1703
+ webLogonToken: clientJsToken.token,
1704
+ password,
1705
+ twoFactorCode,
1706
+ });
1707
+ }
1708
+ try {
1709
+ steamClient.logOn(clientJsToken);
1710
+ return true;
1711
+ } catch (e) {
1712
+ console.error(e);
1713
+ return false;
1714
+ }
1715
+ }
1716
+
1689
1717
  if (clientJsToken?.logged_in === true) {
1690
1718
  log(reconnect ? "reconnect with clientJsToken" : "login with clientJsToken");
1691
- steamClient.logOn(clientJsToken);
1719
+ return logOn(clientJsToken);
1692
1720
  setTimeout(function () {
1693
1721
  clientJsToken = null;
1694
1722
  }, 1000);
@@ -1697,13 +1725,9 @@ function SteamClient({ username, password, cookie, clientJsToken, isAutoRequestF
1697
1725
  log(reconnect ? "reconnect with cookie" : "login with cookie");
1698
1726
  const _clientJsToken = await new SteamUser(typeof cookie === "function" ? await cookie() : cookie).getClientJsToken();
1699
1727
  if (_clientJsToken?.logged_in === true) {
1700
- try {
1701
- await steamClient.logOn(_clientJsToken);
1702
- return true;
1703
- } catch (e) {
1704
- return false;
1705
- }
1728
+ return logOn(_clientJsToken);
1706
1729
  } else {
1730
+ log("Account not logged in");
1707
1731
  return false;
1708
1732
  }
1709
1733
  } else if (username && password) {
@@ -1975,8 +1999,22 @@ function SteamClient({ username, password, cookie, clientJsToken, isAutoRequestF
1975
1999
  apps = [apps];
1976
2000
  }
1977
2001
 
1978
- steamClient.gamesPlayed(apps);
1979
- const shouldHello = apps.some((app) => parseInt(app) === 730);
2002
+ const processedApps = apps.map((app) => {
2003
+ if (typeof app == "string") {
2004
+ app = { game_id: "15190414816125648896", game_extra_info: app };
2005
+ } else if (typeof app === "number" || typeof app != "object") {
2006
+ app = { game_id: app };
2007
+ }
2008
+
2009
+ if (typeof app.game_ip_address == "number") {
2010
+ app.game_ip_address = { v4: app.game_ip_address };
2011
+ }
2012
+
2013
+ return app;
2014
+ });
2015
+
2016
+ steamClient.gamesPlayed(processedApps);
2017
+ const shouldHello = processedApps.some((app) => parseInt(app.game_id) === 730);
1980
2018
  await sleep(2000);
1981
2019
  if (shouldHello) {
1982
2020
  await sendHello();
package/cheerio.js CHANGED
@@ -1,71 +1,103 @@
1
- export function tables2json($, tables, getValue) {
2
- const tablesData = []
3
- $(tables).each(function (index, el) {
4
- tablesData.push(table2json($, el, getValue))
5
- })
6
- return tablesData
7
- }
8
-
9
- export function table2json($, table, getValue = function ($, el) {
10
- return $(el).text().trim()
11
- }) {
12
- const data = []
13
- const header = []
14
- $($(table)[0]).find('tr').each(function (trIndex, trEl) {
15
- const tr = $(trEl)
16
- const row = []
17
- tr.children().each(function (tdIndex, tdEl) {
18
- const isHeader = tdEl.name.toLowerCase() === 'th'
19
- tdEl = $(tdEl)
20
- const tdContent = getValue($, tdEl, isHeader);
21
- (isHeader ? header : row).push(tdContent)
22
- })
23
- if(row.length) {
24
- data.push(row)
25
- }
26
- })
27
-
28
- if(!header.length) return data
29
-
30
- for (let i = 0; i < data.length; i++) {
31
- const obj = {}
32
- for (let j = 0; j < header.length; j++) {
33
- obj[header[j]] = data[i][j]
34
- }
35
- data[i] = obj
36
- }
37
-
38
- return data
39
- }
40
-
41
- export function getTableHasHeaders($, $tables, headers = []) {
42
- headers = headers.slice()
43
- const tables = []
44
- $($tables).each((tableIndex, tableEl) => {
45
- const _headers = headers.slice()
46
- let table
47
- if(table) {
48
- return
49
- }
50
- const $tableEl = $(tableEl)
51
- $tableEl.find('tr').children().each(function (trIndex, trEl) {
52
- if(table) {
53
- return
54
- }
55
- const $trEl = $(trEl)
56
- let text = $trEl.text().trim()
57
-
58
- if(_headers.includes(text)) {
59
- _headers.splice(_headers.indexOf(text), 1)
60
-
61
- if(!_headers.length) {
62
- table = $tableEl
63
- }
64
- }
65
- })
66
- if(table) {
67
- tables.push(table)
68
- }
69
- })
70
- return tables
71
- }
1
+ import * as cheerio from "cheerio";
2
+
3
+ export function tables2json($, tables, getValue) {
4
+ const tablesData = [];
5
+ $(tables).each(function (index, el) {
6
+ tablesData.push(table2json($, el, getValue));
7
+ });
8
+ return tablesData;
9
+ }
10
+
11
+ export function table2json(
12
+ $,
13
+ table,
14
+ getValue = function ($, el) {
15
+ return $(el).text().trim();
16
+ },
17
+ ) {
18
+ const data = [];
19
+ const header = [];
20
+ $($(table)[0])
21
+ .find("tr")
22
+ .each(function (trIndex, trEl) {
23
+ const tr = $(trEl);
24
+ const row = [];
25
+ tr.children().each(function (tdIndex, tdEl) {
26
+ const isHeader = tdEl.name.toLowerCase() === "th";
27
+ tdEl = $(tdEl);
28
+ const tdContent = getValue($, tdEl, isHeader);
29
+ (isHeader ? header : row).push(tdContent);
30
+ });
31
+ if (row.length) {
32
+ data.push(row);
33
+ }
34
+ });
35
+
36
+ if (!header.length) return data;
37
+
38
+ for (let i = 0; i < data.length; i++) {
39
+ const obj = {};
40
+ for (let j = 0; j < header.length; j++) {
41
+ obj[header[j]] = data[i][j];
42
+ }
43
+ data[i] = obj;
44
+ }
45
+
46
+ return data;
47
+ }
48
+
49
+ export function getTableHasHeaders($, $tables, headers = []) {
50
+ headers = headers.slice();
51
+ const tables = [];
52
+ $($tables).each((tableIndex, tableEl) => {
53
+ const _headers = headers.slice();
54
+ let table;
55
+ if (table) {
56
+ return;
57
+ }
58
+ const $tableEl = $(tableEl);
59
+ $tableEl
60
+ .find("tr")
61
+ .children()
62
+ .each(function (trIndex, trEl) {
63
+ if (table) {
64
+ return;
65
+ }
66
+ const $trEl = $(trEl);
67
+ let text = $trEl.text().trim();
68
+
69
+ if (_headers.includes(text)) {
70
+ _headers.splice(_headers.indexOf(text), 1);
71
+
72
+ if (!_headers.length) {
73
+ table = $tableEl;
74
+ }
75
+ }
76
+ });
77
+ if (table) {
78
+ tables.push(table);
79
+ }
80
+ });
81
+ return tables;
82
+ }
83
+
84
+ export function querySelectorAll($, selector, root) {
85
+ try {
86
+ if (root) {
87
+ return [...root.find(selector)].map((el) => $(el));
88
+ } else {
89
+ return [...$(selector)].map((el) => $(el));
90
+ }
91
+ } catch (e) {
92
+ console.error(e);
93
+ return [];
94
+ }
95
+ }
96
+
97
+ export function getDocumentTitle(html) {
98
+ if (!html || typeof html !== "string") return;
99
+ return cheerio
100
+ .load(html.replaceAll(/[\t\n\r]/gi, "").trim())("head > title")
101
+ .text()
102
+ .trim();
103
+ }