Giter VIP home page Giter VIP logo

stremio-web's People

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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stremio-web's Issues

[Feature] ?defaultAddonCollection=

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"

[epic] new stream spec: implement

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 opened
  • playerFrameURL: optional: see https://github.com/stremio/stremio-players#playerurl
  • title: optional: string - title of the stream; usually used for stream quality
  • thumbnail: 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 file
  • behaviorHints (all are optional)
    • platformsWhitelist: which hints it's restricted to particular platforms - to be discussed
    • countryWhitelist: which hints it's restricted to particular countries - array of ISO 3166-1 alpha-2 country codes in lowercase in which the stream is accessible
    • notWebReady 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 file
    • peers: number of connected peers; applies for P2P protocols
    • group: 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 implicitly
    • headers: only applies to urls; 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 setting
    • adexSlotId: 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

[Epic] Player: unified, formalized interface

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

[UX] better addons installation flow the first time

ideas:

  • rather than saying "no content available" say "Please install more add-ons"
  • first time you go to the addon catalog, show some explanation what it does
  • "more addons" button more noticable
  • when you go to the addon page from a type "movie", go to add-ons for movie, etc.

chromecast player implementation based on the Chrome cast API

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

service worker: figure out

the service worker should be based on the implementation in 4.x, but there are some additional considerations:

  • cleaner logic on what is cached and what is ignored
  • ensuring we don't always take more than a certain fixed amount of storage, except for certain "pinned" items/paths (e.g. app HTML/JS/CSS blobs)

Mark episodes as watched: improvements

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.

Screenshots to 1st point
image
image

[UX] fade out non-playable streams (!is_web_ready()), but show an indicator

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

[Feature] bingeing: configure automatically chosen addons

In the settings, allow to pick "automatically picked addons" and details about the selection process.

For example:

  • as suggested by Tomek, we may offer "select first available stream" or "select first available stream from the same addon"
  • whether to auto select the addon
  • priority (if you want a few addons to be auto selected)
  • quality, or other addon-specific things perhaps defined by addonSettings; could also be implemented via the 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

[feature] web-based notifications via ServiceWorker

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

[ux] better icon for audio track

we need a more recognizable icon for the audio track selection, "DUB" is not very user friendly

here's an example, although we might be able to do it better (e.g. megaphone icon or something)

amazon

The setting for the `Esc` key behavor must be hidden in browser.

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.

[spec] markdown support for descriptions/summaries/messages

We should support markdown (rather than a HTML subset) in various places of the app, including but not limited to:

  • detail page: item description
  • addon description (descriptionLong): Stremio/stremio-addon-sdk#11
  • user error messages: e.g. Stremio/stremio#402

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

[spec] Detail page extensions

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:

  • extensive recommendations add-ons
  • review add-ons
  • interactive add-ons
  • bringing back the detailed cast information
  • others..? @jaruba

Addons: consider filter by what they provide

one way could be by "addon type" (resources):

  • All (no filter)
  • streaming addon
  • subtitles addon
  • full addon (figure out a better name for this..addon that provides catalogs with streams) too confusing
  • catalog addon

[UX] streams component should show a warning if offline

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

[Epic] Player: figure out subtitles + embedded subtitles

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

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.