#!/usr/bin/env perl

use 5.010001;
use strict;
use warnings;
use FindBin '$Bin';

use File::Slurper qw(read_text write_text);
use LWP::Simple;

my $url = "https://coinmarketcap.com/all/views/all/";
my $cache_path = "$Bin/../devdata/cmc.html";
my $csv_path = "$Bin/../devdata/scrape-result.csv";

my $content;
{
    if ((-f $cache_path) && (-M _) < 1.0) {
        $content = read_text $cache_path;
    } else {
        $content = get $url;
        write_text($cache_path, $content);
    }
}

my @res;

push @res, "symbol\tname\tsafename\n";
while ($content =~ m!<tr id="id-(?<safename>[\w-]+)"[^>]*>.+?<a class="[^"]*?currency-name-container"[^>]*>(?<name>[^<]+)</a>.+?<td class="[^"]*?col-symbol">(?<symbol>[^<]+)<!gs) {
    push @res, "$+{symbol}\t$+{name}\t$+{safename}\n";
}

write_text($csv_path, join("", @res));
