⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fetch_sf_mirrors.pl

📁 Last change: 2008-02-03 This is the source code of KCeasy。
💻 PL
字号:
#!/usr/bin/perl
use LWP::UserAgent;
use URI::URL;
use HTML::TableExtract;

###########################################################
#
# Reads sf download url and print all available mirrors.
#
###########################################################

if (scalar @ARGV != 1) {
  print "Syntax: $0 <sf download url>\n";
  exit 0;
}

my $url = shift(@ARGV);

# fetch url
print STDERR "Fetching $url\n\n";

$ua = new LWP::UserAgent;
$ua->agent("Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)");

$req = new HTTP::Request 'GET' => $url;
$res = $ua->request($req);

if (not $res->is_success)
{
	print STDERR "\tFailed to fetch url\n";
	print STDERR "\tError: " . $res->code . " " . $res->message . "\n";
	exit 0;
}

# parse result

$te = new HTML::TableExtract( headers => [qw(Host Location Continent Download)],
                              keep_html => 1 );
$te->parse($res->content);


print "# sourceforge mirrors\n\@sf_mirrors = (";

# Examine all matching tables
foreach $ts ($te->table_states) {
#	print STDERR "\nurl;mirror\n";	

	foreach $row ($ts->rows) {
		($mirror_url) = @$row[3] =~ /a\s+href\s*=\s*"?(.+?)"?\s*>/i;
		($mirror) = $mirror_url =~ /use_mirror=(.+?)(&.*)*$/i;

		next if ($mirror_url eq "");

#		print STDERR "$mirror_url;$mirror\n";
		print "               \"$mirror\",\n";
	}
}

print ");\n";

print STDERR "\nFinished\n";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -