Как я сделал свой набор данных Pokemon за 2 минуты
Мы не всегда получаем то, что ищем, не так ли?
Тоже самое произошло со мной! Мне нужен был правильный набор данных о каждом покемоне, поэтому я начал искать разные API или пакеты npm.
Мне не удалось найти все, что я искал, в одном источнике, но я смог найти это распределенным в двух разных пакетах. Поэтому я решил извлечь необходимую информацию из каждого файла в CSV-файл.
И (я не хвастаюсь) я смог сделать это менее чем за 2 минуты! Как? Использование библиотеки objects-to-csv
. В этом блоге вы узнаете, как быстро преобразовать массив объектов в файл CSV. Давайте начнем.
Если вас интересует только код, вы можете найти его в этом репозитории GitHub:
О пакетах
Что касается данных о покемонах, я наткнулся на эти три пакета с заданными проблемами -
- Pokedex - Невозможно искать всех покемонов одновременно.
- Pokemon - просто список всех покемонов, но решает проблему получения всех покемонов.
- 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, и мы добавим вас в качестве автора. Также сообщите нам, к каким публикациям вы хотите быть добавлены.