Bring your favorite third-party twitch emotes directly to WhatsApp!
This app aims to make any 7TV emote usable in WhatsApp by turning it into a WhatsApp sticker. This is done by scaling the emote to 512 x 512 pixels while keeping its filesize below 500KB using compression and grouping it with a minimum of two other emotes into Sticker packs.
The upscaling and compression should happen relatively fast, since it uses rust under the hood ๐ฆ
Also this is my first flutter/dart (and rust) project (and app in general) so please have some mercy with my spaghetti code ๐
The simplest and recommended approach is to use the provided dev-container:
- Install docker on your host system
- Clone this repository including the submodule:
git clone https://github.com/gthvmt/7TV-for-WhatsApp.git --recurse-submodules
- Install the visual studio code "Dev Containers"-extension
- (Re)open the cloned repository inside the devcontainer
- Download the Android studio sdkmanager CLI on your host and add the bin directory to your PATH to get access to the android debug bridge (adb.exe)*
- Enable USB-Debugging on your Android device
- Make sure your Android device is connected to the same network as your PC
- Get the IP-adress of your Android device
- Connect your Android device to your PC using USB
- Run
adb tcpip 5555 adb connect <IP of your Android Device>:5555
- Run
adb connect <IP of your Android Device>:5555
inside of the Dev-Container - Run
flutter run
inside of the src directory (in the Dev-Container). If you get any errors try runningjust build
first.
*I had some problems on windows where adb would not recognise my device a bunch of times, using https://github.com/koush/UniversalAdbDriver instead seemed to resolve this issue
If you do not have access to an android device, the dev-container comes with emulators pre-installed; so in theory it should be possible to debug the app using an emulator. I have never tested this though.
If you are not able to install docker on your host or your host does not have the sufficient hardware you can follow this approach instead:
(this assumes that you are using visual studio code. Developing inside android studio should also work and be easier to set up but I have never done that)
- Install flutter
- Install rust
- Download/Install OpenJDK 11 and add the bin directory to your PATH
- Download the Android studio sdkmanager CLI and add the bin directory to your PATH
- Add the ANDROID_HOME environment variable
- Install the "platform-tools" using the sdkmanager
- Optionally install android emulator(s) using the sdkmanager
- Install the Android NDK and add the environment variables ANDROID_NDK and ANDROID_NDK_HOME
- Install just (optional), cargo-ndk and flutter_rust_bridge_codegen using cargo:
cargo install just cargo-ndk flutter_rust_bridge_codegen
- Configure rust:
rustup component add rustfmt rustup target add aarch64-linux-android armv7-linux-androideabi x86_64-linux-android i686-linux-android
I may have missed a step here but it should be an OK guideline if you want/need to contribute to this project while working directly on your host. Feel free to check out the devcontainer file or submit a PR to fix or expand this list.
- Enable USB-Debugging on your Android device
- Connect your Android device to your PC using USB
- Run
flutter run
inside of the src directory
Actually, I dont even like beer...
I initially had the thought of monitizing this app by (for example) putting the ability to set a custom sticker pack provider name behind a paywall. Ultimately I decided against it because I am too lazy to implement it (and paywalls kinda suck). If you would still like to throw some money at me, you can do so here:
https://ko-fi.com/gthvmt