#!/usr/bin/perl
# mediafire folder download script
# designed to download the contents of a folder on mediafire
# it's actually kind of slow, but that's mediafire's fault
# unsure if downloading portion has error or if that's the uploader's fault
# but not all archives arrive intact
# provides:
# &list_contents(mediafire_folder_id)
# &mfget(mediafire_download_id)
# will prompt for captcha once every ~6 downloads unfortunately, delays 80 seconds between dls
# names files by mediafire id since url-encoded utf8 strings are retarded
# :3c
use strict;
use warnings "all";
use LWP::UserAgent;
my $ua = LWP::UserAgent->new(agent=>'loldongs/1.0',timeout=>'15',show_progress=>'1');
my $method = "wget"; #wget or lwp
&list_contents('1h0h4dsc2b0y2');
sub list_contents {
my $folder = shift(@_);
my $res = $ua->get("http://www.mediafire.com/api/folder/get_content.php?r=plwp&content_type=files&filter=all&order_by=name&order_direction=asc&version=2&folder_key=" . $folder . "&response_format=json");
if ($res->is_success) {
my $content = $res->decoded_content;
my @links;
while ($content=~s/"quickkey":"(.+?)","filename":"(.+?)",//) {
my $link = $1; my $name = $2;
if ($name=~/flac/i) { next; }
push @links, $1;
}
my $total = scalar(@links);
$total--;
for (0..$total) {
print "[$_ / $total] http://www.mediafire.com/?" . $links[$_] . "\n";
&mfget($links[$_]);
}
}
}
sub mfget {
my $id = shift(@_);
my $res = $ua->get("http://www.mediafire.com/?" . $id);
if ($res->decoded_content=~m|= "(http://.+?/[0-9a-z]{12}/$id/.+?)";|) {
my $url = $1;
my $ext = $url;
$ext=~s/^.+\.//; #get only the extension
if ($method eq "lwp") {
$ua->get($url,":content_file" => $id . $ext);
} elsif ($method eq "wget") {
system("wget -U 'loldongs/1.0' $url");
}
{$| = 1; for (1..80) { print "#"; sleep(1); } }
} else {
print "OH NO IT'S A CAPTCHA!!!\n";
system("start http://www.mediafire.com/?" . $id);
system("pause");
&mfget($id);
}
}
0 comments:
Post a Comment