MCPcopy Index your code
hub / github.com/bttv-android/bttv

github.com/bttv-android/bttv @v0.43.2-beta

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.43.2-beta ↗ · + Follow
747 symbols 1,878 edges 185 files 21 documented · 3%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

license: MIT bttv version build on GitHub release (latest by date) GitHub all releases [Discord]discord-invite

bttv-android

A mod of the Twitch Android Mobile1 App adding BetterTTV, FrankerFaceZ and 7TV emotes

This project is not affiliated to Twitch Interactive Inc, NightBot LLC, Dan Salvato LLC or the SevenTV project! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND!

Hero image

We need you

You can help this project by contributing translations on crowdin.

Features

  • BTTV, FFZ and 7TV Emotes
  • Auto-Claim Bonus Channel Points
  • Auto Updater
  • Sleep Timer
  • Highlight Keywords
  • Split Chat
  • Anon Chat

Known issues

  • Amazon Video Watch Parties require the Twitch App to be installed on the device and the optional step in the install instructions below
  • Animated Emotes occasionally glitch on some devices
  • 7TV's zero width emotes are not supported right now
  • Personal Emotes are not supported for now
  • Users have reported that notifications are not working for them. To fix this go to "App-Info -> Open Supported Apps" and select "Only in this application".

  • bttv-android will not work on Android TVs as it is a mod of the Twitch mobile App and not of the Twitch Andorid TV App. You can install it, just do not expect a good experience

Install

  1. Skim through this guide on how to enable third party app istallations
  2. Go to the latest release page and download the .apk file of the mod. It periodically checks for new releases so you only have to download it once from there. How to download
  3. (Optional) Prevent Twitch from opening when you interact with twitch.tv links: Long-press on the Twitch App -> "App Info" -> "Advanced" -> "Open by default" -> "Open supported links" -> "Ask every time" (might vary depending on OEM)

Build it yourself

This patch is meant to be applied to version 19.0.1 of the official twitch app Make sure you use this version before you create an issue!

Easy way: Docker

Prerequisites:

Docker

How to:

  1. Clone this repo
  2. Get the Twitch App's apk files (e.g from here, or here)

    Please make sure you get it from a non-shady source!

If you have downloaded a single .apk file, name it twitch.apk

If you have downloaded a bundle of .apk files put them in a .zip archive and name it twitch.zip

Note: Apkmirror publishes bundles as .apkm files, those are just zip files, so rename them to twitch.zip

  1. Run the builder: docker run --rm -ti \ -v path/to/twitch.apk:/usr/build/twitch.apk \ -v /path/to/dist:/usr/build/dist \ -v path/to/patches:/usr/build/patches \ -v /path/to/mod:/usr/build/mod \ -v /path/to/.all-contributorsrc:/usr/build/.all-contributorsrc \ -v /path/to/bttv.manifest.json:/usr/build/bttv.manifest.json \ ghcr.io/bttv-android/builder

    If you are in the same directory as the apk file you can copy and paste: docker run --rm -ti \ -v $(pwd)/twitch.apk:/usr/build/twitch.apk \ -v $(pwd)/.bttv-cache:/usr/build/.bttv-cache \ -v $(pwd)/dist:/usr/build/dist \ -v $(pwd)/patches:/usr/build/patches \ -v $(pwd)/mod:/usr/build/mod \ -v $(pwd)/.all-contributorsrc:/usr/build/.all-contributorsrc \ -v $(pwd)/bttv.manifest.json:/usr/build/bttv.manifest.json \ ghcr.io/bttv-android/builder

  2. The dist directory will contain the patched apk file!
  3. Transfer to device and install apk
  4. Remove the builder again: docker rmi ghcr.io/bttv-android/builder

Hard way

Prerequisites:

Tool Env variable Default
Bash Has to be in /bin
Git Has to be in PATH
Java JDK JAVA_PATH and JAVAC_PATH java and javac (from PATH)
jq Has to be in PATH
Android SDK or install using Android Studio BUILDTOOLS_PATH ~/Android/Sdk
ApkTool APKTOOL_PATH /opt/apktool/apktool.jar
Uber APK Signer UBER_APK_SIGNER_PATH /opt/uber-apk-signer/uber-apk-signer-1.2.1.jar
Baksmali BAKSMALI_PATH /opt/baksmali/baksmali-2.4.0.jar
build-companion BUILD_COMPANION /opt/build-companion

How to:

If you get stuck at any point, just remove the disass dir and try again

  1. Download and install prerequisites
  2. Get the Twitch App's apk files (e.g from here), drop them zipped in this directory and call it "twitch.zip"

    Please make sure you get it from a non-shady source! If you have adb installed follow this guide (Method 3)

  3. The ./initworkspace script will disassemble the apks, build the sources, apply monkey patches and build the new apk for you
  4. Transfer to device and install apk

    (Adb installed and device connected? Try the : ./install script)

This repo is mirrored on Gitlab.

Made with ♥️ by @FoseFx and contributors. MIT License.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Max Baumann Max Baumann 🚧 LEMIBANDDEXARI LEMIBANDDEXARI 🌍 🤔 🐛 Stephan Stephan 🤔 🌍 Corentin Detry Corentin Detry 🐛 🌍 Dione Batista Dione Batista 🌍 🐛 Erős Dániel Erős Dániel 🐛 Xslash Xslash 🌍
Artur Artur 🌍 YOEL_44 YOEL_44 🌍 albertopasqualetto albertopasqualetto 🌍 kendricktsoi kendricktsoi 🌍 ashamefuldog ashamefuldog 🤔 Zeuxis29 Zeuxis29 🌍 xplod62 xplod62 🤔
colahobi colahobi 🤔 Christiano Rangel Christiano Rangel 🐛 🤔

Extension points exported contracts — how you extend this code

Value (Interface)
(no doc) [13 implementers]
mod/app/src/main/java/bttv/settings/UserPreferences.java
ChatMessageInterface (Interface)
(no doc) [4 implementers]
mod/twitch/src/main/java/tv/twitch/android/shared/chat/pub/messages/ui/ChatMessageInterface.java
UpdateCallbackListener (Interface)
(no doc) [5 implementers]
mod/app/src/main/java/bttv/updater/Updater.java
ChannelInfo (Interface)
(no doc) [3 implementers]
mod/twitch/src/main/java/tv/twitch/android/models/channel/ChannelInfo.java
AfterRemoved (Interface)
(no doc) [1 implementers]
mod/app/src/main/java/bttv/highlight/StringSetUIAdapter.java
ViewDelegateEvent (Interface)
(no doc) [2 implementers]
mod/twitch/src/main/java/tv/twitch/android/core/mvp/viewdelegate/ViewDelegateEvent.java
SettingsFragmentBinding (Interface)
(no doc) [1 implementers]
mod/app/src/main/java/bttv/settings/SettingsFragmentBinding.java
ViewDelegateState (Interface)
(no doc) [2 implementers]
mod/twitch/src/main/java/tv/twitch/android/core/mvp/viewdelegate/ViewDelegateState.java

Core symbols most depended-on inside this repo

get
called by 50
mod/app/src/main/java/bttv/settings/UserPreferences.java
add
called by 45
mod/app/src/main/java/bttv/highlight/StringSetUI.java
getString
called by 43
mod/app/src/main/java/bttv/settings/UserPreferences.java
getResourceId
called by 39
mod/app/src/main/java/bttv/ResUtil.java
toString
called by 26
mod/app/src/main/java/bttv/emote/Emote.java
getLocaleString
called by 25
mod/app/src/main/java/bttv/ResUtil.java
isEmpty
called by 24
mod/app/src/main/java/bttv/highlight/StringSetUI.java
getBooleanFromSettings
called by 18
mod/app/src/main/java/bttv/ResUtil.java

Shape

Method 496
Class 211
Interface 21
Enum 19

Languages

Java100%

Modules by API surface

mod/app/src/main/java/bttv/settings/UserPreferences.java46 symbols
mod/app/src/main/java/bttv/updater/Updater.java28 symbols
mod/app/src/main/java/bttv/updater/UpdaterActivity.java16 symbols
mod/app/src/main/java/bttv/settings/StreamSettings.java14 symbols
mod/app/src/main/java/bttv/settings/SettingsBottom.java13 symbols
mod/app/src/main/java/bttv/emote/Emotes.java13 symbols
mod/twitch/src/main/java/tv/twitch/android/shared/settings/BaseSettingsPresenter.java12 symbols
mod/twitch/src/main/java/tv/twitch/android/shared/chat/pub/model/messages/MessageToken.java12 symbols
mod/app/src/main/java/bttv/settings/SettingsPresenter.java12 symbols
mod/app/src/main/java/bttv/highlight/StringSetUI.java12 symbols
mod/app/src/main/java/bttv/emote/EmotePicker.java12 symbols
mod/app/src/main/java/bttv/api/Glide.java12 symbols

For agents

$ claude mcp add bttv \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page