A tool to subscribe to Twitch channels and store them efficiently on disk

Overview

twitch-messages

A tool to subscribe to Twitch channels and store them efficiently on disk

Build the Tools

You can start by building the binaries that will be used in the next steps:

cargo build --release --bins

And copy the binaries for convenience:

cp target/release/writer target/release/reader .

Usage

Once the binaries are at the root of the working directory you can run the writer. It is a tool that creates a database.tm folder and will collect the Twitch messages of the channel you want to follow.

./writer mistermv ponce mynthos

Show the Segments

The database is now being fed by the writer, you can use the reader binary combined with the watch command to show the progress of indexation.

watch -d ./reader print-all-segments

The print-all-segments subcommand of the reader displays the segments that contains batches of messages, which are internally ordered by date.

The -d option on watch displays a diff of the changes that happen to the segments, like compaction and newly appended segments.

Show the Messages

There also is a simple command that shows all of the messages collected so far. The messages should be ordered by date and time, but as the messages are ordered inside of each segments there can be some overlaps can happen. Segments are simply read in order.

watch -d ./reader print-all-messages

The output of the messages is a CSV with the timestamp, channel, login and text of the message:

timestamp,channel,login,text
1635605018,etoiles,wezio95,ça marche SeemsGood
1635605018,fantabobshow,aickeron,VOTRE BARRE MONSIEUR
1635605018,fantabobshow,fg_rajahdakirin,C'EST TRUQUE
1635605018,inoxtag,juliegeek,Mon amoureuse il a dit ouhhhh
1635605018,inoxtag,lebossdu509,GlitchCat GlitchCat GlitchCat GlitchCat GlitchCat GlitchCat GlitchCat GlitchCat GlitchCat
1635605018,inoxtag,noscareddie_,calvitie
1635605018,inoxtag,wmarenoob,la calvitie de SARD LUL
1635605018,locklear,diobloz,KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW KEKW F
1635605018,maghla,kagishinseken_art,@okallylily  sa va?
1635605018,michou_twitch,claratison,oui
You might also like...
Generate enum from a trait, with converters between them
Generate enum from a trait, with converters between them

Derive macro for Rust that turns traits into enums, providing tools for calling funtions over channels

1️⃣ el lisp number uno - one lisp to rule them all 🏆

luno el lisp number uno luno is the one lisp to rule them all. Still experimental, do not use it in production yet. goals embeddable small size simple

Peekable iterator that allows to peek the next N elements without consuming them.

peekaboo docs - crates.io Peekable iterator that allows to peek the next N elements without consuming them. It's no_std compatible by default. It also

One copy of Electron to rule them all.

chroma One copy of Electron to rule them all. chroma keeps a central, up-to-date version of Electron, and makes all your installed Electron apps use i

A crate providing a tracing-subscriber layer for formatting events so Datadog can parse them

Datadog Formatting Layer A crate providing a tracing-subscriber layer for formatting events so Datadog can parse them. Features Provides a layer for t

A tool for investigating file system and folder contents and their changes.

Sniff A tool for investigating file systems and folder contents and their changes. Sniff can create snapshots of file systems and folders, storing has

A tool of generating and viewing dice roll success distributions.

AZDice A GUI tool for generating and visualising dice roll probability distributions. Aims Intended to help people trying to get game balance just rig

A low-ish level tool for easily writing and hosting WASM based plugins.

A low-ish level tool for easily writing and hosting WASM based plugins. The goal of wasm_plugin is to make communicating across the host-plugin bounda

A small tool to clone git repositories to a standard location, organised by domain name and path.

A small tool to clone git repositories to a standard location, organised by domain name and path. Runs on BSD, Linux, macOS, Windows, and more.

Owner
Clément Renault
@meilisearch Co-Founder and CTO @42School 2013 Alumni
Clément Renault
Remoc 🦑 — Remote multiplexed objects and channels for Rust

Remoc ?? — remote multiplexed objects and channels Remoc makes remote interaction between Rust programs seamless and smooth. Over a single underlying

ENQT GmbH 98 Dec 21, 2022
An open-source Windows client for Twitch.tv

TwitchBox is a lightweight Windows client created to enhance the Twitch.tv experience. The app uses the Tauri framework, which includes a combination

Sandun Wiratunga 3 Apr 28, 2023
Count zeroes on a disk or a file

Count zeroes on a disk or a file

Cecile Tonglet 1 Dec 12, 2021
Rust libraries for working with GPT (GUID Partition Table) disk data

gpt-disk-rs no_std libraries related to GPT (GUID Partition Table) disk data. There are three Rust packages in this repository: uguid The uguid packag

Google 25 Dec 24, 2022
"Philips Ambilight for desktops". A tool to generate color palettes from your desktop wallpaper and send them to Home Assistant.

Desktop Dye DesktopDye is an open source project written in Rust that allows users to have their lights paired with Home Assistant adjust to the most

Jeroen Meijer (Jay) 7 Feb 22, 2023
💫 Small microservice to handle state changes of Kubernetes pods and post them to Instatus or Statuspages

?? Kanata Small microservice to handle state changes of Kubernetes pods and post to Instatus ?? Why? I don't really want to implement and repeat code

Noel ʕ •ᴥ•ʔ 4 Mar 4, 2022
A memory efficient immutable string type that can store up to 24* bytes on the stack

compact_str A memory efficient immutable string type that can store up to 24* bytes on the stack. * 12 bytes for 32-bit architectures About A CompactS

Parker Timmerman 342 Jan 2, 2023
A lambda extension to hot reload parameters from SSM Parameter Store, Secrets Manager, DynamoDB, AppConfig

A lambda extension to hot reload parameters from SSM Parameter Store, Secrets Manager, DynamoDB, AppConfig

Jake Scott 7 Jun 12, 2022
Nix binary cache implemented in rust using libnix-store

harmonia Build Whole application nix-shell --run cargo b C Library Wrapper around libnixstore nix-shell --run make Note: The makefile is only to pro

Helsinki Systems 84 Dec 24, 2022
🦸‍♂️ Recast migrates your old extensions to AndroidX, making them compatible with the latest version of Kodular.

Recast Recast helps make your old extensions compatible with Kodular Creator version 1.5.0 or above. Prerequisites To use Recast, you need to have Jav

Shreyash Saitwal 13 Dec 28, 2022