Text based command line webcam photobooth app

Overview
Skunkbooth Logo

GitHub issues    GitHub forks    GitHub stars   PyPI    Python   Gitter

Skunkbooth

A camera app in terminal. One more reason to stay inside the box you call terminal.

Why

With our revolutionary application, you don’t have to leave your terminal and climb a mountain, just to get your next perfect Instagram picture. Open terminal, run skunkbooth and capture funkiest images inside the box (aka terminal).

We support all the modern operating systems. All you need is python3.

See it in action

Alt text

Usage

Installation

pip install skunkbooth

Run

After installation, use skunkbooth command to launch camera.

skunkbooth

Media location

The photos and videos that you take are present in the following location

  • MacOS and Linux
ls ~/skunkbooth/pictures
  • Windows
dir C:\Users\<username>\skunkbooth\pictures

Contributing

Poetry is used for package management. For setting up your environment, follow along.

Install Poetry

  • MacOS, Linux or WSL
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py | python -
  • Windows Powershell
(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py -UseBasicParsing).Content | python -

Clone the repo

git clone https://github.com/Davidy22/scholarlySkunkJam.git
cd scholarlySkunkJam

Activate poetry shell

poetry shell

Install dev deps

poetry install

Run the application

python3 -m skunkbooth.main

Logs

Logs are located in skunkbooth folder.

  • macOS and Linux
tail -f ~/skunkbooth/.logs/skunkbooth.log
  • Windows (powershell)
Get-Content C:\Users\<username>\skunkbooth\.logs\skunkbooth.log -Wait

App Walkthrough

🏠 Home

Home screen is the first point of contact for the application. It displays the camera output in the screen by default, when the application is started and enables access/navigation to all features of the application.


Home screen

📷 Shoot

Image(s) can be taken instantly by clicking on Shoot button in home screen.

Record

Record button in the home screen toggles video recording and it can be used to start and stop recording.

Image and video files generated will be stored in Media location as .jpg and .avi respectively.

🖌 Effects

The Effects screen features filters that can be applied to the camera output.


Effects screen

To capture images and video by applying filters follow the below steps:

  • Enable the checkbox associated with the desired filter(s).

  • Navigate to the home screen using < 👈 Back to 📷 > button, which will now display the camera output post application of the selected filters.

  • Use Shoot or Record options in the home screen as explained before.

Play around with multiple filters to capture some grooviest images and videos.


Home screen with effects

🖼 Gallery

Gallery screen is a file browser which displays list of images and videos captured using the application, as shown in the image below.


Gallery screen

👁 Preview

Preview screen renders the media file that is opened via gallery screen. This screen currently supports display of files only in .jpg format, with more formats to be added in the future versions.


Preview screen

🛑 Quit

The application can be safely exited using Quit button in home screen.

Comments
  • [FEATURE] Make a onscreen timer of some sort for the recording part

    [FEATURE] Make a onscreen timer of some sort for the recording part

    Is your feature request related to a problem? Please describe. Once the recording button is clicked, start an onscreen timer with "REC"

    Describe the solution you'd like Simple state based implementation should do it.

    Describe alternatives you've considered None.

    Additional context None.

    enhancement good first issue Hacktoberfest '21 
    opened by Trisanu-007 8
  • Multiple Webcams

    Multiple Webcams

    Is your feature request related to a problem? Please describe.

    I have 2 webcams on my thinkpad, first is IR-Camera and the second one is a classic webcam. Here is the output of /dev: /dev/video0 /dev/video1 /dev/video2 /dev/video3 The issue here is I can't change cameras in SkunkBooth, and by default it opens the IR-Camera which is /dev/video2

    Is there a way to change it ?

    enhancement good first issue 
    opened by ghost 7
  • Addressed issue #53 and added new filters for #69

    Addressed issue #53 and added new filters for #69

    We've added the following filters for issue #69:

    • Greek Letters
    • Musical Notes
    • Suits from a deck of cards
    • Warm color filter
    • Cold color filter
    • Night vision
    • Posterize (cool effect that reduces bits in color channels)
    • Dark auto contrast (for improving camera quality in a dark room)
    • Math symbols
    • Enhancement filters for both color and grayscale images

    We also addressed #53 by creating a pretty screen for when saving at the end.

    opened by johnperry99 4
  • [WIP] Adding new Filters!

    [WIP] Adding new Filters!

    This PR represents the new filters that we're looking to add for SkunkBooth.

    • Currently, implemented new filters for:
      • Greek letters,
      • Musical notes
      • Suits from a deck of cards
    opened by StephenP-Hung 2
  • [MISC] Minor Update to README.md for Cloning Instructions

    [MISC] Minor Update to README.md for Cloning Instructions

    Describe the issue :

    While this isn't really a big issue, I noticed that the clone instructions mentions to clone the repo 'scholarlySkunkJam' and cd into the folder. Considering how the repo has been renamed to SkunkBooth and all other instructions mentions SkunkBooth, I think this should be changed in the README for consistency purposes.

    Solution, if any :

    1. Update the README as mentioned above.
    opened by brilam 2
  • [MISC] HacktoberFest

    [MISC] HacktoberFest

    @Davidy22 if you want, we could open this repo for HacktoberFest. Here are the guidelines : https://hacktoberfest.digitalocean.com/. I think it requires you to change the labels for the repo, rest all is done.

    guideline 
    opened by Trisanu-007 2
  • Refactored code

    Refactored code

    Hi @Davidy22

    I did all the pre-commit stuff looks everything good to me now, please have a thorough look and let me know if I need to make other changes,

    hopefully later this week I will on creating functions for that lengthy code in main.py also I will make some classes to make thing a little more simple and accessible.

    thanks!

    opened by rashidkalwar 2
  • cleaned up main.py and refactored code.

    cleaned up main.py and refactored code.

    Hi @Davidy22

    I did some major changes, specially with the nested functions inside main.py, I created a file inside utils to manage all those changes and distribute the code. now main.py looks a little bit clean, please check all changes thoroughly and let me know if I should make any changes.

    also I am new to the open source and software engineering in general, so please let me know your thoughts how am I doing.

    thanks!

    work in progress 
    opened by rashidkalwar 2
  • #55 keyboard shortcuts

    #55 keyboard shortcuts

    Fixes #55

    I have added the global shortcut bindings to close the application (q, esc, ctrl+w and ctrl+q) as well as the navigational shortcuts for the filter screen (pgUp, pgDown, Home, End).

    However, I am not sure how the ctrl+arrow keys shortcut should behave from the issue description. Should they behave similarly to the home and end keys in the filter screen? If you could please clarify this point, I'd be happy to go in and implement that final shortcut too. I hope everything else is right and up to standard :)

    enhancement 
    opened by josflesan 2
  • Webcam UI

    Webcam UI

    Main frame is modified to contain border, bottom buttons and header text as before with all functionalities intact using a new approach. UI is now consistent across the app.

    opened by shriram1998 2
  • feat : threaded camera and renderer

    feat : threaded camera and renderer

    This is a sample for bifurcating threads for reading and rendering (its behind main so will close this), setting a reference on this (though sometimes the reading of self.frame object is very fast that it is assigned to None ,not handled case in reneder), was able to hit ~200fps fetching from camera (numpy images) in local

    opened by garuna-m6 2
  • Added autodetection of camera

    Added autodetection of camera

    Hi,

    I've made the changes required to autodetect camera.

    Closes: #84

    Details: The default device will be device ID 0. Settings will list out all working device IDs. It is up to the user to select this if device ID 0 is incorrect.

    Please let me know if you have any questions or have some feedback.

    opened by brilam 7
  • [BUG] Can't open camera by index

    [BUG] Can't open camera by index

    Describe the bug I've tried following the instructions for installing. Here is what I did:

    image

    After doing this, I run SkunkBooth and I get this:

    image

    It seems like the issue is stemming from OpenCV. I've tried adjusting the camera index, but that doesn't seem to do the trick. I am using an external USB webcam.

    I've also tried installing the dependencies using pip and running SkunkBooth. The same thing occurs.

    Steps To Reproduce Steps to reproduce the behavior:

    1. Follow the instructions listed in Contributing.

    Expected behavior SkunkBooth should be running.

    Screenshots See above.

    Desktop (please complete the following information):

    • OS: Windows 10
    • Version: 19042.1237

    Additional context N/A

    opened by brilam 6
  • Auto camera detection

    Auto camera detection

    Currently we only read from the first detected camera. Add a check on opencv to get the IDs of all available cameras, and make them selectable in settings.

    enhancement good first issue Hacktoberfest '21 
    opened by Davidy22 4
  • Make language selection auto-detect language options

    Make language selection auto-detect language options

    Scan the locales directory for language options instead of having to hard-code the drop down menu to make creating new translations easier for code-illiterate contributors.

    enhancement Hacktoberfest '21 
    opened by Davidy22 0
  • [FEATURE] High quality images by making use of SIXEL

    [FEATURE] High quality images by making use of SIXEL

    Is your feature request related to a problem? Please describe. There should be an option to get high-quality previews/images.

    Describe the solution you'd like https://en.wikipedia.org/wiki/Sixel https://github.com/libsixel/libsixel SIXEL is old but got support in a bunch of more modern terminal emulators during the last few years. And with mpv a well-known application implemented SIXEL as an output option.

    Describe alternatives you've considered There is no alternative I consider at this point. A few terminal emulators like iTerm and Kitty have their own graphics protocol; those might become relevant enough in the future.

    enhancement 
    opened by schrmh 5
Releases(v0.3)
Owner
David Yang
I write some stuff sometimes
David Yang
Projeto Reverse Shell For Python

Use com sabedoria!!! Modo de uso: Linux (inclui Android e Mac): - apt-get update - apt install python3 (ou "python" apenas) - git clone https://github

1 Jan 03, 2022
Get latest astronomy job and rumor news in your command line

astrojobs Tired of checking the AAS job register and astro rumor mill for job news? Get the latest updates in the command line! astrojobs automaticall

Philip Mocz 19 Jul 20, 2022
A linux-like remote terminal for Micropython

A linux-like remote terminal for Micropython

Christian Köver - Draxl 2 Nov 14, 2021
CLI tool for typescript tasks & migrations

typed CLI tool for typescript tasks & migrations Installation Usage $ typed --list Subcommands: bootstrap 🔨 Bootstrap your environment for TypeS

Lob 1 Nov 15, 2021
🌈 Generate color palettes based on Neovim colorschemes.

Iris Iris is a Neovim plugin that generates a normalized color palette based on your colorscheme. It is named for the goddess Iris of Greek mythology,

N. G. Scheurich 45 Jul 28, 2022
A simple and easy-to-use CLI parse tool.

A simple and easy-to-use CLI parse tool.

AbsentM 1 Mar 04, 2022
3DigitDev 29 Jan 17, 2022
Convert ACSM files to DRM-free EPUB files with one command on Linux

Knock Convert ACSM files to DRM-free EPUB files using one command. This software does not utilize Adobe Digital Editions nor Wine. It is completely fr

Benton Edmondson 622 Dec 09, 2022
A user-friendly python CLI for Fmask 4.3 software (GERS Lab, UCONN).

pyFmask What is pyFmask pyFmask is a user-friendly python CLI for Fmask 4.3 software (GERS Lab, UCONN; https://github.com/GERSL/Fmask). Fmask (Zhu et

1 Jan 05, 2022
Set of scripts & tools for converting between numbers and major system encoded words.

major-system-converter Set of scripts & tools for converting between numbers and major system encoded words. Uses phonetics instead of letters to conv

4 Aug 09, 2022
Command line, configuration and persistence utilities

Zensols Utilities Command line, configuration and persistence utilities generally used for any more than basic application. This general purpose libra

Paul Landes 2 Nov 17, 2022
Regis-ltmpt-auto - Program register ltmpt 2022 automatis

LTMPT Register Otomatis 2022 Program register ltmpt 2022 automatis dibuat untuk

1 Jan 13, 2022
💻VIEN is a command-line tool for managing Python Virtual Environments.

vien VIEN is a command-line tool for managing Python Virtual Environments. It provides one-line shortcuts for: creating and deleting environments runn

Artёm IG 5 Mar 19, 2022
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
🎄 Advent of Code command-line tool.

🎄 advent-cli advent-cli is a command-line tool for interacting with Advent of Code, specifically geared toward writing solutions in Python. It can be

Christian Ferguson 6 Dec 01, 2022
asciinema - Terminal session recorder 📹

asciinema - Terminal session recorder 📹

asciinema 11.1k Dec 27, 2022
Sink is a CLI tool that allows users to synchronize their local folders to their Google Drives. It is similar to the Git CLI and allows fast and reliable syncs with the drive.

Sink is a CLI synchronisation tool that enables a user to synchronise local system files and folders with their Google Drives. It follows a git C

Yash Thakre 16 May 29, 2022
Present - A terminal-based presentation tool with colors and effects.

present A terminal-based presentation tool with colors and effects. You can also play a codio (pre-recorded code block) on a slide. present is built o

Vinayak Mehta 4.2k Jan 03, 2023
iTerm2 Shell integration for Xonsh shell.

iTerm2 Shell Integration iTerm2 Shell integration for Xonsh shell. Installation To install use pip: xpip install xontrib-iterm2 # or: xpip install -U

Noorhteen Raja NJ 6 Dec 29, 2022
A 3D engine powered by ASCII art

3D engine powered by ASCII art

Lingdong Huang 48 Nov 16, 2022