WWW-SVT-Play

 view release on metacpan or  search on metacpan

t/utils/gen_ref_data.pl  view on Meta::CPAN

#!/usr/bin/perl
use 5.014;
use warnings FATAL => 'all';
use HTML::TreeBuilder;
use Encode;
use JSON;
use Data::Dumper;
use Getopt::Long;
use URI;
use URI::QueryParam;
use URI::Escape;
use LWP::Simple;
$Data::Dumper::Indent = 1;

my $dumper;
GetOptions(
	'dumper'   => \$dumper,
);

sub load_aliases {
	open my $fh, '<', 'aliases.json' or
		die("Could not open 'aliases.json': $!");
	my $blob = do { local $/=''; <$fh> };
	close $fh;
	return decode_json($blob);
}

sub dump_aliases {
	my $aliases = shift;
	dump_json("aliases.json", $aliases);
	say "Updated list of aliases";
}

sub process_url {
	my $url = URI->new(shift);
	$url->query_param('output', 'json');
	return "$url";
}

sub dump_json {
	my $fname = shift;
	my $data = shift;

	open my $fh, '>', $fname or die "Could not open $fname: $!";
	my $json = JSON->new->allow_nonref;
	say $fh $json->pretty->encode($data);
	close $fh;
}

sub dump_ref_json {
	my $n = shift;
	my $data = shift;
	dump_json("ref/$n.json", $data);
	say "Wrote JSON with test reference data to ref/$n.json";
}

sub gen_url {
	my $data = shift;
	return sprintf "http://www.svtplay.se/video/%d/", $data->{videoId};
}

my $aliases = load_aliases();

my $url = shift or die("Need url\n");
my $ppurl = process_url($url);
my $jsonblob = get($ppurl);
my $jsonenc = encode('utf-8', $jsonblob);
my $data = decode_json($jsonenc);
my $n = $data->{videoId} // die "Could not extract videoId from json";

my $file = "$n.json";
say "Wrote raw JSON from SVT Play to $file";
open my $fh, '>', $file or die("Could not open $file: $!");
print $fh $jsonblob;
close $fh;

if ($dumper) {
	say Dumper $data;
	exit 0;
}
# Otherwise, prepare the data for the test format.

my $output;



( run in 1.149 second using v1.01-cache-2.11-cpan-364913b4093 )