当前位置: 首页 > 知识库问答 >
问题:

JavaScript(节点.js)如何从子版税中获取随机图像的URL?

陈季
2023-03-14

基本上,我正在尝试从特定的子reddit中获取随机图片的URL。我尝试过在这里使用原始JSON,但我不能完全弄清楚。我一直在使用snekfetch来获取JSON,因为它以前在不太复杂的网站上工作过,但是我已经看到了其他方法,如超级代理和snoowrap,我不知道如何正确使用。以下是我尝试使用snekfetch的方法(我正在尝试将其合并到不和谐的机器人中):

case "pic":
    if (!args[1]) return message.channel.send("Enter a title (Be VERY specific");
    // pics was set equal to "https://www.reddit.com/r/pics.json" earlier
    snekfetch.get(pics).then(r => {
        let postTitle = args[1];
        let img = r.preview.images[0].source.url;
        let entry = r.find(post => post.title == postTitle);
        let picture = new Discord.RichEmbed()
            .setAuthor(entry.title)
            .addField(entry)
            .setImage(img);
        message.channel.send(picture);
        //message.channel.send(entry.preview.images[0].source.url);
    });
    break;

我是JSON的新手,所以如果这段代码充满了可怕的错误,我也不会感到惊讶。

通过一些谷歌搜索,我设法发现显然每个reddit帖子在36基数中都有一个ID。但是这些ID实际上并不符合顺序,所以我需要将它们全部存储在html" target="_blank">数组中,并从中随机选择。

简而言之,我如何从reddit中检索一个图像作为URL,我如何将一定数量的这些图像放入一个数组中?

共有1个答案

伍胡媚
2023-03-14

使用提供的JSON数据,您可以获得所有图像,如下所示:

async function getImages(url) {
    const images = [];
    const response = await snekfetch.get(url);
    response.body.data.children.forEach((child) => {
        child.data.preview.images.forEach((image) => {
            images.push(image.source.url);
        });
    });
    return images;
}

如果您只需要收集< code>N个图像,那么您可能希望使用一个标准for循环,该循环在< code>N === images.length时中断。

 类似资料:
  • 如何从MongoDB中的集合中随机获取单个文档。 我如何修复代码。 我收到错误:未定义不是函数 --------------------------------------好的。我修复了----------------------------

  • 要获取节点版本-我希望运行以下内容: 我正在和docker一起运行以下程序: 我明白了: 我的问题是:如何从docker容器中获取节点的版本?

  • 问题内容: var items = Array(523,3452,334,31,…5346); 如何获得随机物品? 问题答案:

  • 问题内容: 可以说我有一个单词列表,我想创建一个将新列表的大小作为参数并返回新列表的方法。我如何从原始sourceList中获得随机单词? 那么,如何以及在哪里可以使用我的随机数? 问题答案: 我找到了适当的解决方案。Random提供了一些返回流的方法。例如ints(size)会创建一个随机整数流。

  • 问题内容: 我有一个数组叫做 我需要从该数组中获取一个随机值并将其存储在变量中,我该怎么做? 问题答案: 您还可以执行以下操作: 当您有关联数组时,这就是这样做的方法。