Skip to content

Instantly share code, notes, and snippets.

@thevickypedia
thevickypedia / camera.py
Last active December 29, 2022 04:03
Get information and list cameras for Linux, macOS and Windows
import platform
import subprocess
from typing import Dict, Iterable, List, Union
Windows = """wmic path CIM_LogicalDevice where "Description like 'USB Video%'" get /value"""
Darwin = "system_profiler SPCameraDataType"
Linux = "v4l2-ctl --list-devices"
def list_splitter(original_list: List[str], delimiter: str) -> List[List[str]]:
@thevickypedia
thevickypedia / video.py
Last active June 24, 2022 18:56
Stream videos using FastAPI
"""
pip install fastapi uvicorn aiofiles jinja2
uvicorn video:app --reload
"""
import mimetypes
import logging
import os
import pathlib
from fastapi import FastAPI, Request, Response, Header
@thevickypedia
thevickypedia / retry.py
Created June 19, 2022 13:26
Retry a function for given number of times and handle known exceptions
import functools
import logging
import random
from typing import Callable, Any
logging.root.setLevel(level=logging.DEBUG)
def retry(attempts: int = 3, exclude_exc=None) -> Callable:
"""Calls child func recursively.
@thevickypedia
thevickypedia / playsound.py
Last active November 29, 2023 15:03
Play audio files using pyaudio module
import mimetypes
import os
import wave
from threading import Thread
from typing import NoReturn, Union
import pyaudio
class PlayAudio(Thread):
@thevickypedia
thevickypedia / scan_att_router.py
Last active January 26, 2023 20:38
Scan devices attached to router - At&t
# pip install requests pandas lxml
import logging
import socket
from typing import Iterable, Optional, Union, Any
import pandas
import requests
from pandas import DataFrame
SOURCE = "http://{NETWORK_ID}.254/cgi-bin/devices.ha"
@thevickypedia
thevickypedia / timeout_handler.py
Created May 26, 2022 14:28
Timeout handler using threading and wrapper
import functools
import time
from threading import Thread
from typing import Union, Callable, NoReturn
def timeout(duration: Union[float, int]) -> Callable:
"""Timeout handler for Windows OS.
Args:
@thevickypedia
thevickypedia / timeout_handler.py
Last active May 26, 2022 14:28
Handle timeout using multiprocessing
import multiprocessing
import time
from typing import Callable, Union
class TimeoutHandler:
"""Initiates TimeoutHandler object to run a function and terminate it after a given time limit.
>>> TimeoutHandler
@thevickypedia
thevickypedia / timeout_handler.py
Last active May 26, 2022 14:29
Handle timeout using context manager and singal (Linux and Darwin)
import signal
import time
from contextlib import contextmanager
from types import FrameType
from typing import Union, NoReturn
@contextmanager
def timeout(duration: Union[int, float]) -> NoReturn:
"""Creates a timeout handler.
@thevickypedia
thevickypedia / display.py
Created April 23, 2022 13:23
Custom display
import inspect
import os
from datetime import datetime
from typing import Any
class Format:
"""Initiates Format object to define variables that print the message in a certain format.
>>> Format
@thevickypedia
thevickypedia / package.py
Last active October 1, 2023 16:34
Create a package.zip from the files modified within a Github repo
import asyncio
import logging
import os
import shutil
import subprocess
logger = logging.getLogger(__name__)
logger.addHandler(hdlr=logging.StreamHandler())
logger.setLevel(level=logging.DEBUG)