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
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
organize your books on the command line

organize your books on the command line

Ben Winston 19 Jan 21, 2022
Sebuah tools agar tydak menjadi sider :v vrohh

Sebuah tools agar tydak menjadi sider :v vrohh

xN7-SEVEN 1 Mar 27, 2022
This is a Command Line program to interact with your NFTs, Cryptocurrencies etc

This is a Command Line program to interact with your NFTs, Cryptocurrencies etc. via the ThirdWeb Platform. This is just a fun little project that I made to be able to connect to blockchains and Web3

Arpan Pandey 5 Oct 02, 2022
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
Custom 64 bit shellcode encoder that evades detection and removes some common badchars (\x00\x0a\x0d\x20)

x64-shellcode-encoder Custom 64 bit shellcode encoder that evades detection and removes some common badchars (\x00\x0a\x0d\x20) Usage Using a generato

Cole Houston 2 Jan 26, 2022
Rdwcli - Car list cli app with python

Rdwcli - Car list cli app with python

Arie Twigt 1 Feb 02, 2022
Make tree planting a part of your daily workflow. 🌳

Continuous Reforestation Make tree planting a part of your daily workflow. 🌳 A GitHub Action for planting trees within your development workflow usin

protontypes 168 Dec 22, 2022
Another (unofficial) Qt CLI Installer on multi-platforms

Another Qt installer(aqt) Release: Documentation: Test status: and Coverage: This is a utility alternative to the official graphical Qt installer, for

Hiroshi Miura 528 Jan 02, 2023
This is an app for creating your own color scheme for Termux!

Termux Terminal Theme Creator [WIP] If you need help on how to use the program, you can either create a GitHub issue or join this temporary Discord se

asxlvm 3 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
This is a CLI program which can help you generate your own QR Code.

Python-QR-code-generator This is a CLI program which can help you generate your own QR Code. Single.py This will allow you only to input a single mess

1 Dec 24, 2021
This tool is a free and unlimited python CLI for google translate. based on google_trans_new.

GoTransPy A free and unlimited python CLI for google translate based on google_trans_new. It's very easy to use and solve the problem that the old api

Youssef Mohamed 2 Jan 10, 2022
Command Line For Truecaller Written In Python

Truecaller-CLI Command Line Version For Truecaller Written In Python Never Login With A Number Over And Over Or It Will Be Banned Because Program Is S

Sandaru Ashen Fernando 16 Nov 08, 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
A CLI Spigot plugin manager that adheres to Unix conventions and Python best practices.

Spud A cross-platform, Spigot plugin manager that adheres to the Unix philosophy and Python best practices. Some focuses of the project are: Easy and

Tommy Dougiamas 9 Dec 02, 2022
A powerful Minecraft command library.

Mecha A powerful Minecraft command library. from mecha import Mecha

32 Dec 10, 2022
dotfilery, configuration, environment settings, automation, etc.

┌┬┐┌─┐┌─┐┌─┐┬ ┬┌┬┐┬ ┬┬┌─┐ │││├┤ │ ┬├─┤│ │ │ ├─┤││ :: bits & bobs, dots & things. ┴ ┴└─┘└─┘┴ ┴┴─┘┴ ┴ ┴ ┴┴└─┘ @megalithic 🚀 Instal

Seth Messer 89 Dec 25, 2022
The Prisma Cloud CLI is a command line interface for Prisma Cloud by Palo Alto Networks.

Prisma Cloud CLI The Prisma Cloud CLI is a command line interface for Prisma Cloud by Palo Alto Networks. Support This project has been developed by P

Palo Alto Networks 13 Oct 14, 2022
gcp-doctor - Diagnostics for Google Cloud Platform

gcp-doctor is a command-line diagnostics tool for GCP customers. It finds and helps to fix common issues in Google Cloud Platform projects. It is used to test projects against a wide range of best-pr

Google Cloud Platform 185 Dec 20, 2022