Skip to content

Instantly share code, notes, and snippets.

@rickt
rickt / server.py
Created September 25, 2024 22:19
simple faster-whisper API server for GCP Cloud Run GPU
from flask import Flask, request, jsonify, Response
from faster_whisper import WhisperModel
import subprocess
app = Flask(__name__)
# Initialize the faster-whisper model
model = WhisperModel("small", device="cuda") # Use 'cuda' to leverage the GPU
@app.route('/transcribe', methods=['POST'])
@rickt
rickt / Dockerfile
Created September 25, 2024 22:18
Dockerfile for faster-whisper in GCP Cloud Run GPU
#
# Dockerfile for a simple PoC faster-whisper translation server in GCP GPU Cloud Run
# 20240925 rickt
#
# build: $ docker build -t gcr.io/<gcp_project_name>/<service_name> .
# push: $ docker push gcr.io/<gcp_project_name>/<service_name>
# deploy: $ gcloud beta run deploy <service_name> --region us-central1 --image gcr.io/<gcp_project_name>/<service_name> \
# --port 8080 --cpu 8 --memory 32Gi --gpu 1 --gpu-type nvidia-l4 --max-instances 1 --allow-unauthenticated
#
@rickt
rickt / wvdl.sh
Created May 18, 2022 21:54
widevine downloader & decrypter
#! /bin/bash
#
# rough and ready bash script to download & decrypt a widevine-encrypted video via MPD URL
# this will work with (for example) channel5 UKTV
#
# assumptions:
# 1) the following binaries are in your $PATH:
# curl, ffmpeg, head, jq, mp4decrypt, yt-dlp
#
# this script requires 2x arguments:
@rickt
rickt / fogdownloader.sh
Created January 20, 2022 21:09
souf bay cam downloader bash script/hack
#! /bin/bash
# set required date range using epoch. sample data used below
RANGE=`seq 1642701000 50 1642710633`
# ensure tmp folder exists
TEMPDIR=/tmp/fogpics_$$
[ ! -d "$TEMPDIR" ] && mkdir -p $TEMPDIR
# download the pics
@rickt
rickt / gdf.go
Last active February 21, 2020 23:41
gdf: Google Drive Find -- Search for a file in Google Drive using a service account and the (Golang) Google Drive API (v3)
package main
import (
"fmt"
"github.com/dustin/go-humanize"
"golang.org/x/oauth2"
"golang.org/x/oauth2/google"
"google.golang.org/api/drive/v3"
"io/ioutil"
"log"
import os
from google.cloud import bigquery
def csv_loader(data, context):
client = bigquery.Client()
dataset_id = os.environ['DATASET']
dataset_ref = client.dataset(dataset_id)
job_config = bigquery.LoadJobConfig()
job_config.schema = [
bigquery.SchemaField('id', 'INTEGER'),
package main
// https://rickt.org/2019/01/08/playing-with-g-suite-mdm-mobile-device-data-using-go/
import (
"context"
"errors"
"flag"
"fmt"
"github.com/dustin/go-humanize"
#
# Example fluentd config file for nginx access log injection into Google Bigquery
# collecting nginx access log
<source>
@type tail
tag accesslogs-rickts-dev-box
path /var/log/nginx/access.log
format apache
buffer_type file
@rickt
rickt / slackweatherbot.go
Created August 20, 2018 17:31
A weatherbot for Slack written in go
package slackweatherbot
import (
owm "github.com/briandowns/openweathermap"
"golang.org/x/net/context"
"google.golang.org/appengine"
"google.golang.org/appengine/log"
"google.golang.org/appengine/urlfetch"
"net/http"
"os"
@rickt
rickt / slackaccessloglooker.go
Created August 5, 2016 04:15
call the slack team.accessLogs API to output which of your Slack users are not using a desktop or mobile Slack app
package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
"strings"
"time"
)