https://github.com/mizzy/tweetduck
Twitter Archive to DuckDB Importer - Extract and import Twitter archive data (2025 format) into DuckDB for analysis
https://github.com/mizzy/tweetduck
archive cli data-analysis duckdb golang twitter
Last synced: 10 months ago
JSON representation
Twitter Archive to DuckDB Importer - Extract and import Twitter archive data (2025 format) into DuckDB for analysis
- Host: GitHub
- URL: https://github.com/mizzy/tweetduck
- Owner: mizzy
- License: mit
- Created: 2025-07-30T19:03:12.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-08-02T22:04:48.000Z (11 months ago)
- Last Synced: 2025-08-30T14:47:20.912Z (10 months ago)
- Topics: archive, cli, data-analysis, duckdb, golang, twitter
- Language: Go
- Size: 11.7 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# TweetDuck
Twitter Archive to DuckDB Importer
TweetDuckは、TwitterアーカイブのZIPファイルからデータを抽出し、DuckDBデータベースにインポートするGoプログラムです。2025年形式の新しいTwitterアーカイブに対応しています。
## 機能
- **2025年形式対応**: 最新のTwitterアーカイブZIPファイルの自動解析
- **包括的データ抽出**: ツイート、フォロワー、フォロイングデータの抽出
- **高速インポート**: DuckDBへの効率的なデータインポート
- **重複データ処理**: INSERT OR IGNOREによる重複データの自動処理
- **詳細ログ**: verboseモードでの詳細な処理状況表示
## 必要要件
- Go 1.21以上
- DuckDBライブラリ(自動取得)
## インストール
```bash
git clone
cd tweetduck
go mod tidy
go build -o tweetduck
```
## 使用方法
### 基本的な使用方法
```bash
./tweetduck --archive="path/to/twitter-archive.zip" --db="output.duckdb"
```
### 詳細ログ付きで実行
```bash
./tweetduck --archive="path/to/twitter-archive.zip" --db="output.duckdb" --verbose
```
### オプション
- `--archive`, `-a`: TwitterアーカイブのZIPファイルパス(必須)
- `--db`, `-d`: 出力先DuckDBファイルパス(デフォルト: tweets.duckdb)
- `--verbose`, `-v`: 詳細ログの出力
## データベーススキーマ
### tweets テーブル
- `id` (VARCHAR): ツイートID(主キー)
- `text` (TEXT): ツイート本文
- `created_at` (TIMESTAMP): 作成日時
- `retweet_count` (INTEGER): リツイート数
- `favorite_count` (INTEGER): お気に入り数
- `retweeted` (BOOLEAN): リツイート済みフラグ
- `favorited` (BOOLEAN): お気に入り済みフラグ
- `source` (TEXT): 投稿元アプリケーション
- `lang` (VARCHAR(10)): 言語コード
### followers テーブル
- `follower_id` (VARCHAR): フォロワーのユーザーID(主キー)
- `user_link` (TEXT): フォロワーのTwitterリンク
### following テーブル
- `following_id` (VARCHAR): フォロー中のユーザーID(主キー)
- `user_link` (TEXT): フォロー中ユーザーのTwitterリンク
## 使用例
### データ検索例
```sql
-- ドクターペッパー関連のツイートを検索
SELECT text, created_at FROM tweets
WHERE text LIKE '%ドクペ%' OR text LIKE '%ドクターペッパー%' OR text LIKE '%Dr Pepper%'
ORDER BY created_at DESC
LIMIT 10;
-- 特定の期間のツイート数をカウント
SELECT DATE(created_at) as date, COUNT(*) as tweet_count
FROM tweets
WHERE created_at >= '2025-01-01'
GROUP BY DATE(created_at)
ORDER BY date DESC;
-- フォロワー数とフォロー数を確認
SELECT
(SELECT COUNT(*) FROM followers) as follower_count,
(SELECT COUNT(*) FROM following) as following_count;
```
## 対応アーカイブ形式
- 2025年形式のTwitterアーカイブ(新形式)
- `data/tweets.js` および `data/deleted-tweets.js` の処理
- `data/follower.js` および `data/following.js` の処理
- JavaScript形式データファイル(`window.YTD.*` 形式)
## ライセンス
MIT License