我有一个推文 ID 列表 ( tids.csv
),我需要收集所有转推。由于我们无法在 v2 API 中直接检索特定推文的转推,因此我必须获取特定用户(我的 tid 文件中推文的用户)的所有转推,然后过滤掉我们感兴趣的特定推文的转推in. 这是我用来获取所有用户转推的命令:
while read line; do twarc2 search --archive --start-time "..." --end-time "..." "retweets_of:$line"; done < usernames.txt > usersRetweets.jsonl
其中 usernames.txt 是一个包含用户名列表的文本文件。
注意:我使用的是 v2 API,因为 v1 API 的限制是只能检索 100 条最近的转推,但我需要所有转推。
问题:
在~17 thousand unique usernames
我的输入文本文件中,我发现获取这么多用户的所有转推需要很长时间和很大的空间。例如,只为约 600 名用户收集转推需要几天时间和约 5 GB 的空间。
问题:就时间和空间而言,获得所有转发的最有效方法是什么?
上面的命令检索每个用户的所有推文的所有转推,而我只需要我的数据集 (tids.csv) 中特定推文的所有转推。
可能的解决方案:这是我想做的事情:
对于 username.txt 中的每个用户:
- 检索用户的所有转推(将开始时间和结束时间设置为我感兴趣的时间范围)
- 仅保留在文件中找到其源推文 ID 的转推,
tid.csv
并删除其余部分。这可以通过将referenced_tweets
字段中的 id 与 tid.csv 文件中的 id 匹配来完成) - 对于每个剩余的转推,只从字典中提取我想要的 json 字段。
- 将字典写入文件
有人可以帮我在 Python 中做到这一点(使用 twarc2 作为库)吗?即使有一个示例/教程开始,我也很感激..
谢谢,