You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R的academictwitter包get_liked_tweets函数获取指定日期点赞推文?

解决academictwitter包get_liked_tweets日期参数无效的问题

先明确参数作用

academictwitter包中get_liked_tweets的start_tweets和end_tweets参数,是用来过滤被点赞推文的发布时间,而非用户点赞该推文的时间。如果你的需求是后者,这两个参数自然不会生效。


方案1:筛选被点赞推文的发布时间区间

如果你的目标是获取用户点赞的、发布在指定日期范围内的推文,先检查以下几点:

  • 确保日期格式严格为YYYY-MM-DD
  • 确认使用的是最新版本的包(旧版本可能存在参数bug)

示例代码:

library(academictwitter)

# 更新包(如果需要)
devtools::install_github("cjbarrie/academictwitter")

# 获取指定发布日期区间的点赞推文
liked_tweets <- get_liked_tweets(
  user_id = "目标用户ID",
  bearer_token = "你的学术版API密钥",
  start_tweets = "2023-01-01",
  end_tweets = "2023-12-31"
)

方案2:筛选用户点赞行为的时间区间

Twitter学术版API的/users/:id/liked_tweets端点本身不支持直接过滤用户点赞的时间,因此academictwitter包也没有对应参数。可以通过以下步骤实现:

  1. 批量获取用户的所有点赞推文(按点赞时间倒序返回)
  2. 利用分页参数next_token循环获取所有数据
  3. 本地结合推文发布时间辅助筛选点赞时间在目标区间内的内容(API返回结果中无直接点赞时间字段)

示例分页获取代码:

library(academictwitter)

bearer_token <- "你的学术版API密钥"
user_id <- "目标用户ID"
start_date <- as.Date("2023-01-01")
end_date <- as.Date("2023-12-31")

all_liked <- list()
next_token <- NULL

repeat {
  batch <- get_liked_tweets(
    user_id = user_id,
    bearer_token = bearer_token,
    next_token = next_token
  )
  
  if (nrow(batch$data) == 0) break
  
  all_liked <- c(all_liked, list(batch$data))
  next_token <- batch$meta$next_token
  
  # 推文发布时间远早于start_date时,点赞时间大概率也早于该日期,可提前终止循环
  earliest_tweet_date <- min(as.Date(batch$data$created_at))
  if (earliest_tweet_date < start_date) break
}

# 合并数据并筛选
all_liked_df <- do.call(rbind, all_liked)
filtered_liked <- all_liked_df[as.Date(all_liked_df$created_at) >= start_date & as.Date(all_liked_df$created_at) <= end_date, ]

注意:如果必须精准获取用户点赞的时间,可能需要调用Twitter API原始端点或使用其他包(如rtweet),academictwitter目前暂不支持直接返回点赞时间字段。

内容的提问来源于stack exchange,提问作者naphta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 09:45:25