1
0
mirror of https://git.sr.ht/~cadence/cloudtube synced 2024-12-22 13:07:00 +00:00

Normalise info for both channels and search

This commit is contained in:
Cadence Ember 2021-01-12 14:53:30 +13:00
parent ac28332ac0
commit c419aa90da
No known key found for this signature in database
GPG Key ID: BC1C2C61CF521B17
3 changed files with 28 additions and 11 deletions

View File

@ -2,6 +2,7 @@ const {render} = require("pinski/plugins")
const constants = require("../utils/constants")
const {fetchChannel} = require("../utils/youtube")
const {getUser} = require("../utils/getuser")
const converters = require("../utils/converters")
module.exports = [
{
@ -12,10 +13,11 @@ module.exports = [
const data = await fetchChannel(id, settings.instance)
const subscribed = user.isSubscribed(id)
const instanceOrigin = settings.instance
// apply watched status
// normalise info, apply watched status
const watchedVideos = user.getWatchedVideos()
if (data.latestVideos) {
data.latestVideos.forEach(video => {
converters.normaliseVideoInfo(video)
video.watched = watchedVideos.includes(video.videoId)
})
}

View File

@ -13,16 +13,7 @@ module.exports = [
const results = await fetch(fetchURL.toString()).then(res => res.json())
for (const video of results) {
if (!video.second__lengthText && video.lengthSeconds > 0) {
video.second__lengthText = converters.lengthSecondsToLengthText(video.lengthSeconds)
}
if (!video.second__lengthText && video.lengthSeconds === 0) {
video.second__lengthText = "LIVE"
video.liveNow = true
}
if (video.publishedText === "0 seconds ago") {
video.publishedText = "Live now"
}
converters.normaliseVideoInfo(video)
}
return render(200, "pug/search.pug", {query, results, instanceOrigin})

View File

@ -27,5 +27,29 @@ function lengthSecondsToLengthText(seconds) {
.join(":")
}
/**
* Second and Invidious don't return quite the same data. This
* function normalises them so that all the useful properties are
* available no matter the kind of instance. The video is modified
* in-place.
*
* Changes:
* - second__lengthText is added, may be [hh:]mm:ss or "LIVE"
* - publishedText may be changed to "Live now"
*/
function normaliseVideoInfo(video) {
if (!video.second__lengthText && video.lengthSeconds > 0) {
video.second__lengthText = converters.lengthSecondsToLengthText(video.lengthSeconds)
}
if (!video.second__lengthText && video.lengthSeconds === 0) {
video.second__lengthText = "LIVE"
video.liveNow = true
}
if (video.publishedText === "0 seconds ago") {
video.publishedText = "Live now"
}
}
module.exports.timeToPastText = timeToPastText
module.exports.lengthSecondsToLengthText = lengthSecondsToLengthText
module.exports.normaliseVideoInfo = normaliseVideoInfo