Как я сделал свой набор данных Pokemon за 2 минуты

Мы не всегда получаем то, что ищем, не так ли?

Тоже самое произошло со мной! Мне нужен был правильный набор данных о каждом покемоне, поэтому я начал искать разные API или пакеты npm.

Мне не удалось найти все, что я искал, в одном источнике, но я смог найти это распределенным в двух разных пакетах. Поэтому я решил извлечь необходимую информацию из каждого файла в CSV-файл.

И (я не хвастаюсь) я смог сделать это менее чем за 2 минуты! Как? Использование библиотеки objects-to-csv. В этом блоге вы узнаете, как быстро преобразовать массив объектов в файл CSV. Давайте начнем.

Если вас интересует только код, вы можете найти его в этом репозитории GitHub:



О пакетах

Что касается данных о покемонах, я наткнулся на эти три пакета с заданными проблемами -

  1. Pokedex - Невозможно искать всех покемонов одновременно.
  2. Pokemon - просто список всех покемонов, но решает проблему получения всех покемонов.
  3. Objects-to-csv - конвертирует массив объектов JavaScript в формат CSV. Спасатель жизни.

Вот и решил их совместить :)

Установка пакетов

Думаю, мне не нужно рассказывать вам эти шаги, если вы знакомы с NodeJS, но опять же, если вы используете другой язык, я покажу вам, как их установить.

Всего одна команда!

npm install --save objects-to-csv pokemon pokedex

Написание сценария

Замечательно, теперь самое главное. Прежде чем продолжить, давайте посмотрим, что мы получим от двух вышеуказанных пакетов.

Пакет Покемонов

Этот пакет можно использовать для получения имени / идентификатора конкретного покемона. Его также можно использовать для получения списка всех покемонов.

const pokemon = require('pokemon');
pokemon.all();
//=> ['Bulbasaur', …]

Пакет Pokedex

Этот пакет можно использовать для получения информации о покемонах, включая их спрайты.

var Pokedex = require('pokedex'),
pokedex = new Pokedex();
console.log( pokedex.pokemon('garbodor') );

Результат будет -

{
  id: 569,
  species_id: 569,
  height: 19,
  weight: 1073,
  base_experience: 166,
  order: 617,
  is_default: 1,
  name: 'garbodor',
  sprites: {
    normal: 'http://img.pokemondb.net/sprites/black-white/normal/garbodor.png',
    animated: 'http://img.pokemondb.net/sprites/black-white/anim/normal/garbodor.gif'
  }
}

Как вы уже догадались, мне нужен csv этих деталей для всех покемонов. Давайте сделаем сценарий.

Как и в любом другом проекте узла, первым шагом будет импорт библиотек.

const ObjectsToCsv = require('objects-to-csv')
const Pokedex = require('pokedex');
const pokemon = require('pokemon');

Теперь давайте создадим экземпляр Pokedex и получим всех покемонов.

const pokedex = new Pokedex();
let pokemons = pokemon.all();

Теперь давайте создадим массив объектов, каждый из которых содержит информацию о покемоне. Не забудьте преобразовать вложенные объекты в строку (иначе они создадут проблемы при записи в CSV).

let pokemonData = pokemons.map (pokemon => {
  let pokemonDetails = pokedex.pokemon(pokemon.toLowerCase());
  // Stringify the nested object
  pokemonDetails = {
    ...pokemonDetails,
    sprites: JSON.stringify(pokemonDetails.sprites)
  }
  return pokemonDetails;
})

Хорошо, вот и наш последний шаг - запись в CSV.

Я использую библиотеку objects-to-csv, которая упрощает работу. См. Следующий код, он не требует пояснений!

// Write to CSV File
const writeToCsv = async (data) => {
  const csv = new ObjectsToCsv(data);
// Save to file:
  await csv.toDisk('./pokedex.csv');
}

Теперь, когда мы зашли так далеко, давайте запустим!

node fileName.js

Вот и все! Магия. Наш CSV готов!

Вот полный код -

Вот и все, надеюсь, вы нашли этот пост полезным!

Не стесняйтесь обращаться ко мне в любое время, если вы хотите что-то обсудить: D

Буду более чем счастлив, если вы присылаете свои отзывы, предложения или вопросы. Более того, я люблю заводить новых друзей, и мы можем быть друзьями, просто напишите мне письмо.

Спасибо, что дочитали до конца. Если вам понадобится помощь, вы можете связаться со мной:
Электронная почта: [email protected]
Интернет: http://madhavbahl.tech/
Github: https: // github.com/MadhavBahlMD
LinkedIn: https://www.linkedin.com/in/madhavbahl/
Instagram:« https://www.instagram.com/theleanprogrammer/ имеется

Примечание из JavaScript In Plain English

Мы запустили три новых издания! Проявите любовь к нашим новым публикациям, подписавшись на них: AI на простом английском, UX на простом английском, Python на простом английском - спасибо и продолжайте учиться!

Мы также всегда заинтересованы в продвижении качественного контента. Если у вас есть статья, которую вы хотели бы отправить в какую-либо из наших публикаций, отправьте нам электронное письмо по адресу [email protected] с вашим именем пользователя Medium, и мы добавим вас в качестве автора. Также сообщите нам, к каким публикациям вы хотите быть добавлены.