summaryrefslogtreecommitdiff
path: root/.config/nushell
diff options
context:
space:
mode:
Diffstat (limited to '.config/nushell')
-rw-r--r--.config/nushell/config.nu2
-rw-r--r--.config/nushell/web-images-doc.nu38
2 files changed, 39 insertions, 1 deletions
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
+ }
+}