frosty/README.md

210 lines
9 KiB
Markdown
Raw Normal View History

2022-03-25 02:20:39 -04:00
<p align="center">
2022-05-03 01:44:25 -04:00
<a align="center" href='https://frostyapp.io'/>
<img src="https://user-images.githubusercontent.com/54859075/160067655-f96b7e62-67f7-43d6-96ea-19ac85418bf6.svg" width="180px" alt="Frosty Logo" />
<h1 align="center">Frosty</h1>
</a>
2022-03-25 02:20:39 -04:00
</p>
2022-01-13 11:39:28 -05:00
2022-03-25 02:20:39 -04:00
<p align="center">
A <a href="https://www.twitch.tv/">Twitch</a> client for iOS and Android with
<a href="https://betterttv.com/">BTTV</a>,
<a href="https://www.frankerfacez.com/">FFZ</a>, and
<a href="https://7tv.app/">7TV</a> support. Built with
<a href="https://flutter.dev/">Flutter</a>.
</p>
2021-08-18 09:38:00 -04:00
2022-03-25 02:20:39 -04:00
<p align="center">
<a href="https://github.com/tommyxchow/frosty/actions/workflows/main.yml">
<img
alt="CI"
src="https://github.com/tommyxchow/frosty/actions/workflows/main.yml/badge.svg"
/>
</a>
2022-04-15 04:00:54 -04:00
<a href="https://github.com/tommyxchow/frosty/issues">
<img
alt="Issues"
src="https://img.shields.io/github/issues/tommyxchow/frosty"
/>
</a>
<a href="https://github.com/tommyxchow/frosty/commits">
<img
alt="Last Commit"
src="https://img.shields.io/github/last-commit/tommyxchow/frosty"
/>
</a>
2022-03-25 02:57:29 -04:00
<a href="https://github.com/tommyxchow/frosty/blob/main/LICENSE">
<img
alt="License"
src="https://img.shields.io/github/license/tommyxchow/frosty"
/>
</a>
2022-03-25 02:20:39 -04:00
<a href="https://github.com/tommyxchow/frosty/releases/latest">
<img
alt="Release"
src="https://img.shields.io/github/v/release/tommyxchow/frosty"
/>
</a>
</p>
<p align="center">
2022-03-25 02:20:00 -04:00
<a
href="https://apps.apple.com/us/app/frosty-for-twitch/id1603987585"
target="_blank"
>
<img
2022-03-25 02:20:39 -04:00
title="Get it on iOS (Apple App Store)"
alt="Apple App Store Badge"
2022-03-25 02:20:00 -04:00
src="https://user-images.githubusercontent.com/54859075/160051843-1d8b2186-97e9-4edd-a957-bb4797b71b4a.svg"
2022-03-25 02:57:29 -04:00
width="200px"
2022-03-25 02:20:00 -04:00
/>
</a>
<a
href="https://play.google.com/store/apps/details?id=com.tommychow.frosty"
target="_blank"
>
<img
2022-03-25 02:20:39 -04:00
title="Get it on Android (Google Play Store)"
alt="Google Play Store Badge"
2022-03-25 02:20:00 -04:00
src="https://user-images.githubusercontent.com/54859075/160051854-21a57556-6b5a-41e9-8127-334daf1fac47.svg"
2022-03-25 02:57:29 -04:00
width="225px"
2022-03-25 02:20:00 -04:00
/>
</a>
2022-02-04 17:21:09 -05:00
</p>
2022-01-12 19:04:28 -05:00
2022-03-25 02:20:39 -04:00
<p align="center">
<a href="https://www.buymeacoffee.com/tommychow" target="_blank">
<img
title="Support the App!"
alt="Buy Me A Coffee"
src="https://user-images.githubusercontent.com/54859075/160051848-2e581476-a6c6-4de6-9af7-773d96632de1.svg"
2022-03-25 02:57:29 -04:00
width="200px"
2022-03-25 02:20:39 -04:00
/>
</a>
</p>
2022-03-25 02:20:00 -04:00
2022-03-25 02:20:39 -04:00
<p align="center">
2022-03-25 02:20:00 -04:00
<img
title="Followed Streams"
alt="Followed Streams"
2022-07-06 04:04:43 -04:00
src="https://user-images.githubusercontent.com/54859075/177494837-14055c2e-0c47-4134-9554-821fb995a75e.png"
2022-03-25 02:20:00 -04:00
width="32%"
/>
<img
title="Categories Section"
alt="Categories Section"
2022-07-06 04:04:43 -04:00
src="https://user-images.githubusercontent.com/54859075/177494836-96a99000-fd38-45dd-991b-a02d56da241a.png"
2022-03-25 02:20:00 -04:00
width="32%"
/>
<img
title="Search Section"
alt="Search Section"
2022-07-06 04:06:38 -04:00
src="https://user-images.githubusercontent.com/54859075/177501555-74b098ae-d3a6-4454-bfbe-6deaaab28a5c.png"
2022-03-25 02:20:00 -04:00
width="32%"
/>
<img
title="Channel (Video/Chat) View"
alt="Channel (Video/Chat) View"
2022-07-06 04:04:43 -04:00
src="https://user-images.githubusercontent.com/54859075/177494843-f4dc6a3f-b676-4366-be52-a0e7df6c45a1.png"
2022-03-25 02:20:00 -04:00
width="32%"
/>
<img
title="Emote Menu"
alt="Emote Menu"
2022-07-06 04:04:43 -04:00
src="https://user-images.githubusercontent.com/54859075/177494841-8c01ba96-693a-4ced-98b6-8950d7743384.png"
2022-03-25 02:20:00 -04:00
width="32%"
/>
<img
title="Settings Section"
alt="Settings Section"
2022-07-06 04:04:43 -04:00
src="https://user-images.githubusercontent.com/54859075/177494840-43481564-0c9a-45ba-bc37-1f5ea49313a8.png"
2022-03-25 02:20:00 -04:00
width="32%"
/>
</p>
2021-09-04 01:26:41 -04:00
## Features
2021-08-18 09:38:00 -04:00
2022-07-06 04:04:43 -04:00
- Support for BetterTTV, FrankerFaceZ, and 7TV emotes and badges
2022-01-11 16:01:09 -05:00
- Browse followed streams, top streams, and top categories
2022-07-06 04:04:43 -04:00
- Autocomplete for emotes and user mentions
- Light, dark, and black (OLED) themes
2022-01-12 19:04:28 -05:00
- Search for channels and categories
2022-07-06 04:04:43 -04:00
- See and filter chatters in a channel
2022-04-01 00:47:08 -04:00
- Picture-in-picture mode (iOS only)
2022-07-06 04:04:43 -04:00
- Local chat user message history
- Theater and fullscreen mode
- Watch live streams with chat
2022-05-03 01:44:25 -04:00
- Block and report users
2022-07-06 04:04:43 -04:00
- Emote menu
- Sleep timer
- And more...
2021-08-18 09:38:00 -04:00
2021-09-04 01:26:41 -04:00
## Motivation
2021-08-18 09:38:00 -04:00
2022-07-06 04:04:43 -04:00
A major problem with the official Twitch app for many users is that emotes and badges from services such as [BetterTTV (BTTV)](https://chrome.google.com/webstore/detail/betterttv/ajopnjidmegmdimjlfnijceegpefgped), [FrankerFaceZ (FFZ)](https://chrome.google.com/webstore/detail/frankerfacez/fadndhdgpmmaapbmfcknlfgcflmmmieb), and [7TV](https://chrome.google.com/webstore/detail/7tv/ammjkodgmmoknidbanneddgankgfejfh) are not officially supported. Twitch is unaffiliated with these services, hence why they haven't been integrated officially.
2021-08-18 09:38:00 -04:00
2022-01-11 16:01:09 -05:00
As a result, the millions of users of these services have an unideal viewing experience on the official Twitch app. In the stream chat, only text is positioned where emotes should be (imagine only being able to see :emoji_code: rather than the emojis themselves).
2021-09-04 01:26:41 -04:00
2022-01-12 19:04:28 -05:00
Frosty aims to bring these emotes and other general quality of life features to **both iOS and Android**.
2021-09-04 01:26:41 -04:00
2022-01-17 12:29:15 -05:00
## Development Setup
2021-09-04 01:26:41 -04:00
2022-06-24 02:51:14 -04:00
1. Go to the [Twitch dev console](https://dev.twitch.tv/login) and register a new application to retrieve a **Client ID** and **Client Secret**.
2022-01-11 16:01:09 -05:00
2022-06-24 02:51:14 -04:00
2. Clone the repo to a directory with (e.g., `git clone https://github.com/tommyxchow/frosty.git`).
2022-01-11 16:01:09 -05:00
2022-06-24 02:51:14 -04:00
3. Navigate to `lib/constants/constants.dart` and replace the `clientId` and `secret` constants with your **client ID** and **client secret** from step 1 (if using VSCode, use `--dart-define` to [define them as environment variables](https://dartcode.org/docs/using-dart-define-in-flutter/)).
2022-01-11 16:01:09 -05:00
2022-06-24 02:51:14 -04:00
4. Run `flutter pub get` to fetch all the dependencies.
2022-01-11 16:01:09 -05:00
2022-06-24 02:51:14 -04:00
5. Choose an emulator or device and run the app!
2022-01-11 16:01:09 -05:00
## FAQ
2022-04-01 00:47:08 -04:00
### Can I change the quality of the stream?
2022-01-11 16:01:09 -05:00
2022-04-01 00:47:08 -04:00
On Android, you can change the stream quality by turning off the custom stream overlay in the settings and tapping the gear icon on the bottom right.
2022-01-11 16:01:09 -05:00
2022-04-01 00:47:08 -04:00
On iOS, sadly quality options aren't available through the native player and rely on an "auto" setting. There is no official API for getting the live stream URLs so specific quality options are not possible at this time.
2022-01-11 16:01:09 -05:00
2022-05-30 20:59:04 -04:00
### Why is there no picture-in-picture (PiP) on Android?
I've looked into implementing it for Android a while back but web browsers on Android don't support the [web Picture-in-Picture API](https://developer.mozilla.org/en-US/docs/Web/API/Picture-in-Picture_API). The reason I'm using the web PiP API is due to limitations in the Twitch API (the stream is just the Twitch channel website in fullscreen rather than an actual video player). I *might* be able to figure something out by working with the native Android code but I'll have to learn that first.
2022-04-01 00:47:08 -04:00
### Why do certain animations and scrolling appear to be janky?
2022-01-11 16:01:09 -05:00
2022-04-01 00:47:08 -04:00
Due to the Flutter framework, there may be some stutter and jank on the first installation and launch. After using and moving around the app for a bit the jank will be mitigated through shader warmup/caching and should be minimal on subsequent launches. Watching a stream with a relatively fast chat for a couple of minutes usually resolves it.
2022-01-11 16:01:09 -05:00
### Why is there a delay between the stream and chat?
On Android, the delay should be minimal. Try refreshing the player if you have a delay.
On iOS, there seems to be delays up to 15 seconds due to the native player so unfortunately it's out of my control. The best you can do for now is refreshing or pausing/playing the stream until the delay is minimized.
2022-05-27 21:31:49 -04:00
**UPDATE**: Starting with version 1.4.0, there is a new message delay option that lets you set the delay (in seconds) before each message is rendered.
2022-01-11 16:01:09 -05:00
### Why are some GIFs either slow or very fast?
This seems to be caused by the Flutter framework itself (see [here](https://github.com/flutter/flutter/issues/24804) and [here](https://github.com/flutter/flutter/issues/29130)).
2022-02-25 01:08:53 -05:00
### Why is ProMotion (120hz) not working?
This is caused by the Flutter framework and is being worked on (see [here](https://github.com/flutter/flutter/issues/90675)).
2022-05-27 21:31:49 -04:00
**UPDATE**: With Flutter 3 and version 1.3.0 of the app, ProMotion *should* be working.
2022-02-25 01:08:53 -05:00
### Why is feature "X" from Twitch not in the app as well?
2022-03-25 02:20:00 -04:00
I'm limited to what is available in the [Twitch API](https://dev.twitch.tv/docs/api/reference), so certain features from the Twitch web or mobile app (e.g., voting on predictions and category viewer count) are sadly not available at the moment.
2022-02-25 01:08:53 -05:00
2022-04-01 00:47:08 -04:00
Other features related to ad-blocking or utilizing private APIs will likely not be implemented officially because they would violate Twitch's terms of service. My highest priority currently is staying on the app stores and focusing on making features for those builds.
2022-02-25 01:08:53 -05:00
I'll try to add as many features as possible but occasionally I may take a break or be limited in time due to studies and personal reasons.
2022-04-01 00:47:08 -04:00
### Where can I report a bug or request a new feature?
2022-02-25 01:08:53 -05:00
2022-04-01 00:47:08 -04:00
You can open a new issue [here](https://github.com/tommyxchow/frosty/issues) with the appropriate labels (e.g., "bug" or "feature request") and I'll take a look at it.
2022-02-25 01:08:53 -05:00
2022-01-11 16:01:09 -05:00
## License
2022-03-25 02:20:00 -04:00
Frosty is licensed under [AGPL-3.0-or-later](LICENSE).