added bookdl.pl for downloading books from lainchan
This commit is contained in:
parent
87d1998186
commit
57f1085901
92
perl-script/bookdl.pl
Normal file
92
perl-script/bookdl.pl
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
binmode STDOUT, ":utf8";
|
||||||
|
|
||||||
|
use warnings;
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
use JSON;
|
||||||
|
|
||||||
|
my $THREAD_NO;
|
||||||
|
my $URL_PREFIX;
|
||||||
|
|
||||||
|
my $FN;
|
||||||
|
my $OUT_DIR;
|
||||||
|
|
||||||
|
my %jh;
|
||||||
|
|
||||||
|
my @a1;
|
||||||
|
|
||||||
|
$URL_PREFIX = "https://lainchan.org/lit/src/";
|
||||||
|
$THREAD_NO = 4953;
|
||||||
|
$FN = "$THREAD_NO.json";
|
||||||
|
$OUT_DIR = "./dl/";
|
||||||
|
|
||||||
|
# Read JSON with list of files
|
||||||
|
open FILE, "<", $FN or die "could not open file";
|
||||||
|
do{
|
||||||
|
my $json_str;
|
||||||
|
|
||||||
|
local $/=undef;
|
||||||
|
|
||||||
|
$json_str = <FILE>;
|
||||||
|
chomp $json_str;
|
||||||
|
|
||||||
|
%jh = %{JSON->new()->decode($json_str)};
|
||||||
|
};
|
||||||
|
close FILE;
|
||||||
|
|
||||||
|
# anonymous function that returns a list
|
||||||
|
# of tuples of the below form:
|
||||||
|
# (file_name, file_url)
|
||||||
|
@a1 = sub{
|
||||||
|
my @a0;
|
||||||
|
my @a2;
|
||||||
|
|
||||||
|
my $f1;
|
||||||
|
|
||||||
|
# filters for file types we
|
||||||
|
# dont want to downloads
|
||||||
|
sub f1 {
|
||||||
|
return $_[0]->{"ext"} && !($_[0]->{"ext"} =~ /jpe?g/);
|
||||||
|
}
|
||||||
|
sub f2 {
|
||||||
|
return !($_[0]->{"ext"} =~ /png/);
|
||||||
|
}
|
||||||
|
sub f3 {
|
||||||
|
return !($_[0]->{"ext"} =~ /gif/);
|
||||||
|
}
|
||||||
|
sub f4 {
|
||||||
|
return !($_[0]->{"ext"} =~ /webm/);
|
||||||
|
}
|
||||||
|
sub f0 {
|
||||||
|
return f1($_[0]) && f2($_[0]) && f3($_[0]) && f4($_[0])
|
||||||
|
}
|
||||||
|
|
||||||
|
# create an array of files
|
||||||
|
# that meet our file ext requirement
|
||||||
|
@a0 = grep {f0($_)} @{$jh{"posts"}};
|
||||||
|
|
||||||
|
# do the same filter on the
|
||||||
|
# extra_files attribute
|
||||||
|
@a2 = grep {
|
||||||
|
f0($_)
|
||||||
|
} map {
|
||||||
|
@{$_->{"extra_files"}}
|
||||||
|
} grep {
|
||||||
|
$_->{"extra_files"}
|
||||||
|
} @{$jh{"posts"}};
|
||||||
|
|
||||||
|
# Return our tuple
|
||||||
|
return map {
|
||||||
|
[
|
||||||
|
sprintf("%s%s", $_->{"filename"}, $_->{"ext"}), # file_name
|
||||||
|
sprintf("%s%s%s", $URL_PREFIX, $_->{"tim"}, $_->{"ext"}) # file_url
|
||||||
|
]
|
||||||
|
} (@a0, @a2);
|
||||||
|
}->();
|
||||||
|
|
||||||
|
# Print a list of wget commands from our tuples
|
||||||
|
for my $i1 (@a1){
|
||||||
|
printf("wget -N %s -O '%s%s'\n", scalar $i1->[1], $OUT_DIR, scalar $i1->[0]);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user