Skip to content

Instantly share code, notes, and snippets.

@ntrrgc
ntrrgc / mp4box_mpd_to_webkit_manifest.py
Created February 18, 2025 17:33
Small utility to convert a DASH MPD file coming from MP4Box into a much simpler JSON manifest as used in WebKit LayoutTests.
#!/usr/bin/env python3
"""
mp4box_mpd_to_webkit_manifest.py:
Small utility to convert a DASH MPD file coming from MP4Box into a much simpler
JSON manifest as used in WebKit LayoutTests.
---
MIT License
@ntrrgc
ntrrgc / simple-media-player.html
Last active February 12, 2025 20:04
Simple page with an HTMLMediaElement, event log and basic controls. You can use this as a template to explore the behavior of HTMLMediaElement and look for media playback bugs in web engines.
<!DOCTYPE html>
<!--
Simple page with an HTMLMediaElement, event log and basic controls.
You can use this as a template to explore the behavior of HTMLMediaElement and
look for media playback bugs in web engines.
-->
<html>
<head>
<title>Simple media player</title>
<meta charset="utf-8">
@ntrrgc
ntrrgc / multidict.py
Created December 6, 2024 12:45
Python MultiDict, in a copy-paste-able library, because I find myself needing them surprisingly often
from collections.abc import ItemsView, Set, KeysView
from typing import Iterable, Iterator, NamedTuple, Hashable
class MultiDict[K: Hashable, V: Hashable]:
"""
Associates sets of values with a key.
Values can repeat for different keys if needed.
"""
def __init__(self):
self.__vals_by_key: dict[K, set[V]] = {}
@ntrrgc
ntrrgc / get-terminal-background-color.py
Created May 2, 2024 15:33
OSC 10 & 11: Query terminal foreground and background colors
#!/usr/bin/env python3
import os, termios, collections, re
TermAttr = collections.namedtuple("TermAttr",
["iflag", "oflag", "cflag", "lflag", "ispeed", "ospeed", "cc"])
old = TermAttr._make(termios.tcgetattr(0))
new = old._replace(
lflag=old.lflag & ~(termios.ECHO | termios.ICANON)
)
@ntrrgc
ntrrgc / mp4parser.py
Last active December 1, 2022 14:07 — forked from mildsunrise/_migrated.md
🕵️‍♀️ MP4 parser / dissector for the command line
#!/usr/bin/env python3
'''
Code by Alba Mendez, manually copied and pasted, had 8 revisions when copied.
https://gist.github.com/mildsunrise/ffd74730504e4dc44f47fc7528e7bf59
Portable* ISO Base Media File Format dissector / parser.
Usage: ./mp4parser.py <file name>
(*) Needs Python 3.8+
@ntrrgc
ntrrgc / register_path.sh
Created October 14, 2022 17:03
Function to add paths to env vars such as PATH or LD_LIBRARY_PATH without cluttering them
register_path() {
# Usage:
# register_path <env_var_name> <provided_path> [after]
#
# Registers a path in a PATH-like environment variable.
# The provided_path is prepended unless the "after"
# argument is provided, in which case it's appended.
#
# Example:
# register_path LD_LIBRARY_PATH /an/important/path
@ntrrgc
ntrrgc / plot-wpt-compat.py
Created June 10, 2021 13:18
Plots the number of WPT tests passing for a given feature and a set of browsers over time
#!/usr/bin/python3
# Instructions:
# 1. Checkout: https://github.com/Ecosystem-Infra/wpt-results-analysis.git
# 2. cd compat-2021
# 3. Edit main.js like this:
# const CATEGORIES = [
# + 'media-source',
# + 'media',
# ];
# ...
@ntrrgc
ntrrgc / backup-nas.sh
Last active April 6, 2020 20:09
My backup script for synology NAS, with safety checks for archival
#!/bin/bash
set -eu
found_not_mounted=0
function check_not_empty() {
local path="$1"
if [ ! -d "$path" ]; then
found_not_mounted=1
echo "ERROR: $path does not exist!"
elif [ ! "$(ls -A "$path")" ]; then
@ntrrgc
ntrrgc / traceback-add-offsets.py
Created July 25, 2018 17:54
Add library offsets to otherwise useless WebKit crash tracebacks (requires saving /proc/{pid}/maps somewhere before the crash)
import os
import re
from collections import namedtuple
path_maps = os.path.expanduser("~/tmp/rpi-crash-maps")
path_stack = os.path.expanduser("~/tmp/rpi-crash-stack")
MapsLine = namedtuple("MapsLine", ["start", "end", "file"])
@ntrrgc
ntrrgc / page-watcher.cpp
Created June 30, 2018 15:52
Proof of concept for page-based watchpoints
#define __USE_POSIX199309
#include <cassert>
#include <signal.h>
#include <mutex>
#include <functional>
#include <sys/ptrace.h>
#include <malloc.h>
#include <sys/mman.h>
#include <unistd.h>
#include <set>