0%

x(twitter) 链接解析

研究了一圈 x 的 api,有点不合适,还是用开源替代方便。

一句话总结:

  • 使用系统的 share extension 来交互
  • 使用服务端,第三方的服务获取链接信息,然后返回给客户端,用 serverless 来实现

交互方法

下面给出一个对比 Share SheetCopy & PasteDrag & Drop 三种常见 iOS 数据交互方式的表格。你可以根据需要增减或调整表格的列。

交互方式 简介 典型应用场景 优点 缺点 主要 API/组件 用户操作流程 系统要求
Share Sheet(系统分享面板) iOS 提供的统一分享入口,通过 UIActivityViewController 或 Share Extension - 从一个 App 分享文本、图片、文件等到另一个 App 或社交平台
- 调用三方扩展 (Share Extension)
- 系统级入口,操作简单
- 可统一将内容分享给多种目标
- 支持三方扩展
- 需要弹出分享面板,不能完全自动化
- 用户必须手动选定分享目标
- UIActivityViewController
- Share Extension
1. 用户点击“分享”按钮
2. 系统弹出分享面板
3. 用户在面板中点选目标执行分享
iOS 6+(基本分享)
iOS 8+(Share Extension)
Copy & Paste(剪贴板) 利用系统剪贴板 UIPasteboard 在两个 App 或同一个 App 内复制/粘贴文本、图片等数据 - 复制文本/图片后在另一 App 粘贴
- 各种临时性的数据转移
- 操作直观,对所有 App 通用
- 可复制多种类型(文本、图片、URL 等)
- 需要“复制”后再“粘贴”,两步操作
- iOS 14+ 会提示“已粘贴来自 XXX”隐私弹窗
- UIPasteboard.general 1. 在源 App 中选中内容并“复制”
2. 切到目标 App,“粘贴”
iOS 全版本都支持剪贴板
Drag & Drop(拖拽) 用户在长按内容后将其“拖”到另一位置/另一 App(主要在 iPad Split View 或 iPhone 多任务切换下) - iPad 分屏时,从照片/文件等拖拽到文字处理/社交/其他 App
- 同 App 内部元素拖拽
- 所见即所得,操作自然、直接
- 不需要面板或多余的复制粘贴步骤
- 需要支持多任务场景(iPad 分屏或 iPhone 手势切换)
- 源/目标 App 均需适配
- UIDragInteraction
- UIDropInteraction
- NSItemProvider
1. 用户长按内容并拖拽“浮起”
2. (可切换或分屏)到目标 App 区域放下
iOS 11+ (iPad 支持较全面)
iOS 15+ (iPhone 跨 App 拖拽)

小结

  • Share Sheet:适用于广泛分享给多个目标 App 或社交平台,需要弹出面板,让用户手动选择目标;
  • Copy & Paste:最经典、通用性最强,任何 App 都能使用,但步骤需要“复制→粘贴”;
  • Drag & Drop:在 iPad 或 iPhone 的多任务中更直观,但需要源和目标 App 都支持拖放交互,并且有一定的操作场景限制(分屏/手势切换)。

内容获取方法

以下是一些免费开源的工具或项目,可用于解析 Twitter 链接或从 Twitter 获取数据:


1. Tweepy

Tweepy 是一个用于访问 Twitter API 的 Python 库,开源且免费。

  • 功能:通过 Twitter API 获取推文、用户信息等。
  • 适用场景:从 Twitter 提取推文内容,解析链接中的信息。
  • GitHub 链接: Tweepy

安装

pip install tweepy

示例代码

import tweepy

# 替换为你的 Twitter API 密钥
API_KEY = "your_api_key"
API_SECRET = "your_api_secret"
ACCESS_TOKEN = "your_access_token"
ACCESS_TOKEN_SECRET = "your_access_token_secret"

auth = tweepy.OAuthHandler(API_KEY, API_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)

# 使用 Tweet ID 获取推文
tweet_id = "1613515396313126912"
tweet = api.get_status(tweet_id)
print(f"推文内容:{tweet.text}")

2. snscrape

snscrape 是一个强大的开源工具,可以从 Twitter 获取数据,无需 API 密钥。

  • 功能:支持爬取推文、用户信息,甚至根据关键词搜索推文。
  • 适用场景:快速从 Twitter 链接中提取数据。
  • GitHub 链接: snscrape

安装

pip install snscrape

示例代码

import os

tweet_url = "https://twitter.com/elonmusk/status/1613515396313126912"
command = f"snscrape --jsonl {tweet_url}"
os.system(command)

输出内容将包含推文的详细信息,例如内容、时间、点赞数等。


3. Twint

Twint 是一个开源的 Twitter 数据抓取工具,无需 API 密钥即可获取数据。

  • 功能:抓取推文、用户信息,甚至按时间筛选推文。
  • 适用场景:需要大规模抓取 Twitter 数据或解析推文链接。
  • GitHub 链接: Twint

安装

pip install twint

示例代码

import twint

# 配置
c = twint.Config()
c.Limit = 1
c.URL = "https://twitter.com/elonmusk/status/1613515396313126912"

# 开始抓取
twint.run.Search(c)

4. Regex 提取 + BeautifulSoup

如果不需要推文内容,仅解析链接中的 usernametweet_id,可以使用正则表达式和网页解析工具(如 BeautifulSoup)。

  • 工具:Python 的 reBeautifulSoup
  • 功能:简单提取链接中的用户名和 ID。
  • 适用场景:仅需解析链接。

示例代码

from bs4 import BeautifulSoup
import re

# 链接
url = "https://twitter.com/elonmusk/status/1613515396313126912"
pattern = r"https://twitter\.com/([^/]+)/status/(\d+)"

match = re.match(pattern, url)
if match:
username = match.group(1)
tweet_id = match.group(2)
print(f"用户名:{username}, 推文 ID: {tweet_id}")

5. Scrapy(爬虫框架)

Scrapy 是一个通用的爬虫框架,可以自定义解析 Twitter 链接。

  • 功能:从 Twitter 链接抓取信息并自定义处理。
  • GitHub 链接: Scrapy

安装

pip install scrapy

示例代码(创建爬虫项目并定制爬取 Twitter 链接)。


总结

工具/库 功能描述 适用场景
Tweepy 官方 API 接入,稳定可靠 小规模推文提取,需要 API 密钥
snscrape 无需 API,快速爬取 搜索推文或解析单条推文数据
Twint 无需 API,大规模抓取 Twitter 数据 爬取大量推文信息
Regex+BS4 直接解析链接结构 提取用户名和 Tweet ID
Scrapy 高度定制化爬虫框架 复杂数据抓取

选择适合的工具,基于具体需求实现链接解析!如果有需要,随时可以提供进一步指导。