Я создаю локальную html-страницу для просмотра видео, которое я скачал с youtube-dl. Чтобы зритель работал, он должен иметь доступ к метаданным видео. Я могу легко передать вывод метаданных из youtube-dl, когда он заканчивает загрузку в формате json, в один текстовый файл с помощью пакетной операции. Этот файл выглядит следующим образом, и в каждой строке есть свой объект json:
{Id: "jYDgJjGfha", description: "This video isn't good at all"}
{Id: "JDRegIIGfj", description: "This video is terrible"}
{Id: "VkdwjDoG", description: "Why am I downloading these?"}
Однако из-за защиты от перекрестного источника я не могу получить файл на моей странице просмотра html.
Мне было предложено вместо попытки загрузить текстовый файл с метаданными на мою страницу, чтобы я преобразовал метаданные в допустимый скрипт и загрузил его с тегом скрипта (например, <script src="metadata.js"></script>
).
В командном файле было просто сделать первую строку файла равной const database = [
и добавлять запятую каждый раз, когда выводится строка json. Вот как выглядит файл, содержащий метаданные:
const database = [
{Id: "jYDgJjGfha", description: "This video isn't good at all"},
{Id: "JDRegIIGfj", description: "This video is terrible"},
{Id: "VkdwjDoG", description: "Why am I downloading these?"},
Однако у меня нет способа закрыть этот массив. Потому что для каждого нового видео, которое становится доступным при запуске командного файла, необходимо добавлять новые строки. Я также не могу использовать решения, которые требуют загрузки всего файла метаданных в память, потому что это очень большой файл.
Я подумал о нескольких разных способах структурирования файла сценария метаданных, но ни один из них, похоже, не вполне соответствует моим потребностям:
Например: этот подход может сработать, но у меня нет возможности найти правильный индекс для установки моей строки при добавлении его в командный файл;
const database = [];
database[0] = {Id: "jYDgJjGfha", description: "This video isn't good at all"};
database[1] = {Id: "JDRegIIGfj", description: "This video is terrible"};
database[2] = {Id: "VkdwjDoG", description: "Why am I downloading these?"};
И этот подход определенно сработает, но я беспокоюсь о его производительности на моем большом файле:
const database = [];
database.push(database [I] = {Id: "jYDgJjGfha", description: "This video isn't good at all"});
database.push({Id: "JDRegIIGfj", description: "This video is terrible"});
database.push({Id: "VkdwjDoG", description: "Why am I downloading these?"});
Существуют ли другие способы структурирования файла сценария метаданных, чтобы превратить его в действительный сценарий?
Редактировать
На самом деле я смог достичь изначально желаемой файловой структуры, изменив свой командный файл на скрипт PowerShell. См .
Я пометил ответ @ lima_fil как правильный, потому что он все еще является верным ответом на мой вопрос и может помочь кому-то в дальнейшем.