Giter Site home page Giter Site logo

patillacode / converter-cli Goto Github PK

View Code? Open in Web Editor NEW
4.0 3.0 2.0 233 KB

Custom Python CLI for media conversion

Home Page: https://pypi.org/project/converter-cli/

License: Apache License 2.0

Python 100.00%
cli python custom-python-cli converter-cli media converter media-files

converter-cli's Introduction

Downloads

converter-cli

A media converter command line program in Python.

Purpose

This is a custom Python (3) CLI for converting media files

I've done this to make it easy to convert my media files into different formats, bitrates and whatnot without having to remember the ffmpeg syntax for each case.

It does NOT cover all ffmpeg options (I just wanted a few) but it is possible to add them.

Install

Plug & Play:

$ pip3 install converter-cli

If you want to play around with the code I'd recommend creating a virtual environment first (with python3):

$ mkvirtualenv --python=/usr/local/bin/python3 converter-cli

And then:

$ git clone https://github.com/patillacode/converter-cli.git

$ cd converter-cli

$ pip install -r requirements-dev.txt

$ python setup.py develop

Unit Tests

$ py.test tests

Usage

The idea is for the CLI to ask you for the necessary information in order to work, the only thing you should know is that if what you are interested in is converting audio you should use the audio command:

$ converter-cli audio

If you are interested in converting video files then use command video:

$ converter-cli video

Full command list follows:

Usage:
    converter-cli hello
    converter-cli audio
    converter-cli audio [-m | --multiple] [--verbose] [-n | --no-confirm]
    converter-cli video
    converter-cli video [-m | --multiple] [--verbose] [-n | --no-confirm]
    converter-cli -h | --help
    converter-cli -v | --version

Options:
    -h --help                         Show this screen.
    -v --version                      Show version.
    -m --multiple                     Convert all files within a given folder
    -n --no-confirm                   Avoid user confirmation before converting
    --verbose                         Redirect converting process to stdout

By default the CLI will be used to convert one file, but the -m/--multiple option will allow you to do multiple files at once:

$ converter-cli video -m

Also by default, the CLi will hide the output of the ffmpeg command in favor of a more readable custom line, unless the --verbose option is specified:

$ converter-cli audio --verbose

Examples

Convert a .wav audio file into a .mp3 file:

$ converter-cli audio

You will be presented with the following:

Please choose an option:
    1) Convert to .mp3 (320k)
    2) Convert to .wav
Enter option number:

Insert the option number in this case 1 and this will show up:

Enter path to source file:

Here we will enter something like /path/to/file/music.wav and hit enter.

Enter path to destination folder (Enter for same folder as source):

Notice if your click enter without specifying any path then the output file will be in the same directory as the source file /path/to/file/

Next thing to happen will be (unless the --no-confirm option was given):

                  WARNING

Output file will be called the same as the original
with the proper extension (.mp4, .mp3, ...) which
may cause an overwrite - YOU HAVE BEEN WARNED


You are about to convert file /path/to/file/music.wav into a .mp3 file to be saved in folder /path/to/file/

Please confirm action above [y/n]:

I have added the confirmation process with the warning message to give the user the option to review what is going to happen, I might add the option in the future to bypass this.

You can just hit enter, or type y and hit enter, anything else will stop the process.

Once you accept, this will show up:

Converting source /path/to/file/music.wav into output /path/to/file/music.mp3 ...

(っ◕‿◕)っ    Conversion completed    ⊂(´・◡・⊂ )∘˚

As you can see the CLI asks the user for all needed data and provides the user with explicit messages of what is happening. The rest of the commands have the same flow, just read what it asks for :)

Demo

asciicast

Dependencies

Contributing

Feel free to report any bugs or submit feature requests.

Pull requests are welcome as well.

Special thanks

converter-cli's People

Contributors

kifirkin avatar patillacode avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

endian675

converter-cli's Issues

User should be able to change output file name

A user should be given the option to change the output filename to avoid overwriting.
No only to avoid that, but maybe just for the hell of it 😄

This should be added as an enhancement by default and then maybe add an option that would make the conversion use the same name as the source (like it does currently)
Maybe the option should be to give the option of changing the name instead?

Also, I need to think about how to handle this when converting multiple files, maybe something like converted_file_1 ?

Missing unit testing

This project needs tests, at least unit tests for utils (this will help with any further refactoring)

Add a test command

A test command would be helpful for running it after installing.
Just to check conversion with default values for user input.

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.