triangle-utils 1.4.23 → 1.4.24
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/src/UtilsNitter.d.ts +4 -0
- package/dist/src/UtilsNitter.js +36 -0
- package/package.json +1 -1
- package/src/UtilsNitter.ts +38 -0
package/dist/src/UtilsNitter.js
CHANGED
|
@@ -133,4 +133,40 @@ export class UtilsNitter extends UtilsBee {
|
|
|
133
133
|
}
|
|
134
134
|
return tweets;
|
|
135
135
|
}
|
|
136
|
+
async search(query, options) {
|
|
137
|
+
const min_tweet_id = options !== undefined ? options.min_tweet_id : undefined;
|
|
138
|
+
const min_tweet_time = options !== undefined ? options.min_tweet_time : undefined;
|
|
139
|
+
console.log("Querying Twitter:", query, "min_tweet_id:", min_tweet_id, "min_tweet_time:", min_tweet_time);
|
|
140
|
+
let nitter_query = "?f=tweets&q=" + query + "&e-nativeretweets=on";
|
|
141
|
+
const tweets = [];
|
|
142
|
+
while (nitter_query !== undefined) {
|
|
143
|
+
const nitter_url = "https://nitter.net/search" + nitter_query;
|
|
144
|
+
console.log(nitter_url);
|
|
145
|
+
let nitter_html = undefined;
|
|
146
|
+
for (let i = 0; i < 10; i++) {
|
|
147
|
+
nitter_html = await this.get(nitter_url, { render_js: false });
|
|
148
|
+
if (nitter_html !== undefined && nitter_html !== "") {
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
console.log("Failed to query Nitter, trying again.");
|
|
152
|
+
await UtilsMisc.wait((2 + 2 * i) * 1000);
|
|
153
|
+
}
|
|
154
|
+
if (nitter_html === undefined || nitter_html === "") {
|
|
155
|
+
console.log("Nitter failed for query", query);
|
|
156
|
+
return [];
|
|
157
|
+
}
|
|
158
|
+
const nitter_data = parse_nitter_html(nitter_html);
|
|
159
|
+
nitter_query = nitter_data.next_nitter_query;
|
|
160
|
+
for (const tweet of nitter_data.tweets) {
|
|
161
|
+
if (min_tweet_id !== undefined && tweet.tweet_id.localeCompare(min_tweet_id) < 0) {
|
|
162
|
+
nitter_query = undefined;
|
|
163
|
+
}
|
|
164
|
+
if (min_tweet_time !== undefined && tweet.tweet_time.localeCompare(min_tweet_time) < 0) {
|
|
165
|
+
nitter_query = undefined;
|
|
166
|
+
}
|
|
167
|
+
tweets.push(tweet);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return tweets;
|
|
171
|
+
}
|
|
136
172
|
}
|
package/package.json
CHANGED
package/src/UtilsNitter.ts
CHANGED
|
@@ -145,4 +145,42 @@ export class UtilsNitter extends UtilsBee {
|
|
|
145
145
|
}
|
|
146
146
|
return tweets
|
|
147
147
|
}
|
|
148
|
+
|
|
149
|
+
async search(query : string, options? : { min_tweet_id? : string, min_tweet_time? : string }) : Promise<Tweet[]> {
|
|
150
|
+
const min_tweet_id = options !== undefined ? options.min_tweet_id : undefined
|
|
151
|
+
const min_tweet_time = options !== undefined ? options.min_tweet_time : undefined
|
|
152
|
+
|
|
153
|
+
console.log("Querying Twitter:", query, "min_tweet_id:", min_tweet_id, "min_tweet_time:", min_tweet_time)
|
|
154
|
+
let nitter_query : string | undefined = "?f=tweets&q=" + query + "&e-nativeretweets=on"
|
|
155
|
+
const tweets = []
|
|
156
|
+
while (nitter_query !== undefined) {
|
|
157
|
+
const nitter_url = "https://nitter.net/search" + nitter_query
|
|
158
|
+
console.log(nitter_url)
|
|
159
|
+
let nitter_html = undefined
|
|
160
|
+
for (let i = 0; i < 10; i++) {
|
|
161
|
+
nitter_html = await this.get(nitter_url, { render_js : false })
|
|
162
|
+
if (nitter_html !== undefined && nitter_html !== "") {
|
|
163
|
+
break
|
|
164
|
+
}
|
|
165
|
+
console.log("Failed to query Nitter, trying again.")
|
|
166
|
+
await UtilsMisc.wait((2 + 2 * i) * 1000)
|
|
167
|
+
}
|
|
168
|
+
if (nitter_html === undefined || nitter_html === "") {
|
|
169
|
+
console.log("Nitter failed for query", query)
|
|
170
|
+
return []
|
|
171
|
+
}
|
|
172
|
+
const nitter_data = parse_nitter_html(nitter_html)
|
|
173
|
+
nitter_query = nitter_data.next_nitter_query
|
|
174
|
+
for (const tweet of nitter_data.tweets) {
|
|
175
|
+
if (min_tweet_id !== undefined && tweet.tweet_id.localeCompare(min_tweet_id) < 0) {
|
|
176
|
+
nitter_query = undefined
|
|
177
|
+
}
|
|
178
|
+
if (min_tweet_time !== undefined && tweet.tweet_time.localeCompare(min_tweet_time) < 0) {
|
|
179
|
+
nitter_query = undefined
|
|
180
|
+
}
|
|
181
|
+
tweets.push(tweet)
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return tweets
|
|
185
|
+
}
|
|
148
186
|
}
|