Swap identity

This commit is contained in:
NoCrypt 2024-07-24 23:34:36 +07:00
parent f721a2748c
commit 472534833a
9 changed files with 27 additions and 145 deletions

130
README.md
View file

@ -1,124 +1,18 @@
<p align="center">
<a href="https://github.com/ThaUnknown/miru">
<img src="./web/static/logo_filled.svg" width="200">
</a>
</p>
<h1 align="center"><b>Miru</b></h1>
# Migu
<h4 align="center"><b>Stream anime torrents, real-time with no waiting for downloads</b></h4>
**Migu** is a fork of Miru that focused on mobile-first experience with added features. Designed to stream anime torrents, real-time with no waiting for downloads. Currently, there is no support for a PC version, but this may be considered in the future.
<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>
</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>
</p>
## Unique Features (Changes from Miru)
## **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.
### Limited Bandwidth Options
- **Close Mini Player:** Option to close the mini player.
- **Prevent Mini Player Loading:** By default, the mini player does not load on startup (this can be toggled).
- **Separate Download and Upload Limits:** Allows setting different limits for downloading and uploading.
- **Disable Seeding:** Option to fully disable seeding.
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.
#### Why?
Mobile users often have limited bandwidth or data quotas. Miru can consume up to 1GB per minute, which is impractical for mobile users.
Unlike qBit's sequential, seeking into undownloaded data will prioritise downloading that data, instead of flat out closing MPV.
## **Features**
### **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]
### **Video:**
- 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
### **Torrent:**
- 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
## License
## **Linux Installation**
### Arch
If you use paru:
```bash
paru -S miru-bin
```
If you use yay:
```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
```
## **Building and Development**
*dont*
Dependencies:
- Node 16 or above
- PNPM
- Docker
- Android Debug Bridge
- Java 18 or above [probably?]
- maybe others... have fun.
This project acknowledges and complies with the GPL license.

View file

@ -7,7 +7,7 @@
"build:native-win": "cd public\\nodejs && for %I in (.) do docker run -v %~fI:/app/ -it android-build:latest /bin/bash /app/setup-deps-win.sh",
"build:app": "cross-env NODE_ENV=production run-s build:web build:native build:assets",
"build:web": "webpack build",
"build:assets": "capacitor-assets generate --iconBackgroundColor #e5204c --iconBackgroundColorDark #e5204c --splashBackgroundColor #e5204c --splashBackgroundColorDark #e5204c --android",
"build:assets": "capacitor-assets generate --iconBackgroundColor #20a2ff --iconBackgroundColorDark #20a2ff --splashBackgroundColor #20a2ff --splashBackgroundColorDark #20a2ff --android",
"dev:adb-port": "adb reverse tcp:5001 tcp:5001",
"dev:ios": "run-p dev:start cap-run:ios",
"dev:android": "cap run android",

View file

@ -38,21 +38,22 @@
icon: 'groups',
text: 'Watch Together'
},
{
click: () => {
IPC.emit('open', 'https://github.com/sponsors/ThaUnknown/')
},
icon: 'favorite',
text: 'Support This App',
css: 'ml-auto donate'
},
// {
// click: () => {
// IPC.emit('open', 'https://github.com/sponsors/ThaUnknown/')
// },
// icon: 'favorite',
// text: 'Support This App',
// css: 'ml-auto donate'
// },
{
click: () => {
page = 'settings'
},
page: 'settings',
icon: 'settings',
text: 'Settings'
text: 'Settings',
css: 'ml-auto'
}
]
function close () {

View file

@ -1,5 +1,5 @@
:root {
--accent-color: #e5204c;
--accent-color: #20a2ff;
--dm-link-text-color: var(--dm-muted-text-color) !important;
--dm-link-text-color-hover: var(--dm-text-color) !important;
--base-html-font-size: 50%;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 MiB

After

Width:  |  Height:  |  Size: 33 KiB

View file

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="39.147381mm"
height="39.147381mm"
viewBox="0 0 39.147381 39.14738"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<g aria-label="みる" transform="matrix(1.8923544,0,0,1.8923544,-125.56938,-95.152054)" style="fill:#e5204c">
<path d="m 76.79068,62.020505 -0.733118,1.300869 q -0.865408,-0.479558 -1.802475,-0.903994 -0.799263,1.631599 -1.956817,3.158467 l -1.25126,-0.76619 q 1.113456,-1.394576 1.841061,-2.954517 -0.942579,-0.374827 -2.067059,-0.600825 -0.777214,1.774915 -1.389064,2.359203 -0.61185,0.578777 -1.273309,0.578777 -0.744141,0 -1.273308,-0.529167 -0.529167,-0.529167 -0.529167,-1.30087 0,-0.981164 0.964627,-1.785939 0.97014,-0.810287 2.574178,-0.859897 0.474046,-1.063846 0.881946,-2.166278 -1.510332,0.4079 -2.508032,0.529167 l -0.369315,-1.350478 q 1.670184,-0.198438 4.018363,-0.959116 l 0.617362,1.12448 q -0.01102,0.115756 -1.141017,2.971054 0.986677,0.209462 2.011938,0.600825 0.314193,-1.113456 0.48507,-2.585202 l 1.422137,0.28112 q -0.181901,1.515843 -0.551216,2.844273 1.129993,0.518143 2.028475,1.014238 z m -7.573706,-0.788239 q -0.650435,0.132292 -1.025262,0.512631 -0.369314,0.374826 -0.369314,0.677995 0,0.319705 0.314193,0.319705 0.159852,0 0.474045,-0.380339 0.319706,-0.380339 0.606338,-1.129992 z" />
<path d="m 83.118637,59.325059 q 0.48507,-0.115755 0.942579,-0.115755 1.367016,0 2.171791,0.926042 0.810287,0.920531 0.810287,2.171791 0,1.394576 -1.063846,2.287546 -1.058335,0.887457 -2.689934,0.887457 -1.27882,0 -2.039498,-0.617362 -0.755166,-0.617361 -0.755166,-1.488282 0,-0.749654 0.545704,-1.25126 0.551215,-0.501607 1.295357,-0.501607 1.433161,0 2.37574,2.033987 0.837848,-0.396876 0.837848,-1.284333 0,-1.769403 -1.934767,-1.769403 -1.069359,0 -1.934768,0.474045 -0.865409,0.474046 -2.149742,1.890671 l -1.096919,-1.080383 q 2.596226,-2.463935 4.497921,-4.503434 -1.58199,0.159853 -2.745055,0.132292 l -0.28112,-1.477258 q 0.424436,0.02205 0.865409,0.02205 1.741842,0 4.056948,-0.385851 l 0.68902,1.152041 q -0.9977,1.074871 -2.397789,2.497008 z m 0.170877,4.718408 q -0.474045,-0.992189 -0.953603,-0.992189 -0.35829,0 -0.35829,0.308681 0,0.259071 0.336241,0.474046 0.341754,0.209462 0.975652,0.209462 z" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -35,7 +35,7 @@
</div>
</SettingCard>
<SettingCard title='CSS Variables' description='Used for custom themes. Can change colors, sizes, spacing and more. Supports only variables. Best way to discover variables is to use the built-in devtools via Ctrl+Shift+I or F12.'>
<textarea class='form-control w-500 mw-full bg-dark' placeholder='--accent-color: #e5204c;' bind:value={$variables} />
<textarea class='form-control w-500 mw-full bg-dark' placeholder='--accent-color: #20a2ff;' bind:value={$variables} />
</SettingCard>
<SettingCard title='Card Type' description='What type of cards to display in menus.'>
<select class='form-control bg-dark w-300 mw-full' bind:value={settings.cards}>

View file

@ -118,12 +118,12 @@
</div>
</TabLabel>
{/each}
<div class='pointer my-5 rounded' tabindex='0' role='button' use:click={() => IPC.emit('open', 'https://github.com/sponsors/ThaUnknown/')}>
<!-- <div class='pointer my-5 rounded' tabindex='0' role='button' use:click={() => IPC.emit('open', 'https://github.com/sponsors/ThaUnknown/')}>
<div class='px-20 py-10 d-flex'>
<span class='material-symbols-outlined font-size-24 pr-10 d-inline-flex justify-content-center align-items-center'>favorite</span>
<div class='font-size-16'>Donate</div>
</div>
</div>
</div> -->
<div class='pointer my-5 rounded' use:click={loginButton}>
<div class='px-20 py-10 d-flex'>
{#if anilistClient.userID?.viewer?.data?.Viewer}