mirror of
https://github.com/ThaUnknown/miru.git
synced 2026-04-20 12:52:03 +00:00
feat: add DoH to setup
This commit is contained in:
parent
8b88e23594
commit
48f87a25d5
5 changed files with 118 additions and 102 deletions
200
README.md
200
README.md
|
|
@ -1,135 +1,137 @@
|
|||
<p align="center">
|
||||
<a href="https://github.com/ThaUnknown/miru">
|
||||
<img src="./static/logo.svg" width="200">
|
||||
<img src="./static/logo_white.svg" width="300">
|
||||
</a>
|
||||
</p>
|
||||
<h1 align="center"><b>Miru</b></h1>
|
||||
<h1 align="center"><b>Hayase</b></h1>
|
||||
|
||||
<h4 align="center"><b>Stream anime torrents, real-time with no waiting for downloads</b></h4>
|
||||
<h4 align="center"><b>Stream anime torrents instantly, real-time with no waiting for downloads to finish! 🍿</b></h4>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://miru.watch/#about">About</a> •
|
||||
<a href="https://miru.watch/features/">Features</a> •
|
||||
<a href="https://miru.watch/faq/">Frequently Asked Questions</a> •
|
||||
<a href="#building-and-development">Building and Development</a> •
|
||||
<a href="https://miru.watch/download/">Download</a>
|
||||
<a href="https://hayase.watch/#about">About</a> •
|
||||
<a href="https://hayase.watch/features/">Features</a> •
|
||||
<a href="https://hayase.watch/faq/">Frequently Asked Questions</a> •
|
||||
<a href="https://hayase.watch/download/">Download</a>
|
||||
</p>
|
||||
<p align="center">
|
||||
<img src="./docs/out.gif" alt="showcase"><br>
|
||||
<a href="https://discord.gg/Z87Nh7c4Ac">
|
||||
<img src="https://img.shields.io/discord/953341991134064651?style=flat-square" alt="chat">
|
||||
</a>
|
||||
<a href="https://miru.watch/download/">
|
||||
<img alt="GitHub all releases" src="https://img.shields.io/github/downloads/ThaUnknown/miru/total?style=flat-square">
|
||||
<a href="https://hayase.watch/download/">
|
||||
<img alt="Download" src="https://img.shields.io/github/downloads/ThaUnknown/miru/total?style=flat-square">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
## **About**
|
||||
## ✨ About
|
||||
|
||||
A pure JS BitTorrent streaming environment, with a built-in list manager. Imagine qBit + Taiga + MPV, all in a single package, but streamed real-time. Completly ad free with no tracking/data collection.
|
||||
**Hayase** is a modern app for streaming anime torrents in real-time, with no waiting for downloads to finish.
|
||||
|
||||
This app is meant to feel look, work and perform like a streaming website/app, while providing all the advantages of torrenting, like file downloads, higher download speeds, better video quality and quicker releases.
|
||||
It is meant to feel look, work and perform like a premium streaming service, but with all the benefits of both streaming and torrenting, like file downloads, higher download speeds, better video quality, instant access to new releases, and features you won’t find on typical streaming sites.
|
||||
|
||||
Unlike qBit's sequential, seeking into undownloaded data will prioritise downloading that data, instead of flat out closing MPV.
|
||||
## 🌟 Highlights
|
||||
|
||||
## **Features**
|
||||
* 📚 **Anime list integration:** Sync with AniList, Kitsu, ~~MAL~~, or use local storage.
|
||||
* ⚡ **Instant torrent streaming:** Watch as you download, with extension support for custom sources.
|
||||
* 📴 **Offline viewing:** Enjoy already-downloaded torrents anytime.
|
||||
* 🎬 **Advanced video player:** Full support for all subtitle formats, softcoded and external tracks, and more.
|
||||
* 👥 **Social features:** Connect with friends, join discussions, and watch together.
|
||||
|
||||
### **Anime:**
|
||||
***
|
||||
|
||||
* full AniList integration
|
||||
* filter anime by name, genre, season, year, format, status
|
||||
* view anime on your planning and watching list
|
||||
* add and remove anime from your planning list
|
||||
* automatically mark episodes as complete as you watch them
|
||||
* view trailers/previews for anime
|
||||
* score anime
|
||||
* view anime relations
|
||||
* automatically find torrents for desired episodes
|
||||
* automatically detect what anime a torrent is
|
||||
* view latest releases on any custom RSS
|
||||
* airing schedule
|
||||
* find anime by image \[just paste an image into the app]
|
||||
## 🏆 Features
|
||||
|
||||
### **Video:**
|
||||
### **Anime**
|
||||
|
||||
* full subtitle support
|
||||
* support for softcoded subtitles
|
||||
* support for external subtitle files
|
||||
* support for VTT, SSA, ASS, SUB, TXT subtitles
|
||||
* subtitle display in PiP
|
||||
* keybinds for all functions:
|
||||
* **S** - seek forwards 90 seconds \[skip opening]
|
||||
* **R** - seek backwards 90 seconds
|
||||
* **→** - seek forwards 2 seconds
|
||||
* **←** - seek backwards 2 seconds
|
||||
* **↑** - increase volume
|
||||
* **↓** - decrease volume
|
||||
* **M** - mute volume
|
||||
* **C** - cycle through subtitle tracks
|
||||
* **N** - play next episode \[if available]
|
||||
* **B** - play last episode \[if available]
|
||||
* **F** - toggle fullscreen
|
||||
* **P** - toggle picture in picture
|
||||
* **\[** - increase playback speed
|
||||
* **]** - decrease playback speed
|
||||
* **\\** - reset playback speed to 1
|
||||
* **I** - view video stats for nerds
|
||||
* **\`** - open keybinds UI
|
||||
* editable keybinds **\`** allows drag dropping any key
|
||||
* miniplayer
|
||||
* media session display
|
||||
* media keys support
|
||||
* Discord rich pressence
|
||||
* preview thumbnails
|
||||
* pause on lost focus
|
||||
* autoplay next episode
|
||||
* multi-audio support
|
||||
* torrent download progress on the seek bar
|
||||
* Effortlessly manage your anime list with support for AniList, Kitsu, ~~MAL~~, and local storage.
|
||||
* Automatically track watched episodes.
|
||||
* See what you’re behind on, and discover sequels you’ve missed.
|
||||
* Keep up to date and browse upcoming episodes with airing calendars.
|
||||
* Edit entries (score, progress, status, favorite, etc.) even while offline.
|
||||
* Search by image, name, genre, year, season, and more.
|
||||
* View trailers, OP/ED themes, and detailed episode lists with thumbnails, descriptions and filler indicators.
|
||||
|
||||
### **Torrent:**
|
||||
### 🤝 Social & Community
|
||||
|
||||
* select downloads folder
|
||||
* specify download/upload speeds
|
||||
* support for most popular BEP's
|
||||
* support for custom torrent RSS feeds for latest releases
|
||||
* change what resolution to find torrents in
|
||||
* stream real-time with no waiting for downloads
|
||||
* support for custom extensions for custom sources and trackers
|
||||
* Instantly see which friends are following an anime or episode.
|
||||
* See friends profiles and watch progress in the episodes list.
|
||||
* Track your friends’ watch progress in real time.
|
||||
* Join episode discussions and forums, even offline.
|
||||
* Global app chat.
|
||||
* Discord rich pressence.
|
||||
* Host or join Watch Together lobbies with synced playback and chat.
|
||||
|
||||
## **Linux Installation**
|
||||
### 🎥 Video Experience
|
||||
|
||||
### Arch
|
||||
* Full subtitle support.
|
||||
* Softcoded, external and manually added subtitles.
|
||||
* VTT, SSA, ASS, SUB, TXT formats.
|
||||
* Subtitle display in PiP.
|
||||
* Override default dialog styles.
|
||||
* Override default fonts for Asian languages \[fix for bad torrents].
|
||||
* Picture In Picture.
|
||||
* PiP on lost visiblity.
|
||||
* Pause on lost visibility.
|
||||
* Specify preferred language for video and subtitle tracks.
|
||||
* Remove video compression artifacts.
|
||||
* Miniplayer.
|
||||
* Media Session display.
|
||||
* Media Keys support.
|
||||
* Discord rich pressence.
|
||||
* Seek and preview thumbnails.
|
||||
* Autoplay next episode.
|
||||
* Skip intro/outro, manually or automatically.
|
||||
* Skip filler episodes automatically.
|
||||
* Change playback rate.
|
||||
* Browse playlist.
|
||||
* Multi-track support for video, audio and subtitles.
|
||||
* Editable keybinds for all player functions.
|
||||
* Exponential volume \[better control at lower volumes].
|
||||
* External player support.
|
||||
|
||||
If you use paru:
|
||||
### 🧲 Torrents
|
||||
|
||||
```bash
|
||||
paru -S miru-bin
|
||||
```
|
||||
* Stream torrents instantly, no waiting for full downloads.
|
||||
* Download only what you need for playback.
|
||||
* Choose your downloads folder and set speed/connection limits.
|
||||
* Support for custom extensions, sources, and trackers.
|
||||
* Specify download/upload speeds, ports and connections.
|
||||
* Support for most popular BEP's.
|
||||
* Persist torrents, cache progress, and rescan instantly.
|
||||
* View detailed torrent and peer info.
|
||||
|
||||
If you use yay:
|
||||
### ⚙️ Performance & Security
|
||||
|
||||
```bash
|
||||
yay -S miru-bin
|
||||
```
|
||||
|
||||
### Debian/Ubuntu
|
||||
|
||||
* Download the `linux-Miru-version.deb` from the [releases](https://github.com/ThaUnknown/miru/releases/latest) page.
|
||||
* Install the deb file with package manager.
|
||||
|
||||
```bash
|
||||
apt install linux-Miru-*.deb
|
||||
```
|
||||
* Highly secure.
|
||||
* Operates on a Zero Trust model.
|
||||
* Protects data integrity and settings from external attacks.
|
||||
* Protects from attacks via malicious torrent extensions.
|
||||
* Uses up to date best security practices for native apps.
|
||||
* Insanely performant.
|
||||
* Fully hardware/GPU accelerated.
|
||||
* GPU based shaders, animations and paints.
|
||||
* Very low resource utilisation.
|
||||
* Only loads code as required by user navigation.
|
||||
* Unloads code not in use.
|
||||
* Doesn't render unnecessary UI updates.
|
||||
* Disables rendering when not visible.
|
||||
* Doesn't render any UI when immersed in fullscreen video.
|
||||
* Minimise to tray.
|
||||
* In-app changelog.
|
||||
* Custom themes.
|
||||
|
||||
## **Building and Development**
|
||||
|
||||
*good luck*
|
||||
Requires `Node 20` or above and `pnpm`. VSCode is recommended.
|
||||
|
||||
Dependencies:
|
||||
```js
|
||||
pnpm i // to install
|
||||
pnpm run dev // to develop
|
||||
pnpm run build // to build
|
||||
pnpm run sync && pnpm run lint && pnpm run gql:check && pnpm run check // to test
|
||||
```
|
||||
|
||||
* Node 16 or above
|
||||
* PNPM
|
||||
* Docker
|
||||
* Android Debug Bridge
|
||||
* Java 18 or above \[probably?]
|
||||
* maybe others... have fun.
|
||||
***
|
||||
|
||||
<h2 align="center">
|
||||
<b>Enjoy streaming anime the way it should be! 🍿</b>
|
||||
</h2>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "ui",
|
||||
"version": "6.3.55",
|
||||
"version": "6.3.56",
|
||||
"license": "BUSL-1.1",
|
||||
"private": true,
|
||||
"packageManager": "pnpm@9.14.4",
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ export default {
|
|||
subtitleRenderHeight: SUPPORTS.isAndroid ? '720' : '0' as keyof typeof subtitleResolutions,
|
||||
subtitleLanguage: 'eng' as keyof typeof languageCodes,
|
||||
audioLanguage: 'jpn' as keyof typeof languageCodes,
|
||||
enableDoH: true,
|
||||
enableDoH: false,
|
||||
hideToTray: false,
|
||||
doHURL: 'https://cloudflare-dns.com/dns-query',
|
||||
disableSubtitleBlur: SUPPORTS.isAndroid,
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
import { Switch } from '$lib/components/ui/switch'
|
||||
import native from '$lib/modules/native'
|
||||
import { dragScroll } from '$lib/modules/navigate'
|
||||
import { settings } from '$lib/modules/settings'
|
||||
import { settings, SUPPORTS } from '$lib/modules/settings'
|
||||
|
||||
const hasForwarding = persisted('torrent-port-forwarding', false)
|
||||
|
||||
|
|
@ -80,6 +80,14 @@
|
|||
<SettingCard class='bg-transparent' let:id title='Forwarded Torrent Port' description='Forwarded port used for incoming torrent connections. 0 automatically finds an open unused port. Change this to a specific port if your VPN exposes only a specific port.'>
|
||||
<Input type='number' inputmode='numeric' pattern='[0-9]*' min='0' max='65536' bind:value={$settings.torrentPort} {id} class='w-32 shrink-0 bg-background' />
|
||||
</SettingCard>
|
||||
{#if !SUPPORTS.isAndroid}
|
||||
<SettingCard class='bg-transparent' let:id title='Use DNS Over HTTPS' description='Enables DNS Over HTTPS, useful if your ISP blocks certain domains.'>
|
||||
<Switch {id} bind:checked={$settings.enableDoH} />
|
||||
</SettingCard>
|
||||
<SettingCard class='bg-transparent' let:id title='DNS Over HTTPS URL' description='What URL to use for querying DNS Over HTTPS.'>
|
||||
<Input type='url' bind:value={$settings.doHURL} {id} class='w-80 shrink-0 bg-background' />
|
||||
</SettingCard>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<Footer step={1} {checks}>
|
||||
|
|
|
|||
6
static/logo_white.svg
Normal file
6
static/logo_white.svg
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="430" height="430"
|
||||
viewBox="0 0 113.50625 113.50625" fill="white">
|
||||
<path d="M89.693749 72.830671v-19.84375l-18.520833-10.31875-14.552084-8.202083-33.072916 18.520833v19.84375l33.072916-18.520833ZM23.547916 47.695254l23.547916-13.229167L23.547916 21.23692Z" />
|
||||
<path d="m23.547916 77.990044 33.072916 18.52084 33.072917-18.52084-18.520833-10.318746-14.552084 8.202083-14.552083-8.202083S23.547916 78.122337 23.547916 77.990044z" />
|
||||
<path d="m56.620832 59.601503 10.054167 5.55625v.000001l-10.054167 5.55625-10.054166-5.55625v-.000001z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 612 B |
Loading…
Reference in a new issue