scripts and tools to administer the lingy.in public unix / tilde
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

107 wiersze
1.9KB

  1. #!/usr/bin/perl
  2. binmode STDOUT, ":utf8";
  3. use warnings;
  4. use strict;
  5. use JSON;
  6. my $THREAD_NO;
  7. my $URL_PREFIX;
  8. my $FN;
  9. my $OUT_DIR;
  10. my $USAGE;
  11. my $ACMD;
  12. my %jh;
  13. my @a1;
  14. $DOMAIN = "lainchan.org";
  15. # $URL_PREFIX = "https://lainchan.org/lit/src/";
  16. $URL_PREFIX = "https://$DOMAIN/lit/src/";
  17. $THREAD_NO = 4619;
  18. # $THREAD_NO = 6105;
  19. # $THREAD_NO = 4345;
  20. # $THREAD_NO = 4953;
  21. $FN = "$THREAD_NO.json";
  22. $OUT_DIR = "./dl/";
  23. $USAGE = "Usage: bookdl.pl [http://someurl/]thread_id";
  24. die "$USAGE" unless scalar @ARGV > 0;
  25. $ACMD = $ARGV[0];
  26. # Read JSON with list of files
  27. open FILE, "<", $FN or die "could not open file";
  28. do{
  29. my $json_str;
  30. local $/=undef;
  31. $json_str = <FILE>;
  32. chomp $json_str;
  33. %jh = %{JSON->new()->decode($json_str)};
  34. };
  35. close FILE;
  36. # anonymous function that returns a list
  37. # of tuples of the below form:
  38. # (file_name, file_url)
  39. @a1 = sub{
  40. my @a0;
  41. my @a2;
  42. my $f1;
  43. # filters for file types we
  44. # dont want to downloads
  45. sub f1 {
  46. return $_[0]->{"ext"} && !($_[0]->{"ext"} =~ /jpe?g/);
  47. }
  48. sub f2 {
  49. return !($_[0]->{"ext"} =~ /png/);
  50. }
  51. sub f3 {
  52. return !($_[0]->{"ext"} =~ /gif/);
  53. }
  54. sub f4 {
  55. return !($_[0]->{"ext"} =~ /webm/);
  56. }
  57. sub f0 {
  58. return f1($_[0]) && f2($_[0]) && f3($_[0]) && f4($_[0])
  59. }
  60. # create an array of files
  61. # that meet our file ext requirement
  62. @a0 = grep {f0($_)} @{$jh{"posts"}};
  63. # do the same filter on the
  64. # extra_files attribute
  65. @a2 = grep {
  66. f0($_)
  67. } map {
  68. @{$_->{"extra_files"}}
  69. } grep {
  70. $_->{"extra_files"}
  71. } @{$jh{"posts"}};
  72. # Return our tuple
  73. return map {
  74. [
  75. sprintf("%s%s", $_->{"filename"}, $_->{"ext"}), # file_name
  76. sprintf("%s%s%s", $URL_PREFIX, $_->{"tim"}, $_->{"ext"}) # file_url
  77. ]
  78. } (@a0, @a2);
  79. }->();
  80. # Print a list of wget commands from our tuples
  81. for my $i1 (@a1){
  82. printf("wget -nc %s -O '%s%s'\n", scalar $i1->[1], $OUT_DIR, scalar $i1->[0]);
  83. }