update docs

This commit is contained in:
ThaUnknown 2022-03-27 21:34:43 +02:00
parent e166e79b01
commit 3827aa74b0
4 changed files with 126 additions and 10 deletions

View file

@ -1,18 +1,95 @@
# Miru
<h1 align="center">
<a href="https://github.com/ThaUnknown/miru">
<img src="./docs/logo.png" width="200">
</a>
</h1>
Discord link: https://discord.gg/Z87Nh7c4Ac
<h4 align="center"><b>Stream anime torrents, real-time with no waiting for downloads</b></h4>
Originally a joke project, turned out to be semi-viable.
<p align="center">
<a href="#about">About</a>
<a href="#features">Features</a>
<a href="./docs/faq.md">Frequently Asked Questions</a>
<a href="#building-and-development">Building and Development</a>
</p>
<p align="center">
<img src="./docs/show.gif" alt="chat">
<a href="https://discord.gg/Z87Nh7c4Ac">
<img src="https://img.shields.io/discord/953341991134064651" alt="chat">
</a>
</p>
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.
## **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.
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
- automatically mark episodes as complete as you watch them
- automatically find torrents for desired episodes
- automatically detect what anime a torrent is
- 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:
- **,** - seek 1 frame backwards
- **.** - seek 1 frame forwards
- **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]
- **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
- miniplayer
- media session display
- media keys support
- Discord rich pressence
- preview thumbnails
- pause on lost focus
- autoplay next episode
- multi-audio support
### **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
## Why Electron?
Electron has node.js integration, which can use TCP/UDP, that is the only reason. Browsers can't access TCP/UDP which means they can't access the global BT swarm.
> Can't you make this just use WebRTC?
## **Building and Development**
Yes. A BitTorrent implementation which uses WebRTC exists, but it's not yet adopted by any clients, and libtorrent [the library which qBit and others use] is still working/just added support for WebRTC, which means there's no swarm. This will hopefully change in the future.
Dependencies:
- Node 16 or above
## Where codec support?
This uses the browser's built in video player, which uses a cut down version of FFMPEG, which lacks a support for a LOT of containers and codecs because of licensing. Since Electron is just Chromium IN THEORY it is possible to re-compile FFMPEG with support for more containers and codecs, but people seem to be going out of their way to make sure you can't find how to do that. PR pls?
To build/develop, in the root folder of the repo you need to first run:
```bash
npm install
```
To build for your OS just run:
```bash
npm run build
```
To run the development server run:
```bash
npm start
```

39
docs/faq.md Normal file
View file

@ -0,0 +1,39 @@
## **Won't this kill swarm health?**
Depends. On average no. The app is always seeding 1 torrent as long as it's open. Additionally the upload speed is forced to be x1.5 that of the download speed. Those 2 things combined will already make this app seed more than the average leecher which removes the torrent the moment it's downloaded.
## **Can I close the miniplayer?**
No. See above. The miniplayer provides feedback that something is happening in the background. Closing it would make the user feel like the app is lagging [because it's maxing out your internet in the background by torrenting] when nothing is happening.
## **Can I reduce the upload speed?**
No. See above. This app is also meant to seed the torrents the user downloads, if you want freeleech go to some private tracker.
## **Is this safe?**
I recommend you read the [guide about basics of piracy.](https://wiki.piracy.moe/guides/torrenting)
## **Will this replace streaming sites?**
Not really. The underlying source of video are still torrents, which aren't always seeded, so anime that's a few years old might not play back smoothly.
## **Why is anime X not playing?**
One of four reasons:
- the anime isn't seeded
- your download speed isn't fast enough
- the app couldn't find a matching torrent for the anime
- your ISP blocks Nyaa, see [this tutorial](https://wiki.piracy.moe/en/tutorials/unblock) for a fix
## **Can I play my own torrents?**
Yes. For the home menu you can specify a different RSS feed to check when the app looks for new releases. Additionally you can just paste a torrent file/magnet link anywhere when using the app, and it will auto-detect what anime is playing.
## **Can I change what tracker torrents are found from?**
Not really. No other tracker has the kind of API/search functionality that Nyaa does, which the app uses to the fullest extent to make sure it finds the torrents it's looking for without false-positives.
## **How is this different from sequential qBit?**
Unlike qBit's sequential, this will prioritise downloading torrent pieces directly needed for playback, which with the user seeking isn't always just sequential.
## **Why Electron?**
Electron has node.js integration, which can use TCP/UDP, that is the only reason. Browsers can't access TCP/UDP which means they can't access the global BT swarm.
> Can't you make this just use WebRTC?
Yes. A BitTorrent implementation which uses WebRTC exists, but it's not yet adopted by any clients, and libtorrent [the library which qBit and others use] is still working/just added support for WebRTC, which means there's no swarm. This will hopefully change in the future.
## **Where codec support?**
This uses the browser's built in video player, which uses a cut down version of FFMPEG, which lacks a support for a LOT of containers and codecs because of licensing. Since Electron is just Chromium IN THEORY it is possible to re-compile FFMPEG with support for more containers and codecs, but people seem to be going out of their way to make sure you can't find how to do that. PR pls?

BIN
docs/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
docs/show.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7 MiB