it* hacker news on gopher Err codevoid.de 70 i Err codevoid.de 70 hgit clone git://git.codevoid.de/hn-gopher URL:git://git.codevoid.de/hn-gopher codevoid.de 70 1Log /git/hn-gopher/log.gph codevoid.de 70 1Files /git/hn-gopher/files.gph codevoid.de 70 1Refs /git/hn-gopher/refs.gph codevoid.de 70 i--- Err codevoid.de 70 1commit 1e75ee197e2cc218e808740151f74f1d3516cc87 /git/hn-gopher/commit/1e75ee197e2cc218e808740151f74f1d3516cc87.gph codevoid.de 70 1parent 2b7e9e0f8bb755628f7f9e77174c93b95e299da6 /git/hn-gopher/commit/2b7e9e0f8bb755628f7f9e77174c93b95e299da6.gph codevoid.de 70 hAuthor: Stefan Hagen URL:mailto:sh+git[at]codevoid[dot]de codevoid.de 70 iDate: Mon, 30 Jul 2018 11:07:42 +0200 Err codevoid.de 70 i Err codevoid.de 70 iStop hierarchy from going wild Err codevoid.de 70 i Err codevoid.de 70 i- handle hierarchy > level 20 Err codevoid.de 70 i- decrease hierarchy in recursion Err codevoid.de 70 i Err codevoid.de 70 iDiffstat: Err codevoid.de 70 i M hn-scraper.pl | 19 +++++++++++++------ Err codevoid.de 70 i Err codevoid.de 70 i1 file changed, 13 insertions(+), 6 deletions(-) Err codevoid.de 70 i--- Err codevoid.de 70 1diff --git a/hn-scraper.pl b/hn-scraper.pl /git/hn-gopher/file/hn-scraper.pl.gph codevoid.de 70 it@@ -53,6 +53,7 @@ sub scrapeSubComments { Err codevoid.de 70 i $output .= formatContent("$author:", $lvl); Err codevoid.de 70 i $output .= formatContent("$text", $lvl)."\n\n"; Err codevoid.de 70 i $output .= scrapeSubComments( $payload, $objectID, ++$lvl ); Err codevoid.de 70 i+ $lvl--; Err codevoid.de 70 i } Err codevoid.de 70 i } Err codevoid.de 70 i } Err codevoid.de 70 it@@ -80,9 +81,14 @@ sub formatContent { Err codevoid.de 70 i # remove trailing space before wrapping Err codevoid.de 70 i $content =~ s/ $/\n/g; Err codevoid.de 70 i Err codevoid.de 70 i+ my $pad=""; Err codevoid.de 70 i+ if($lvl > 20) { Err codevoid.de 70 i+ $pad = "$lvl> "; Err codevoid.de 70 i+ $lvl = 19; Err codevoid.de 70 i+ } Err codevoid.de 70 i+ Err codevoid.de 70 i # calculate padding Err codevoid.de 70 i $Text::Wrap::columns=72-($lvl*2); Err codevoid.de 70 i- my $pad=""; Err codevoid.de 70 i while($lvl > 0) { Err codevoid.de 70 i $pad=" ".$pad; Err codevoid.de 70 i $lvl--; Err codevoid.de 70 it@@ -186,31 +192,32 @@ sub saveFile { Err codevoid.de 70 i ### MAIN PROGRAM Err codevoid.de 70 i Err codevoid.de 70 i my ($selected_story) = @ARGV; Err codevoid.de 70 i-my $json_fp = getApiData("$api_uri/search_by_date?tags=front_page&numericFilters=points>60"); Err codevoid.de 70 i+my $json_fp = getApiData("$api_uri/search_by_date?tags=front_page&numericFilters=points>20,num_comments>5&hitsPerPage=100"); Err codevoid.de 70 i #my $json_fp = getApiData("$api_uri/search?tags=story"); Err codevoid.de 70 i Err codevoid.de 70 i my $content = ""; Err codevoid.de 70 i for my $hit ($json_fp->{"hits"}) { Err codevoid.de 70 i foreach my $story (@$hit) { Err codevoid.de 70 i my $title = encode("UTF-8", $story->{'title'}); Err codevoid.de 70 i+ $title =~ s/\|/\\|/g; Err codevoid.de 70 i my $url = ""; Err codevoid.de 70 i if($story->{'url'}) { Err codevoid.de 70 i $url = encode("UTF-8", $story->{'url'}); Err codevoid.de 70 i+ $content .= "[h| $title|URL:$url|server|port]\n"; Err codevoid.de 70 i } else { Err codevoid.de 70 i- $url = "/hn/story_$story->{'objectID'}.gph"; Err codevoid.de 70 i+ $url = "$go_path/story_$story->{'objectID'}.gph"; Err codevoid.de 70 i+ $content .= "[1| $title|$url|server|port]\n"; Err codevoid.de 70 i } Err codevoid.de 70 i my $author = encode("UTF-8", $story->{'author'}); Err codevoid.de 70 i Err codevoid.de 70 i- $title =~ s/\|/\\|/g; Err codevoid.de 70 i $story->{'created_at'} =~ /(....-..-..)T(..:..).*/; Err codevoid.de 70 i my $date = $1; Err codevoid.de 70 i my $time = $2; Err codevoid.de 70 i- my $number = 0; Err codevoid.de 70 i+ my $number = 0; Err codevoid.de 70 i if($story->{'num_comments'}) { Err codevoid.de 70 i $number = $story->{'num_comments'}; Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 i- $content .= "[h| $title|URL:$url|server|port]\n"; Err codevoid.de 70 i $content .= " by $author ($story->{'points'} points) at $time ($date)\n"; Err codevoid.de 70 i $content .= "[1| read $number comments|$go_path/story_$story->{'objectID'}.gph|server|port]\n"; Err codevoid.de 70 i $content .= "\n"; Err codevoid.de 70 .