This is a contribution version of the official AnimeTV application.
  • JavaScript 60%
  • HTML 15.2%
  • TypeScript 11.6%
  • Java 6.8%
  • CSS 6.1%
  • Other 0.3%
Find a file
Siesta8496 5b1f55c17a chore(release): make --install install prebuilt APK without rebuild
--install now skips all builds and installs release/<version>/<version>.apk
directly, mirroring deploy.sh (device selection, wake/unlock, relaunch).
2026-07-03 09:56:14 +08:00
.clinerules fix(miruro): restore kwik.cx referer for kiwi/owocdn CDN family 2026-07-02 14:23:09 +08:00
.github/workflows docs: add CONTRIBUTING, GOVERNANCE, and PR Guard workflow for community handover 2026-05-26 04:44:53 +08:00
.idea miruro: implement zoro & anivibe 2024-12-19 16:54:31 +07:00
app bump: v5.14.5 2026-07-03 09:55:18 +08:00
docs fix(kaas): resolve catstream manifest on Android (protocol-relative URL) 2026-07-03 08:11:00 +08:00
electron bump: v5.14.5 2026-07-03 09:55:18 +08:00
gradle/wrapper New home paging list 2024-03-21 05:32:29 +07:00
keystore Japan Title Settings & Cache 2024-02-11 23:41:01 +07:00
scripts refactor: Phase D — rename module files for clarity 2026-06-24 07:48:12 +08:00
src miruro: CDN interceptor + ally investigation groundwork 2026-07-02 15:26:08 +08:00
tools fix(kaas): resolve catstream manifest on Android (protocol-relative URL) 2026-07-03 08:11:00 +08:00
.editorconfig feat: add core types (Result, Option, pipe) and domain layer 2026-05-21 06:46:45 +08:00
.gitattributes Auto line ending git 2023-06-08 23:03:17 +07:00
.gitignore chore: bump to 5.14.0 2026-06-14 03:24:56 +08:00
.prettierrc feat: add core types (Result, Option, pipe) and domain layer 2026-05-21 06:46:45 +08:00
ARCHITECTURE_ROADMAP.md wip: clean architecture refactoring in progress 2026-05-22 02:49:06 +08:00
build.gradle Fix hianime stream 2024-12-14 17:02:17 +07:00
CHANGELOGS.md chore: bump to 5.13.0, update changelog 2026-05-30 17:30:21 +08:00
CONTRIBUTING.md docs: add CONTRIBUTING, GOVERNANCE, and PR Guard workflow for community handover 2026-05-26 04:44:53 +08:00
crash_2026-06-25_07-19-28.log.txt fix(miruro): restore kwik.cx referer for kiwi/owocdn CDN family 2026-07-02 14:23:09 +08:00
deploy.sh fix(ally): revert fast4speed.rsvp referer to allmanga.to (broke since v5.14.1) 2026-06-21 20:08:36 +08:00
eslint.config.mjs feat: add core types (Result, Option, pipe) and domain layer 2026-05-21 06:46:45 +08:00
FIXLIST.md refactor(arch): resolve all 13 architecture review findings 2026-05-21 09:07:24 +08:00
GOVERNANCE.md docs: add CONTRIBUTING, GOVERNANCE, and PR Guard workflow for community handover 2026-05-26 04:44:53 +08:00
gradle.properties feat(anikoto): improve server filtering, hardsub handling, embed Referer fix; standardize [ANIMETV] log prefix across all modules 2026-05-25 14:55:06 +08:00
gradlew Initial commit 2023-05-30 01:47:42 +07:00
gradlew.bat Initial commit 2023-05-30 01:47:42 +07:00
how f6a37a9e --stat fix(miruro): restore kwik.cx referer for kiwi/owocdn CDN family 2026-07-02 14:23:09 +08:00
LICENSE add LICENSE 2023-09-03 00:52:18 +07:00
MEMORY_LEAK_ANALYSIS.md fix: anikoto streaming pipeline - vidstream/vidplay/vidcloud softsub+hardsub working 2026-06-13 02:40:30 +08:00
MIGRATION_CHECKLIST.md wip: clean architecture refactoring in progress 2026-05-22 02:49:06 +08:00
MIRURO_API_ANALYSIS_2026_06_05.md feat: implement triple DataSource switching (OkHttp/Generic/Cronet) for ExoPlayer 2026-06-05 10:31:52 +08:00
NEXT_STEPS_CHECKLIST.md docs: update NEXT_STEPS_CHECKLIST with completed unit test items 2026-05-22 03:03:34 +08:00
package-lock.json fix: anikoto streaming pipeline - vidstream/vidplay/vidcloud softsub+hardsub working 2026-06-13 02:40:30 +08:00
package.json bump: v5.14.5 2026-07-03 09:55:18 +08:00
PLAN_FMOVIES_INTEGRATION.md feat(tmdb): add TMDB module with movies popup, title logos, duration formatting, and info layout separation 2026-06-03 01:02:29 +08:00
README.md feat: Phase 4+5 — Presentation layer, cleanup, architecture docs 2026-05-21 07:44:01 +08:00
release-v1.sh chore: bump to 5.12.2, unified release.sh for Android + Windows builds 2026-05-28 00:20:47 +08:00
release.sh chore(release): make --install install prebuilt APK without rebuild 2026-07-03 09:56:14 +08:00
screenshot.png fix(miruro): restore kwik.cx referer for kiwi/owocdn CDN family 2026-07-02 14:23:09 +08:00
screenshot_device.png fix(miruro): restore kwik.cx referer for kiwi/owocdn CDN family 2026-07-02 14:23:09 +08:00
settings.gradle Initial commit 2023-05-30 01:47:42 +07:00
TRACKER.md fix: simplify search screen D-pad navigation order 2026-06-06 03:31:51 +08:00
tsconfig.json wip: clean architecture refactoring in progress 2026-05-22 02:49:06 +08:00
VIDEASY_EXTRACTION_RESULTS.md feat: integrate Videasy provider (WASM decrypt pipeline, direct MP4 playback) 2026-06-12 01:39:24 +08:00
VIDEASY_SCRAPING_DOCUMENTATION.md feat: integrate Videasy provider (WASM decrypt pipeline, direct MP4 playback) 2026-06-12 01:39:24 +08:00
VIDKING_API_SCRAPING_ANALYSIS.md fix: add tropicalforesty.uk CDN domain for VidKing playback 2026-06-08 17:21:25 +08:00
vitest.config.mts fix: remove "type": "module" to restore Electron CJS compatibility 2026-05-21 07:47:06 +08:00

AnimeTV for Android TV & Google TV

AnimeTV is Android TV application for watching your favorite anime series and movies on your Android TV, It also runs on non-TV Android devices (Phones and Tablets) with some UI limitations.

Source data is from one anime streaming website and I don't have any affiliation with it, and it may break on site updates. Take a look at source code for more info

AnimeTV

Download URL and Code

TIPS

Donation & More Information

License Stable Release Nightly Release Support
GitHub License GitHub Release Nightly Discord

Features

  • NEW - UI Interface with Trailer Video
  • NEW - 6 Different sources
  • NEW - List reorder / management
  • NEW - Auto Update App and in app nightly build installation
  • NEW - Airing Schedule
  • NEW - MAL & AniList Integration
  • NEW - DNS over HTTPS and Multiple HTTP Client selection
  • NEW - Mirror Stream Server
  • NEW - Soft-subtitle & Auto Translate to 134 Languages (Only for supported contents)
  • NEW - Settings panel
  • NEW - Change Theme Color & Animation performance
  • NEW - Soft-subtitle Text Style Configuration
  • NEW - Playback Speed (0.5x - 3.00x)
  • NEW - Include Non-Japan Anime Settings
  • Search and Advance Search with Genre & Anime Type filters
  • Auto Next episode
  • Auto Skip Intro & Outro
  • Auto Skip Filler Episode
  • Genre & Type Tags
  • Video display style ( Centered, Fit, Scaled ) for non widescreen videos.
  • Easy to navigate with Android TV Remote
  • Home Anime List
    • Hot
    • Recently Updated
    • Dub Update
    • Top Anime
    • Trending Episodes
    • Random Anime
    • Watchlist Anime – You can set anime as favorite to watch
    • Watch History – All anime has been watched before with last timestamp
  • List of episodes and seasons for show
  • Recommendation anime for current show
  • Support for Android TV / Google TV home list and PlayNext
  • All Watchlist & History is saved locally – I don’t have any server to save your watch & history 🤣 So don’t worry.

Architecture (Clean Architecture — TypeScript)

The new src/ directory implements a Clean Architecture refactor of the core logic. It sits alongside the legacy code in electron/src/ and app/src/main/assets/view/ and will progressively replace it.

src/
├── core/              ← Shared primitives (no dependencies)
│   ├── types/         Result<T,E>, Option<T> — typed error handling
│   ├── errors/        AppError hierarchy (Stream, Auth, Data, Config, Validation)
│   └── utils/         pipe(), compose(), pipeAsync() — FP composition
│
├── domain/            ← Business rules (depends only on core)
│   ├── entities/      Anime, Episode, StreamSource, AuthToken
│   ├── repositories/  Port interfaces (AnimeRepository, AuthRepository)
│   └── usecases/      GetStreamSources, GetEpisodes, SearchAnime, Authenticate
│
├── data/              ← Infrastructure adapters (depends on domain + core)
│   ├── network/       HttpClient interface + ElectronHttpClient implementation
│   ├── datasources/   MiruroPipe, ServerConfig, OneAnime typed interfaces + impls
│   └── repositories/  AnimeRepositoryImpl (DTO→Entity mapping, provider fallback)
│
├── presentation/      ← UI/Controller layer (depends on domain + data)
│   ├── state/         Immutable AppState, reducer, minimal store (Redux-like)
│   └── interceptor/   CDN Registry, declarative Request Router
│
└── di/                ← Dependency injection (wires everything)
    └── container.ts   Pure-function DI — no decorators or reflection

Key Design Decisions

Decision Rationale
Result<T, E> instead of exceptions Forces callers to handle errors; no uncaught crashes
Immutable entities (readonly everywhere) Prevents accidental mutation bugs
Repository port interfaces Domain doesn't know about HTTP, Electron, or any CDN
CDN Registry (single source of truth) Previously duplicated 3× across interceptor.js
Declarative route table Each route is testable in isolation; no 600-line if/else
Pure-function DI container No decorators/reflection — just functions calling functions

Running the new layer

# Type-check
npx tsc --noEmit

# Run tests (71 tests)
npx vitest run

# Lint + format
npx eslint src/
npx prettier --check src/

Open Source

Source code is available at github ( https://github.com/amarullz/AnimeTV ). Release of source code may make source website prevent this apps to run, but hope it work fine for long, and you will help me update it when it break 😂.

And Please Contribute your bugfixes, reports & suggestions for next better update. If you find it useful, donation is welcome.

WebView Based?

Yes, it was webview based application. UI and Data Fetch Method is using webview, because I don't have access to source website database, I just load the web in headless webview and fetch site data info with javascript injection, because it's not possible to use only http client to get data.

Almost all data need javascript to make it available (It's not pure HTML that can easily parsed from text). The site also use QUIC rather than HTTP1X, so I need to include CronetEngine to make it works.

But the good news is AnimeTV will block any analytics and ads domain (dns) when requesting & fetching data. All data like watchlist & watch history also stored local in localStorage.

Screenshot

More screenshot is available in my website: https://amarullz.com/animetv/ Here only a couple screenshot:

Homescreen

Settings

Anime Popup

MyList

Customize & Ordering

TV friendly search

Playback

DISCLAIMER

  • AnimeTV only scrapes links from various websites and makes it easier for users to find anime.

  • AnimeTV or any of its developer doesn't host any of the contents found inside the app. All images and anime information found in the app are taken from various public APIs.

  • All anime found in AnimeTV are taken from various 3rd party anime hosting websites.

  • AnimeTV or it's owners aren't liable for any misuse of any of the contents found inside or outside of the app and cannot be held accountable for the distribution of any of the contents found inside the app.

  • By using AnimeTV, you comply to the fact that the developer of the app is not responsible for any of the contents found in the app; nonetheless they may or may not be from their legitimate sources.

  • If the internet infringement issues are involved, please contact the source website. The developer does not assume any legal responsibility.

License

Copyright 2023 Ahmad Amarullah (https://amarullz.com)

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.