#!/usr/bin/perl use strict; use warnings; use Encode; use Unicode::Normalize qw(normalize); use LWP::Simple qw(get); binmode STDOUT, ":utf8"; sub trim($) { my $string = shift; $string =~ s/^\s+//; $string =~ s/\s+$//; return $string; } sub last8($) { my $string = shift; $string =~ /.*(........)/; return $1; } sub getReleaseDate($) { my $url = shift; $url .= "/?of=7"; my $page = get "$url"; if ($page =~ /

.*?Released: (.*?)

(.*?)<\/a><\/p><\/div.*?AverageRating_(\d*).png.*?class="ratingcount">(\d*)<\/span>/g) { # print $page; my $url = $1; my $title = $2; my $rating = $3; my $ratingCount = $4; my $id = last8(trim($url)); # $title = encode('ascii', normalize('KD', $title), sub { $_[0]='' }); my $releaseDate = getReleaseDate($url); $rating = (5 * $rating)/ 20; # print "$id,$releaseDate,$rating,$ratingCount,".trim($title)."\n"; print "$id,$releaseDate,"; printf ("%0.2f",$rating); print ",$ratingCount,".$title."\n"; ## if (lc($id) eq '5841081a') { # add duplicate super contra ## $id = '584108cc'; ## print "$id,$releaseDate,$rating,$ratingCount,".trim($title)."\n"; ## } if (lc($id) eq '58410820') { # add duplicate buku sudoku $id = '5841091e'; print "$id,$releaseDate,$rating,$ratingCount,".trim($title)."\n"; } if (lc($id) eq '584109a7') { # add duplicate wolfenstein 3d $id = '584109cb'; print "$id,$releaseDate,$rating,$ratingCount,".trim($title)."\n"; } } $page_num++; $page = get "http://marketplace.xbox.com/en-US/games/catalog.aspx?d=6&r=-1&g=-1&mt=16&ot=0&sb=0&rl=0&p=$page_num"; if ($last_page == 1) { $continue = 0; } $page =~ /\d*-(\d*) of (\d*) results/; if ($1 eq $2) { $last_page = 1; } }