mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-06 03:50:26 +02:00
Add ability to search a video with an URL
This commit is contained in:
parent
22a16e36f6
commit
f6eebcb336
19 changed files with 244 additions and 135 deletions
|
@ -13,6 +13,8 @@ import {
|
|||
videosSearchSortValidator
|
||||
} from '../../middlewares'
|
||||
import { VideosSearchQuery } from '../../../shared/models/search'
|
||||
import { getOrCreateAccountAndVideoAndChannel } from '../../lib/activitypub'
|
||||
import { logger } from '../../helpers/logger'
|
||||
|
||||
const searchRouter = express.Router()
|
||||
|
||||
|
@ -33,9 +35,16 @@ export { searchRouter }
|
|||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
async function searchVideos (req: express.Request, res: express.Response) {
|
||||
function searchVideos (req: express.Request, res: express.Response) {
|
||||
const query: VideosSearchQuery = req.query
|
||||
if (query.search.startsWith('http://') || query.search.startsWith('https://')) {
|
||||
return searchVideoUrl(query.search, res)
|
||||
}
|
||||
|
||||
return searchVideosDB(query, res)
|
||||
}
|
||||
|
||||
async function searchVideosDB (query: VideosSearchQuery, res: express.Response) {
|
||||
const options = Object.assign(query, {
|
||||
includeLocalVideos: true,
|
||||
nsfw: buildNSFWFilter(res, query.nsfw)
|
||||
|
@ -44,3 +53,27 @@ async function searchVideos (req: express.Request, res: express.Response) {
|
|||
|
||||
return res.json(getFormattedObjects(resultList.data, resultList.total))
|
||||
}
|
||||
|
||||
async function searchVideoUrl (url: string, res: express.Response) {
|
||||
let video: VideoModel
|
||||
|
||||
try {
|
||||
const syncParam = {
|
||||
likes: false,
|
||||
dislikes: false,
|
||||
shares: false,
|
||||
comments: false,
|
||||
thumbnail: true
|
||||
}
|
||||
|
||||
const res = await getOrCreateAccountAndVideoAndChannel(url, syncParam)
|
||||
video = res ? res.video : undefined
|
||||
} catch (err) {
|
||||
logger.info('Cannot search remote video %s.', url)
|
||||
}
|
||||
|
||||
return res.json({
|
||||
total: video ? 1 : 0,
|
||||
data: video ? [ video.toFormattedJSON() ] : []
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue