openplanter 0.2.7 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/investigation-tools/seeking-alpha-asx-scraper.d.ts +9 -0
- package/dist/investigation-tools/seeking-alpha-asx-scraper.d.ts.map +1 -1
- package/dist/investigation-tools/seeking-alpha-asx-scraper.js +62 -12
- package/dist/investigation-tools/seeking-alpha-asx-scraper.js.map +1 -1
- package/dist/investigation-tools/yahoo-finance-au-scraper.d.ts.map +1 -1
- package/dist/investigation-tools/yahoo-finance-au-scraper.js +8 -7
- package/dist/investigation-tools/yahoo-finance-au-scraper.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,6 +3,15 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Scrapes Seeking Alpha for articles and comments about ASX-listed
|
|
5
5
|
* companies. Extracts sentiment, rumor flags, and author credibility data.
|
|
6
|
+
*
|
|
7
|
+
* NOTE: Seeking Alpha uses bare US tickers (not .AX suffix).
|
|
8
|
+
* Dual-listed companies like BHP, RIO work directly. ASX-only tickers
|
|
9
|
+
* (e.g. MGU, S32) may not exist on SA or may use OTC ADR symbols.
|
|
10
|
+
* The scraper attempts bare ticker first, then common OTC suffixes.
|
|
11
|
+
*
|
|
12
|
+
* SA also employs aggressive bot protection (PerimeterX). Scraping may
|
|
13
|
+
* be blocked; the tool degrades gracefully and returns empty results
|
|
14
|
+
* with an appropriate warning.
|
|
6
15
|
*/
|
|
7
16
|
export interface SeekingAlphaArticle {
|
|
8
17
|
article_id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seeking-alpha-asx-scraper.d.ts","sourceRoot":"","sources":["../../src/investigation-tools/seeking-alpha-asx-scraper.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"seeking-alpha-asx-scraper.d.ts","sourceRoot":"","sources":["../../src/investigation-tools/seeking-alpha-asx-scraper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA0BH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAuJD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkD9B;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAiD7D"}
|
|
@@ -3,12 +3,22 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Scrapes Seeking Alpha for articles and comments about ASX-listed
|
|
5
5
|
* companies. Extracts sentiment, rumor flags, and author credibility data.
|
|
6
|
+
*
|
|
7
|
+
* NOTE: Seeking Alpha uses bare US tickers (not .AX suffix).
|
|
8
|
+
* Dual-listed companies like BHP, RIO work directly. ASX-only tickers
|
|
9
|
+
* (e.g. MGU, S32) may not exist on SA or may use OTC ADR symbols.
|
|
10
|
+
* The scraper attempts bare ticker first, then common OTC suffixes.
|
|
11
|
+
*
|
|
12
|
+
* SA also employs aggressive bot protection (PerimeterX). Scraping may
|
|
13
|
+
* be blocked; the tool degrades gracefully and returns empty results
|
|
14
|
+
* with an appropriate warning.
|
|
6
15
|
*/
|
|
7
|
-
import { fetchHtml, normalizeTicker, sentimentScore, sentimentLabel, isRumor, isoNow, } from "./shared.js";
|
|
16
|
+
import { fetchHtml, fetchWithDelay, normalizeTicker, sentimentScore, sentimentLabel, isRumor, isoNow, sleep, DEFAULT_USER_AGENT, } from "./shared.js";
|
|
8
17
|
// ── Constants ────────────────────────────────────────────────────
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
18
|
+
const SA_SYMBOL_URL = "https://seekingalpha.com/symbol/{ticker}";
|
|
19
|
+
const SA_ANALYSIS_PATH = "/analysis";
|
|
20
|
+
const SA_NEWS_PATH = "/news";
|
|
21
|
+
const REQUEST_DELAY_S = 3.0;
|
|
12
22
|
const MAX_TEXT_LEN = 600;
|
|
13
23
|
// ── Helpers ──────────────────────────────────────────────────────
|
|
14
24
|
function truncate(text, maxLen = MAX_TEXT_LEN) {
|
|
@@ -27,10 +37,47 @@ function formatDateIso(d) {
|
|
|
27
37
|
const day = String(d.getDate()).padStart(2, "0");
|
|
28
38
|
return `${y}-${m}-${day}`;
|
|
29
39
|
}
|
|
40
|
+
// ── Symbol Resolution ────────────────────────────────────────────
|
|
41
|
+
async function resolveSeekingAlphaSymbol(asxTicker) {
|
|
42
|
+
const candidates = [asxTicker];
|
|
43
|
+
for (const candidate of candidates) {
|
|
44
|
+
const url = SA_SYMBOL_URL.replace("{ticker}", candidate);
|
|
45
|
+
try {
|
|
46
|
+
const resp = await fetchWithDelay(url, {
|
|
47
|
+
delay: REQUEST_DELAY_S,
|
|
48
|
+
userAgent: DEFAULT_USER_AGENT,
|
|
49
|
+
});
|
|
50
|
+
if (resp.status === 403) {
|
|
51
|
+
const body = await resp.text();
|
|
52
|
+
if (body.includes("px-captcha") || body.includes("Access to this page has been denied")) {
|
|
53
|
+
console.error(`[WARN] Seeking Alpha bot protection triggered. ` +
|
|
54
|
+
`Scraping blocked by PerimeterX. Results will be empty.`);
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (resp.ok) {
|
|
59
|
+
return candidate;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// continue to next candidate
|
|
64
|
+
}
|
|
65
|
+
await sleep(1000);
|
|
66
|
+
}
|
|
67
|
+
console.error(`[WARN] Seeking Alpha: no valid symbol found for ASX ticker ${asxTicker}. ` +
|
|
68
|
+
`SA uses US tickers — ASX-only stocks may have no coverage.`);
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
30
71
|
// ── Scraping ─────────────────────────────────────────────────────
|
|
31
72
|
async function fetchSaPage(url) {
|
|
32
73
|
try {
|
|
33
|
-
|
|
74
|
+
const $ = await fetchHtml(url, { delay: REQUEST_DELAY_S });
|
|
75
|
+
const title = $("title").text().toLowerCase();
|
|
76
|
+
if (title.includes("denied") || title.includes("captcha")) {
|
|
77
|
+
console.error(`[WARN] Seeking Alpha bot protection active on ${url}`);
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
return $;
|
|
34
81
|
}
|
|
35
82
|
catch (err) {
|
|
36
83
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -96,13 +143,16 @@ export async function scrapeSeekingAlphaAsx(opts) {
|
|
|
96
143
|
const cutoff = new Date(Date.now() - days * 24 * 60 * 60 * 1000);
|
|
97
144
|
const allArticles = [];
|
|
98
145
|
const allComments = [];
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
146
|
+
const saSymbol = await resolveSeekingAlphaSymbol(ticker);
|
|
147
|
+
if (saSymbol) {
|
|
148
|
+
for (const pathSuffix of [SA_ANALYSIS_PATH, SA_NEWS_PATH]) {
|
|
149
|
+
const url = SA_SYMBOL_URL.replace("{ticker}", saSymbol) + pathSuffix;
|
|
150
|
+
const $ = await fetchSaPage(url);
|
|
151
|
+
if (!$)
|
|
152
|
+
continue;
|
|
153
|
+
const articles = parseArticles($, ticker, cutoff);
|
|
154
|
+
allArticles.push(...articles);
|
|
155
|
+
}
|
|
106
156
|
}
|
|
107
157
|
const seen = new Set();
|
|
108
158
|
const uniqueArticles = allArticles.filter((a) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seeking-alpha-asx-scraper.js","sourceRoot":"","sources":["../../src/investigation-tools/seeking-alpha-asx-scraper.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"seeking-alpha-asx-scraper.js","sourceRoot":"","sources":["../../src/investigation-tools/seeking-alpha-asx-scraper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yahoo-finance-au-scraper.d.ts","sourceRoot":"","sources":["../../src/investigation-tools/yahoo-finance-au-scraper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"yahoo-finance-au-scraper.d.ts","sourceRoot":"","sources":["../../src/investigation-tools/yahoo-finance-au-scraper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwDH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AA6GD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAyChC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CA6C/D"}
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { fetchHtml, normalizeTicker, sentimentScore, sentimentLabel, isRumor, isoNow, } from "./shared.js";
|
|
8
8
|
// ── Constants ────────────────────────────────────────────────────
|
|
9
|
-
const
|
|
9
|
+
const YAHOO_QUOTE_URL = "https://au.finance.yahoo.com/quote/{ticker}.AX/";
|
|
10
|
+
const GOOGLEBOT_UA = "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)";
|
|
10
11
|
const REQUEST_DELAY_S = 2.0;
|
|
11
12
|
const MAX_TEXT_LEN = 500;
|
|
12
13
|
const POST_SELECTORS = [
|
|
@@ -76,10 +77,10 @@ function firstAttr($, el, selectors) {
|
|
|
76
77
|
}
|
|
77
78
|
// ── Scraping ─────────────────────────────────────────────────────
|
|
78
79
|
async function fetchConversationPage(ticker, page) {
|
|
79
|
-
const base =
|
|
80
|
+
const base = YAHOO_QUOTE_URL.replace("{ticker}", ticker);
|
|
80
81
|
const url = page > 1 ? `${base}?start=${(page - 1) * 20}` : base;
|
|
81
82
|
try {
|
|
82
|
-
return await fetchHtml(url, { delay: REQUEST_DELAY_S });
|
|
83
|
+
return await fetchHtml(url, { delay: REQUEST_DELAY_S, userAgent: GOOGLEBOT_UA });
|
|
83
84
|
}
|
|
84
85
|
catch (err) {
|
|
85
86
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -116,7 +117,7 @@ function parsePosts($, ticker, cutoff) {
|
|
|
116
117
|
sentiment_label: sentimentLabel(score),
|
|
117
118
|
is_rumor: isRumor(text),
|
|
118
119
|
reactions,
|
|
119
|
-
url:
|
|
120
|
+
url: YAHOO_QUOTE_URL.replace("{ticker}", ticker),
|
|
120
121
|
});
|
|
121
122
|
});
|
|
122
123
|
if (posts.length > 0)
|
|
@@ -179,7 +180,7 @@ export function sampleData(ticker) {
|
|
|
179
180
|
sentiment_label: "bullish",
|
|
180
181
|
is_rumor: false,
|
|
181
182
|
reactions: 12,
|
|
182
|
-
url: `https://finance.yahoo.com/quote/${t}.AX
|
|
183
|
+
url: `https://au.finance.yahoo.com/quote/${t}.AX/`,
|
|
183
184
|
},
|
|
184
185
|
{
|
|
185
186
|
post_id: "yf-2",
|
|
@@ -190,7 +191,7 @@ export function sampleData(ticker) {
|
|
|
190
191
|
sentiment_label: "bearish",
|
|
191
192
|
is_rumor: false,
|
|
192
193
|
reactions: 5,
|
|
193
|
-
url: `https://finance.yahoo.com/quote/${t}.AX
|
|
194
|
+
url: `https://au.finance.yahoo.com/quote/${t}.AX/`,
|
|
194
195
|
},
|
|
195
196
|
{
|
|
196
197
|
post_id: "yf-3",
|
|
@@ -201,7 +202,7 @@ export function sampleData(ticker) {
|
|
|
201
202
|
sentiment_label: "bullish",
|
|
202
203
|
is_rumor: true,
|
|
203
204
|
reactions: 28,
|
|
204
|
-
url: `https://finance.yahoo.com/quote/${t}.AX
|
|
205
|
+
url: `https://au.finance.yahoo.com/quote/${t}.AX/`,
|
|
205
206
|
},
|
|
206
207
|
],
|
|
207
208
|
overall_sentiment: 0.111,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yahoo-finance-au-scraper.js","sourceRoot":"","sources":["../../src/investigation-tools/yahoo-finance-au-scraper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,SAAS,EACT,eAAe,EACf,cAAc,EACd,cAAc,EACd,OAAO,EACP,MAAM,GAEP,MAAM,aAAa,CAAC;AAErB,oEAAoE;AAEpE,MAAM,
|
|
1
|
+
{"version":3,"file":"yahoo-finance-au-scraper.js","sourceRoot":"","sources":["../../src/investigation-tools/yahoo-finance-au-scraper.ts"],"names":[],"mappings":"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"}
|