Ответы пользователя по тегу Парсинг
  • Как асинхронно запарсить данные из папки в JSON, используя node.js?

    @netW0rm
    var cache = {};
    function writeJson() {
    	fs.writeFile(JSON.stringify(cache), cb)
    }
    fs.readdir(__dirname, function(err, data) { // Читаем текущую директорию
        if (err) throw err; // Обработали ошибку, если есть
        var promises = []
        data.forEach(function(item) { // Для каждой папки в директории начинаем перебор
            promises.push(new Promise((resolve, reject) => {
              if (isFolder(item)) { // Если это - папка, то продолжаем
                  cache[item] = {}; // Наименование папки(муз.альбом) - объект, кот. будет хранить данные о нем
    
                  fs.readdir(__dirname + `/${item}`, function(err, songList) { // Читаем внутренности папки(альбома)
                      let songArray = [], // Найденные песни копим сюда
                          cover = null; // Контейнер для кавера для альбома
                      if (err) throw err;
                      songList.forEach(function(song) { // Для каждой песни в альбоме
                          if (isSong(song)) { // Если это - песня, а не фотография или еще чего, то добавляем в массив
                              songArray.push(song);
                          } else if (isPic(song)) { // Если фотография - присваиваем её переменной
                              cover = song;
                          }
                      }); // Цикл перебора для текущей папки(альбома) закончен, запускается следующий
                      cache[item] = { // Тут мы присваиваем данные объекту(item-название альбома)
                          songs: songArray, // Массив с песнями
                          cover: cover // Кавер для альбома
                      };
                      resolve()
                  });
              }
              else {
              	resolve()
              }
            });
        });
        Promise.all(promises).then(() => {
        	writeJson()
        })
    });

    както так
    Ответ написан
    6 комментариев