davideisinger.com

My personal website
Log | Files | Refs | README

commit 107f99192e218daeb97c00df06698b69cb55c8d1
parent 14180ce12a86d768302f7a0a090650bfaff316cb
Author: David Eisinger <[email protected]>
Date:   Mon,  3 Apr 2023 23:52:09 -0400

Add URL backup script

Diffstat:
Abin/backup | 40++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+), 0 deletions(-)

diff --git a/bin/backup b/bin/backup @@ -0,0 +1,40 @@ +#!/usr/bin/env ruby + +require "uri" +require "digest" + +filename, url = ARGV + +unless filename && url + warn "Please supply a filename and url" + exit 1 +end + +path = filename.sub(File.basename(filename), "") +content = File.read(filename) + +link_id = content.scan(/\[(\d+)\]: #{url}/).first.first + +unless link_id + warn "Link not found" + exit 1 +end + +uri = URI.parse(url) + +link_content = `w3m #{url}` + +hash = Digest::MD5.base64digest(url + link_content) + .scan(/[a-z0-9]/i) + .first(6) + .join + .downcase + +link_filename = "#{uri.host.gsub(".", "-")}-#{hash}.txt" + +File.write("#{path}/#{link_filename}", link_content) + +content.gsub!(/\[#{link_id}\]([^:])/, "[#{link_id}][^#{link_id}-backup]\\1") + +File.write(filename, content) +File.write(filename, "\n[^#{link_id}-backup]: <a href=\"#{link_filename}\">Backed up #{Time.now}</a>", mode: "a+")