Closed Ivshti closed 5 years ago
And as a result, not requiring additional backend work and more importantly, extendable
CatalogDetailResp { metasDetailed: Vec<MetaDetail> }
; they take a required extra prop ids
, which is in the format ["tt0944947", ...]
"last-videos"
catalog IDs which return a MetaDetail
with videos
being set to the last N videos; even if cinemeta is static, this can be done via a Cloudflare worker/videos/
resource, with extra prop whereIsNew
which allows you to specify either new or non-new videos
CatalogDetailResp
but without ids
and instead with isNew
- seems like the cleaner way to go"last-videos"
catalogs with ids set to the most watched series/channels of the userUpdateLastVids
, out action: LastVidsUpdated
); this out action should trigger re-requests of the resources used for Calendar/NotificationsLastVidsUpdated
happening: since every time we recalculate the results, some videos that were upcoming might have become availablestate.last_video_released
for each LibItem; all of the videos where released
is larger than state.last_video_released
are considered new to the user
datastorePut
is done for a notif to maintain compatibility with older versionswatched
(watchedBitfield
)
planner
function for v4.4 to stop syncing those items; and will prune them from our DB via a script; instremio-core
, it will be implemented as a simple filter in the LibAddonmanifest()
function within the same applibItems
), it should be filtered out ofCatalogFiltered
andCatalogGrouped
; the catalog will be of typeany
, which will be filtered out ofCatalogFiltered
AddonRequest
when the lib is updated17
24
79 #95
open()
; decision: will be separateDetail
will just output themeta
to render, and theselected_video
; Load action:Detail(..., Option<video_id>)
; ifselected_id
isNone
, thelibItem.state.video_id
will be usedStreams
will just load streams from addonsDetail
andStreams
, and it will triggerLoad(Streams(...))
if theselected_video
does not have.streams
; if it does, it will render thatTryOpen
will take the fullvideo
to determine whether to request streams from addons or notextra
properties withrequired: true
will be allowed inCatalogFiltered
; e.g.genre
is one such examplenoBoard
/noDiscover
are needed; probably notextra
props (search
,searchIndex
,genre
,skip
, possiblylocation
, etc.)CatalogFiltered
, filter catalogs by.extra.iter().all(|e| !e.is_required || e.options.map_or(|o| !o.is_empty(), false))
; or also|| e.name == "onlyDiscover"
if we want a santinel value that just flags a catalog as only visible in DiscoverAdded later on:
addons
resource, that can be implemented by any add-on (therefore allowing one addon to add items to the catalog, i.e. repositories); cinemeta will implement it for official/third-party add-onsskip
ManifestPreview
, and pulling the whole manifest when installingCatalogFiltered
)behaviorHints
for this)Type > Catalog
orCatalog > Type
; first one is the same as Discover; second one can be done viaany
catalog type plusextra
prop for the typeCatalogFiltered
.addon_catalogs
to the manifest, and makeCatalogFiltered
generic overT: CatalogAdapter
which hasT::catalogs(x: &Descriptor)
andT::resource()
(that returnx.manifest.catalogs
,"catalog"
orx.manifest.addon_catalogs
,"addon_catalog"
); we will have to usetry_into
for the response, asmodels/items_group
doesanother thing we can do is add aresource_name
to each catalog; that way instead ofmanifest.addon_catalogs
, we'll have them inmanifest.catalogs
but we'll just filter byresource_name
alternatively, addon catalogs will be hidden behind a required property, and we will instantiateCatalogFiltered
with someextra
prop already passed; this seems hackierManifestPreview