From e20e671d162eb2eee8b24f5c72ce86f041b04d82 Mon Sep 17 00:00:00 2001 From: stranothus Date: Mon, 13 Dec 2021 09:29:45 -0600 Subject: [PATCH] Include available video qualities to metadata The playerResponse streamingData adaptiveFormats are filter to include only those which include a qualityLabel. This array is then mapped to an array of qualityLabels and sorted from lowest to highest quality. --- lib/Constants.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/Constants.js b/lib/Constants.js index 00744641..a402bcd1 100644 --- a/lib/Constants.js +++ b/lib/Constants.js @@ -141,6 +141,7 @@ module.exports = { metadata.publish_date = data.microformat.playerMicroformatRenderer.publishDate || 'N/A'; metadata.upload_date = data.microformat.playerMicroformatRenderer.uploadDate || 'N/A'; metadata.keywords = data.videoDetails.keywords || []; + metadata.available_qualities = [...new Set(data[2].playerResponse.streamingData.adaptiveFormats.filter(v => v.qualityLabel).map(v => v.qualityLabel).sort((a, b) => +a.replace(/\D/gi, "") - +b.replace(/\D/gi, "")))] video_details.id = data.videoDetails.videoId; video_details.title = data.videoDetails.title; @@ -169,6 +170,7 @@ module.exports = { metadata.publish_date = data[2].playerResponse.microformat.playerMicroformatRenderer.publishDate; metadata.upload_date = data[2].playerResponse.microformat.playerMicroformatRenderer.uploadDate; metadata.keywords = data[2].playerResponse.videoDetails.keywords; + metadata.available_qualities = [...new Set(data[2].playerResponse.streamingData.adaptiveFormats.filter(v => v.qualityLabel).map(v => v.qualityLabel).sort((a, b) => +a.replace(/\D/gi, "") - +b.replace(/\D/gi, "")))] video_details.id = data[2].playerResponse.videoDetails.videoId; video_details.title = data[2].playerResponse.videoDetails.title;