AutoSub is a CLI application to generate subtitle files (.srt, .vtt, and .txt transcript) for any video file using Mozilla DeepSpeech.

Overview

AutoSub

About

AutoSub is a CLI application to generate subtitle files (.srt, .vtt, and .txt transcript) for any video file using Mozilla DeepSpeech. I use the DeepSpeech Python API to run inference on audio segments and pyAudioAnalysis to split the initial audio on silent segments, producing multiple small files.

Featured in DeepSpeech Examples by Mozilla

Motivation

In the age of OTT platforms, there are still some who prefer to download movies/videos from YouTube/Facebook or even torrents rather than stream. I am one of them and on one such occasion, I couldn't find the subtitle file for a particular movie I had downloaded. Then the idea for AutoSub struck me and since I had worked with DeepSpeech previously, I decided to use it.

Installation

  • Clone the repo. All further steps should be performed while in the AutoSub/ directory

    $ git clone https://github.com/abhirooptalasila/AutoSub
    $ cd AutoSub
  • Create a pip virtual environment to install the required packages

    $ python3 -m venv sub
    $ source sub/bin/activate
    $ pip3 install -r requirements.txt
  • Download the model and scorer files from DeepSpeech repo. The scorer file is optional, but it greatly improves inference results.

    # Model file (~190 MB)
    $ wget https://github.com/mozilla/DeepSpeech/releases/download/v0.9.3/deepspeech-0.9.3-models.pbmm
    # Scorer file (~950 MB)
    $ wget https://github.com/mozilla/DeepSpeech/releases/download/v0.9.3/deepspeech-0.9.3-models.scorer
  • Create two folders audio/ and output/ to store audio segments and final SRT and VTT file

    $ mkdir audio output
  • Install FFMPEG. If you're running Ubuntu, this should work fine.

    $ sudo apt-get install ffmpeg
    $ ffmpeg -version               # I'm running 4.1.4
  • [OPTIONAL] If you would like the subtitles to be generated faster, you can use the GPU package instead. Make sure to install the appropriate CUDA version.

    $ source sub/bin/activate
    $ pip3 install deepspeech-gpu

Docker

  • Installation using Docker is pretty straight-forward.

    • First start by downloading training models by specifying which version you want:
      • if you have your own, then skip this step and just ensure they are placed in project directory with .pbmm and .scorer extensions
    $ ./getmodel.sh 0.9.3
    • Then for a CPU build, run:
    $ docker build -t autosub .
    $ docker run --volume=`pwd`/input:/input --name autosub autosub --file /input/video.mp4
    $ docker cp autosub:/output/ .
    • For a GPU build that is reusable (saving time on instantiating the program):
    $ docker build --build-arg BASEIMAGE=nvidia/cuda:10.1-cudnn7-runtime-ubuntu18.04 --build-arg DEPSLIST=requirements-gpu.txt -t autosub-base . && \
    docker run --gpus all --name autosub-base autosub-base --dry-run || \
    docker commit --change 'CMD []' autosub-base autosub-instance
    • Then
    $ docker run --volume=`pwd`/input:/input --name autosub autosub-instance --file video.mp4
    $ docker cp autosub:/output/ .

How-to example

  • Make sure the model and scorer files are in the root directory. They are automatically loaded
  • After following the installation instructions, you can run autosub/main.py as given below. The --file argument is the video file for which SRT file is to be generated
    $ python3 autosub/main.py --file ~/movie.mp4
  • After the script finishes, the SRT file is saved in output/
  • Open the video file and add this SRT file as a subtitle, or you can just drag and drop in VLC.
  • The optional --split-duration argument allows customization of the maximum number of seconds any given subtitle is displayed for. The default is 5 seconds
    $ python3 autosub/main.py --file ~/movie.mp4 --split-duration 8
  • By default, AutoSub outputs in a number of formats. To only produce the file formats you want use the --format argument:
    $ python3 autosub/main.py --file ~/movie.mp4 --format srt txt

How it works

Mozilla DeepSpeech is an amazing open-source speech-to-text engine with support for fine-tuning using custom datasets, external language models, exporting memory-mapped models and a lot more. You should definitely check it out for STT tasks. So, when you first run the script, I use FFMPEG to extract the audio from the video and save it in audio/. By default DeepSpeech is configured to accept 16kHz audio samples for inference, hence while extracting I make FFMPEG use 16kHz sampling rate.

Then, I use pyAudioAnalysis for silence removal - which basically takes the large audio file initially extracted, and splits it wherever silent regions are encountered, resulting in smaller audio segments which are much easier to process. I haven't used the whole library, instead I've integrated parts of it in autosub/featureExtraction.py and autosub/trainAudio.py All these audio files are stored in audio/. Then for each audio segment, I perform DeepSpeech inference on it, and write the inferred text in a SRT file. After all files are processed, the final SRT file is stored in output/.

When I tested the script on my laptop, it took about 40 minutes to generate the SRT file for a 70 minutes video file. My config is an i5 dual-core @ 2.5 Ghz and 8 gigs of RAM. Ideally, the whole process shouldn't take more than 60% of the duration of original video file.

TO-DO

  • Pre-process inferred text before writing to file (prettify)
  • Add progress bar to extract_audio()
  • GUI support (?)

Contributing

I would love to follow up on any suggestions/issues you find :)

References

  1. https://github.com/mozilla/DeepSpeech/
  2. https://github.com/tyiannak/pyAudioAnalysis
  3. https://deepspeech.readthedocs.io/
Comments
  • How to install on Windows?

    How to install on Windows?

    Hello could you let me know how to install and run your program on windows. I am on the step where I did "pip3 install -r requirements.txt" and I got the following error.

            ERROR: Cannot install -r requirements.txt (line 4) and numpy==1.18.1 because these package versions have conflicting 
            dependencies.
            
            The conflict is caused by:
                The user requested numpy==1.18.1
                deepspeech 0.8.2 depends on numpy<=1.17.0 and >=1.14.5
            
            To fix this you could try to:
            1. loosen the range of package versions you've specified
            2. remove package versions to allow pip attempt to solve the dependency conflict
            
            ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies
    
    opened by tawhidkhn63 37
  • .tflite files support

    .tflite files support

    After the mozilla layoffs, the deepspeech team forked the Deepspeech repo and founded the company Coqui AI (https://github.com/coqui-ai/STT) where they continue the development and AFAIK they now only allow .tflite files to export models. It theoretically should work with the old code, but for me it didn't.

    When I try to run it like this:

    python3 autosub/main.py --file /Users/sgrotz/Downloads/kp193-hejma-auxtomatigo.mp3 --split-duration 8

    with a .tflite file in the main folder and NO language model.

    Then I get:

    AutoSub

    ['autosub/main.py', '--file', '/Users/sgrotz/Downloads/kp193-hejma-auxtomatigo.mp3', '--split-duration', '8']
    ARGS: Namespace(dry_run=False, file='/Users/sgrotz/Downloads/kp193-hejma-auxtomatigo.mp3', format=['srt', 'vtt', 'txt'], model=None, scorer=None, split_duration=8.0)
    Warning no models specified via --model and none found in local directory. Please run getmodel.sh convenience script from autosub repo to get some.
    Error: Must have pbmm model. Exiting
    

    Have I done anything wrong here or doesn't AutoSub support .rflite files?

    I tested it on MacOS and installed ffmpeg via homebrew.

    opened by stefangrotz 20
  • Docker GPU Support and Path Parsing Errors Fix

    Docker GPU Support and Path Parsing Errors Fix

    Added GPU support for Docker images and a bunch of other related changes to ensure best possible docker experience.

    Major Changes: Base Image is now Ubuntu so we can use NVIDIA's cuda images Dockerfile was significantly revamped Dropped unnecessary bit-rate conversion from ffmpeg command Reordered code to allow instantiating tensor model before failure due to inadequate arguments allowing for useful side effect of faster startup times Added simple build scripts There were many errors regarding proper parsing of Paths with metacharacters. They have been fixed where I found them. We should probably stick to using os.path functions instead of manually parsing the strings ourselves.

    Also: Audio directory is directly emptied rather than deleted and recreated. Makes a difference for running docker in Read only mode. Option to ask for overwriting existing SRT. Default is not to overwrite. Previous default was append, which is not useful. Dockerfile now just copies training model if available instead of downloading each time. This enables better developement experience so I don't have to keep downloading each time I was experimenting with getting a GPU build. Users can still use newly created convenience script called getmodels.sh to still automatically get what they want. Other minor improvements like ensuring apt is non-interactive and clears its cache after installing. a specific series of copy commands to only copy what is required rather than entire project dir which may have other things users choose to use.

    opened by yash-fn 20
  • ERROR: No matching distribution found for deepspeech==0.9.3 (from -r requirements.txt (line 3))

    ERROR: No matching distribution found for deepspeech==0.9.3 (from -r requirements.txt (line 3))

    pip3 install -r requirements.txt
    
    Collecting deepspeech==0.9.3 (from -r requirements.txt (line 3))
      ERROR: Could not find a version that satisfies the requirement deepspeech==0.9.3 (from -r requirements.txt (line 3)) (from versions: none)
    ERROR: No matching distribution found for deepspeech==0.9.3 (from -r requirements.txt (line 3))
    
    opened by PacoH 15
  • ImportError: DLL load failed while importing _impl: A dynamic link library (DLL) initialization routine failed.

    ImportError: DLL load failed while importing _impl: A dynamic link library (DLL) initialization routine failed.

    Hi, after I installed Autosub I always get this error message when I try to run the program "ImportError: DLL load failed while importing _impl: A dynamic link library (DLL) initialization routine failed." Could anyone tell me how to fix this?

    opened by HafMann 9
  • ImportError: attempted relative import with no known parent package

    ImportError: attempted relative import with no known parent package

    Hi, my config is Win10_x64, Python 3.8. When i execute $ C:/Soft/Autosub/sub/Scripts/python autosub/main.py --file D:/Work/video.mkv. It gives me error: Traceback (most recent call last): File "autosub/main.py", line 8, in <module> from . import logger Info: `[email protected] MINGW64 /c/Soft/Autosub (master) $ pip list Package Version


    absl-py 1.0.0 astunparse 1.6.3 cachetools 4.2.4 certifi 2021.10.8 charset-normalizer 2.0.12 cycler 0.10.0 deepspeech-gpu 0.9.3 distlib 0.3.4 ffmpeg 1.4 filelock 3.6.0 gast 0.3.3 google-auth 1.35.0 google-auth-oauthlib 0.4.6 google-pasta 0.2.0 grpcio 1.44.0 h5py 2.10.0 idna 3.3 importlib-metadata 4.11.3 joblib 0.16.0 Keras-Preprocessing 1.1.2 kiwisolver 1.2.0 Markdown 3.3.6 numpy 1.22.3 oauthlib 3.2.0 opt-einsum 3.3.0 pip 19.2.3 platformdirs 2.5.1 protobuf 3.19.4 pyasn1 0.4.8 pyasn1-modules 0.2.8 pydub 0.23.1 pyparsing 2.4.7 python-dateutil 2.8.1 requests 2.27.1 requests-oauthlib 1.3.1 rsa 4.8 scikit-learn 1.0.2 scipy 1.4.1 setuptools 41.2.0 six 1.15.0 stt 1.0.0 tensorboard 2.2.2 tensorboard-plugin-wit 1.8.1 tensorflow-gpu 2.2.0 tensorflow-gpu-estimator 2.2.0 termcolor 1.1.0 threadpoolctl 3.1.0 tqdm 4.44.1 urllib3 1.26.9 virtualenv 20.13.3 Werkzeug 2.0.3 wheel 0.37.1 wrapt 1.14.0 zipp 3.7.0 WARNING: You are using pip version 19.2.3, however version 22.0.4 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.`

    opened by andposteo 8
  • Fix extraneous colon character in SRT/VTT files, split run-on sentences, 3 digit milliseconds

    Fix extraneous colon character in SRT/VTT files, split run-on sentences, 3 digit milliseconds

    Fixes #21 Fixes #31 The 3 digit millisecond commit cherry-picked of public fork. It seemed pretty reasonable to include it here.

    See commit messages and referenced issues for more information.

    I will cherry-pick the best changes from all the public forks in the coming days and weeks so that AutoSub can become what it should be, and I intend to help you actively maintain and develop this project over the long term.

    Thanks!

    opened by shasheene 7
  • chores: editorconfig and dockerfile

    chores: editorconfig and dockerfile

    I was just exploring the code but wanted to tidy up a bit while I was at it.

    EditorConfig

    Adds an EditorConfig file, so contributors can use consistent code styles with the rest of the project. This makes it more convenient to work on the project when a developer's editor settings aren't the same as yours.

    Optimizes the Dockerfile

    This reduces the number of intermediate layers, and makes the build marginally faster. Its good practice to minimize layers in a Docker image to make the final image smaller, especially if there's a lot of file system changes between layers. In this case, the difference in size is negligible.

    A Docker image consists of read-only layers each of which represents a Dockerfile instruction. The layers are stacked and each one is a delta of the changes from the previous layer. … Each instruction creates one layer:

    FROM creates a layer from the ubuntu:18.04 Docker image. COPY adds files from your Docker client’s current directory. RUN builds your application with make. CMD specifies what command to run within the container.

    — https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

    Optimize apt-get

    • Removes the cached lists from /var/lib/apt/lists. (Reduces image size by 0.02 GB.)
    • No longer installs recommended packages. (Reduces image size by another 0.02 GB.)

    More info:

    • https://ubuntu.com/blog/we-reduced-our-docker-images-by-60-with-no-install-recommends
    • https://hackernoon.com/tips-to-reduce-docker-image-sizes-876095da3b34

    Before

    $ time docker build -t autosub:dev --build-arg model=0.9.3 --no-cache .
    real    3m57.379s
    user    0m1.650s
    sys     0m1.776s
    
    $ docker images -a
    REPOSITORY                  TAG               IMAGE ID       CREATED              SIZE
    autosub                     dev               2565f52660cb   About a minute ago   1.86GB
    <none>                      <none>            4fd064c626ea   About a minute ago   1.86GB
    <none>                      <none>            d9d3ae1ed1db   About a minute ago   1.86GB
    <none>                      <none>            cf1540452ffc   2 minutes ago        714MB
    <none>                      <none>            dfa2fae14669   2 minutes ago        714MB
    <none>                      <none>            9ada5732266d   2 minutes ago        714MB
    <none>                      <none>            d6821a416a2c   3 minutes ago        416MB
    <none>                      <none>            c918464fff64   3 minutes ago        416MB
    <none>                      <none>            594b7f697317   5 minutes ago        114MB
    <none>                      <none>            e5f83a59a602   5 minutes ago        114MB
    python                      3.8-slim-buster   4728acd2148c   2 days ago           114MB
    

    After

    $ time docker build -t autosub:dev --build-arg model=0.9.3 --no-cache .
    real    3m38.463s
    user    0m1.252s
    sys     0m1.209s
    
    $ docker images -a
    REPOSITORY                  TAG               IMAGE ID       CREATED          SIZE
    autosub                     dev               41dbaca6c36b   7 minutes ago    1.82GB
    <none>                      <none>            117e3c54c5cf   7 minutes ago    1.82GB
    <none>                      <none>            a911683cc89d   10 minutes ago   114MB
    <none>                      <none>            7cf695bce4db   10 minutes ago   114MB
    <none>                      <none>            264a99e3d9d1   10 minutes ago   114MB
    python                      3.8-slim-buster   4728acd2148c   2 days ago       114MB
    
    opened by SethFalco 7
  • Docker build broken

    Docker build broken

    docker build -t autosub . Cannot build and results in

    Step 11/13 : RUN pip3 install --no-cache-dir -r requirements.txt
     ---> Running in bdf3fc44f538
    Collecting cycler==0.10.0 (from -r requirements.txt (line 1))
      Downloading https://files.pythonhosted.org/packages/f7/d2/e07d3ebb2bd7af696440ce7e754c59dd546ffe1bbe732c8ab68b9c834e61/cycler-0.10.0-py2.py3-none-any.whl
    Collecting numpy (from -r requirements.txt (line 2))
      Downloading https://files.pythonhosted.org/packages/45/b2/6c7545bb7a38754d63048c7696804a0d947328125d81bf12beaa692c3ae3/numpy-1.19.5-cp36-cp36m-manylinux1_x86_64.whl (13.4MB)
    Collecting stt==1.0.0 (from -r requirements.txt (line 3))
      Could not find a version that satisfies the requirement stt==1.0.0 (from -r requirements.txt (line 3)) (from versions: 0.10.0a5, 0.10.0a6, 0.10.0a8, 0.10.0a9, 0.10.0a10)
    No matching distribution found for stt==1.0.0 (from -r requirements.txt (line 3))
    The command '/bin/sh -c pip3 install --no-cache-dir -r requirements.txt' returned a non-zero code: 1
    
    
    opened by Loqova 6
  • Is it impossible to recognize in another language?

    Is it impossible to recognize in another language?

    Is it impossible to recognize in another language?

    I hope the caption file comes out in Japanese.

    I put a video of the conversation in Japanese and it came out in English, is there a way to modify it?

    or.. is there any japaense model files?

    opened by kdrkdrkdr 5
  • Here are the steps to reduce big chunks of text - SRT

    Here are the steps to reduce big chunks of text - SRT

    Hi,

    I did this manually but maybe someone can improve it and write some script for it?:

    1. Check text that is longer than 7 words

    2. Add a line break to each line longer than 7 words.

    3. Get the numbers of lines you got, ie: blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah

    There are 4 lines 4. We take the initial and final time

    13 <<< SRT Subtitle position ie: 00:00:25,90 --> 00:00:35,25

    1. We surplus them and divide them by the number of lines 35,25 - 25,90 = 9,35 4 lines of max 7 words each 9,35/4 = 2,33

    2. We take 2.33 less 1 for each limit, Ie:

    13 <<< SRT Subtitle position 00:00:25,90 --> 00:00:28,23 blah blah blah blah blah blah blah

    14 00:00:28,24 --> 00:00:30,57 blah blah blah blah blah blah blah

    15 00:00:30,58 --> 00:00:32,91 blah blah blah blah blah blah blah

    16 00:00:32,92 --> 00:00:35,25 blah blah blah blah blah

    14 <<<< WARNING >>>> update all the other numbers in this case to 17 (check step 7 below) blah blah blah blah

    1. We need to update the SRT Subtitle position, in this case we finished at 16, so we need to replace 14 for 17, and do the same for all the other numbers. Note: Update from top to bottom so the counter increments.

    That's it.

    Anyone? :)

    opened by javaintheuk 5
  • force use utf-8 open README.md

    force use utf-8 open README.md

    Otherwise encounter error

        Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "C:\Users\Aqaao\AppData\Local\Temp\pip-req-build-2dcr43hl\setup.py", line 8, in <module>
            README = fh.read()
        UnicodeDecodeError: 'gbk' codec can't decode byte 0x90 in position 757: illegal multibyte sequence
    
    opened by Aqaao 5
  • Add support for Python 3.10

    Add support for Python 3.10

    Adds support for Python 3.10.

    One of the major problems upgrading to Python 3.10 with this is that DeepSpeech appears to be unmaintained and no longer supports 3.10. So this also removes DeepSpeech as an engine but also updates the getmodels.sh script to easily download Coqui models.

    opened by KyleMaas 2
  • Docker run return ` No module named 'autosub'`

    Docker run return ` No module named 'autosub'`

    I build the docker image as the instruction. It returns this error after running.

    Traceback (most recent call last):
      File "./autosub/main.py", line 10, in <module>
        from autosub import logger
    ModuleNotFoundError: No module named 'autosub'
    

    I think the problem is I didn't have autosub installed in the image. So I add RUN pip3 install . to Dockerfile. Then everything works out fine.

    BTW: With this solution, it's also necessary to have COPY README.md ./ in the image. Also, I have to add encoding='utf-8' in with open("README.md", "r") as fh: in setup.py, otherwise it would use ASCII encoding as default in my case.

    opened by babaolanqiu 1
  • Generated VTT files are not standard compliant

    Generated VTT files are not standard compliant

    When I first started using this program, I took subtitles and opened them in VLC and it looked fine. But then I tried another program, and they refused to work. Took me quite a while to realize that the output of AutoSub was actually not compliant with the VTT format according to this validator:

    https://w3c.github.io/webvtt.js/parser.html

    Errors I get include:

    You are hopeless, RTFS. (10ms)
    1. Line 2: No blank line after the signature.
    2. Line 7: Cue identifier cannot be standalone.
    3. Line 11: Cue identifier cannot be standalone.
    4. Line 15: Cue identifier cannot be standalone.
    5. Line 19: Cue identifier cannot be standalone.
    6. Line 23: Cue identifier cannot be standalone.
    7. Line 27: Cue identifier cannot be standalone.
    [many, many more of these]
    

    Unfortunately, I can't share the subtitles that did this. However, it happened with every file I tried. I was able to build a series of sed replacements to run on the AutoSub output file to make it so it passes the validator, but that's quite a hack. I'd recommend trying validation on a file yourself - it was consistently repeatable for me.

    opened by KyleMaas 0
  • Include OpenAI Whisper model

    Include OpenAI Whisper model

    OpenAI just released probably the best model that there is for speech recognition right now.

    It would be great to incorprate this into this project!

    More info: https://openai.com/blog/whisper/

    opened by xBurnsed 0
  • multi core

    multi core

    autosub is using only 100% cpu when it should use 400% on a quad core cpu

    the task should be easy to do in parallel, by splitting the audio into N segments for N cpu cores

    related

    • https://stackoverflow.com/questions/4047789/parallel-file-parsing-multiple-cpu-cores
      • multiprocessing.Pool
      • ray for distributed computing
    opened by milahu 0
Releases(v1.1.0)
  • v1.1.0(Jan 11, 2022)

    What's Changed

    • Update README.md - GPU support by @shravanshetty1 in https://github.com/abhirooptalasila/AutoSub/pull/8
    • Remove hardcoded directory separator by @vnq in https://github.com/abhirooptalasila/AutoSub/pull/19
    • Add normalization to sox call. by @xfim in https://github.com/abhirooptalasila/AutoSub/pull/23
    • Docker: Combine RUN statements for smaller images by @nightscape in https://github.com/abhirooptalasila/AutoSub/pull/27
    • Adds TXT transcript, --format option, handle input with special chars by @shasheene in https://github.com/abhirooptalasila/AutoSub/pull/35
    • Applies formatting changes, fixes VTT output by @shasheene in https://github.com/abhirooptalasila/AutoSub/pull/36
    • Only delete audio files that need to be deleted by @shasheene in https://github.com/abhirooptalasila/AutoSub/pull/37
    • Dry-run + ability to specify models + minor edits by @yash-fn in https://github.com/abhirooptalasila/AutoSub/pull/39

    New Contributors

    • @shravanshetty1 made their first contribution in https://github.com/abhirooptalasila/AutoSub/pull/8
    • @vnq made their first contribution in https://github.com/abhirooptalasila/AutoSub/pull/19
    • @xfim made their first contribution in https://github.com/abhirooptalasila/AutoSub/pull/23
    • @nightscape made their first contribution in https://github.com/abhirooptalasila/AutoSub/pull/27
    • @yash-fn made their first contribution in https://github.com/abhirooptalasila/AutoSub/pull/39

    Full Changelog: https://github.com/abhirooptalasila/AutoSub/compare/v1.0.0...v1.1.0

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Sep 6, 2020)

Owner
Abhiroop Talasila
I try to make things work
Abhiroop Talasila
Splitgraph command line client and python library

Splitgraph Overview Splitgraph is a tool for building, versioning and querying reproducible datasets. It's inspired by Docker and Git, so it feels fam

Splitgraph 313 Dec 24, 2022
Python CLI script to solve wordles.

Wordle Solver Python CLI script to solve wordles. You need at least python 3.8 installed to run this. No dependencies. Sample Usage Let's say the word

Rachel Brindle 1 Jan 16, 2022
CPOST is a CLI tool to assist with the proper sizing of Clara Deploy pipelines

CPOST (Clara Pipeline Operator Sizing Tool) Tool to measure resource usage of Clara Platform pipeline operators Cpost is a tool that will help you run

NVIDIA Corporation 5 Sep 27, 2021
A simple weather tool. I made this as a way for me to learn Python, API, and PyPi packaging.

A simple weather tool. I made this as a way for me to learn Python, API, and PyPi packaging.

Clint E. 105 Dec 31, 2022
A command line interface to interact with the Hypixel api allowing the user to get stats, leaderboards, etc

HyConsole is a way to get data on players and leaderboards from the Hypixel Minecraft server from the command line. Keep in mind I have no a

1 Feb 14, 2022
py-image-dedup is a tool to sort out or remove duplicates within a photo library

py-image-dedup is a tool to sort out or remove duplicates within a photo library. Unlike most other solutions, py-image-dedup intentionally uses an approximate image comparison to also detect duplica

Markus Ressel 96 Jan 02, 2023
frogtrade9000 - a command-line Rich client for the freqtrade REST API

frogtrade9000 - a command-line Rich client for the freqtrade REST API I found FreqUI too cumbersome and slow on my Raspberry Pi 400 when running multi

Robert Davey 79 Dec 02, 2022
Simple subcommand CLIs with argparse

multicommand Simple subcommand CLIs with argparse. multicommand uses only the standard library and is ~150 lines of code (modulo comments and whitespa

Andrew Ross 10 Aug 01, 2022
Command line interface for testing internet bandwidth using speedtest.net

speedtest-cli Command line interface for testing internet bandwidth using speedtest.net Versions speedtest-cli works with Python 2.4-3.7 Installation

Matt Martz 12.4k Jan 08, 2023
Python CLI vm manager for remote access of docker images via noVNC

vmman is a tool to quickly boot and view docker-based VMs running on a linux server through noVNC without ssh tunneling on another network.

UCSD Engineers for Exploration 1 Nov 29, 2021
CLI utility to search and download torrents from major torrent sites

CLI Torrent Downloader About CLI Torrent Downloader provides convenient and quick way to search torrent magnet links (and to run associated torrent cl

x0r0x 86 Dec 19, 2022
Open-Source Python CLI package for copying DynamoDB tables and items in parallel batch processing + query natural & Global Secondary Indexes (GSIs)

Python Command-Line Interface Package to copy Dynamodb data in parallel batch processing + query natural & Global Secondary Indexes (GSIs).

1 Oct 31, 2021
Command-line script to upload videos to Youtube using theYoutube APIv3.

Introduction Command-line script to upload videos to Youtube using theYoutube APIv3. It should work on any platform (GNU/Linux, BSD, OS X, Windows, ..

Arnau Sanchez 1.9k Jan 09, 2023
CLI program that allows you to change your Alacritty config with one command without editing the config file.

Pycritty Change your alacritty config on the fly! Installation: pip install pycritty By default, only the program itself will be installed, but you ca

Antonio Sarosi 184 Jan 07, 2023
Yts-cli-streamer - A CLI movie streaming client which works on yts.mx API written in python

YTSP It is a CLI movie streaming client which works on yts.mx API written in pyt

1 Feb 05, 2022
A simple web-based SSH client.

Kommander A simple web-based SSH client. It supports: entering SSH login details (including private key and custom ports) and connecting user authenti

KingWaffleIII 2 Jan 01, 2022
CLI Utility to encode and recursively recreate directories with ffmpeg.

FFenmass CLI Utility to encode and recursively recreate directories with ffmpeg. Report Bug · Request Feature Table of Contents Getting Started Prereq

George Av. 8 May 06, 2022
You'll never want to use cd again.

Jmp Description Have you ever used the cd command? You'll never touch that outdated thing again when you try jmp. Navigate your filesystem with unprec

Grant Holmes 21 Nov 03, 2022
Wordle-solver - A tool that helps people who struggle with vocabulary to enjoy the famous game of WORDLE

Wordle-Solver Wordle-Solver helps people who struggle with vocabulary to enjoy t

Jason Chao 104 Dec 31, 2022
A webmining CLI tool & library for python.

minet is a webmining command line tool & library for python (= 3.6) that can be used to collect and extract data from a large variety of web sources

médialab Sciences Po 165 Dec 17, 2022