Skip to content

Commit 3f8317b

Browse files
authored
Merge pull request #1021 from odilitime/twitter-search-switch
chore: Twitter fetchHomeTimeline rework
2 parents ffd5e0a + bbbbad7 commit 3f8317b

File tree

1 file changed

+52
-59
lines changed

1 file changed

+52
-59
lines changed

packages/client-twitter/src/base.ts

+52-59
Original file line numberDiff line numberDiff line change
@@ -218,74 +218,67 @@ export class ClientBase extends EventEmitter {
218218
await this.populateTimeline();
219219
}
220220

221-
async fetchHomeTimeline(count: number): Promise<Tweet[]> {
222-
elizaLogger.debug("fetching home timeline");
221+
async fetchOwnPosts(count: number): Promise<Tweet[]> {
222+
elizaLogger.debug("fetching own posts");
223223
const homeTimeline = await this.twitterClient.getUserTweets(
224224
this.profile.id,
225225
count
226226
);
227-
228-
// console.dir(homeTimeline, { depth: Infinity });
229-
230227
return homeTimeline.tweets;
231-
// .filter((t) => t.__typename !== "TweetWithVisibilityResults")
232-
// .map((tweet) => {
233-
// // console.log("tweet is", tweet);
234-
// const obj = {
235-
// id: tweet.id,
236-
// name:
237-
// tweet.name ??
238-
// tweet. ?.user_results?.result?.legacy.name,
239-
// username:
240-
// tweet.username ??
241-
// tweet.core?.user_results?.result?.legacy.screen_name,
242-
// text: tweet.text ?? tweet.legacy?.full_text,
243-
// inReplyToStatusId:
244-
// tweet.inReplyToStatusId ??
245-
// tweet.legacy?.in_reply_to_status_id_str,
246-
// createdAt: tweet.createdAt ?? tweet.legacy?.created_at,
247-
// userId: tweet.userId ?? tweet.legacy?.user_id_str,
248-
// conversationId:
249-
// tweet.conversationId ??
250-
// tweet.legacy?.conversation_id_str,
251-
// hashtags: tweet.hashtags ?? tweet.legacy?.entities.hashtags,
252-
// mentions:
253-
// tweet.mentions ?? tweet.legacy?.entities.user_mentions,
254-
// photos:
255-
// tweet.photos ??
256-
// tweet.legacy?.entities.media?.filter(
257-
// (media) => media.type === "photo"
258-
// ) ??
259-
// [],
260-
// thread: [],
261-
// urls: tweet.urls ?? tweet.legacy?.entities.urls,
262-
// videos:
263-
// tweet.videos ??
264-
// tweet.legacy?.entities.media?.filter(
265-
// (media) => media.type === "video"
266-
// ) ??
267-
// [],
268-
// };
269-
// // console.log("obj is", obj);
270-
// return obj;
271-
// });
272228
}
273229

274-
async fetchFeedTimeline(count: number): Promise<string> {
230+
async fetchHomeTimeline(count: number): Promise<Tweet[]> {
275231
elizaLogger.debug("fetching home timeline");
276232
const homeTimeline = await this.twitterClient.fetchHomeTimeline(count, []);
277-
return homeTimeline
278-
.filter(tweet => tweet.text || tweet.legacy?.full_text)
279-
.sort((a, b) => {
280-
const timestampA = new Date(a.createdAt ?? a.legacy?.created_at).getTime();
281-
const timestampB = new Date(b.createdAt ?? b.legacy?.created_at).getTime();
282-
return timestampB - timestampA;
283-
})
284-
.slice(0, count)
285-
.map(tweet =>
286-
`@${tweet.username || tweet.core?.user_results?.result?.legacy?.screen_name}: ${tweet.text ?? tweet.legacy?.full_text ?? ''}`
287-
)
288-
.join('\n');
233+
234+
elizaLogger.debug(homeTimeline, { depth: Infinity });
235+
const processedTimeline = homeTimeline
236+
.filter((t) => t.__typename !== "TweetWithVisibilityResults") // what's this about?
237+
.map((tweet) => {
238+
//console.log("tweet is", tweet);
239+
const obj = {
240+
id: tweet.id,
241+
name:
242+
tweet.name ??
243+
tweet?.user_results?.result?.legacy.name,
244+
username:
245+
tweet.username ??
246+
tweet.core?.user_results?.result?.legacy.screen_name,
247+
text: tweet.text ?? tweet.legacy?.full_text,
248+
inReplyToStatusId:
249+
tweet.inReplyToStatusId ??
250+
tweet.legacy?.in_reply_to_status_id_str ??
251+
null,
252+
timestamp: new Date(tweet.legacy?.created_at).getTime() / 1000,
253+
createdAt: tweet.createdAt ?? tweet.legacy?.created_at ?? tweet.core?.user_results?.result?.legacy.created_at,
254+
userId: tweet.userId ?? tweet.legacy?.user_id_str,
255+
conversationId:
256+
tweet.conversationId ??
257+
tweet.legacy?.conversation_id_str,
258+
permanentUrl: `https://x.com/${tweet.core?.user_results?.result?.legacy?.screen_name}/status/${tweet.rest_id}`,
259+
hashtags: tweet.hashtags ?? tweet.legacy?.entities.hashtags,
260+
mentions:
261+
tweet.mentions ?? tweet.legacy?.entities.user_mentions,
262+
photos:
263+
tweet.photos ??
264+
tweet.legacy?.entities.media?.filter(
265+
(media) => media.type === "photo"
266+
) ??
267+
[],
268+
thread: tweet.thread || [],
269+
urls: tweet.urls ?? tweet.legacy?.entities.urls,
270+
videos:
271+
tweet.videos ??
272+
tweet.legacy?.entities.media?.filter(
273+
(media) => media.type === "video"
274+
) ??
275+
[],
276+
};
277+
//console.log("obj is", obj);
278+
return obj;
279+
});
280+
//elizaLogger.debug("process homeTimeline", processedTimeline);
281+
return processedTimeline;
289282
}
290283

291284
async fetchTimelineForActions(count: number): Promise<Tweet[]> {

0 commit comments

Comments
 (0)