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
Konsave lets use save your KDE Plasma customizatios and restore them very easily!

Konsave (Save Plasma Customization) A CLI program that will let you save and apply your KDE Plasma customizations with just one command! Als

439 Jan 02, 2023
Command line util for grep.app - Search across a half million git repos

grepgithub Command line util for grep.app - Search across a half million git repos Grepgithub uses grep.app API to search GitHub repositories, providi

Nenad Popovic 18 Dec 28, 2022
liquidctl – liquid cooler control Cross-platform tool and drivers for liquid coolers and other devices

Cross-platform CLI and Python drivers for AIO liquid coolers and other devices

1.7k Jan 08, 2023
A simple and easy-to-use CLI parse tool.

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

AbsentM 1 Mar 04, 2022
Tstock - Check stocks from the terminal

tstock - Check stocks from the terminal! 📈 tstock is a tool to easily generate stock charts from the command line. Just type tstock aapl to get a 3 m

Gabe Banks 502 Dec 30, 2022
A dec-bin converter uses 2's complement.

2's Complement Dec-Bin Converter A dec-bin converter uses 2's complement. Visit my Medium Post. What is 2's complement? Two's complement is the most c

Khaw Chi Hun (Jacky) 9 Mar 01, 2022
Ntfy - 🖥️📱🔔 A utility for sending notifications, on demand and when commands finish.

About ntfy ntfy brings notification to your shell. It can automatically provide desktop notifications when long running commands finish or it can send

Daniel Schep 4.5k Jan 01, 2023
🌈 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
DShell, a tool that combines with discord.py and Jishaku to present to you, shell channels.

Discord shell or dshell for short is a Python package that combines with discord.py and Jishaku to transform an ordinary Discord channel into one capable of running bash commands using a Discord bot.

11 Nov 15, 2022
👻 Ghoul is an easy to use information service, allowing you to get/add information on someone or something directly from your terminal.

👻 Ghoul is an easy to use information service, allowing you to get/add information on someone or something directly from your terminal. It c

Billy 11 Nov 10, 2021
git-partial-submodule is a command-line script for setting up and working with submodules while enabling them to use git's partial clone and sparse checkout features.

Partial Submodules for Git git-partial-submodule is a command-line script for setting up and working with submodules while enabling them to use git's

Nathan Reed 15 Sep 22, 2022
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
Hack-All is a simple CLI tool that helps ethical-hackers to make a reverse connection without knowing the target device in use is it computer or phone

Hack-All is a simple CLI tool that helps ethical-hackers to make a reverse connection without knowing the target device in use is it computer

LightYagami17 5 Nov 22, 2022
Execute shell command lines in parallel on Slurm, S(on) of Grid Engine (SGE), PBS/Torque clusters

qbatch Execute shell command lines in parallel on Slurm, S(on) of Grid Engine (SGE), PBS/Torque clusters qbatch is a tool for executing commands in pa

Jon Pipitone 26 Dec 12, 2022
A simple note taker CLI program written in python

note-taker A simple note taker program written in python This allows you to snip your todo's, notes, and your tasks easily without extra charges Requi

marcusz 4 Nov 02, 2021
PipeCat - A command line Youtube music player written in python.

A command line Youtube music player written in python. It's an app written for Linux. It also supports offline playlists that are stored in a

34 Nov 27, 2022
An interactive cheatsheet tool for the command-line

navi An interactive cheatsheet tool for the command-line. navi allows you to browse through cheatsheets (that you may write yourself or download from

Denis Isidoro 12.2k Dec 31, 2022
CLI tool that helps manage shell libraries.

shmgr CLI tool that helps manage shell libraries. Badges 📛 project status badges: version badges: tools / frameworks used by test suite (i.e. used by

Bryan Bugyi 0 Dec 15, 2021
instant coding answers via the command line

howdoi instant coding answers via the command line Sherlock, your neighborhood command-line sloth sleuth. Are you a hack programmer? Do you find yours

Benjamin Gleitzman 9.8k Jan 08, 2023