diff --git a/scripts/.local/share/scripts/cgm-value b/scripts/.local/share/scripts/cgm-value deleted file mode 100755 index 6de8e17..0000000 --- a/scripts/.local/share/scripts/cgm-value +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -NIGHTSCOUT_URL="https://nightscout.coolneng.duckdns.org" -CONNECTIVITY_URL="freebsd.org" - -fetch_value() { - CGM_VALUE=$(curl -s -H "api-secret: $(pass api/nightscout)" -H "accept: application/json" \ - "$NIGHTSCOUT_URL/api/v1/entries?count=1") - GLUCOSE=$(echo "$CGM_VALUE" | grep -o '"sgv":[0-9]*' | cut -d ":" -f 2) - DIRECTION=$( - echo "$CGM_VALUE" | grep -o '"direction":"[a-zA-Z]*"' | cut -d ":" -f 2 | tr -d \" - ) -} - -format_output() { - case "$DIRECTION" in - *"Up"*) - printf "{\"text\": \"%s\",\"alt\": \"up\"}" "$GLUCOSE" - ;; - *"Down"*) - printf "{\"text\": \"%s\",\"alt\": \"down\"}" "$GLUCOSE" - ;; - "Flat") - printf "{\"text\": \"%s\",\"alt\": \"flat\"}" "$GLUCOSE" - ;; - esac -} - -check_connectivity() { - if nc -zw1 "$CONNECTIVITY_URL" 443; then - fetch_value - else - echo "{\"text\": \"NA\"}" - fi -} - -check_connectivity -format_output diff --git a/scripts/.local/share/scripts/iptv b/scripts/.local/share/scripts/iptv deleted file mode 100755 index 257d784..0000000 --- a/scripts/.local/share/scripts/iptv +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bash - -DOCKER_IMAGE=magnetikonline/acestream-server:3.1.49_debian_8.11 -PORT=6878 - -select_channel() { - channel_list=( - "Gol TV" - "Gol 2 TV" - "beIN Sports 1 France" - "BBC One" - ) - channel=$(printf '%s\n' "${channel_list[@]}" | rofi -no-auto-select -i "$@" -dmenu -p "Choose a channel") - channel_selection "$channel" -} - -streaming_server() { - if [ "$1" = "start" ]; then - echo "Spinning up the server" - docker run --publish "$PORT:$PORT" --name acestream-server --rm --tmpfs "/dev/disk/by-id:noexec,rw,size=4k" \ - --tmpfs "/root/ACEStream:noexec,rw,size=4096m" \ - "$DOCKER_IMAGE" >/dev/null 2>&1 - echo "Server started" - else - echo "Stopping the server" - docker stop acestream-server >/dev/null 2>&1 - echo "Server stopped" - fi -} - -stream_channel() { - echo "Starting the stream" - nix-shell -p vlc --run "$HOME/.local/share/scripts/playstream.py --ace-stream-pid $1 --player '$(whereis vlc | cut -d ":" -f 2)'" -} - -channel_selection() { - echo "Selection time" - case "$1" in - "Gol ") stream_channel "dfffbcdd9c7e32d5dc88d268dee830ff2a0d3ab6" ;; - "Gol 2") stream_channel "2aab272d05089ce881538a1b3288d391de152d53" ;; - "beIN Sports 1 France") stream channel "bba1905fcd1c4975aec544047bf8e4cd23ce3fe0" ;; - "BBC One") stream channel "243eaccd38b9a0c43b800b6c7a30b1ad2cadc1f1" ;; - esac -} - -streaming_server "start" -select_channel "$@" -streaming_server "stop" diff --git a/scripts/.local/share/scripts/niv-init b/scripts/.local/share/scripts/niv-init deleted file mode 100755 index 861b4f6..0000000 --- a/scripts/.local/share/scripts/niv-init +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -niv init -niv update nixpkgs -b nixpkgs-unstable -sed "s/pkgs ? import /sources ? import .\/nix\/sources.nix, pkgs ? import sources.nixpkgs/" -i shell.nix diff --git a/scripts/.local/share/scripts/playstream.py b/scripts/.local/share/scripts/playstream.py deleted file mode 100755 index 78b18ae..0000000 --- a/scripts/.local/share/scripts/playstream.py +++ /dev/null @@ -1,187 +0,0 @@ -#!/usr/bin/env python3 - -import argparse -import hashlib -import json -import re -import signal -import subprocess -import sys -import time -import urllib.request - -DEFAULT_SERVER_HOSTNAME = "127.0.0.1" -DEFAULT_SERVER_PORT = 6878 -SERVER_POLL_TIME = 2 -SERVER_STATUS_STREAM_ACTIVE = "dl" - - -def exit_error(message): - print(f"Error: {message}", file=sys.stderr) - sys.exit(1) - - -class WatchSigint: - _sent = None - - def __init__(self): - if WatchSigint._sent is None: - # install handler - WatchSigint._sent = False - signal.signal(signal.SIGINT, self._handler) - - def _handler(self, signal, frame): - # Ctrl-C (SIGINT) sent to process - WatchSigint._sent = True - - def sent(self): - return WatchSigint._sent - - -def read_arguments(): - # create parser - parser = argparse.ArgumentParser( - description="Instructs server to commence a given program ID. " - "Will optionally execute a local media player once playback has started." - ) - - parser.add_argument( - "--ace-stream-pid", help="program ID to stream", metavar="HASH", required=True - ) - - parser.add_argument("--player", help="media player to execute once stream active") - - parser.add_argument( - "--progress", - action="store_true", - help=f"continue to output stream statistics (connected peers/transfer rates) every {SERVER_POLL_TIME} seconds", - ) - - parser.add_argument( - "--server", - default=DEFAULT_SERVER_HOSTNAME, - help="server hostname, defaults to %(default)s", - metavar="HOSTNAME", - ) - - parser.add_argument( - "--port", - default=DEFAULT_SERVER_PORT, - help="server HTTP API port, defaults to %(default)s", - ) - - arg_list = parser.parse_args() - - if not re.search(r"^[a-f0-9]{40}$", arg_list.ace_stream_pid): - exit_error(f"invalid stream program ID of [{arg_list.ace_stream_pid}] given") - - # return arguments - return ( - arg_list.ace_stream_pid, - arg_list.player, - arg_list.progress, - arg_list.server, - arg_list.port, - ) - - -def api_request(url): - response = urllib.request.urlopen(url) - return json.load(response).get("response", {}) - - -def start_stream(server_hostname, server_port, stream_pid): - # build stream UID from PID - stream_uid = hashlib.sha1(stream_pid.encode()).hexdigest() - - # call API to commence stream - response = api_request( - f"http://{server_hostname}:{server_port}/ace/getstream?format=json&sid={stream_uid}&id={stream_pid}" - ) - - # return statistics API endpoint and HTTP video stream URLs - return (response["stat_url"], response["playback_url"]) - - -def stream_stats_message(response): - return ( - f'Peers: {response.get("peers", 0)} // ' - f'Down: {response.get("speed_down", 0)}KB // ' - f'Up: {response.get("speed_up", 0)}KB' - ) - - -def await_playback(watch_sigint, statistics_url): - while True: - response = api_request(statistics_url) - - if response.get("status") == SERVER_STATUS_STREAM_ACTIVE: - # stream is ready - print("Ready!\n") - return True - - if watch_sigint.sent(): - # user sent SIGINT, exit now - print("\nExit!") - return False - - # pause and check again - print(f"Waiting... [{stream_stats_message(response)}]") - time.sleep(SERVER_POLL_TIME) - - -def execute_media_player(media_player_bin, playback_url): - subprocess.Popen( - media_player_bin.split() + [playback_url], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - ) - - -def stream_progress(watch_sigint, statistics_url): - print() - while True: - print(f"Streaming... [{stream_stats_message(api_request(statistics_url))}]") - - if watch_sigint.sent(): - # user sent SIGINT, exit now - print("\nExit!") - return - - time.sleep(SERVER_POLL_TIME) - - -def main(): - # read CLI arguments - ( - stream_pid, - media_player_bin, - progress_follow, - server_hostname, - server_port, - ) = read_arguments() - - # create Ctrl-C watcher - watch_sigint = WatchSigint() - - print(f"Connecting to program ID [{stream_pid}]") - statistics_url, playback_url = start_stream( - server_hostname, server_port, stream_pid - ) - - print("Awaiting successful connection to stream") - if not await_playback(watch_sigint, statistics_url): - # exit early - return - - print(f"Playback available at [{playback_url}]") - if media_player_bin is not None: - print("Starting media player...") - execute_media_player(media_player_bin, playback_url) - - if progress_follow: - stream_progress(watch_sigint, statistics_url) - - -if __name__ == "__main__": - main()