Как получить фрагмент текста с веб-страницы и присвоить его переменной с помощью javascript/discord.js ?

#javascript #node.js #discord.js

#javascript #node.js #discord.js

Вопрос:

Я пытаюсь создать фрагмент кода для discord bot, который будет отображать лучший результат с веб-сайта под названием giphy при вводе / gif {text}. Для этого я уже выполнил ту часть, где он переходит по соответствующей ссылке (результаты поиска). Теперь я хочу извлечь a-href (ссылку) из первого результата (того, который открывается при нажатии на него) и присвоить его переменной, которую я могу отобразить по запросу. Кроме того, я хочу отправлять не URL, а вложение, используя {files: []} part из .send

Я не имею ни малейшего представления, с чего начать извлечение с какой-либо другой веб-страницы, используя discord.js Я также думал о добавлении view-source: , но я не знаю, как извлечь фрагмент текста и присвоить переменной Есть способ в HTML (JavaSript DOM?), Но он использует i-фреймы.

 else if (message.content.search("/gif") == 0) {
    let msg = message.content;
    let gif1 = msg.split("/gif")[1].trim()
    let gif2 = gif1.replace(" ", "-");
    let gif = "https://giphy.com/search/"   gif2;
      message.channel.send("Most relevant result for"   " "   gif1, {files: [gif]} )
      }
  

По-видимому, приведенный выше код отображает текстовый файл в канале discord. Я хочу, чтобы он отображал gif, который является первым результатом, без отображения ссылки.

Ответ №1:

Я бы рекомендовал использовать giphy-api : с его помощью вы можете сделать:

 var giphyApi = require("giphy-api")();
giphyApi.search({
    q: 'pokemon',
    rating: 'g'
}, function (err, res) {
    console.log(res.data[0].images.original.url)
});
  

И это будет console.log: https://media3.giphy.com/media/iBANmdIlMNJVC/giphy-preview.gif?cid=e1bb72ff5ca0b1d72f66564d45c6925c

Что означает, что вы можете сделать:

 var giphyApi = require("giphy-api")();

giphyApi.search({
    q: 'pokemon',
    rating: 'g'
}, function (err, res) {
    message.channel.send('Gif:', new Discord.Attachment(res.data[0].images.original.url , 'gif.gif'))
});
  

Комментарии:

1. Я пытаюсь использовать их функцию giphy.random(), но она не работает с этим кодом, говорится cannot read property "images" of undefined . Является ли res.data[0] здесь неопределенным? Не могли бы вы мне помочь, пожалуйста? @PLASMA chicken

2. Для случайного его res.data.images.original.url

3. почему веб-сайт не показывает все правильные команды? 🙁 Я видел giphy.random там

4. Ах, так что не использование индекса в основном приводит к случайности там, я не прочитал должным образом.

Ответ №2:

 
    client.on('message', async message => {
    if(message.content.includes("!gif")){
const args = message.content.slice().trim().split(/  /g);
const command = args.shift().toLowerCase(); 
let converts = args.join(" ");  

if(converts ==""){converts = "random"}  
 giphyApi.search({
    q: converts,
    rating: 'g'
}, function (err, res) {
let embed = new Discord.RichEmbed()
.setColor(0x00ae86)
.setTitle(`🎬 Result for ${converts}`)
.setImage((res.data[0].images.original.url))
message.channel.send({embed:embed})  

}); 
}

});
  

Комментарии:

1. Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшило бы долгосрочную ценность ответа. Он также должен быть правильно отформатирован, чтобы упростить чтение.