Skip to content

Instantly share code, notes, and snippets.

Avatar

John Mertz JohnMertz

View GitHub Profile
@JohnMertz
JohnMertz / miband.pl
Created Apr 10, 2020
Script for aggregating MiBand step count from GadgetBridge export
View miband.pl
#!/usr/bin/perl
use warnings;
use strict;
use Time::Local;
use JSON::XS;
use DBI;
my $file = "/path/to/export_file";
@JohnMertz
JohnMertz / gist:39306b25eada1e658338ef5f434ee629
Created Apr 10, 2020
Simple weekly streak counter script
View gist:39306b25eada1e658338ef5f434ee629
#!/usr/bin/perl
# Manually trigger with `$0 -a` to log an exercise event for the day.
# Automatically run each morning with `$0 -c` to cycle out old data
# Simply outputs Bool for event today, count for the last 7 days and the goal
# Meant for a simple indicator widget so I know if a streak is at risk
use JSON::XS;
use Date::Calc;
@JohnMertz
JohnMertz / opl.pl
Created Apr 10, 2020
Script to fetch Holds, Checkouts and Fines for an account with the Ottawa Public Library.
View opl.pl
#!/usr/bin/perl
use strict;
use warnings;
use WWW::Mechanize;
use JSON::XS;
use HTML::TreeBuilder;
my $pretty = 0;
@JohnMertz
JohnMertz / tangerine.pl
Last active Mar 25, 2020
Tangerine Investment Fund Scraper/Export Tool
View tangerine.pl
#!/usr/bin/perl
# This script fetches the performance data for various Tangerine Bank investment funds and exports them to:
# - CSVs called <fund_name>.csv with all historical data in format: "YYYY-MM-DD","12.34"
# - (optional) A single JSON file with trend data: {"Fund Name":{"0":12.34,"1":"12.56"...},"Fund Name":...}
# - (optional) PNG line chart
# All data is publicly available from: https://www.tangerine.ca/en/products/investing/performance
# This is just a handy way to use the data locally for various purposes.
#
# Should be run daily Tuesday-Saturday, such as with cron:
@JohnMertz
JohnMertz / wordfind.pl
Created Dec 29, 2019
Wordscape - Anagram word search assistant
View wordfind.pl
#!/usr/bin/perl
# Program to find all words from a given pool of letters. Written to solve the
# Android puzzle game "Wordscape".
use strict;
use warnings;
# Default Debian ispell dictionary
my $dict = "/etc/dictionaries-common/words";
@JohnMertz
JohnMertz / rem2json.pl
Last active Dec 30, 2019
Convert `remind -p` output to JSON
View rem2json.pl
#!/usr/bin/perl
use strict;
use warnings;
use constant MONTH => sub{{
'January' => 1,
'February' => 2,
'March' => 3,
'April' => 4,
@JohnMertz
JohnMertz / clone-lxc.pl
Created Jul 20, 2019
Extract and Configure LXC from Archived Backup
View clone-lxc.pl
#!/usr/bin/perl
# Note for GitHub:
# This script makes several assumptions based on the backup image I use.
# Mine is a freshly installed Debian image preconfigured just how I want it.
# The script relies on the name 'fresh-lxc' and IP '10.0.3.1' being set.
# It is also written with Debian Buster as the host, some paths may differ.
# Make changes appropriately.
use strict;
@JohnMertz
JohnMertz / Duolingo.pl
Created Jun 18, 2019
Duolingo API Script
View Duolingo.pl
#!/usr/bin/perl
use strict;
use warnings;
use WWW::Mechanize;
use JSON::Any;
use HTTP::CookieJar::LWP;
my $user = 'username';
@JohnMertz
JohnMertz / mocp-start-cec.pl
Last active Jun 18, 2019
Start Music On Console Player and Force Active Input via HDMI-CEC
View mocp-start-cec.pl
#!/usr/bin/perl
use strict;
use warnings;
use JSON::XS;
# Checking for devices every time takes a few seconds, so store these
# settings in a file. Do so in /tmp so that it will be re-checked on reboot
my $tmp = '/tmp/cec-devices';
@JohnMertz
JohnMertz / OCTranspo.pl
Created Feb 15, 2019
OCTranspo Alert Scraper
View OCTranspo.pl
#!/usr/bin/perl
use strict;
use warnings;
use WWW::Mechanize;
use Data::Dump qw/ dump /;
use JSON::Any;
# Define the routes that I actually care about
You can’t perform that action at this time.