Skip to content

Instantly share code, notes, and snippets.

View heptal's full-sized avatar

Michael B heptal

View GitHub Profile
@heptal
heptal / discord-filter-delete.js
Last active March 14, 2019 06:27
Pattern (regex) based mass deletion of discord messages, with UI button!
// enable developer tools (aka chrome inspector) in discord app
// in dev tools get user token from Application > Local Storage (or google how)
// then go to Sources, open Snippets, add and save this code (replacing token with your own)
// use play button in the bottom right to enable, creating a new 'Purge' widget
// discord search in a server/dm (example - from: you, before: jan 2019) and get a postid
// paste in the appropriate input box to delete older/newer messages
const token = "sUp3R-s3kR1t"; //replace with your own
(async () => { while (document.querySelectorAll(`[conversation="conversation"]`).length) {
for (let sel of [`gv-thread-item>div`, `[aria-label="More options"]`, `[aria-label="Delete"]`, `[aria-label="Delete"]`]) {
await (new Promise((resolve) => setTimeout(resolve, 300))); document.querySelector(sel).click() }}})()

Displaying images in the terminal with tput and echo

output

Requires ImageMagick, easily available from your favorite package manager. Tested on Linux and OSX
convert image.png -resize 40 txt:-|sed -E 's/://;s/\( ? ?//;s/, ? ?/,/g;s/\)//;s/([0-9]+,[0-9]+,[0-9]+),[0-9]+/\1/g;s/255/254/g;/mage/d'|awk '{print $1,$2}'|sed -E 's/^0,[0-9]+ /print "echo;tput setaf "\;/;s/^[0-9]+,[0-9]+ /print "tput setaf ";/;s/(.+),(.+),(.+)/\1\/42.5*36+\2\/42.5*6+\3\/42.5+16/'|bc|sed 's/$/;echo -n "  ";/'|tr '\n' ' '|sed 's/^/tput rev;/;s/; /;/g;s/$/tput sgr0;echo/'|bash
@heptal
heptal / bing-full-image-preview-replace.user.js
Last active August 12, 2019 21:21
Bing Image Search Thumb Full-Rezifier
// ==UserScript==
// @name Bing Image Thumb Lazarusizer
// @namespace BingThumbnailLazarus
// @version 0.1
// @description Full-rez the image src attribute for preview images in BIS results - just right-click and open/save
// @author heptal
// @downloadURL https://gist.github.com/heptal/8c8c90cb67bfe17e23a38c721ae64331/raw/eee850139b1d9c9d6cc1fafb1506ea6cdaa34193/bing-full-image-preview-replace.user.js
// @updateURL https://gist.github.com/heptal/8c8c90cb67bfe17e23a38c721ae64331/raw/eee850139b1d9c9d6cc1fafb1506ea6cdaa34193/bing-full-image-preview-replace.user.js
// @match https://*.bing.com/images/search*
// @grant none
@heptal
heptal / mpd.md
Last active January 16, 2020 21:51

I recently discovered mpd and found it to be a nice little program. There is a dearth of nice-looking OSX clients, though (besides terminal clients).

Using the hs.socket extension (in master, but not yet in the latest official release), I've created a Hammerspoon frontend that speaks the mpd protocol. With what I have so far, it's already much faster and easier to use than iTunes. I'll link the code on the Hammerspoon wiki once everything is finalized, but an in-progress version is available here.

Using hs.menubar, I've created a series of menubar items to assist with controlling playback. Hovering over the play/pause icon shows the current track.

@heptal
heptal / DiscordWidget.js
Last active November 15, 2020 13:40
Recent Discord channel/DM messages shown in iOS14 widget - built with Scriptable.app
// set up keychain and token
const namespace = "dscrd.wdgt"
const token = `${namespace}.usertoken`
if (!Keychain.contains(token) || !Keychain.get(token)) {
let alert = new Alert()
alert.title = "Enter Discord User Token"
alert.addTextField("<discord_token>")
await alert.presentAlert()
Keychain.set(token, alert.textFieldValue(0) || "")
}
@heptal
heptal / patterns.md
Last active April 8, 2022 14:49
Lua pattern matcher UI in Hammerspoon webview

local name = "id"..hs.host.uuid():gsub("-","");

local html = [[
<div><pre>
.   all characters
%a  letters
%b  balanced delimiters
%c  control characters
@heptal
heptal / webview_usercontent.md
Last active June 5, 2023 13:32
Poor man's imitation of Postman in Hammerspoon

Exploring the possibilities with hs.webview and hs.webview.usercontent. The primary feature here is WKUserContentController, which allows for injecting user scripts into a web view and for JavaScript to post messages directly back to the native runtime.

The good thing is it's very easy to design the web portion in JS sketchbooks such as jsbin/codepen/jsfiddle because the snippet code structure maps cleanly to this. The bad part is that WKWebView doesn't always behave consistently or have a clean slate. Maybe this will help resolve state issues in the future. It will randomly not be able to find injected scripts without any code changes, and I haven't figured out why.

In this, a two-column table in HTML can be filled with values from Lua tables, and can also send them back. This is used for HTTP requests with arbitrary headers in a fun and exciting way.

@heptal
heptal / amphetamine.md
Last active April 22, 2024 15:12
Hammerspoon replacement for Caffeine

Amphetamine

Simple toggleable menubar replacement for Caffeine in Hammerspoon, utilizing ASCIImage (for vector) to create the amphetamine icons. Motivated by the official Caffeine app's icon looking bad on Retina

Get latest version here: amphetamine.lua

Save as amphetamine.lua in ~/.hammerspoon/ and put amphetamine = require "amphetamine" in your init.lua