• Stars
    star
    143
  • Rank 257,007 (Top 6 %)
  • Language
    Rust
  • License
    MIT License
  • Created almost 2 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Easily Archive and Search Your Twitter Data with our Syncable Desktop App

TwitVault

TwitVault Logo

Easily Archive and Search Your Twitter Data with our Syncable Desktop App

TwitVault is a cross platform desktop app that uses the Twitter api to download your profile data. It can also sync your profile to retrieve new data (with some limitations) and it can import some data from the official Twitter archives. You can then browse and search your offline Twitter data from the convenience of a native (well, partially native) deskop app.

Features

  • Import Tweets from an existing Twitter archive (see below)
  • For any Tweet, also optionally archive the author and the authors profile media
  • Archive your tweets.
  • Optionally including respones to your tweets
  • Archive your mentions.
  • Follows and Followers
    • Optionally including user profiles
    • Optionally including profile images
  • Your lists (the ones you created) including user profiles / media
  • Archive your Liked Tweets
  • Search within your downloaded data see screenshot
  • See your Tweets reverse chronological beginning with your first Tweets.
  • Sync, to download newer Tweets, mentions or responses
  • Delete Tweets on Twitter
  • Archive a different users profile / tweets
  • Runs on macOS, Linux and Windows. Can also run in the terminal.

Limitations

There might will be bugs for various usecases that I haven't run into during my testing.

Due to API limitations, not all data can be archived. For every category, Twitter only returns a certain amount of data:

  • No Bookmarks yet. Working on it.
  • Your Tweets: max 3.200
  • Your Mentions: max 800
  • Follows / Followers: No idea, but at least 5000, probably more
  • Lists: Max 1000, max 5000 members per list

Download / Installation

You will need at least Rust 1.65.0 because I've been waiting for let else for a long time (it was the first thing I missed when I started doing Rust in 2018), I want to use it anywhere.

You can find a download in the release section. Or you can compile it yourself as follows (API Keys are explained below)

export API_KEY MYAPIKEYasfkaljsf
export API_SECRET MYAPISECRETaslkfdj
cargo build --release

Note that if you're on Linux, some dependencies need to be met. Check out the deploy.yml

You will also need a valid Twitter API Key. Which has to be set in your shell environment.

To get a Twitter API Key, follow their getting started guide

Crawl the data for a different user

You still need to authenticate with your own user account, but you can crawl a different user. This can currently only be done on the commandline. It also requires the user id of the user you'd like to crawl. Until TwitVault can resolve this, you can get the user id for any user via this website.

Note that on macOS, to run it via the Terminal (if you have it installed in /Applications/) you would do /Applications/TwitVault.app/Contents/MacOS/TwitVault instead of just twitvault.

A custom user should go into a different archive folder. In this example, we will archive the user @hyperdeck_io into ~/Documents/hyperdeck_io:

twitvault --custom-archive ~/Documents/hyperdeck_io crawl --custom-user 1263729774540849158

Then, follow the instructions in the Terminal.

This will archive the user hyperdeck into the ~/Documents/hyperdeck_io folder.

If you then want to open that archive, you'd do the following:

twitvault --custom-archive ~/Documents/hyperdeck_io

Crawl multiple of your accounts

If you have multiple Twitter accounts, you can crawl them via a similar mechanism as above:

twitvault --custom-archive ~/Documents/hyperdeck_io

This will open the UI and allow you to log in as a different user and then crawl the data. If you, later on, want to open this or another archive, just use the same command.

Twitter Archive Sync

If you already downloaded an existing Twitter Archive, you can use it to fill up any missing Tweets in your TwitVault import.

First, perform a normal TwitVault backup.

Once the backup is done, exit TwitVault, head to the Terminal, and execute the following command:

twitvault import -c ~/twitter-archive-folder

# or on macOS
cd /Applications/TwitVault.app/Contents/MacOS/
./TwitVault import -c ~/Path/To/twitter-archive-folder
/Applications/TwitVault.app/Contents/MacOS/TwitVault import -c ~/Path/To/twitter-archive-folder

Afterwards, you can start TwitVault again and it will contain the Tweets.

Deleting Tweets

TwitVault allows you to delete Tweets if they're your own. Due to the simplicity of the app, you'll not get any feedback whether the operation worked or not. Only when you start the app via the Terminal will you see a warning if it didn't work.

More Screenshots

Search:

Search Screenshot

Linux (slightly outdated):

Linux Screenshot

Windows (slightly outdated):

Windows Screenshot

Terminal:

Terminal Screenshot

Where is my data stored?

The location of your data depends on your operating system:

  • Linux: /home/username/.config/twitvault
  • Windows: C:\Users\Username\AppData\Roaming\StyleMac\TwitVault\config
  • macOS: /Users/username/Application Support/com.StyleMac.TwitVault or /Users/username/Library/Application Support/com.StyleMac.TwitVault

Testing these kinds of things under three different operating systems is kinda hard. So there might be bugs.

More Repositories

1

SourceKittenDaemon

Swift Auto Completions for any Text Editor
Swift
528
star
2

Ebou

A cross platform Mastodon Client written in Rust
Rust
464
star
3

CoreValue

Lightweight Framework for using Core Data with Value Types
Swift
457
star
4

postsack

Visually cluster your emails by sender, domain, and more to identify waste
Rust
347
star
5

appventure-blog

My Clojure/Static-Based Blog.
CSS
82
star
6

OceanBar

A fancy Digital Ocean API client for Mac OS X 10.9+
Objective-C
70
star
7

gitsi

Git Status Interactive
C
36
star
8

bevy_quickmenu

A simple-to-use menu system for Bevy which supports gamepad, keyboard or mouse navigation
Rust
23
star
9

Swijito

An Apple iCloud Photostream Client written in Swift
Swift
21
star
10

TextMateSwiftCompletion

Swift Completions for Textmate
Swift
19
star
11

SwiftWadReader

Example of how to use Swift 3 in order to read a Doom WAD file
Swift
18
star
12

rust-catalyst-example

Example Project to show how to build a Catalyst static library with Rust
Swift
17
star
13

navicula

Rust
14
star
14

rust-ios-android-example

Rust
13
star
15

VimConfiguration

My new, personal, vim configuration. Based on Vundle.
Vim Script
13
star
16

CX11.swift

Swift Package for X11
Swift
13
star
17

swift-x11-example

A simple example that shows how to write a X11 app on Linux in Swift using the new package manager
Swift
12
star
18

NSSpain2020Code

The code for my NSSpain 2020 Talk: GeometryReader, View Preferences and Anchors - SwiftUI tales from the Hyperdeck
Swift
9
star
19

Parsepaper

Link Taskpaper files with Git commit so that commit messages automatically include the @done tasks from the task paper file.
Ruby
9
star
20

Difflocal

Compare Localizable.strings files for changes
Python
8
star
21

pragma2017-example-code

Unidirectional Data Flow Examples
Swift
6
star
22

tryswift-macos-workshop

Swift
6
star
23

watchout

Automatically run scripts and reload images
Rust
6
star
24

SpacemacsConfig

My personal Spacemacs config.
Emacs Lisp
5
star
25

belum

A lightweight, experimental, type-safe dependency injection container (cough) for Swift
Swift
5
star
26

cljs-animated-wwdc2014

Animated WWDC 2014 Logo in ClojureScript
JavaScript
4
star
27

luapsql

A high speed C binding to PostgreSQL's libpq for quick access to databases. Includes support for array columns and json columns. Forked from Luis Carvalho.
C
3
star
28

SwiftHeroesCatalystAppKit

Swift
3
star
29

nsspain18-cocoa-bindings-workshop

Swift
3
star
30

Cederic

Agents for Swift: Non-blocking, thread-safe, asynchrounous access & modification of shared data/state
Swift
3
star
31

timezone-abbreviations

Translate non-standardized abbreviations such as 'GMT' to timezone information on a best guess basis.
Rust
3
star
32

senor-pacbomber

The unholy combination of PacMan and Bomberman: El Señor Pacbomber. For the Bevy Jam #2
Rust
2
star
33

tted

Render rich text and emoji on the GPU or CPU using Forma
Rust
2
star
34

cryptsy-python-api

A Python implementation of the Cryptsy-API (https://www.cryptsy.com/)
Python
2
star
35

appventure.me-codebase

The Jekyll Code that powers appventure.me + The git that has all the posts
Ruby
2
star
36

Google-Web-History-Downloader

Google Web History Downloader
Ruby
2
star
37

uniffi-swift-async-example

Quick example showing how to use uniffi with swift and async
Swift
2
star
38

nsspain2023workshop

Rust
2
star
39

aargh

No Chrome Fullscreen Mac OS X Browser for HTML5 Slideshows/Presentations
Objective-C
1
star
40

CatalystMaterial

Swift
1
star
41

appventure

Appventure Codebase
HTML
1
star
42

techou

Custom Rust static site engine. Terrible code, probably full of bugs. Works for my use cases.
Rust
1
star
43

appbuilders2022

Shell
1
star
44

PhotoSetManager

Group loads of pictures based on metadata
Objective-C
1
star
45

lempel

Gzip for Swift as a Carthage-Compatible framework
Swift
1
star
46

emlx

Parse Apple Mail.app `Emlx` Files.
Rust
1
star
47

EmacsConfiguration

My private Emacs configuration utilizing Evil to feel almost like vim
Emacs Lisp
1
star
48

Vim---Bash-Configuration

My Vim Configuration, based on http://github.com/evilchelu/braid, and my Bash Config
Python
1
star
49

GameAssetOrganizer

A Mac tool that helps in sorting game assets into a level pack / level structure so that these can be transformed into sprite sheets.
Objective-C
1
star
50

stripe_bug_cocoa_example

There's an issue on Mac OS X 10.8 and 10.9 where CSS/JS Animation heavy contents in a Layer-Backed WebView do not draw correctly. This affects the Stripe Checkout form which does not display at all on those older operating systems. The bug seems to be fixed in 10.10 Yosemite.
Objective-C
1
star
51

parse_most_visited_websites

A Simple collection for scripts to generate a list of frequently visited websites and analyze it in order to find out which is the best partitioning scheme for a PostgreSQL database partitioning. Also includes code to generate the necessary SQL.
Clojure
1
star