From aa20a6359b46356c4347ad94889ec22eb5124f8f Mon Sep 17 00:00:00 2001 From: WriterV2 Date: Tue, 13 Oct 2026 13:09:57 +0200 Subject: Nushell: Add `web-images-doc` command (compile images from a website to a document) --- .config/nushell/config.nu | 2 +- .config/nushell/web-images-doc.nu | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 .config/nushell/web-images-doc.nu (limited to '.config') diff --git a/.config/nushell/config.nu b/.config/nushell/config.nu index 3461d15..3dff178 100644 --- a/.config/nushell/config.nu +++ b/.config/nushell/config.nu @@ -394,7 +394,6 @@ use documents.nu use remarkable.nu use notes.nu use dv.nu -use onepiece.nu use youtube.nu use phone.nu use screen.nu @@ -402,3 +401,4 @@ use wishlist.nu use reading-order.nu use japanese-helper.nu use coffee-recipe.nu +use web-images-doc.nu diff --git a/.config/nushell/web-images-doc.nu b/.config/nushell/web-images-doc.nu new file mode 100644 index 0000000..a474003 --- /dev/null +++ b/.config/nushell/web-images-doc.nu @@ -0,0 +1,38 @@ +# Download images from a website and merge them to a (PDF) document +export def main [ + url: string, # URL of the website + --output_filename: string = 'out.pdf', # Output filename, the file type must be compatible with `magick` + --query: string = 'img' # Selector query, e.g. to target a class test-img use '.test-img' +] { + let temp_dir = $"temp_($output_filename | split row "." | get 0)" + mkdir $temp_dir + print $"Created temporary directory ($temp_dir)" + + try { + try { + http get $url | query web --query $query -m --attribute 'src' | flatten | enumerate | each {|imgsrc| + let index = $imgsrc.index + 1 + let filename = $"($temp_dir)/($index | fill -a 'right' -c '0' -w 5).png" + print $"Downloading image ($index)..." + http get $imgsrc.item | save $filename + print $"Image saved to ($filename)" + sleep 1sec + } + } catch { |err| + print $"\nFailed to download images" + print $"Error: ($err.msg)" + } + + let downloaded_images = (ls $temp_dir | get name | sort) + try { + magick ...$downloaded_images -border 100x100 $output_filename + print $"Success! Created ($output_filename) with ($downloaded_images | length) pages." + } catch { |err| + print "\nFailed to create PDF. Make sure ImageMagick is installed." + print $"Error: ($err.msg)" + return + } + } finally { + rm -rf $temp_dir + } +} -- cgit v1.2.3