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
A Command Line Calculator With Python

CalculadoraPY Usando no Termux apt install python3 apt install git pip3 install termcolor git clone https://github.com/kayke981/CalculadoraPY.git

kayake 5 Jan 30, 2022
A communist shell written in Python

kash A communist shell written in Python It doesn't support escapes, quotes, comment lines, |, &&, , or similar yet. If you need help, get it from

Çınar Yılmaz 1 Dec 10, 2021
Albert launcher extension for converting units of length, mass, speed, temperature, time, current, luminosity, printing measurements, molecular substance, and more

unit-converter-albert-ext Extension for converting units of length, mass, speed, temperature, time, current, luminosity, printing measurements, molecu

Jonah Lawrence 2 Jan 13, 2022
A simple python implementation of a reverse shell

llehs A python implementation of a reverse shell. Note for contributors The project is open for contributions and is hacktoberfest registered! llehs u

Archisman Ghosh 2 Jul 05, 2022
Find your broken links, so users don't.

PyAnchor Dead links are an annoyance for websites with an extensive amount of content. A side from the negative impact on SEO, dead links are an annoy

Ricky White 61 Dec 14, 2022
Lsp Plugin for working with Python virtual environments

py_lsp.nvim What is py_lsp? py_lsp.nvim is a neovim plugin that helps with using the lsp feature for python development. It tackles the problem about

Patrick Haller 55 Dec 27, 2022
Skiller - With this payload you can control the target computer with (cmd)

Skiller - With this payload you can control the target computer with (cmd)

1 Jan 02, 2022
cmdpxl: a totally practical command-line image editor

cmdpxl: a totally practical command-line image editor

Jieruei Chang 476 Jan 07, 2023
A CLI tool that scans through a directory and organizes all loose files into folders by file type.

Organizer CLI Organizer CLI is a python command line tool that goes through a given directory and organizes all un-folder bound files into folders by

Mulaza Jacinto 6 Dec 14, 2022
Key-control - A tool for add keys to your Termux app

Key-Control Is a tool for add keys to your Termux app. Cara Penginstalan $ pkg u

Beereva.id 1 Feb 14, 2022
pyNPS - A cli Linux and Windows Nopaystation client made with python 3 and wget

Currently, all the work is being done inside the refactoring branch. pyNPS - A cli Linux and Windows Nopaystation client made with python 3 and wget P

Everton Correia 45 Dec 11, 2022
Fetch is use to get information about anything on the shell using Wikipedia.

Fetch Search wikipedia article on command line [Why This?] [Support the Project] [Installation] [Configuration] Why this? Fetch helps you to quickly l

Yash Singh 340 Dec 18, 2022
Navigate torrents in CLI with Mariner.

Navigate torrents in CLI with Mariner. It offers a simple interface for streamlined experience. No more annoying ads and pop-up windows.

2 Oct 20, 2021
CLI tool to build, test, debug, and deploy Serverless applications using AWS SAM

AWS SAM The AWS Serverless Application Model (SAM) is an open-source framework for building serverless applications. It provides shorthand syntax to e

Amazon Web Services 6.2k Jan 08, 2023
A very simple and lightweight ToDo app using python that can be used from the command line

A very simple and lightweight ToDo app using python that can be used from the command line

Nilesh Sengupta 2 Jul 20, 2022
Magma is a NeoVim plugin for running code interactively with Jupyter.

Magma Magma is a NeoVim plugin for running code interactively with Jupyter. Requirements NeoVim 0.5+ Python 3.8+ Required Python packages: pynvim (for

Daniel Csillag 372 Dec 26, 2022
CLI translator based on Google translate API

Translate-CLI CLI переводчик основанный на Google translate API как пользоваться ? запустить в консоли скомпилированный скрипт (exe - windows, bin - l

7 Aug 13, 2022
gcptree - Like the unix tree command but for GCP Org Heirarchy

gcptree Like the unix tree command but for GCP Org Heirarchy. For a note on coloring, the org node is green, folders and blue, and projects that are n

Ryan Canty 25 Sep 06, 2022
This is a repository for collecting global custom management extensions for the Django Framework.

Django Extensions Django Extensions is a collection of custom extensions for the Django Framework. Getting Started The easiest way to figure out what

Django Extensions 6k Jan 03, 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