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
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
Module for converting 2D Python lists to fancy ASCII tables. Table2Ascii lets you display pretty tables in the terminal and on Discord.

table2ascii Module for converting 2D Python lists to a fancy ASCII/Unicode tables table2ascii 📥 Installation 🧑‍💻 Usage Convert lists to ASCII table

Jonah Lawrence 40 Jan 03, 2023
Low-Cost Open Source Ventilator or PAPR

Last updated 2020/04/19 Low-Cost Open-Source Ventilator-ish Device or PAPR NOTE: This is currently an independent project not affiliated with any comm

Johnny Lee 1.7k Dec 21, 2022
A command line tool that creates a super timeline from SentinelOne's Deep Visibility data

S1SuperTimeline A command line tool that creates a super timeline from SentinelOne's Deep Visibility data What does it do? The script accepts a S1QL q

Juan Ortega 2 Feb 08, 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
Python CLI for accessing CSCI320 PDM Database

p320_14 Python CLI for accessing CSCI320 PDM Database Authors: Aidan Mellin Dan Skigen Jacob Auger Kyle Baptiste Before running the application for th

Aidan Mellin 1 Nov 23, 2021
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
Generate an ASCII Art from keyword put in the cli

ascii-art-generator-cli Generate an ASCII Art from keyword put in the cli Install git clone https://github.com/Nathanlauga/ascii-art-generator-cli cd

Nathan Lauga 1 Nov 14, 2021
Alacritty terminal used with Bash, Tmux, Vim, Mutt, Lynx, etc. and the many different additions added to each configuration file

Alacritty terminal used with Bash, Tmux, Vim, Mutt, Lynx, etc. and the many different additions added to each configuration file

Carter 19 Aug 24, 2022
Patool is a portable command line archive file manager

Patool Patool is an archive file manager. Various archive formats can be created, extracted, tested, listed, searched, repacked and compared with pato

318 Jan 04, 2023
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
RSS reader client for CLI (Command Line Interface),

rReader is RSS reader client for CLI(Command Line Interface)

Lee JunHaeng 10 Dec 24, 2022
Limit your docker image size with a simple CLI command. Perfect to be used inside your CI process.

docker-image-size-limit Limit your docker image size with a simple CLI command. Perfect to be used inside your CI process. Read the announcing post. I

wemake.services 102 Dec 14, 2022
CLI based Crunchyroll Account Checker Proxyless written in python from scratch.

A tool for checking Combolist of Crunchyroll accounts without proxies, It is written in Python from Scratch ,i.e, no external module is used rather than inbuilt Python modules.

Abhijeet 8 Dec 13, 2022
pls is a better ls for developers, pronounced /pliːz/ as in 'please'

pls is a better ls for developers. The "p" stands for ("pro" as in "professional"/"programmer") or "prettier". It works in a manner similar to ls, in

Dhruv Bhanushali 572 Dec 28, 2022
A library for creating text-based graphs in the terminal

tplot is a Python package for creating text-based graphs. Useful for visualizing data to the terminal or log files.

Jeroen Delcour 164 Dec 14, 2022
A collection of command-line interface games written in python

Command Line Interface Python Games Collection of some starter python game projects for beginners How to play these games Clone this repository git cl

Paras Gupta 7 Jun 06, 2022
Chopper: An Automated Security Headers Analyzer

____ _ _ / ___| |__ ___ _ __ _ __ ___ _ __| | | | | '_ \ / _ \| '_ \| '_ \ / _ \ '__| | | |___| | | | (_) |

Kamran Saifullah (Frog Man) 2 Nov 27, 2022
Faza - Faza terminal, Faza help to beginners for pen testing

Faza terminal simple tool for pen testers Use small letter only for commands Don't use space after command 'help' for more information Installation gi

Ag3ntQ 5 Feb 20, 2022
A CLI for creating styled-components for React projects quickly

new-component Ian Cleary (iancleary) Description Welcome! This is a CLI for creating styled-components for React projects quickly. Note: I've rewrote

Ian Cleary (he/him/his) 1 Feb 15, 2022