Guckkasten.js 2.24 KB
var request = require('request');
var cheerio = require('cheerio');

function crawl_guckkasten(callback){
    var n = 0;
    var guckkasten = [];
    crawl(function(album,year,track){
        n++
        if (n == 10) {
            var j;
            var a, y, t;
            for (var i = 1; i < year.length; i++) {
                y = year[i];
                a = album[i];
                t = track[i]
                j = i - 1;
                while (j >= 0 && year[j] > y) {
                    album[j + 1] = album[j];
                    year[j + 1] = year[j];
                    track[j + 1] = track[j];
                    j--;
                }
                album[j + 1] = a;
                year[j + 1] = y;
                track[j + 1] = t;
            }
            for(var i = 0; i<album.length; i++){
                album[i] = (i+1)+'. ' +album[i]; 
            }
            guckkasten.push(album, year, track);
            callback(guckkasten);
        }
    })
}

function crawl(callback){
    var url;
    let json_album = [], json_year = [], json_track = [];
    var track;
    var year;
    var album;
    for (var i = 1; i <= 13; i++) {
        url = 'http://www.interparkenter.com/guckkasten/Album/' + i;
        if (!(i > 9 && i < 13)) {
            request(url, function (err, res, body) {
                const $ = cheerio.load(body);

                var track_num = 0;
                var album_track = '';
                $('#divDetail > div.disco_left_box > div.track_area > div > ol').find('li').each(function () {
                    track_num++;
                    track = $('#divDetail > div.disco_left_box > div.track_area > div > ol > li:nth-child(' + track_num + ')').text()
                    album_track += track + '\n';
                })
                json_track.push(album_track);

                year = $('#divDetail > div.disco_right_box > div.Introduction > p.txt_release').text();
                year = year.substr(3);
                json_year.push(year);

                album = $('#divDetail > div.disco_right_box > div.Introduction > p.txt_title').text();
                json_album.push(album);
                callback(json_album,json_year,json_track);
            });
        }
    }
}


exports.crawl_guckkasten = crawl_guckkasten;