Giter VIP home page Giter VIP logo

miru's Introduction

Miru

Stream anime torrents, real-time with no waiting for downloads

AboutFeaturesFrequently Asked QuestionsBuilding and DevelopmentDownload

showcase
chat GitHub all releases

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.

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.

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

Linux Installation

Arch

If you use paru:

paru -S miru-bin

If you use yay:

yay -S miru-bin

Debian/Ubuntu

  • Download the linux-Miru-version.deb from the releases page.
  • Install the deb file with package manager.
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.

miru's People

Contributors

energostalin avatar gizmotjaz avatar kyngs avatar michiel-cox avatar muril-o avatar nlxdodge avatar razzeee avatar sambuca1g avatar serykii avatar thaunknown avatar waaiez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

miru's Issues

torrent buffer

get buffer amounts based on torrent file not video element

batch support

add support for batch files with nice GUI or smth, this could also make next video button work nicely i guess, augh parsing galore

ui revamp

ditch bootstrap, improve the layout and general feel of UI

push notifications

since I'd need to get updated based on RSS feeds not notification servers idk how to get it to work...

better anime name fetching

now with oauth a thing, preferedname could be used, also a single function for requesting anime name would be better.

new file 404

when a video file is loaded for the first time it 404's, refreshing and downloading the torrent again fixes this

.ass subtitle support

support for .ass subtitles embedded in video files, probably should ditch the special effects and make it into normal subtitle tracks via .addCue(new VTTCue(timestart, timeend, "text"));

seek preview

a preview on the seek/progress bar would be pog, smth like youtube has, but idk if its possible

store cleanup

maybe add an option for store to persist across sessions with drive caching? but should clean it up better.

loaded video piece destroying

figure out if its possible to detect what video data is currently loaded in the video element, then delete according torrent pieces, while making the torrent think they are downloaded, this could potentially have issues as I'm not sure if the browser unloads video pieces after some time [but I don't think it does], this would most likely kill seeding.... a good alternative would be storing the torrent inside the video itself? but thats kinda crazy

file 404

no clue how to reproduce, so maybe attempt to load the file again when it 404's?

rework nowplaying status

its a fucking mess.... needs to pass media object/look for media object instead of passing string, would then remove the selected object too

skip intro improvements

within first 10 seconds of video skip directly to 1:30
based on interaction for first 5 seconds skip

chromecast

yeah, fuck knows how, either WebRTC peers or some sort of MediaStream but idk how

piece based torrent streaming

only download torrent pieces needed for playback instead of the entire torrent [full video streaming]
this could greatly reduce RAM usage and allow for a lot of other things, but could also potentially kill seeding!

sort trackers

from best to worst to improve initial torrent fetch times

burn in subtitles optimization

burn in subtitles could potentially render directly on the video image canvas instead of merging the video image canvas with the subtitle display canvas

subtitle streaming optimization

only store subtitles that are in the currently played buffer range since subtitles are streamed constantly anyways, and only in the currently selected track, this can potentially free up a lot of RAM.

autoPIP

look into autoPIP, fucking documentation sucks peen

custom RSS

add an option for a custom RSS and regex

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.