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
英文地址,請注明出處:http://en.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 基礎封裝 首先我們實現一個具…