commit bfca4c3c38220fc2346f9db128d6e379dbcd8edf
Author: lumidify <nobody@lumidify.org>
Date: Fri, 21 Feb 2020 14:18:51 +0100
Initial Commit
Diffstat:
9 files changed, 297 insertions(+), 0 deletions(-)
diff --git a/.lumidify_archive_cksums b/.lumidify_archive_cksums
@@ -0,0 +1,6 @@
+26771784 73 "fehs.sh"
+2159480273 272 "sort.pl"
+762405641 262 "fromto.pl"
+4116778262 264 "everysecond.pl"
+829533685 5185 "crop.py"
+1461577717 468 "sort2.pl"
diff --git a/.lumidify_archive_cksums.cksum b/.lumidify_archive_cksums.cksum
@@ -0,0 +1,2 @@
+2885505858 156 ".lumidify_archive_cksums"
+4294967295 0 ".lumidify_archive_dirs"
diff --git a/.lumidify_archive_dirs b/.lumidify_archive_dirs
diff --git a/crop.py b/crop.py
@@ -0,0 +1,205 @@
+#!/usr/bin/env python3
+
+# WARNING: CRAP CODE!!!
+# just generate list filled with None in beginning
+
+import sys
+import tkinter
+from PIL import ImageTk, Image
+
+if len(sys.argv) < 2:
+ print("No images specified")
+ sys.exit(1)
+
+cur_img = 1
+
+dragging = False
+dragging_rect = False
+x_orig = 0
+y_orig = 0
+x_new = 0
+y_new = 0
+x_grab = 0
+y_grab = 0
+x_drag_offset = 0
+y_drag_offset = 0
+
+# First None is ignored since cur_img is always one ahead (first arg is script name)
+coords = [None, None]
+img_sizes = [None]
+
+def rect_intersect(x1, y1, x2, y2, x_point, y_point):
+ if x1 > x2:
+ tmp = x1
+ x1 = x2
+ x2 = tmp
+ if y1 > y2:
+ tmp = y1
+ y1 = y2
+ y2 = tmp
+ return x1 <= x_point <= x2 and y1 <= y_point <= y2
+
+def press(event):
+ global dragging, dragging_rect, x_orig, y_orig, x_grab, y_grab, x_new, y_new, x_drag_offset, y_drag_offset
+ if abs(x_orig - event.x) < 15 and abs(y_orig - event.y) < 15:
+ dragging = True
+ x_drag_offset = x_orig - event.x
+ y_drag_offset = y_orig - event.y
+ x_orig = x_new
+ y_orig = y_new
+ x_new = event.x
+ y_new = event.y
+ elif abs(x_new - event.x) < 15 and abs(y_new - event.y) < 15:
+ dragging = True
+ x_drag_offset = x_new - event.x
+ y_drag_offset = y_new - event.y
+ elif rect_intersect(x_orig, y_orig, x_new, y_new, event.x, event.y):
+ dragging_rect = True
+ x_grab = event.x
+ y_grab = event.y
+ else:
+ dragging = True
+ x_orig = event.x
+ y_orig = event.y
+ x_drag_offset = 0
+ y_drag_offset = 0
+
+def motion(event):
+ global dragging, dragging_rect, x_orig, y_orig, x_new, y_new, x_grab, y_grab
+ if dragging:
+ x_new = event.x + x_drag_offset
+ y_new = event.y + y_drag_offset
+ elif dragging_rect:
+ x_delta = event.x - x_grab
+ y_delta = event.y - y_grab
+ x_grab = event.x
+ y_grab = event.y
+ x_orig += x_delta
+ x_new += x_delta
+ y_orig += y_delta
+ y_new += y_delta
+ event.widget.create_rectangle(x_orig, y_orig, x_new, y_new)
+
+def release(event):
+ global dragging, dragging_rect, tkimg, x_orig, y_orig, x_new, y_new
+ if dragging:
+ dragging = False
+ x_new = event.x + x_drag_offset
+ y_new = event.y + y_drag_offset
+ elif dragging_rect:
+ dragging_rect = False
+ x_delta = event.x - x_grab
+ y_delta = event.y - y_grab
+ x_orig += x_delta
+ x_new += x_delta
+ y_orig += y_delta
+ y_new += y_delta
+ event.widget.create_image(0, 0, anchor=tkinter.NW, image=tkimg)
+ event.widget.create_rectangle(x_orig, y_orig, x_new, y_new)
+
+def print_exit(*args):
+ global cur_img
+ cur_img = -1
+ for c in coords:
+ cur_img += 1
+ if c == None:
+ continue
+ x_scale = img_sizes[cur_img][0] / img_sizes[cur_img][2]
+ y_scale = img_sizes[cur_img][1] / img_sizes[cur_img][3]
+ x1 = min(c[0], c[2])
+ x2 = max(c[0], c[2])
+ y1 = min(c[1], c[3])
+ y2 = max(c[1], c[3])
+ w_crop = x_scale * (x2 - x1);
+ h_crop = y_scale * (y2 - y1);
+ x_offset = x_scale * x1;
+ y_offset = y_scale * y1;
+ print("mogrify -crop " + str(round(w_crop)) + "x" + str(round(h_crop)) + "+" + str(round(x_offset)) + "+" + str(round(y_offset)) + " " + sys.argv[cur_img]);
+ root.destroy()
+ sys.exit(0)
+
+def left(event):
+ global cur_img, x_orig, y_orig, x_new, y_new
+ if cur_img <= 1:
+ return
+ cur_img -= 1
+ load_img()
+ if coords[cur_img] != None:
+ x_orig, y_orig, x_new, y_new = coords[cur_img]
+ canvas.create_rectangle(*coords[cur_img])
+ else:
+ x_orig = y_orig = x_new = y_new = 0
+
+def right(event):
+ global cur_img, x_orig, y_orig, x_new, y_new
+ if cur_img >= len(sys.argv) - 1:
+ return
+ cur_img += 1
+ load_img()
+ if cur_img >= len(coords):
+ coords.append(None)
+ if coords[cur_img] != None:
+ x_orig, y_orig, x_new, y_new = coords[cur_img]
+ canvas.create_rectangle(*coords[cur_img])
+ else:
+ x_orig = y_orig = x_new = y_new = 0
+
+def return_event(event):
+ global cur_img, x_orig, x_new, y_orig, y_new
+ if x_orig < 0:
+ x_orig = 0
+ if x_new < 0:
+ x_new = 0
+ if x_orig > w_scaled:
+ x_orig = w_scaled
+ if x_new > w_scaled:
+ x_new = w_scaled
+ if y_orig < 0:
+ y_orig = 0
+ if y_new < 0:
+ y_new = 0
+ if y_orig > h_scaled:
+ y_orig = h_scaled
+ if y_new > h_scaled:
+ y_new = h_scaled
+ if x_orig == x_new or y_orig == y_new:
+ return
+ coords[cur_img] = [x_orig, y_orig, x_new, y_new]
+ if cur_img >= len(sys.argv) - 1:
+ return
+ cur_img += 1
+ load_img()
+ if cur_img >= len(coords):
+ coords.append(None)
+ if coords[cur_img] != None:
+ x_orig, y_orig, x_new, y_new = coords[cur_img]
+ canvas.create_rectangle(*coords[cur_img])
+ else:
+ canvas.create_rectangle(*coords[cur_img-1])
+
+def load_img():
+ global img, w, h, w_scaled, h_scaled, tkimg
+ img = Image.open(sys.argv[cur_img])
+ w, h = img.size
+ img.thumbnail((1278, 760), Image.ANTIALIAS)
+ w_scaled, h_scaled = img.size
+ if cur_img >= len(img_sizes):
+ img_sizes.append([w, h, w_scaled, h_scaled])
+ tkimg = ImageTk.PhotoImage(img);
+ canvas.create_image(0, 0, anchor=tkinter.NW, image=tkimg)
+ root.title(sys.argv[cur_img]);
+
+root = tkinter.Tk()
+
+canvas = tkinter.Canvas(root, width=1278, height=760)
+canvas.pack()
+canvas.bind('<B1-Motion>', motion)
+canvas.bind('<ButtonRelease-1>', release)
+canvas.bind('<ButtonPress-1>', press)
+img, w, h, w_scaled, h_scaled, tkimg = 0, 0, 0, 0, 0, 0
+load_img()
+root.bind('<Return>', return_event)
+root.bind('<Left>', left)
+root.bind('<Right>', right)
+root.bind('<Escape>', print_exit)
+tkinter.mainloop()
diff --git a/everysecond.pl b/everysecond.pl
@@ -0,0 +1,22 @@
+#!/usr/bin/env perl
+
+# give every second file
+
+use strict;
+use warnings;
+
+my $start = shift;
+my $end = shift;
+
+while ($ARGV[0] ne $start) {
+ shift;
+}
+
+foreach my $i (0..$#ARGV) {
+ if ($i % 2 == 0) {
+ print(" $ARGV[$i]");
+ }
+ if ($ARGV[$i] eq $end) {
+ last;
+ }
+}
diff --git a/fehs.sh b/fehs.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+path=${1#file://}
+feh -. --start-at "$path" `dirname "$path"`
diff --git a/fromto.pl b/fromto.pl
@@ -0,0 +1,20 @@
+#!/usr/bin/env perl
+
+# give every file from first arg to second arg
+
+use strict;
+use warnings;
+
+my $start = shift;
+my $end = shift;
+
+while ($ARGV[0] ne $start) {
+ shift;
+}
+
+foreach my $i (0..$#ARGV) {
+ print(" $ARGV[$i]");
+ if ($ARGV[$i] eq $end) {
+ last;
+ }
+}
diff --git a/sort.pl b/sort.pl
@@ -0,0 +1,15 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use File::Copy qw(copy);
+
+my $destdir = shift;
+my $ext = shift;
+my $i = 1;
+my $digits = length(scalar(@ARGV));
+foreach my $file (@ARGV) {
+ my $dest = sprintf("%0${digits}d.$ext", $i);
+ copy($file, "$destdir/$dest");
+ $i++;
+}
diff --git a/sort2.pl b/sort2.pl
@@ -0,0 +1,23 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use File::Copy qw(copy);
+
+my $destdir = shift;
+my $ext = shift;
+my $i = shift;
+
+if (scalar(@ARGV) % 2) {
+ die "Uneven number of images.\n";
+}
+my $digits = length(scalar(@ARGV));
+my $half = scalar(@ARGV) / 2;
+foreach my $j (0..$half-1) {
+ my $dest = sprintf("%0${digits}d.$ext", $i);
+ copy($ARGV[$j], "$destdir/$dest");
+ $i++;
+ $dest = sprintf("%0${digits}d.$ext", $i);
+ copy($ARGV[$#ARGV-$j], "$destdir/$dest");
+ $i++;
+}