mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-03 09:49:20 +02:00

* Add Scheduled Lives functionality through originallyPublishedAt Implements #6604 by reusing the originallyPublishedAt field of isLive videos to mark "waiting for live" videos as scheduled at a set time. * Hide scheduled lives from Browse Videos page * Add tests for Scheduled Live videos * Make scheduled lives use a dedicated scheduledAt field in the VideoLive table * Plan live schedules to evolve in the future * Use a dedicated table to store live schedules, so we can add multiple schedules in the future and also add a title, description etc. for a specific schedule * Adapt REST API to use an array to store/get live schedules * Add REST API param so it's the client choice to include or not scheduled lives * Export schedules info in user import/export --------- Co-authored-by: Chocobozzz <me@florianbigard.com>
84 lines
1.6 KiB
TypeScript
84 lines
1.6 KiB
TypeScript
import { pick } from '@peertube/peertube-core-utils'
|
|
import {
|
|
VideoChannelsSearchQueryAfterSanitize,
|
|
VideoPlaylistsSearchQueryAfterSanitize,
|
|
VideosCommonQueryAfterSanitize,
|
|
VideosSearchQueryAfterSanitize
|
|
} from '@peertube/peertube-models'
|
|
|
|
function pickCommonVideoQuery (query: VideosCommonQueryAfterSanitize) {
|
|
return pick(query, [
|
|
'start',
|
|
'count',
|
|
'sort',
|
|
'nsfw',
|
|
'nsfwFlagsIncluded',
|
|
'nsfwFlagsExcluded',
|
|
'isLive',
|
|
'includeScheduledLive',
|
|
'categoryOneOf',
|
|
'licenceOneOf',
|
|
'languageOneOf',
|
|
'host',
|
|
'privacyOneOf',
|
|
'tagsOneOf',
|
|
'tagsAllOf',
|
|
'isLocal',
|
|
'include',
|
|
'skipCount',
|
|
'hasHLSFiles',
|
|
'hasWebVideoFiles',
|
|
'search',
|
|
'excludeAlreadyWatched',
|
|
'autoTagOneOf'
|
|
])
|
|
}
|
|
|
|
function pickSearchVideoQuery (query: VideosSearchQueryAfterSanitize) {
|
|
return {
|
|
...pickCommonVideoQuery(query),
|
|
|
|
...pick(query, [
|
|
'searchTarget',
|
|
'host',
|
|
'startDate',
|
|
'endDate',
|
|
'originallyPublishedStartDate',
|
|
'originallyPublishedEndDate',
|
|
'durationMin',
|
|
'durationMax',
|
|
'uuids'
|
|
])
|
|
}
|
|
}
|
|
|
|
function pickSearchChannelQuery (query: VideoChannelsSearchQueryAfterSanitize) {
|
|
return pick(query, [
|
|
'searchTarget',
|
|
'search',
|
|
'start',
|
|
'count',
|
|
'sort',
|
|
'host',
|
|
'handles'
|
|
])
|
|
}
|
|
|
|
function pickSearchPlaylistQuery (query: VideoPlaylistsSearchQueryAfterSanitize) {
|
|
return pick(query, [
|
|
'searchTarget',
|
|
'search',
|
|
'start',
|
|
'count',
|
|
'sort',
|
|
'host',
|
|
'uuids'
|
|
])
|
|
}
|
|
|
|
export {
|
|
pickCommonVideoQuery,
|
|
pickSearchVideoQuery,
|
|
pickSearchPlaylistQuery,
|
|
pickSearchChannelQuery
|
|
}
|