forked from Joystream/atlas
-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
enhancementNew feature or requestNew feature or request
Description
App specification
Access
- Everyone is allowed to use the dashboard to explore data that's already publicly available on Gleev (in read-only mode)
- Providing YouTube Sync operator key enables access to YPP-related actions (see list of supported actions below)
- Providing Gleev operator key grants read access to hidden/non-public channels/videos and enables Gleev operator actions (see list of supported actions below)
- (optional) Connecting CWG lead/worker key enables some on-chain actions (see list of supported actions below)
Pages
Channels listing
Channel's data
- ID
- Title
- Avatar photo
- Creation date (
createdAt) - Owner member:
- ID
- Handle
- (opt) Avatar
- Flags:
isPublicisCensoredisExcluded
- Language
- Number of:
- Followers
- Total video views (
videoViewsNum) - Total videos created (
totalVideoCreated)
- CRT (if exists):
- ID
- Symbol
- Is featured?
- (opt) Liquidity
- Cumulative revenue (
cumulativeRevenue) - Weight (
channelWeight) - YPP status / tier
- Is YouTube sync enabled?
- Number of reports
- (opt) Last video upload date
Filtering options
By:
- ID
- Title fragment
- (opt) Desc fragment
- Creation date (from - to)
- Owner member:
- ID
- (opt) Handle
- Flags:
isPublicisCensoredisExcluded
- Language
- Has CRT?
- Is CRT featured?
- YPP status
- Is YouTube sync enabled?
- Number of reports > 0?
- (opt) CRT Transactional status
Sorting options
By:
- Creation date
- Number of follows
- Total number of video views
- Total number of videos created
- Cumulative channel revenue
- Weight
- (opt) Last video upload date
- (opt) CRT Liquidity?
Available actions
YPP API
- Verify (supports multi-selection)
- Change default video category (supports multi-selection)
- Suspend
Orion:
- Set channel weight
- Exclude/Restore channel (supports multi-selection)
(opt) On-chain:
- Censor (supports multi-selection)
- Remove channel assets
Channel details
Channel's data
- All data from channels listing + ...
- Description
- List of associated reports
- List of all associated assets (cover photo, avatar etc.) along with:
- IDs
- Sizes
- Links to retrieve them from available distributors (
resolvedUrls)
- (opt) Breakdown of payouts
- CRT:
- (opt) Transactional status
Available actions
- All actions from channels listing actions + ...
(opt) On-chain:
- Remove channel assets
Videos listing
Video's data
- ID
- Joystream creation date
- If synced from YT:
- YT creation date
- YT video ID and/or Link
- Channel's:
- ID
- Title
isExcludedstatus- (opt) avatar
- (opt) weight
- Has NFT?
- Language
- Orion language
- Featuring:
- Pinned status (
includeInHomeFeed) - Featured in category (if it is):
- ID
- Name
- Is NFT featured?
- Pinned status (
- Relevance
- Flags:
isPublicisCensoredisExcludedisExplicitisShortisShortDerived
- Is it visible on Gleev? (depends on multiple conditions)
- Number of:
- Views
- Comments
- Reactions
- (opt) Gleev feed position? (estimated)
- License:
- Type
- Number of reports
Filtering
By:
- ID
- Joystream creation date (from - to)
- Title fragment
- (opt) Desc fragment
- Channel's:
- ID
- (opt) Channel title fragment
- YPP tier
- Is synced from YouTube?
- Language
- Orion language
- Flags:
isPublicisCensoredisExcludedisExplicitisShortisShortDerived
- Video category
- Pinned status (
includeInHomeFeed) - Gleev visibility status
- Has nft?
- Featured in Category
- (opt) Number of reports > 0
- (opt) NFT transactional status
Sorting
By:
- Joystream creation date
- (opt) YouTube creation date
- Relevance
- Number of views
- Number of comments
- Number of reactions
- (opt) Gleev feed position? (estimated)
Actions
Orion API:
All of those should support multi-selection:
- Exclude/Restore video(s)
- Pin/Unpin video(s) (
includeInHomeFeed) - Set video NFT featuring status
- Set/Unset category the video is featured in
Video details
Video's data
- All data from videos listing + ...
- Details about license (ie. attribution, custom text if exists)
- List of all associated assets (media, thumb, subtitles etc.) along with:
- IDs
- Links to retrieve them from available distributors (
resolvedUrls)
- List of associated reports
- Video relevance w/ detailed explanation about how each factor affects it (see: Relevance formula), ie.:
- Newness / Age and its weight
- Joystream age (based on
createdAt) and its weight - YouTube age (based on
publishedBeforeJoystream) and its weight
- Joystream age (based on
- Views and their weight
- Comments and their weight
- Reactions and their weight
- Channel weight
- Newness / Age and its weight
- (opt) List of comments
- NFT
- (opt) last price
- (opt) transactional status
Relevance formula
(
365 * newnessWeight
- min((joystreamNewsnessWeight/totalWeight * joystreamAgeDays + ytNewsnessWeight/totalWeight * ytAgeDays))
+ viewsNum * viewsWeight
+ commentsCount * commentsWeight
+ reactionsCount * reactionsWeight
) * channelWeight
Available actions
- All actions from videos listing actions + ...
Chain API:
- Remove video assets
Configuration
Data
- Video relevance weights
Actions
Orion API
- Setting video relevance weights
Required changes in existing projects
Youtube Sync
- To allow filtering channels / videos by channel's YPP status/tier and
isYouTubeSyncEnabledflag we'd need to:- Create a script to sync this data from yt-sync database to Orion
- Add triggers to update status in Orion once it's updated in yt-sync
Orion
- To allow filtering channels by YPP status/tier and
isYouTubeSyncEnabledflag we'd need to:- Expand the
YppStatusenum to include channel tier information (Bronze, Silver, Gold, Diamond) - Add
isYouTubeSyncEnabledfield - Add mutation to set
isYouTubeSyncEnabledvalue - (opt) Add index on Channel's
yppStatusandisYouTubeSyncEnabledfields in Postgres (for optimization purposes)
- Expand the
- To optimize sorting and filtering, adding following PostgreSQL indices can also be considered:
- Channel/Video:
createdAtisPublicisExcludedisCensored
- Channel:
languagefollowsNumvideoViewsNumtotalVideosCreatedcumulativeRevenuechannelWeight
- Video:
relevanceisShortisShortDerivedisExplicitlanguageorionLanguageytVideoIdviewsNumreactionsCountcommentsCount
- Channel/Video:
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Type
Projects
Status
In Progress