Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Fetching gifs from the Tenor API

I’m having issues fetching any gifs from the Tenor API – I’ve also tried to use tenor.googleapis.com.

But so far, I’ve gotten this error over and over again:
Sorry, no media found in the search result

Here’s the code I’ve worked with:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

client.on('interactionCreate', async (interaction) => {
  if (!interaction.isCommand()) return;

  if (interaction.commandName === 'cat') {
    const api_key = 'API_KEY';
    const search_term = 'kitty';
    const limit = 50;
    const url = `https://tenor.googleapis.com/v2/search?q=${search_term}&key=${api_key}&limit=${limit}`;
    const command = `curl --request GET ${url}`;

    try {
      const response = await axios({
        method: 'GET',
        url: url,
        headers: {
          'User-Agent': 'PostmanRuntime/7.28.4'
        }
      });
      const data = response.data;
      if (!data.results || data.results.length === 0) {
        console.log('Sorry, no results found for kitty review');
        await interaction.reply('Sorry, no results found for kitty review');
        return;
      }
      const index = Math.floor(Math.random() * data.results.length);
      const result = data.results[index];
      const gif = result.gif && result.gif.url;
      if (!gif) {
        console.log('Sorry, no gif URL found in the search result');
        await interaction.reply('Sorry, no gif URL found in the search result');
        return;
      }
      console.log(`Found kitty review: ${gif}`);

      // send the gif in an embed
      const embed = new MessageEmbed()
        .setTitle('Here is your kitty review!')
        .setColor('#FFC0CB')
        .setImage(gif);

      await interaction.reply({ embeds:  });
    } catch (error) {
      console.error(error);
      await interaction.reply('Sorry, an error occurred.');
    }
  }
});

I’ve edited the code, so that it returns if no URL was found in the result, and the issue seems to be, that it’s not fetching the GIF URL: Sorry, no gif URL found in the search result

>Solution :

It doesn’t return no results, but error that result.gif is undefined.

You should change this line:

const gif = result.gif.url;

to:

const gif = result.url;

Then it works fine. At least in my case.

PS. This answer is based on originally posted code, not the changed one. Won’t check the new one again.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading