Skip to content

Instantly share code, notes, and snippets.

View mmodrow's full-sized avatar

Marc A. Modrow mmodrow

  • Bremen, Germany
View GitHub Profile
@mmodrow
mmodrow / Remove-Trailing5Seconds.ps1
Created April 24, 2024 04:43
Removes the last 5 seconds from all mp4 files in the directory using ffmpeg and stores them in an adjacent directory.
$videos = Get-ChildItem *.mp4
foreach ($video in $videos) {
$duration = [float](ffprobe -i $video.fullName -show_entries format=duration -v quiet -of csv="p=0")
ffmpeg -i $video.fullName -ss 0 -to ($duration - 5) (Join-Path "..\trimmed" ($video.name))
}
@mmodrow
mmodrow / ConvertTo-SilentVideo.ps1
Last active March 26, 2024 19:55
Use FFMpeg to strip (unusable) Audio from video files
$videos = @(Get-ChildItem *.avi | Where-Object { -not $_.name.contains("_h264") -and -not $_.name.contains("_noAudio") })
$total = $videos.count
$current = 1
foreach ($video in $videos) {
$silentVideoName = $video.basename + "_noAudio_h264.mp4"
Write-Progress -Status "Stripping Audio and recoding video to h.264." -PercentComplete ($current / $total * 100) -Activity "Writing file $current of $total."
if ( -not (Test-Path $silentVideoName )) {
Write-Host ("Converting " + $silentVideo.name + " to " + $silentVideoName + ".")
ffmpeg -i $video.name -an -c:v libx264 -hide_banner -v warning $silentVideoName
@mmodrow
mmodrow / Remove-SilentVideoWithStatic.ps
Created March 26, 2024 17:56
Remove Video that had no (proper) audio and was stripped by ConvertTo-SilentVideo.ps1
$silentVideos = Get-ChildItem *.mp4 -Include @("*_noAudio*", "*_h264*") | Where-Object { $_.length -gt 0 }
foreach ($silentVideo in $silentVideos) {
$silentVideoName = ($silentVideo.basename.replace("_noAudio", "").replace("_h264", "")) + ".avi"
if (Test-Path($silentVideoName)) {
Write-Host ( "removing " + $silentVideoName)
Remove-Item $silentVideoName
}
}
@mmodrow
mmodrow / Export-DenormalizedTrelloCardData.ps1
Created March 14, 2024 06:52
Transform a single card from a Trello Board Export to denormalized JSON
[CmdletBinding()]
param (
[string]
$jsonImportPath,
[string]
$jsonExportPath,
[string]
$cardName
)
$trelloData = Get-Content $jsonImportPath -Encoding UTF8 | ConvertFrom-Json
@mmodrow
mmodrow / ConvertTo-Rtttl.ps1
Last active February 9, 2024 05:34
MIDI->RTTTL converter for BLHeli_32 and BlueJay Quadcopter ESCs
[CmdletBinding()]
param (
[string]
$midiFilePath,
[string]
$label = "Label",
[int[]]
$midiChannels = @(2),
[int]
$ticksPerQuarterNote = 192,
@mmodrow
mmodrow / bigData.ps1
Last active May 3, 2023 13:58
"Big Data" creator (creates big json files with an object array)
[CmdletBinding()]
param (
[Parameter()]
[String]
$filePath,
[long]
$targetSizeInBytes = 500000000, #4294967296 Bit = 512MiB
[switch]
$deleteFile = $false
)
@mmodrow
mmodrow / TimeCampDailyActivityReport.js
Created March 25, 2022 09:25
Generates a full dump of a given TimeCamp Time Tracking Report as JSON
/* *************************************************************************
* Filter TimeCamp Time Tracking Report.
* *************************************************************************
* Goto https://app.timecamp.com/app#/reports/projects_and_tasks/detailed
* Filter the desired time span etc.
* Inspect result of https://app.timecamp.com/time_tracking/ajax_get_reports_data
* in your browser dev tools network analysis.
* ************************************************************************* */
var response = response ?? {}; // insert response from the ajax call in the header - can be several thousands of lines long.
@mmodrow
mmodrow / TimeCampDailyLocationReport.js
Last active March 25, 2022 09:57
Get days in certain location from a time camp location report
/* *************************************************************************
* Filter TimeCamp Location Report for specific Locations (e.g. to check
* home office days vs. on premise days).
* *************************************************************************
* Goto https://app.timecamp.com/app#/location
* Filter the desired time span etc.
* Inspect result of https://app.timecamp.com/location/index in your browser
* dev tools network analysis.
* ************************************************************************* */
@mmodrow
mmodrow / Get-AsStacks.ps1
Created May 2, 2021 11:48
Takes an integer and translates it into <#> stack + <#> singles, useful to calculate Minecraft item amounts.
function Get-AsStacks{
param([int]$count, [int]$size = 64, [string]$stackLabel = "Stacks")
[float]$divisor = [float]([float]$count / [float]$size)
$floatingPointDigits = $divisor % 1
$stacks = $divisor - $floatingPointDigits
$singles = [int]($floatingPointDigits * $size)
Write-Host ("$stacks $stackLabel + $singles")
}
@mmodrow
mmodrow / purgeSprintSpooler.ps1
Created May 2, 2021 11:42
Clean out print spooler from non-cancellable jobs by completely emptying the spooler.
$killPrintSpoolContent = {
Write-Host "Stopping print spooler."
Stop-Service -Name "Spooler" -Force -ErrorAction Continue
$queue = Get-ChildItem -Path "C:\WINDOWS\system32\spool\PRINTERS" -ErrorAction Continue
Write-Host "Deleting following print jobs from spooler:"
Write-Host $queue
$queue | Remove-Item -ErrorAction Continue
Start-Service -Name "Spooler" -ErrorAction Continue
Write-Host "Starting print spooler."
Read-Host “Press ENTER to continue...”