A basic outline on seive configuration in Imagus—based on previous posts by developer, with additions based on own usage.
Before it's sent to matching, every URL has its protocol and subdomain removed using the following regex:
#!/bin/bash | |
if [[ $(id -u) -ne 0 ]]; then | |
echo "This script must be run as root" | |
exit 1 | |
fi | |
if [ -z $(pm list packages | grep com.snapchat.android) ]; then | |
echo "Snapchat not found" | |
exit 1 | |
fi |
appops set com.snapchat.android READ_EXTERNAL_STORAGE deny | |
appops set com.snapchat.android WRITE_EXTERNAL_STORAGE deny | |
appops set com.snapchat.android READ_MEDIA_AUDIO ignore | |
appops set com.snapchat.android WRITE_MEDIA_AUDIO ignore | |
appops set com.snapchat.android READ_MEDIA_VIDEO ignore | |
appops set com.snapchat.android WRITE_MEDIA_VIDEO ignore | |
appops set com.snapchat.android READ_MEDIA_IMAGES ignore | |
appops set com.snapchat.android WRITE_MEDIA_IMAGES ignore | |
appops set com.snapchat.android LEGACY_STORAGE ignore |
This is a quick guide on how to setup dm_crypt under WSL2 for working with encrypted volumes. I use an encrypted volume to store things like password recovery codes and 2nd factor backup codes etc. I recently switched over to using WSL2 and wanted to figure out how to enable this functionality there. This is the distilled howto for getting it to work.
First thing you have to do is create a custom WSL2 kernel. Inside your already installed and running WSL2 (ubuntu) installation:
/** | |
* This is a proof-of-concept for using ffmpeg as a HTTP video stream proxy | |
* that can reduce ad volume. | |
* | |
* It only works on streams containing SCTE35 data packets. | |
* You can check a stream using: | |
* | |
* ffmpeg -hide_banner -i <SOURCE_URL> 2>&1 | grep scte_35 | |
* | |
* Start the demo: |
--[[ | |
Youtube playlist importer for VLC media player 1.1 and 2.0 | |
Copyright 2012 Guillaume Le Maout | |
Authors: Guillaume Le Maout | |
Contact: http://addons.videolan.org/messages/?action=newmessage&username=exebetche | |
This program is free software; you can redistribute it and/or modify | |
it under the terms of the GNU General Public License as published by | |
the Free Software Foundation; either version 2 of the License, or |
#!/usr/bin/env python3 | |
# | |
# A script to download chat from a Twitch VOD and print it to a terminal. | |
# Chat will be downloaded all the way until it ends. | |
# | |
# Usage: TWITCH_CLIENT_ID=0123456789abcdef0123456789abcde twitch-vod-chat.py [video_id] [start] | |
# | |
# This script could break at any time, because Twitch's chat API is | |
# undocumented and likes to change at any time; in fact, this script was |
#!/usr/bin/env python3 | |
# | |
# Twitch VOD viewer with terminal chat replay. | |
# | |
# Usage: TWITCH_CLIENT_ID=0123456789abcdef0123456789abcde twitch-vod.py https://www.twitch.tv/videos/1234567890 [360p] | |
# | |
# Requires mpv and twitch-vod-chat.py - https://gist.github.com/tung/20de3e992ca3a6629843e8169dc0398e | |
# |
#!/bin/bash | |
# Copyright 2017 Kevin Mark | |
# | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# https://www.apache.org/licenses/LICENSE-2.0 | |
# |
https://gist.github.com/ljharb/58faf1cfcb4e6808f74aae4ef7944cff
While attempting to explain JavaScript's reduce
method on arrays, conceptually, I came up with the following - hopefully it's helpful; happy to tweak it if anyone has suggestions.
JavaScript Arrays have lots of built in methods on their prototype. Some of them mutate - ie, they change the underlying array in-place. Luckily, most of them do not - they instead return an entirely distinct array. Since arrays are conceptually a contiguous list of items, it helps code clarity and maintainability a lot to be able to operate on them in a "functional" way. (I'll also insist on referring to an array as a "list" - although in some languages, List
is a native data type, in JS and this post, I'm referring to the concept. Everywhere I use the word "list" you can assume I'm talking about a JS Array) This means, to perform a single operation on the list as a whole ("atomically"), and to return a new list - thus making it mu