running:
bash create-vod-hls.sh beach.mkv
will produce:
beach/
|- playlist.m3u8
|- 360p.m3u8
0eNqlmc2PojAUwP8V0rMYKP2g3nYOe9pkL3vbTDagHW0GgdCyGWPmf9+io+M6IO1rYmJUeL/33ffkiMqql22naoNWR7SRet2p1qimRiv0a6d0ZF9mJ6Oy0GodGVXJoqxkVBWHpjdR8xIVWst9WR2ifbHeqVrqqNenS16aLiqqKnpV9UYPV1oRMlp3shjEL9ECqXVTa7T6fURabeuiGjQwh1ZatDJyb6+oi/3wqZSFvRS921vqjXxDq/R9MXvTh2Kq3sYfqsXZjQj8/rxAsjbKKHlW4vTh8Kfu96XsLOMqSb61ndQ67u2d3bZr7HtcyspYVttodfbWEVmhhC3pAh3QKs5SvKSWtlGdXJ+vIIuronXbGzTYcMfEEGYexswATJqEMcl9aL9aRa6EJD8Rhujq4VfdSrmJ982mr4aQ2kiOEOg8gYcR2CyBpmEEPk8I9FLuFQcKIIgrQfelNqfaH4vFhcEsoZZquyubvhvqkuDnEbFpElYpCZvOWtvYJtI2/doTTFfUum06M8UUj5hjDBzE4E6MwJoHeo945TMk21Ia1rQTAjKMBYWMOoWMByY8BbTp9LM/2NJdv8aq1rIz9qeHqMGJY9IExAThFJzpEzUJTHWI33Dq7Ldb1ITf8GdHaFUrY9PEZ+1HpGHPtMKfnaDt9+1jicRBnt/JjgE1jql7UvJ71I36bEw2oJLZA8aoi3gQI3Ni5I/H4IdlNhMUMhoU8V+OPp6F8HieZ8mcDDwvI/U6YyD5l2GPFMdCQBBZ4DGWQvYA4jEyA+3yKN2bhEwmYu0zgQMV5qDWm04onHskJ1DhsDP2AvUcgEgSMABhkbu0NJJ6lR0DOI9gr2UFC36/rIixXYVkQd5x2hoICRoPxygOWzwNMsxpVSEs0DAOSmgeNDUC3ZkHQmGmCkCLc8xKmng1PEjNUr+2kEEQOGBgw4I4eSrsxMeCQmJPCWC/O7PGpNHAsweyalEGnnRns2F00qUcsNtN+yx33r+sDIc8El4VBykHlgD2rwtqZv9iaVC |
# In order to test an upgrade from Motor 1.x to Motor 2.1, we want to have | |
# automated tests verifying our existing MongoDB scaffolding isn't using any of | |
# the deprecated/removed features of PyMongo/Motor. Since Python is dynamic, | |
# and Motor is ESPECIALLY dynamic, using simple static analysis (such as with | |
# Vulture) can't give us accurate results. So instead, we must write unit tests | |
# which exercise the methods of common_python.mongo.Client, and by exercising | |
# them, verify that the fields/methods of the underlying MotorClient are being | |
# called correctly. | |
# | |
# However, we also want our unit tests to be _truly_ idempotent AND to test |
running:
bash create-vod-hls.sh beach.mkv
will produce:
beach/
|- playlist.m3u8
|- 360p.m3u8
# Take a very large number and pretty print it in triplets of 3 digits, each triplet separated by a space. | |
def pnum_spc(n): print(' '.join([''.join(list(str(n))[::-1][i:i+3][::-1]) for i in range(0, len(str(n)), 3)][::-1])) | |
# >>> pnum_spc(32 ** 13) | |
# 36 893 488 147 419 103 232 | |
# Print numbers as 32-bit binary numbers w/ spaces giving 4-bit words | |
def pbin_spc(n): print(' '.join([''.join(list(f'{n:032b}')[::-1][i:i+4][::-1]) for i in range(0, len(f'{n:032b}'), 4)][::-1])) | |
# >>> "{0:032b}".format(1234) | |
# '00000000000000000000010011010010' | |
# >>> pbin_spc(1234) |
#!/bin/bash | |
# This script runs the entire set of steps to authenticate with jumpcloud and | |
# refresh the temporarily stored AWS credentials. | |
cd "$HOME/Documents/jumpcloud_mfa/" | |
# Yes, the local OTP credentials on disk are encrypted with just the username of my user. | |
( (sleep 0.3; pkill -f "./otp.sh jumpcloud") & echo "$USER" | ./otp.sh jumpcloud-totp) | |
# otp.sh puts the current otp in my clipboard, so we get it into a variable using xclip |
import itertools | |
import json | |
''' | |
Show the cards you could be holding up in MTGA at instant speed. | |
TODOs: | |
1. Make it color sensitive | |
2. Account for cards with flash | |
3. Make a UI (like at ALL) |
from __future__ import print_function | |
import inspect | |
import six | |
def fmt_stack(frames): | |
s = "" | |
for f in frames[::-1]: | |
s += "{}:{}: {}\n".format(f[1], f[2], '\\n'.join([x.replace('\n', '') for x in f[4]])) | |
return s |
#!/usr/bin/env python3 | |
''' | |
A tool for viewing streams of timestamps as histograms. | |
''' | |
import matplotlib.pyplot as plt | |
from datetime import datetime | |
import matplotlib.dates as mdates | |
import pandas as pd | |
import itertools | |
import argparse |
import json | |
def arena_card_db(): | |
carddb = dict() | |
with open("AllCards.json", 'r') as mtgjsonf: | |
carddb = json.load(mtgjsonf) | |
arena_cards = list() | |
for card_name, card in carddb.items(): |
package main | |
import ( | |
"bufio" | |
"bytes" | |
"fmt" | |
"io" | |
"io/ioutil" | |
"os" | |
"strings" |