Git Product home page Git Product logo

skunkbooth's Introduction

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

ad

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/SkunkBooth.git
cd SkunkBooth

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.

skunkbooth's People

Contributors

brilam avatar davidy22 avatar dhananjaylatkar avatar garuna-m6 avatar josflesan avatar shriram1998 avatar trisanu-007 avatar vivekashok1221 avatar zedeldi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

skunkbooth's Issues

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.

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 ?

Filter UI

Image filter selection and application UI

[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.

[BUG] Viewfinder image is cropped

Describe the bug
Viewfinder image is cropped

Steps To Reproduce
Look at viewfinder

Expected behavior
Re size the image instead of cropping

[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.

[FEATURE] New fitler: grayscale

After reading issue #69, I felt it would be nice to have a grayscale filter- because grayscale images are minimalistic and is a pretty standard filter.
I haven't looked into the implementation but I guess it should be simple enough.
It would be appreciated if this issue could be assigned to me.

Add unit tests

Write unit tests for existing functions for some peace of mind

Settings page

Make a settings page and config saving so user can choose things like output directory, file format, and whatever future thing could be appropriate for a settings dialog

Keyboard shortcuts

Add keybindings for some of the common shortcuts, CTRL+Q and CTRL+W to close, q and esc to close, pgup, pgdown, home and end for navigating filters, CTRL+arrow keys for navigating main menu and filters.

Clean up main.py

main.py has become a bit of a dumping ground, clean it up a little bit by moving what should be moved out into other files.

Filter framework

Build out framework to support adding, and applying image filters to ASCII grids

Split up UI layout code

frames.py currently contains the entire UI of the program. Split it up into the individual screens of the program.

[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.

Photo saving

Convert our ASCII to one image format as well as saving to text.

[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

Make nice asciimatics screen for when the program is closing but still saving video

When recording and video rendering and video writing are working in parallel, the video writing portion of the program will lag behind. If the program is closed while there are still video frames to save, the program will display a message and continue to run while it saves video. Make the end screen look a little prettier and more informative.

Implement framerate cap

Implement a framerate cap, and set a lower video output framerate if the user's computer is ancient and can't handle the capped framerate.

[FEATURE] Improve Selection of Effects

Is your feature request related to a problem? Please describe.
When you go to the effects panel and select effects like Question-mark, Arrows, etc. Only the effect last selected is applied but the other effects still remain checked.

Describe the solution you'd like
When a particular effect overrides other effects, they should be unchecked from the list.

Video saving

Convert the ASCII grid stream to one video format

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.