Skip to content

Instantly share code, notes, and snippets.

View m4p's full-sized avatar

Martin Pittenauer m4p

View GitHub Profile
@m4p
m4p / ytredirect.py
Created March 16, 2024 09:41
A redirect server to download audio from YouTube for e.g. podcast hosting
import os
from flask import Flask,redirect
from youtube_dl import YoutubeDL
ydl = YoutubeDL()
app = Flask(__name__)
@app.route('/<ytid>')
def hello(ytid):
ytid = os.path.splitext(ytid)[0]
@m4p
m4p / backup_spm.sh
Last active May 11, 2021 11:59
Backup your Swift Package Manager dependencies locally. Just in case.
mkdir backup
cd backup
cat ../YourProject.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved | jq '.object.pins[] | .repositoryURL' | xargs -n1 git clone --mirror
@m4p
m4p / ampel.js
Last active November 11, 2022 16:43
Corona Ampel Berlin Widget für Scriptable.app
// Corona Ampel Berlin Widget
//
// Copyright (C) 2020 by map <mail@map.wtf>
//
// Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
// IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
// Scrapes a twitch streamers schedule and generates an ics
const icalToolkit = require('ical-toolkit');
const axios = require('axios');
const fs = require('fs');
var builder = icalToolkit.createIcsFileBuilder();
builder.spacers = true; //Add space in ICS file, better human reading. Default: true
builder.NEWLINE_CHAR = '\n'; //Newline char to use.
builder.throwError = false; //If true throws errors, else returns error when you do .toString() to generate the file contents.
#!/usr/local/bin/python3
from pydub import AudioSegment
from pyAudioAnalysis import audioBasicIO as aIO
from pyAudioAnalysis import audioSegmentation as aS
import sys
import numpy
from scipy.io import wavfile
from scipy.signal import fftconvolve
def usage():
import pysubs2
import re
import sys
from xml.sax.saxutils import escape
print (sys.argv[1])
subs = pysubs2.load(sys.argv[1], encoding="utf-8")
AVTPersonalAnimoji *memoji =[ASPersonalAnimoji personalAnimoji];
[memoji setPreset:[AVTPreset presetWithCategory:5 identifier:@"rectangle"] forCategory:2];
[memoji setPreset:[AVTPreset presetWithCategory:2 identifier:@"horseshoe_ducktail"] forCategory:2];
[memoji setPreset:[AVTPreset presetWithCategory:1 identifier:@"straight_short_back"] forCategory:1];
self.avatarInstance = (AVTAvatarInstance *)memoji;
/*
Categories:
1: Hair
function Twitter_RSS() {
return;
}
function doGet(e) {
var widgetID = e.queryString? e.queryString : "ERROR_NO_ID_FOUND";
var cache = CacheService.getPublicCache();
var id = "Twitter" + widgetID;
var rss = cache.get(id);
function Twitter_RSS() {
return;
}
function doGet(e) {
var widgetID = e.queryString? e.queryString : "ERROR_NO_ID_FOUND";
var cache = CacheService.getPublicCache();
var id = "Twitter" + widgetID;
var rss = cache.get(id);
#!/bin/bash
NAME=$1
PWD=`pwd`
ffmpeg -f concat -i <(find . -type f -name "${NAME}*.flv" | cut -c 2- | awk "{print \"file '\" \"${PWD}\" \$0 \"'\"}") -c copy "$NAME.m4v"