微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

下载广告牌热门 100 个但只有 50 个mp3 文件

如何解决下载广告牌热门 100 个但只有 50 个mp3 文件

哟哟哟哟。我有一个疯狂的想法,那就是将广告牌上的 100 首热门歌曲中的 50 首下载到 mp3 文件中,然后将它们放到私人在线广播中。

问题是,我这样做的方式不是一个一个下载每个文件,而是将所有音乐放在一个 mp3 文件中。到目前为止,这是我的代码(可怕,我知道......我只是想很快把它放在一起)

const { getChart } = require("billboard-top-100");
const ffmpeg = require("fluent-ffmpeg");
const { mkdir } = require("fs");
const ytdl = require("ytdl-core");
const YT = require("scrape-youtube").default;

getChart('hot-100',(err,chart) => {
    if(err) console.log(err);
    chart.songs.length = 50;
    for (var i = 0; i < chart.songs.length; i++) {
        var song = chart.songs[i];
        song.artist = song.artist.replace("Featuring","feat.");
        var name = `${song.artist} - ${song.title}`;
        YT.search(name).then(res => {
            downloadVideo(res.videos[0].link,name).then(_ => { console.log(""); }).catch(console.log);
        }).catch(err => console.log(err));
    };
});

function downloadVideo(url,name) {
    return new Promise((resolve,reject) => {
        var stream = ytdl(url,{ filter: "audioonly",quality: "highestaudio" });
        var start = Date.Now();

        ffmpeg(stream)
            .audioBitrate(128)
            .save(`${__dirname}/${new Date().getWeek()}/${name}.mp3`)
            .on("end",_ => {
                console.log(`Downloaded "${name}.mp3" - Took ${(Date.Now() - start) / 1000} seconds.`);
                resolve(`${name}.mp3`);
            })
            .on("error",_ => reject("something went wong"));
    });
}

Date.prototype.getWeek = function() {
  var onejan = new Date(this.getFullYear(),1);
  return Math.ceil((((this - onejan) / 86400000) + onejan.getDay()+1)/7);
}

解决方法

通过使用 forEach 方法而不是常规 for 循环来解决此问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?