twikitFKS: 基于 twikit 2.3.1 的改进版本

twikitFKS: 基于 twikit 2.3.1 的改进版本

项目概述

关于 twikit

twikit 是一个优秀的 Twitter API 爬虫库,它的核心优势在于无需 API Key即可访问 Twitter 功能。通过网页爬虫技术,twikit 实现了:

  • 发布推文和媒体内容
  • 搜索推文和用户
  • 获取热门话题趋势
  • 发送私信
  • 用户信息获取
  • 书签管理等功能

这种无 API Key 的设计让开发者可以快速构建 Twitter 相关应用,而无需申请官方 API 权限。

twikitFKS 的诞生

在使用原版 twikit 的过程中,我们发现了一个影响数据完整性的问题:对话分割(conversation spit)。当 Twitter 返回对话形式的推文时,原版在处理 profile-conversation 类型的数据结构时存在解析缺陷,导致部分推文数据丢失。

twikitFKS 正是为了解决这个问题而生的改进版本。我们不仅修复了这个关键 bug,还优化了项目结构,使其更符合现代 Python 项目的最佳实践。

项目信息

  • 项目名称: twikitFKS
  • 版本: 2.3.1
  • Python 版本要求: >= 3.12
  • PyPI 包: twikitfks
  • GitHub 仓库: Liaofushen/twikitFKS
  • 许可证: MIT

主要改动

1. 修复对话分割问题 (Conversation Spit Fix)

在 commit b860e7a4570fdaa0cd3c08eb574ef5f8827bcc7c 中,我们修复了一个影响数据完整性的关键问题。

问题分析:
Twitter 的 GraphQL API 在返回用户推文时,对于对话类型的推文会使用特殊的 profile-conversation 结构。原版 twikit 在处理这种嵌套数据结构时,只取第一个结果,导致对话中的其他推文被忽略。

技术方案:

  • 重构 tweet_from_data 函数,增加 index 参数以支持多推文解析
  • 针对 profile-conversation 类型实现专门的遍历逻辑
  • 添加类型过滤,确保只处理有效的 Tweet 对象
# 修改前
def tweet_from_data(client: GuestClient, data: dict) -> Tweet:tweet_data_ = find_dict(data, 'result', True)if not tweet_data_:return Nonetweet_data = tweet_data_[0]# 修改后  
def tweet_from_data(client: GuestClient, data: dict, index: int = 0) -> Tweet:tweet_data_ = find_dict(data, 'result', index == 0)if tweet_data_ and index > 0:tweet_data_ = [ _i for _i in tweet_data_ if _i.get('__typename') == 'Tweet']if not tweet_data_ or len(tweet_data_) <= index:return Nonetweet_data = tweet_data_[index]

2. 项目结构现代化

为了提升项目的可维护性和开发体验,我们进行了以下改进:

  • Python 版本管理: 添加 .python-version 文件,明确指定 Python 3.12+ 要求
  • 构建系统升级: 使用 pyproject.toml 替代传统的 setup.py,符合 PEP 518 标准
  • Git 配置优化: 更新 .gitignore 规则,排除 __pycache__ 等临时文件
  • 包管理器升级: 集成 uv 包管理器,使用 uv sync 命令进行依赖同步,提供更快的依赖解析和安装速度

3. 依赖管理标准化

采用 pyproject.toml 作为统一的依赖管理配置:

[project]
name = "twikitfks"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = ["beautifulsoup4>=4.13.4","filetype>=1.2.0","httpx[socks]>=0.28.1","js2py-3-13>=0.74.1","lxml>=5.4.0","m3u8>=6.0.0","pyotp>=2.9.0","webvtt-py>=0.5.1",
]

安装和使用

从 PyPI 安装

pip install twikitfks

从源码安装

git clone https://github.com/Liaofushen/twikitFKS.git
cd twikitFKS
uv sync

使用示例

import asynciofrom twikit.guest import GuestClientclient = GuestClient()async def main():# Activate the client by generating a guest token.await client.activate()# Get user by screen nameuser = await client.get_user_by_screen_name('elonmusk')print(user)# Get user by IDuser = await client.get_user_by_id('44196397')print(user)user_tweets = await client.get_user_tweets('44196397')print(user_tweets)tweet = await client.get_tweet_by_id('1519480761749016577')print(tweet)asyncio.run(main())

与原版 twikit 的技术差异

特性twikit 原版twikitFKS
对话分割处理❌ 存在数据丢失✅ 完整解析
项目配置setup.pypyproject.toml
包管理器pipuv (更快)
Python 版本未明确指定>= 3.12
依赖锁定requirements.txtuv.lock

核心改进:

  • 数据完整性: 修复了 profile-conversation 类型推文的解析缺陷
  • 开发体验: 现代化的项目结构和工具链
  • 性能优化: 更快的依赖解析和安装速度

贡献和反馈

如果您在使用过程中遇到任何问题或有改进建议,欢迎:

  • 在 GitHub Issues 中报告问题
  • 提交 Pull Request 贡献代码
  • 给项目点个 ⭐️ 支持

许可证

本项目基于 MIT 许可证开源,您可以自由使用、修改和分发。


总结

twikitFKS 在保持原版 twikit 所有功能的基础上,重点解决了数据完整性问题,并采用了现代化的项目结构。对于需要处理 Twitter 对话数据的开发者来说,这是一个值得考虑的升级选择。

twikitFKS 致力于提供更稳定、更完整的 Twitter API 访问体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/89403.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/89403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C Primer Plus 第6版 编程练习——第9章(下)

7.编写一个函数&#xff0c;从标准输入中读取字符&#xff0c;直到遇到文件结尾。程序要报告每个字符是否是字母。如果是&#xff0c;还要报告该字母在字母表中的数值位置。例如&#xff0c;c和C在字母表中的位置都是3。合并一个函数&#xff0c;以一个字符作为参数&#xff0c…

如何用文思助手改好一篇烂材料

在日常工作中&#xff0c;我们常常会遇到这样的问题&#xff1a;因为工作要使用到之前写的文章再看发现内容杂乱无章、或者收到的一些返稿内容质量差&#xff0c;不修改无法使用。但其实它们可能只是缺少了系统性的梳理与打磨。今天我们就来聊一聊&#xff0c;如何对一些不满意…

VSCODE常规设置

摘要&#xff1a;用于新下载的vscode设置一些个人化的操作在 "Files: Auto Save" 下拉菜单中&#xff0c;选择你想要的自动保存模式。常见的选项包括&#xff1a;"off"&#xff1a;禁用自动保存。 "afterDelay"&#xff1a;在你停止编辑一段时间…

2025秋招突围战:AI智能监考如何重构远程笔试公平防线?

2025秋招季即将来临&#xff0c;企业校招规模预计突破百万量级&#xff0c;远程笔试成为主流筛选方式。然而&#xff0c;传统监考模式暴露出作弊行为难追溯、人力成本过高、数据维度单一等痛点&#xff0c;让HR陷入“效率与公平”的两难困境。牛客AI智能监考系统&#xff0c;通…

Python 基础语法与数据类型(十三) - 实例方法、类方法、静态方法

文章目录1. 实例方法 (Instance Methods)1.1 特点与语法1.2 实例方法示例2. 类方法 (Class Methods)2.1 特点与语法2.2 类方法示例3. 静态方法 (Static Methods)3.1 特点与语法3.2 静态方法示例4. 三种方法的对比总结总结练习题练习题答案创作不易&#xff0c;请各位看官顺手点…

Wireshark的安装和基本使用

文章目录一、Wireshark介绍二、Wireshark安装三、Wireshark讲解1.界面介绍&#xff08;1&#xff09;分组列表&#xff08;2&#xff09;分组详情&#xff08;3&#xff09;分组字节流一、Wireshark介绍 Wireshark 是一款开源的网络协议分析工具&#xff0c;能够捕获、过滤和分…

[yotroy.cool] Git 历史迁移笔记:将 Git 项目嵌入另一个仓库子目录中(保留提交记录)

个人博客https://www.yotroy.cool/&#xff0c;感谢关注&#xff5e; 图片资源可能显示不全&#xff0c;请前往博客查看哦&#xff01; 说来惭愧&#xff0c;这篇是AI帮助我解决实际问题后&#xff0c;又生成的一篇博客&#xff0c;效率特别高。 在开发中&#xff0c;我们常会…

91套商业策划创业融资计划书PPT模版

创业融资计划书PPT模版&#xff0c;商业项目技术书PPT模版&#xff0c;商业创业计划书&#xff0c;商业融资企业宣传PPT模版&#xff0c;活动策划方案书PPT模版&#xff0c;IOS风格商业计划书PPT模版 91套商业策划创业融资计划书PPT模版&#xff1a;https://pan.quark.cn/s/739…

探秘阿里云通义九子:解锁AI无限可能

通义九子初印象在当今人工智能飞速发展的时代&#xff0c;阿里云通义九子宛如一颗璀璨的明星&#xff0c;闪耀在 AI 的浩瀚天空中。作为阿里云推出的一系列强大的人工智能模型&#xff0c;通义九子在自然语言处理、图像生成、智能客服等多个领域展现出了卓越的能力&#xff0c;…

Python网络爬虫之requests库

目录 一.网络爬虫的介绍 1.网络爬虫库 2.robot.txt规则 二.requests库 1.requests库的安装 2.get()函数 3.Response对象 Response的属性 设置编码 返回网页内容 text() content() 三.提交信息到网页 post()函数 四.会话与代理服务器 一.网络爬虫的介绍 1.网络爬虫…

区块链技术详解:从原理到应用

引言 区块链作为一项颠覆性技术&#xff0c;已从加密货币的基石演变为重塑多个行业的创新引擎。本文旨在深入解析其核心原理、关键特性、技术架构、主流应用及未来挑战。一、 区块链核心概念&#xff1a;超越加密货币的分布式账本 本质定义&#xff1a; 区块链是一个去中心化、…

用Finalshell连接服务器后出现文件目录不显示,且刷新报错空指针问题记录

修改SSH配置‌编辑sshd_config‌使用管理员权限编辑/etc/ssh/sshd_config文件&#xff0c;找到Subsystem相关配置。原配置为Subsystem sftp /usr/libexec/openssh/sftp-server使用“i”编辑文件将修改为Subsystem sftp internal-sftp修改完成后使用Esc命令&#xff0c;退出编辑…

C语言:游戏代码分享

小游戏分享 目录 小游戏分享 1.井字棋游戏 2.简单计算器游戏 3.猜单词 4.石头剪刀布游戏 5.猜数字游戏 1.井字棋游戏 「33 棋盘上的思维博弈&#xff01;与好友轮流落子&#xff0c;抢占先机&#xff0c;连成一线即可获胜。简单规则蕴含无限策略&#xff0c;展现你的战术…

深度学习入门-卷积神经网络(CNN)(下)

1-4、 深度学习入门-卷积神经网络&#xff08;CNN&#xff09;&#xff08;上&#xff09;-CSDN博客 5、 卷积神经网络&#xff08;CNN&#xff09;的实现 简单网络的构成是“Convolution - ReLU - Pooling - Affine - ReLU - Affine - Softmax”&#xff1a; 相关代码&#…

Java 大视界 -- Java 大数据在智能交通智能公交站台乘客流量预测与服务优化中的应用(349)

Java 大视界 -- Java 大数据在智能交通智能公交站台乘客流量预测与服务优化中的应用&#xff08;349&#xff09;引言&#xff1a;正文&#xff1a;一、Java 全场景韧性调度系统&#xff08;新增极端天气 车型适配&#xff09;1.1 极端天气&#xff1a;暴雪 / 台风的分钟级响应…

数论内容主要包括哪些

数论&#xff08;Number Theory&#xff09;是数学中研究整数的性质及其相互关系的一个分支&#xff0c;被誉为“数学中的皇后”。它历史悠久&#xff0c;内容丰富&#xff0c;既包含许多初等、直观的问题&#xff0c;也涉及高深、抽象的理论。数论的主要内容包括以下几个方面&…

springboot打包二次压缩Excel导致损坏

springboot打包二次压缩Excel导致损坏开发时&#xff0c;将Excel文件放到resources下&#xff0c;通过类加载器流读取&#xff0c;返回api用于下载该Excel文件。我发现这样下载的Excel被损坏了&#xff0c;无法打开&#xff0c;推测是springboot打包插件默认对resources下的所有…

huggingface笔记

1. huggingface的下载目录 ~/.cache/huggingface 2. 如何修改hugging face的模型默认下载地址 huggingface的默认下载路径在~/.cache/huggingface/hub/&#xff0c;但模型数据占用空间往往很大&#xff0c;可以用以下方法修改默认下载路径。 方法一&#xff1a;在linux中指定环…

Redis3:Redis数据结构与命令全解析

目录 1、redis数据结构介绍 1.1命令学习方式 1.1.1命令行查询 2、redis的通用命令 2.1查找常见的通用命令 2.2常见的通用命令&#xff1a; 3、String类型 3.1String类型的常见命令 3.2Key的层级格式 3.2.1Key的结构 4、Hash类型 4.1Hash类型 4.2Hash类型常见命令 …

WebSocket 重连与心跳机制:打造坚如磐石的实时连接

在现代 Web 应用中&#xff0c;WebSocket 是实现实时通信的核心技术。但网络环境复杂多变&#xff0c;如何确保连接稳定成为关键挑战。本文将深入剖析 WebSocket 的重连与心跳机制&#xff0c;提供一套经过生产环境验证的解决方案。 一、WebSocket 基础封装 首先我们实现一个具…