stremio / stremio-web Goto Github PK
View Code? Open in Web Editor NEWStremio - Freedom to Stream
License: GNU General Public License v2.0
Stremio - Freedom to Stream
License: GNU General Public License v2.0
use youtube captions api to get vtt subtitles for youtube videos
https://developers.google.com/youtube/v3/docs/captions
a URL parameter that allows to replace the default add-on collection (which is official add-ons); it will point to a URL to a JSON collection
related to Stremio/stremio#444
this means all new users or guest users will have those add-ons
this idea can be described as "stremio bundles"
TODO: update this issue with info on how to implement this new spec in the current stremio versions
Spec proposal:
url
: optional: internally playable URL; can use protocols: file:///
, https://
, ipfs://
, ipns://
, magnet:
, stremio-yt://{ytid}
, or in fact anything that one of our player implementations (with the help of the streaming server) supports; pointing to a particular file in a torrent will be represented via http://www.bittorrent.org/beps/bep_0053.html (?so={fileIdx}
); this will be polyfilled by legacy props (infoHash, fileIdx
), ytId
/yt_id
externalURL
: optional: URL that needs to be externally openedplayerFrameURL
: optional: see https://github.com/stremio/stremio-players#playerurltitle
: optional: string - title of the stream; usually used for stream qualitythumbnail
: optional: string, URL; this might be a SVG, which would be useful for icons (e.g. iTunes, Netflix, Amazon)subtitles
: optional: array of {id, lang, url}
where url is a URL to a HTTPS+VTT+UTF8 filebehaviorHints
(all are optional)
platformsWhitelist
: which hints it's restricted to particular platforms - to be discussedcountryWhitelist
: which hints it's restricted to particular countries - array of ISO 3166-1 alpha-2 country codes in lowercase in which the stream is accessiblenotWebReady
applies if the protocol of the url is http(s); needs to be set to true if the URL does not support https or is not an MP4 filepeers
: number of connected peers; applies for P2P protocolsgroup
: if defined, addons with the same behaviorHints.group
will be chosen automatically for binge watching; this should be something that identifies the stream's nature within your addon: for example, if your addon is called "gobsAddon", and the stream is 720p, the group should be "gobsAddon-720p"; if the next episode has a stream with the same group
, stremio should select that stream implicitlyheaders
: only applies to url
s; HTTP headers to use when communicating with url
; for the HTML5 player, this will force proxying in the middleware, via NeedsConversion(URL)
; for MPV, this can be set directly as an MPV settingadexSlotId
: ad slot ID to visualize when player is paused; this slot must be available on market.adex.network
; it should only work if the addon manifest has behaviorHints.hasAds
, so that the user is aware the addon has ads; furthermore, the UI should show the ad is from the addon (e.g. small text below the ad)The stream is valid if there is at least one of url
, externalURL
, playerFrameUrl
The stream ID is defined as a hash of the stream (Hashable
in rust)
Streams are ordered by: stream.is_web_ready()
, putting the web-ready streams first; The rest should be displayed differently to indicate they need a streaming server, esp if one is not connected
Furthermore, in relation to Stremio/stremio-addon-sdk#16, having a P2P protocol in your url
should make the SDK hint that you set manifest.behaviorHints.usesP2P
to true;
returning streams that look like web ready (http URLs, mp4) should hint you to set manifest.behaviorHints.webReady
to true
To read more about how streams are played, see: https://github.com/Stremio/stremio-players
Can we unify the interface to a player as a read/write stream of events? This would replace/simplify stremio-cast (also see this: https://github.com/Stremio/labs/issues/3), replace models/player.js
and potentially bring a unified way to build in stremio-web
and stremio-rn
Also, this might make things like telepathy
easier to implement. Also the state of the player UI can be just the stream of events ran through a reducer. This is kinda similar to the concept of react state containers
the default props of all component MUST be immutable
As of now if the add-on provides a tag with known value we replace it with an image. Perhaps we can allow any stream to specify logo?
https://github.com/Stremio/stremio-models/blob/d0ac6d050d20078595a3fa7f47022b734f7ce169/stream.js#L360
ideas:
https://developers.google.com/cast/docs/reference/chrome/
basically create services/players/chromecast
related to #4 - in other words, should be done after this
this also allows dropping all casting (DLNA, chromecast) from the stremio-server, making it much simpler and more reliable; so related to this: https://github.com/Stremio/stremio-server/issues/11
This will only be used in the browser. In the shell, we don't have access to the chrome cast API, so we will use a different solution
the service worker should be based on the implementation in 4.x, but there are some additional considerations:
Description
Following things can be fixed and improved.
Remove notification about new episode from the Board and from the details page(yellow font) when user marks it as watched or when he actually starts to play it.
When user selects whole Series as watched, marks every episode as watched, or show new Window where he can select from the Seasons/Episodes list
Stremio should notify(event,trigger) "integration" add-ons like trakt or any other add-on of that kind when user marks movie as watched.
Stremio should marks movies or episodes as watched after user has watched some part of the movie. Right now it works a little randomly. It can be additional setting or arbitrary % value.
if there are streams which are not currently playable (cause of incompatible protocol or format), the streams component should fade them out and render a "N streams unavailable because they are not compatible with your current platform" at the top, with an explanation when you click on it
If you click on a faded out stream, you should get the same explanation
The explanation should contain what you can do (connect a streaming server)
related to #142 and described in Stremio/stremio#655
e.g. stremio-web/common
So that it's obvious it's from THIS repo
on the add-ons page, there should be an "Install all add-ons" button at the top if we're displaying a collection
when clicked, it should install all add-ons that are not installed; the ones which are should get upgraded
make the buffered
value a part of the player implementation
rename to ShareModal with url and contentType proptypes
In the settings, allow to pick "automatically picked addons" and details about the selection process.
For example:
bingeGroup
This can be implemented via flags
in the addon descriptor and Stremio/stremio-addon-sdk#17
The UX would be the ability to use Stremio w/o ever needing to pick a stream
related to Stremio/stremio#447
the web-based service worker should be able to send notifications; we can do that by pulling from the backend and aggregating the notifications
the result from using the web notification API (https://developer.mozilla.org/en-US/docs/Web/API/notification) seem to look native on every platform I tested on, and allows rich media (images, etc.) so it's a perfect candidate
a possible blocker here is how to allow the service worker to get the user object and the notifications in a (relatively) secure manner
this is very related to Stremio/stremio-site#24, as it's part of it
e.g. match with .find()
also, use functions more to split the code up
add build step that generates ReactStory
https://react-story.js.org/#/readme-documentation
this is a no-brainer for when we've already started playibg and we're stuck on buffering, but we need to consider doing it before having started playing
we should allow markdown where text is normally allowed, which will go great together with internal links
In Stremio there is a setting that changes (forbids) the Escape key to exit full screen mode and invokes the default action (Go Back). In browser context, when the page is in full screen you can't override the Escape key. It always exits full screen, so this option is useless there.
limit to 2 catalogs per addon (maybe 1 for some)
and then have a big "See more from >>" button at the bottom
We should support markdown (rather than a HTML subset) in various places of the app, including but not limited to:
related: Stremio/stremio#515 Stremio/stremio#402 Stremio/stremio-addon-sdk#11
Those pieces of markdown should also support Stremio internal links (see Stremio/stremio#517), enabling complex use cases such as pointing to various filters in Discover, or even towards particular streams
kind of similar in concept to https://github.com/Stremio/stremio-players#playerurl
the idea is, to allow every add-on to return "meta extensions" regarding a particular meta item
currently, we run a meta aggregator for the detail page for a type, id
pair, and this gets data from all add-ons compatible with that request and displays the first metadata
object returned; the idea is, all other add-ons will be able to return metaExtension
that will appear in the detail page on the leftmost in the form of a icon sidebar
when you click on an icon, it will display that metaExtension
, which is practically a URL that should be rendered in an iframe/webengineview
this would allow use cases such as:
one way could be by "addon type" (resources):
maybe the ModalDialog can subtype Modal?
if the user is offline, the streams component should show a warning along with the available streams
if all add-ons are accessed through network, the usual message will be "no streams available" as there will be no responses; in this case it will be "no streams available; warning: you're offline"
it's important that this warning shows alongside the component cause there may still be streams available from the local add-ons
Currently, the implementation we have is very ugly
Proposal is:
Player implementations should take additionalSubtitles
(the Subtitles object) rather than leaving it for the controller to handle
That way, we avoid the mess by having the player implementation merge the embedded subs it found in the video with the additionalSubtitles
and will provide it as a unified array back to the controller/UI
Should be displayed every time you launch stremio into the board
comes as a replacement at the annoying sticky UI removed here: https://github.com/Stremio/stremio/commit/098d56dc473cf626fd3e2e7095153261178f73dc
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.