Twikit is an asynchronous Python library that provides a comprehensive, unofficial client for the Twitter (X) API. It allows users to perform a wide range of Twitter operations—such as posting tweets, searching for tweets and users, managing bookmarks and lists, sending direct messages, uploading media, and streaming real-time events—without requiring an official API key. The library achieves this by reverse-engineering Twitter's internal GraphQL and REST v1.1 endpoints, handling authentication via login flows or guest tokens, and implementing sophisticated anti-bot evasion techniques like client-side transaction ID generation (X-Client-Transaction-Id) and UI metrics obfuscation. The architecture separates concerns into GraphQL (gql) and REST (v11) client modules, with data models for tweets, users, communities, and more. It includes optional CAPTCHA solving and cookie persistence for session reuse. The codebase is well-structured, actively maintained, and demonstrates deep reverse-engineering skill, particularly in the `x_client_transaction` module that mimics Twitter's client-side telemetry.
feedgrab is a universal content aggregation tool that fetches, normalizes, and saves content from 18+ platforms (Twitter/X, Xiaohongshu, WeChat, YouTube, Bilibili, GitHub, HackerNews, Medium, Reddit, Weibo, Douyin, Telegram, RSS, Feishu, Kdocs, Zsxq, FlowUs, and more) into Obsidian-compatible Markdown files with YAML frontmatter. It operates as a CLI tool, a Python library, and an MCP server, featuring a modular architecture with per-platform fetchers that implement a multi-tier fallback strategy (direct API → CDP browser reuse → Playwright launch → Jina Reader) to maximize resilience against anti-scraping measures. The system includes robust utilities for deduplication, media download, Groq Whisper transcription, paywall bypass, and cookie rotation for authenticated platforms. Originally developed as a 'vibe coding' personal project, it has evolved into a well-structured application with a service layer, typed configuration, and comprehensive CLI commands (login, doctor, batch search, setup wizard). It is actively maintained, with frequent commits addressing platform API changes and adding new features.
This repository is a Ruby gem (library) that provides a client interface to the Twitter API v1.1, covering both REST and Streaming endpoints. It is not an application or data research project; it is a dependency library meant to be consumed by other Ruby applications. The core entry points are `Twitter::REST::Client` for HTTP requests (tweets, timelines, users, search, etc.) and `Twitter::Streaming::Client` for real-time streaming connections. The library models API responses as typed objects (e.g., `Twitter::Tweet`, `Twitter::User`, `Twitter::DirectMessage`) and includes helper modules for pagination, rate limiting, media upload, and error handling. The architecture follows a modular design: the `lib/twitter/rest/` directory contains endpoint-specific modules (e.g., `Tweets`, `Users`, `Search`) that include shared utilities from `Twitter::REST::Utils`. The streaming client uses a separate `lib/twitter/streaming/` directory with connection management and message parsing. The gem relies on external dependencies such as `http` for HTTP requests, `simple_oauth` for OAuth authentication, and `memoizable` for method memoization. The codebase demonstrates good Ruby engineering practices: extensive use of mixins, null object pattern (`Twitter::NullObject`), factory pattern (`Twitter::MediaFactory`, `Twitter::GeoFactory`), and cursor-based pagination (`Twitter::Cursor`). Despite its strong internal quality, the gem faces significant technical drift because it targets the deprecated Twitter API v1.1. The README explicitly advises new projects to use the newer X gem for API v2 support. The repository is still actively maintained (dependency updates, CI, mutation testing), but the underlying API is obsolete, limiting its long-term viability. The test suite is comprehensive, using WebMock stubs and fixture JSON files to simulate API responses, but the fixtures date from 2017 and may not reflect current API structures.