Skip to content

Instantly share code, notes, and snippets.

View daniel-sc's full-sized avatar

Daniel Schreiber daniel-sc

  • ti&m
  • Offenbach, Germany
  • 04:04 (UTC +02:00)
View GitHub Profile
@daniel-sc
daniel-sc / bitbucket-to-teams-webhook.js
Created April 5, 2023 09:49
Deno script that can be deployed to https://deno.com/deploy and registered as a bitbucket webhook to notifiy new PRs in a MS Teams channel.
import { Application, Router } from 'https://deno.land/x/oak/mod.ts';
// Load environment variables
const PORT = 8080;
const TEAMS_WEBHOOK_URL = 'https://XYZ.webhook.office.com/webhookb2/XYZ';
const TARGET_USERNAME = 'xyz';
if (!TEAMS_WEBHOOK_URL || !TARGET_USERNAME) {
throw new Error('Missing required environment variables.');
}
@daniel-sc
daniel-sc / cover_sun_blueprint.yaml
Last active February 1, 2025 11:29
Homeassistant blueprint to close/open covers depending on sun position and weather
# see https://community.home-assistant.io/t/close-open-curtain-cover-blinds-based-on-sun-and-weather/584240
blueprint:
name: cover sun
description: Close cover when sun is shining and open when stops. This considers weather (sunny, partly cloudy), sun position (elevation, azimuth) and temperature.
domain: automation
input:
cover_entity:
name: cover
selector:
@daniel-sc
daniel-sc / migrate-ngrx-action-classes.ts
Last active January 29, 2024 11:47
Automatically migrate NgRx action classes to creator functions
import {readdirSync, readFileSync, writeFileSync} from 'fs';
import {resolve} from 'path';
import * as ts from 'typescript';
/// original action class name to type enum
const actionMapping = new Map<string, {enumType: string; constructorParams: Param[]}>();
/// this matches only a limited nesting of brackets - it uses lookaheads as performance fix for catastrophic backtracking:
const bracketMatcherPart = '\\(((?:[^()]*(?=[()])|\\((?:[^()]*(?=[()])|\\((?:[^()]*(?=[()])|\\((?:[^()]*(?=[()])|\\([^()]*(?=[()])\\))*\\))*\\))*\\))*)\\)';
@daniel-sc
daniel-sc / rename-images.sh
Last active December 29, 2024 20:10
rename images (jpg, heic) to have filenames matching capturing date
#!/bin/bash
# Use first argument as directory, default to current directory if not provided
IMAGE_DIR=${1:-$(pwd)}
# Change to the directory
cd "$IMAGE_DIR"
# Loop through HEIC, heic, JPG, and jpg files
for file in *.[hH][eE][iI][cC] *.[jJ][pP][gG] *.[jJ][pP][eE][gG]; do
@daniel-sc
daniel-sc / zoho-batch-send.ts
Last active March 31, 2025 09:59
This TypeScript script reads client_id and client_secret from CLI parameters, retrieves an OAuth access token from Zoho, and schedules emails to a list of recipients with a random delay. The email content and recipient list are read from local files.
import {readFileSync} from 'fs';
const args = process.argv.slice(2);
const clientIdIndex = args.indexOf('--client_id');
const clientSecretIndex = args.indexOf('--client_secret');
const subjectIndex = args.indexOf('--subject');
const fromAddressIndex = args.indexOf('--from_address');
const delayIndex = args.indexOf('--delay');
if (clientIdIndex === -1 || clientSecretIndex === -1 || subjectIndex === -1 || fromAddressIndex === -1) {