# -*- coding: utf-8 -*-
from setuptools import setup

packages = \
['musicbot', 'musicbot.commands', 'musicbot.music']

package_data = \
{'': ['*'], 'musicbot': ['schema/*']}

install_requires = \
['attrs>=20.1.0,<21.0.0',
 'click-skeleton>=0.7.1,<0.8.0',
 'colorlog>=4.1.0,<5.0.0',
 'enlighten>=1.6.1,<2.0.0',
 'graphql-py>=0.7.1,<0.8.0',
 'humanfriendly>=8.1,<9.0',
 'jellyfish>=0.8.2,<0.9.0',
 'logging-tree>=1.8,<2.0',
 'mutagen>=1.44.0,<2.0.0',
 'prettytable>=0.7.2,<0.8.0',
 'prompt_toolkit>=3.0.2,<4.0.0',
 'pyacoustid>=1.1,<2.0',
 'pydub>=0.24.0,<0.25.0',
 'pyrsistent==0.17.2',
 'python-slugify>=4.0.0,<5.0.0',
 'python-vlc>=3.0,<4.0',
 'requests>=2.24.0,<3.0.0',
 'spotipy>=2.10.0,<3.0.0',
 'watchdog>=0.10.0,<0.11.0',
 'youtube-dl>=2020.1.24,<2021.0.0']

entry_points = \
{'console_scripts': ['musicbot = musicbot.main:main']}

setup_kwargs = {
    'name': 'musicbot',
    'version': '0.7.4',
    'description': 'Music swiss army knife',
    'long_description': '========\nMusicBot\n========\n+---------------+-----------------+\n|     Tools     |      Result     |\n+===============+=================+\n|     Codacy    |    |codacy|     |\n+---------------+-----------------+\n|     Coverage  |   |coverage|    |\n+---------------+-----------------+\n\n.. |codacy| image:: https://api.codacy.com/project/badge/Grade/621acf3309b24c538c40824f9af467de\n   :target: https://www.codacy.com/app/AdrienPensart/musicbot?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=AdrienPensart/musicbot&amp;utm_campaign=Badge_Grade\n   :alt: Codacy badge\n.. |coverage| image:: https://github.com/AdrienPensart/musicbot/blob/master/doc/coverage.svg\n   :alt: Coverage badge\n\nDescription\n-----------\nCLI / API / Website to manipulate music and create smart playlists, and play it !\n\nIt uses poetry and pyenv tools to manage project life and docker to test it.\n\nUnder the hood, there is a postgraphile API frontend backed by a postgresql database, it allow us\nto have users and security integrated.\n\nDev Environment\n---------------\n\n.. code-block:: bash\n\n  sudo apt install -y vlc libtag1-dev postgresql-server-dev-all ffmpeg python3-pip docker.io libchromaprint-tools libbz2-dev libsqlite3-dev llvm libncurses5-dev libncursesw5-dev tk-dev liblzma-dev libssl-dev libreadline-dev\n  sudo usermod -aG docker $(whoami)\n\n  git clone https://github.com/AdrienPensart/musicbot.git\n  cd musicbot\n\n  https://pyenv.run | bash\n  pyenv install --verbose $(cat .python-version) -ks\n  pyenv global $(cat .python-version)\n\n  # you should put that at your shell startup\n  eval "$(pyenv init -)"\n\n  python <(curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py)\n  poetry install\n\nTesting\n------------\n\n.. code-block:: bash\n\n  poetry run pytest\n  poetry run coverage-badge -f -o doc/coverage.svg\n\nHow to use\n------------\n\n.. code-block:: bash\n\n  poetry run docker-compose build --parallel\n  poetry run docker-compose up\n  musicbot user create --email your_email --password your_password --save\n  musicbot local scan /tests/fixtures/folder1 /tests/fixtures/folder2\n  musicbot local tracks\n\nLinting\n------------\n\n.. code-block:: bash\n\n  poetry run pylint musicbot tests doc\n\nDocumentation\n-------------\n\n.. code-block:: bash\n\n  poetry run rstcheck doc/help.rst\n  poetry run doc/gen.py > README.rst\n  poetry run rstcheck README.rst\n\n\nCommands\n--------\n.. code-block::\n\n  Usage: musicbot [OPTIONS] COMMAND [ARGS]...\n\n    Music swiss knife, new gen.\n\n  Options:\n    Global options: \n      -c, --config FILE                                Config file path  [default: ~/musicbot.ini]\n      -l, --log FILE                                   Log file path\n      -q, --quiet                                      Disable progress bars  [default: False]\n      -t, --timings                                    Set verbosity to info and show execution timings  [default: False]\n    Verbosity: [mutually_exclusive]\n      --debug                                          Same as "--verbosity debug"\n      --info                                           Same as "--verbosity info"\n      --warning                                        Same as "--verbosity warning"\n      --error                                          Same as "--verbosity error"\n      --critical                                       Same as "--verbosity critical"\n      --verbosity [debug|info|warning|error|critical]  Set verbosity level  [default: warning]\n    -V, --version                                      Show the version and exit.\n    -h, --help                                         Show this message and exit.\n\n  Commands:\n    completion    Shell completion\n    folder        Manage folders\n    help          Print help\n    local         Local music management\n    music (file)  Music file\n    spotify       Spotify tool\n    user          User management\n    version       Print version\n    youtube       Youtube tool\n\n\nmusicbot completion\n*******************\n.. code-block::\n\n  Usage: musicbot completion [OPTIONS] COMMAND [ARGS]...\n\n    Shell completion subcommand\n\n  Options:\n    -h, --help  Show this message and exit.\n\n  Commands:\n    help                   Print help\n    install                Install the click-completion-command completion\n    show (generate,print)  Show the click-completion-command completion code\n\n\nmusicbot completion install\n***************************\n.. code-block::\n\n  Usage: musicbot completion install [OPTIONS] [[bash|fish|zsh|powershell]] [PATH]\n\n    Auto install shell completion code in your rc file\n\n  Options:\n    -i, --case-insensitive / --no-case-insensitive  Case insensitive completion\n    --append / --overwrite                          Append the completion code to the file\n    -h, --help                                      Show this message and exit.\n\n\nmusicbot completion show\n************************\n.. code-block::\n\n  Usage: musicbot completion show [OPTIONS] [[bash|fish|zsh|powershell]]\n\n    Generate shell code to enable completion\n\n  Options:\n    -i, --case-insensitive / --no-case-insensitive  Case insensitive completion\n    -h, --help                                      Show this message and exit.\n\n\nmusicbot folder\n***************\n.. code-block::\n\n  Usage: musicbot folder [OPTIONS] COMMAND [ARGS]...\n\n    Manage folders\n\n  Options:\n    -h, --help  Show this message and exit.\n\n  Commands:\n    find                           Just list music files\n    flac2mp3                       Convert all files in folders to mp3\n    help                           Print help\n    inconsistencies (consistency)  Check music files consistency\n    tracks                         List tracks\n\n\nmusicbot folder find\n********************\n.. code-block::\n\n  Usage: musicbot folder find [OPTIONS] [FOLDERS]...\n\n    Just list music files\n\n  Options:\n    -h, --help  Show this message and exit.\n\n\nmusicbot folder flac2mp3\n************************\n.. code-block::\n\n  Usage: musicbot folder flac2mp3 [OPTIONS] [FOLDERS]...\n\n    Convert all files in folders to mp3\n\n  Options:\n    --folder DIRECTORY     Destination folder\n    --concurrency INTEGER  Number of coroutines  [default: 8]\n    --dry                  Take no real action  [default: False]\n    -h, --help             Show this message and exit.\n\n\nmusicbot folder inconsistencies\n*******************************\n.. code-block::\n\n  Usage: musicbot folder inconsistencies [OPTIONS] [FOLDERS]...\n\n    Check music files consistency\n\n  Options:\n    --dry                                               Take no real action  [default: False]\n    Check options: \n      --checks [no-title|no-artist|no-album|no-genre|no-rating|no-tracknumber|invalid-title|invalid-comment|invalid-path]\n                                                        Consistency tests  [default: no-title, no-artist, no-album, no-genre, no-rating, no-\n                                                        tracknumber, invalid-title, invalid-comment, invalid-path]\n\n      --fix                                             Fix musics\n    -h, --help                                          Show this message and exit.\n\n\nmusicbot folder tracks\n**********************\n.. code-block::\n\n  Usage: musicbot folder tracks [OPTIONS] [FOLDERS]...\n\n    List tracks\n\n  Options:\n    --output [table|json]  Output format  [default: table]\n    -h, --help             Show this message and exit.\n\n\nmusicbot help\n*************\n.. code-block::\n\n  Usage: musicbot help [OPTIONS] [COMMAND]...\n\n    Print help\n\n  Options:\n    -h, --help  Show this message and exit.\n\n\nmusicbot local\n**************\n.. code-block::\n\n  Usage: musicbot local [OPTIONS] COMMAND [ARGS]...\n\n    Local music management\n\n  Options:\n    -h, --help  Show this message and exit.\n\n  Commands:\n    bests                          Generate bests playlists with some rules\n    clean                          Clean all musics\n    count                          Count musics\n    execute                        Raw query\n    filter                         Print a filter\n    filters                        List filters\n    folders                        List folders\n    help                           Print help\n    inconsistencies (consistency)  Check music consistency\n    load-filters                   Load default filters\n    player (play)                  Music player\n    playlist                       Generate a new playlist\n    rescan                         Clean and load musics\n    scan                           Load musics\n    stats (stat)                   Generate some stats for music collection with filters\n    sync                           Copy selected musics with filters to destination folder\n    watch                          Watch files changes in folders\n\n\nmusicbot local bests\n********************\n.. code-block::\n\n  Usage: musicbot local bests [OPTIONS] FOLDER\n\n    Generate bests playlists with some rules\n\n  Options:\n    --prefix TEXT             Append prefix before each path (implies relative)\n    --suffix TEXT             Append this suffix to playlist name\n    --dry                     Take no real action  [default: False]\n    Auth options: \n      --graphql TEXT          GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT        User email\n      -p, --password TEXT     User password\n      -t, --token TEXT        User token\n    Filter options: \n      --name TEXT             Filter name\n      --limit INTEGER         Fetch a maximum limit of music\n      --youtubes TEXT         Select musics with a youtube link\n      --no-youtubes TEXT      Select musics without youtube link\n      --spotifys TEXT         Select musics with a spotifys link\n      --no-spotifys TEXT      Select musics without spotifys link\n      --formats TEXT          Select musics with file format\n      --no-formats TEXT       Filter musics without format\n      --keywords TEXT         Select musics with keywords\n      --no-keywords TEXT      Filter musics without keywords\n      --artists TEXT          Select musics with artists\n      --no-artists TEXT       Filter musics without artists\n      --albums TEXT           Select musics with albums\n      --no-albums TEXT        Filter musics without albums\n      --titles TEXT           Select musics with titles\n      --no-titles TEXT        Filter musics without titless\n      --genres TEXT           Select musics with genres\n      --no-genres TEXT        Filter musics without genres\n      --min-duration INTEGER  Minimum duration filter (hours:minutes:seconds)\n      --max-duration INTEGER  Maximum duration filter (hours:minutes:seconds))\n      --min-size INTEGER      Minimum file size filter (in bytes)\n      --max-size INTEGER      Maximum file size filter (in bytes)\n      --min-rating FLOAT      Minimum rating  [default: 0.0]\n      --max-rating FLOAT      Maximum rating  [default: 5.0]\n      --relative              Generate relatives paths\n      --shuffle               Randomize selection\n    -h, --help                Show this message and exit.\n\n\nmusicbot local clean\n********************\n.. code-block::\n\n  Usage: musicbot local clean [OPTIONS]\n\n    Clean all musics\n\n  Options:\n    Auth options: \n      --graphql TEXT       GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT     User email\n      -p, --password TEXT  User password\n      -t, --token TEXT     User token\n    -y, --yes              Confirm action\n    -h, --help             Show this message and exit.\n\n\nmusicbot local count\n********************\n.. code-block::\n\n  Usage: musicbot local count [OPTIONS]\n\n    Count musics\n\n  Options:\n    Auth options: \n      --graphql TEXT       GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT     User email\n      -p, --password TEXT  User password\n      -t, --token TEXT     User token\n    -h, --help             Show this message and exit.\n\n\nmusicbot local execute\n**********************\n.. code-block::\n\n  Usage: musicbot local execute [OPTIONS] QUERY\n\n    Raw query\n\n  Options:\n    Auth options: \n      --graphql TEXT       GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT     User email\n      -p, --password TEXT  User password\n      -t, --token TEXT     User token\n    -h, --help             Show this message and exit.\n\n\nmusicbot local filter\n*********************\n.. code-block::\n\n  Usage: musicbot local filter [OPTIONS] NAME\n\n    Print a filter\n\n  Options:\n    --output [table|json]  Output format  [default: table]\n    Auth options: \n      --graphql TEXT       GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT     User email\n      -p, --password TEXT  User password\n      -t, --token TEXT     User token\n    -h, --help             Show this message and exit.\n\n\nmusicbot local filters\n**********************\n.. code-block::\n\n  Usage: musicbot local filters [OPTIONS]\n\n    List filters\n\n  Options:\n    --output [table|json]  Output format  [default: table]\n    Auth options: \n      --graphql TEXT       GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT     User email\n      -p, --password TEXT  User password\n      -t, --token TEXT     User token\n    -h, --help             Show this message and exit.\n\n\nmusicbot local folders\n**********************\n.. code-block::\n\n  Usage: musicbot local folders [OPTIONS]\n\n    List folders\n\n  Options:\n    --output [table|json]  Output format  [default: table]\n    Auth options: \n      --graphql TEXT       GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT     User email\n      -p, --password TEXT  User password\n      -t, --token TEXT     User token\n    -h, --help             Show this message and exit.\n\n\nmusicbot local inconsistencies\n******************************\n.. code-block::\n\n  Usage: musicbot local inconsistencies [OPTIONS]\n\n    Check music consistency\n\n  Options:\n    Check options: \n      --checks [no-title|no-artist|no-album|no-genre|no-rating|no-tracknumber|invalid-title|invalid-comment|invalid-path]\n                                                        Consistency tests  [default: no-title, no-artist, no-album, no-genre, no-rating, no-\n                                                        tracknumber, invalid-title, invalid-comment, invalid-path]\n\n      --fix                                             Fix musics\n    --dry                                               Take no real action  [default: False]\n    Auth options: \n      --graphql TEXT                                    GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT                                  User email\n      -p, --password TEXT                               User password\n      -t, --token TEXT                                  User token\n    Filter options: \n      --name TEXT                                       Filter name\n      --limit INTEGER                                   Fetch a maximum limit of music\n      --youtubes TEXT                                   Select musics with a youtube link\n      --no-youtubes TEXT                                Select musics without youtube link\n      --spotifys TEXT                                   Select musics with a spotifys link\n      --no-spotifys TEXT                                Select musics without spotifys link\n      --formats TEXT                                    Select musics with file format\n      --no-formats TEXT                                 Filter musics without format\n      --keywords TEXT                                   Select musics with keywords\n      --no-keywords TEXT                                Filter musics without keywords\n      --artists TEXT                                    Select musics with artists\n      --no-artists TEXT                                 Filter musics without artists\n      --albums TEXT                                     Select musics with albums\n      --no-albums TEXT                                  Filter musics without albums\n      --titles TEXT                                     Select musics with titles\n      --no-titles TEXT                                  Filter musics without titless\n      --genres TEXT                                     Select musics with genres\n      --no-genres TEXT                                  Filter musics without genres\n      --min-duration INTEGER                            Minimum duration filter (hours:minutes:seconds)\n      --max-duration INTEGER                            Maximum duration filter (hours:minutes:seconds))\n      --min-size INTEGER                                Minimum file size filter (in bytes)\n      --max-size INTEGER                                Maximum file size filter (in bytes)\n      --min-rating FLOAT                                Minimum rating  [default: 0.0]\n      --max-rating FLOAT                                Maximum rating  [default: 5.0]\n      --relative                                        Generate relatives paths\n      --shuffle                                         Randomize selection\n    -h, --help                                          Show this message and exit.\n\n\nmusicbot local load-filters\n***************************\n.. code-block::\n\n  Usage: musicbot local load-filters [OPTIONS]\n\n    Load default filters\n\n  Options:\n    Auth options: \n      --graphql TEXT       GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT     User email\n      -p, --password TEXT  User password\n      -t, --token TEXT     User token\n    -h, --help             Show this message and exit.\n\n\nmusicbot local player\n*********************\n.. code-block::\n\n  Usage: musicbot local player [OPTIONS]\n\n    Music player\n\n  Options:\n    Auth options: \n      --graphql TEXT          GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT        User email\n      -p, --password TEXT     User password\n      -t, --token TEXT        User token\n    Filter options: \n      --name TEXT             Filter name\n      --limit INTEGER         Fetch a maximum limit of music\n      --youtubes TEXT         Select musics with a youtube link\n      --no-youtubes TEXT      Select musics without youtube link\n      --spotifys TEXT         Select musics with a spotifys link\n      --no-spotifys TEXT      Select musics without spotifys link\n      --formats TEXT          Select musics with file format\n      --no-formats TEXT       Filter musics without format\n      --keywords TEXT         Select musics with keywords\n      --no-keywords TEXT      Filter musics without keywords\n      --artists TEXT          Select musics with artists\n      --no-artists TEXT       Filter musics without artists\n      --albums TEXT           Select musics with albums\n      --no-albums TEXT        Filter musics without albums\n      --titles TEXT           Select musics with titles\n      --no-titles TEXT        Filter musics without titless\n      --genres TEXT           Select musics with genres\n      --no-genres TEXT        Filter musics without genres\n      --min-duration INTEGER  Minimum duration filter (hours:minutes:seconds)\n      --max-duration INTEGER  Maximum duration filter (hours:minutes:seconds))\n      --min-size INTEGER      Minimum file size filter (in bytes)\n      --max-size INTEGER      Maximum file size filter (in bytes)\n      --min-rating FLOAT      Minimum rating  [default: 0.0]\n      --max-rating FLOAT      Maximum rating  [default: 5.0]\n      --relative              Generate relatives paths\n      --shuffle               Randomize selection\n    -h, --help                Show this message and exit.\n\n\nmusicbot local playlist\n***********************\n.. code-block::\n\n  Usage: musicbot local playlist [OPTIONS] [PATH]\n\n    Generate a new playlist\n\n  Options:\n    --dry                      Take no real action  [default: False]\n    --output [json|m3u|table]  Output format  [default: table]\n    Auth options: \n      --graphql TEXT           GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT         User email\n      -p, --password TEXT      User password\n      -t, --token TEXT         User token\n    Filter options: \n      --name TEXT              Filter name\n      --limit INTEGER          Fetch a maximum limit of music\n      --youtubes TEXT          Select musics with a youtube link\n      --no-youtubes TEXT       Select musics without youtube link\n      --spotifys TEXT          Select musics with a spotifys link\n      --no-spotifys TEXT       Select musics without spotifys link\n      --formats TEXT           Select musics with file format\n      --no-formats TEXT        Filter musics without format\n      --keywords TEXT          Select musics with keywords\n      --no-keywords TEXT       Filter musics without keywords\n      --artists TEXT           Select musics with artists\n      --no-artists TEXT        Filter musics without artists\n      --albums TEXT            Select musics with albums\n      --no-albums TEXT         Filter musics without albums\n      --titles TEXT            Select musics with titles\n      --no-titles TEXT         Filter musics without titless\n      --genres TEXT            Select musics with genres\n      --no-genres TEXT         Filter musics without genres\n      --min-duration INTEGER   Minimum duration filter (hours:minutes:seconds)\n      --max-duration INTEGER   Maximum duration filter (hours:minutes:seconds))\n      --min-size INTEGER       Minimum file size filter (in bytes)\n      --max-size INTEGER       Maximum file size filter (in bytes)\n      --min-rating FLOAT       Minimum rating  [default: 0.0]\n      --max-rating FLOAT       Maximum rating  [default: 5.0]\n      --relative               Generate relatives paths\n      --shuffle                Randomize selection\n    -h, --help                 Show this message and exit.\n\n\nmusicbot local rescan\n*********************\n.. code-block::\n\n  Usage: musicbot local rescan [OPTIONS] [FOLDERS]...\n\n    Clean and load musics\n\n  Options:\n    Auth options: \n      --graphql TEXT       GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT     User email\n      -p, --password TEXT  User password\n      -t, --token TEXT     User token\n    -h, --help             Show this message and exit.\n\n\nmusicbot local scan\n*******************\n.. code-block::\n\n  Usage: musicbot local scan [OPTIONS] [FOLDERS]...\n\n    Load musics\n\n  Options:\n    Auth options: \n      --graphql TEXT       GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT     User email\n      -p, --password TEXT  User password\n      -t, --token TEXT     User token\n    -h, --help             Show this message and exit.\n\n\nmusicbot local stats\n********************\n.. code-block::\n\n  Usage: musicbot local stats [OPTIONS]\n\n    Generate some stats for music collection with filters\n\n  Options:\n    --output [table|json]     Output format  [default: table]\n    Auth options: \n      --graphql TEXT          GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT        User email\n      -p, --password TEXT     User password\n      -t, --token TEXT        User token\n    Filter options: \n      --name TEXT             Filter name\n      --limit INTEGER         Fetch a maximum limit of music\n      --youtubes TEXT         Select musics with a youtube link\n      --no-youtubes TEXT      Select musics without youtube link\n      --spotifys TEXT         Select musics with a spotifys link\n      --no-spotifys TEXT      Select musics without spotifys link\n      --formats TEXT          Select musics with file format\n      --no-formats TEXT       Filter musics without format\n      --keywords TEXT         Select musics with keywords\n      --no-keywords TEXT      Filter musics without keywords\n      --artists TEXT          Select musics with artists\n      --no-artists TEXT       Filter musics without artists\n      --albums TEXT           Select musics with albums\n      --no-albums TEXT        Filter musics without albums\n      --titles TEXT           Select musics with titles\n      --no-titles TEXT        Filter musics without titless\n      --genres TEXT           Select musics with genres\n      --no-genres TEXT        Filter musics without genres\n      --min-duration INTEGER  Minimum duration filter (hours:minutes:seconds)\n      --max-duration INTEGER  Maximum duration filter (hours:minutes:seconds))\n      --min-size INTEGER      Minimum file size filter (in bytes)\n      --max-size INTEGER      Maximum file size filter (in bytes)\n      --min-rating FLOAT      Minimum rating  [default: 0.0]\n      --max-rating FLOAT      Maximum rating  [default: 5.0]\n      --relative              Generate relatives paths\n      --shuffle               Randomize selection\n    -h, --help                Show this message and exit.\n\n\nmusicbot local sync\n*******************\n.. code-block::\n\n  Usage: musicbot local sync [OPTIONS] DESTINATION\n\n    Copy selected musics with filters to destination folder\n\n  Options:\n    --dry                     Take no real action  [default: False]\n    Auth options: \n      --graphql TEXT          GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT        User email\n      -p, --password TEXT     User password\n      -t, --token TEXT        User token\n    Filter options: \n      --name TEXT             Filter name\n      --limit INTEGER         Fetch a maximum limit of music\n      --youtubes TEXT         Select musics with a youtube link\n      --no-youtubes TEXT      Select musics without youtube link\n      --spotifys TEXT         Select musics with a spotifys link\n      --no-spotifys TEXT      Select musics without spotifys link\n      --formats TEXT          Select musics with file format\n      --no-formats TEXT       Filter musics without format\n      --keywords TEXT         Select musics with keywords\n      --no-keywords TEXT      Filter musics without keywords\n      --artists TEXT          Select musics with artists\n      --no-artists TEXT       Filter musics without artists\n      --albums TEXT           Select musics with albums\n      --no-albums TEXT        Filter musics without albums\n      --titles TEXT           Select musics with titles\n      --no-titles TEXT        Filter musics without titless\n      --genres TEXT           Select musics with genres\n      --no-genres TEXT        Filter musics without genres\n      --min-duration INTEGER  Minimum duration filter (hours:minutes:seconds)\n      --max-duration INTEGER  Maximum duration filter (hours:minutes:seconds))\n      --min-size INTEGER      Minimum file size filter (in bytes)\n      --max-size INTEGER      Maximum file size filter (in bytes)\n      --min-rating FLOAT      Minimum rating  [default: 0.0]\n      --max-rating FLOAT      Maximum rating  [default: 5.0]\n      --relative              Generate relatives paths\n      --shuffle               Randomize selection\n    -h, --help                Show this message and exit.\n\n\nmusicbot local watch\n********************\n.. code-block::\n\n  Usage: musicbot local watch [OPTIONS]\n\n    Watch files changes in folders\n\n  Options:\n    Auth options: \n      --graphql TEXT       GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT     User email\n      -p, --password TEXT  User password\n      -t, --token TEXT     User token\n    -h, --help             Show this message and exit.\n\n\nmusicbot music\n**************\n.. code-block::\n\n  Usage: musicbot music [OPTIONS] COMMAND [ARGS]...\n\n    Music file\n\n  Options:\n    -h, --help  Show this message and exit.\n\n  Commands:\n    add-keywords                   Add keywords to music\n    delete-keywords                Delete keywords to music\n    fingerprint                    Print music fingerprint\n    flac2mp3                       Convert flac music to mp3\n    help                           Print help\n    inconsistencies (consistency)  Check music consistency\n    set-tags                       Set music title\n    tags                           Print music tags\n\n\nmusicbot music add-keywords\n***************************\n.. code-block::\n\n  Usage: musicbot music add-keywords [OPTIONS] PATH [KEYWORDS]...\n\n    Add keywords to music\n\n  Options:\n    --dry       Take no real action  [default: False]\n    -h, --help  Show this message and exit.\n\n\nmusicbot music delete-keywords\n******************************\n.. code-block::\n\n  Usage: musicbot music delete-keywords [OPTIONS] PATH [KEYWORDS]...\n\n    Delete keywords to music\n\n  Options:\n    --dry       Take no real action  [default: False]\n    -h, --help  Show this message and exit.\n\n\nmusicbot music fingerprint\n**************************\n.. code-block::\n\n  Usage: musicbot music fingerprint [OPTIONS] PATH\n\n    Print music fingerprint\n\n  Options:\n    --acoustid-api-key TEXT  AcoustID API Key\n    -h, --help               Show this message and exit.\n\n\nmusicbot music flac2mp3\n***********************\n.. code-block::\n\n  Usage: musicbot music flac2mp3 [OPTIONS] PATH\n\n    Convert flac music to mp3\n\n  Options:\n    --folder DIRECTORY  Destination folder\n    --dry               Take no real action  [default: False]\n    -h, --help          Show this message and exit.\n\n\nmusicbot music inconsistencies\n******************************\n.. code-block::\n\n  Usage: musicbot music inconsistencies [OPTIONS] PATH\n\n    Check music consistency\n\n  Options:\n    --folder DIRECTORY                                  Destination folder\n    --dry                                               Take no real action  [default: False]\n    Check options: \n      --checks [no-title|no-artist|no-album|no-genre|no-rating|no-tracknumber|invalid-title|invalid-comment|invalid-path]\n                                                        Consistency tests  [default: no-title, no-artist, no-album, no-genre, no-rating, no-\n                                                        tracknumber, invalid-title, invalid-comment, invalid-path]\n\n      --fix                                             Fix musics\n    -h, --help                                          Show this message and exit.\n\n\nmusicbot music set-tags\n***********************\n.. code-block::\n\n  Usage: musicbot music set-tags [OPTIONS] PATH\n\n    Set music title\n\n  Options:\n    --dry              Take no real action  [default: False]\n    Music options: \n      --keywords TEXT  Keywords\n      --artist TEXT    Artist\n      --album TEXT     Album\n      --title TEXT     Title\n      --genre TEXT     Genre\n      --number TEXT    Track number\n      --rating TEXT    Rating\n    -h, --help         Show this message and exit.\n\n\nmusicbot music tags\n*******************\n.. code-block::\n\n  Usage: musicbot music tags [OPTIONS] PATH\n\n    Print music tags\n\n  Options:\n    -h, --help  Show this message and exit.\n\n\nmusicbot spotify\n****************\n.. code-block::\n\n  Usage: musicbot spotify [OPTIONS] COMMAND [ARGS]...\n\n    Spotify tool\n\n  Options:\n    -h, --help  Show this message and exit.\n\n  Commands:\n    diff       Diff between local and spotify\n    help       Print help\n    playlist   Show playlist\n    playlists  List playlists\n    tracks     Show tracks\n\n\nmusicbot spotify diff\n*********************\n.. code-block::\n\n  Usage: musicbot spotify diff [OPTIONS]\n\n    Diff between local and spotify\n\n  Options:\n    Auth options: \n      --graphql TEXT             GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT           User email\n      -p, --password TEXT        User password\n      -t, --token TEXT           User token\n    Spotify options: \n      --username TEXT            Spotify username\n      --client-id TEXT           Spotify client ID\n      --client-secret TEXT       Spotify client secret\n      --token TEXT               Spotify token\n      --cache-path FILE          Spotify cache path\n      --scopes TEXT              Spotify scopes\n      --redirect-uri TEXT        Spotify redirect URI\n    --output [table|json]        Output format  [default: table]\n    --min-threshold FLOAT RANGE  Minimum distance threshold\n    --max-threshold FLOAT RANGE  Maximum distance threshold\n    -h, --help                   Show this message and exit.\n\n\nmusicbot spotify playlist\n*************************\n.. code-block::\n\n  Usage: musicbot spotify playlist [OPTIONS] NAME\n\n    Show playlist\n\n  Options:\n    Spotify options: \n      --username TEXT       Spotify username\n      --client-id TEXT      Spotify client ID\n      --client-secret TEXT  Spotify client secret\n      --token TEXT          Spotify token\n      --cache-path FILE     Spotify cache path\n      --scopes TEXT         Spotify scopes\n      --redirect-uri TEXT   Spotify redirect URI\n    --output [table|json]   Output format  [default: table]\n    -h, --help              Show this message and exit.\n\n\nmusicbot spotify playlists\n**************************\n.. code-block::\n\n  Usage: musicbot spotify playlists [OPTIONS]\n\n    List playlists\n\n  Options:\n    Spotify options: \n      --username TEXT       Spotify username\n      --client-id TEXT      Spotify client ID\n      --client-secret TEXT  Spotify client secret\n      --token TEXT          Spotify token\n      --cache-path FILE     Spotify cache path\n      --scopes TEXT         Spotify scopes\n      --redirect-uri TEXT   Spotify redirect URI\n    -h, --help              Show this message and exit.\n\n\nmusicbot spotify tracks\n***********************\n.. code-block::\n\n  Usage: musicbot spotify tracks [OPTIONS]\n\n    Show tracks\n\n  Options:\n    Spotify options: \n      --username TEXT       Spotify username\n      --client-id TEXT      Spotify client ID\n      --client-secret TEXT  Spotify client secret\n      --token TEXT          Spotify token\n      --cache-path FILE     Spotify cache path\n      --scopes TEXT         Spotify scopes\n      --redirect-uri TEXT   Spotify redirect URI\n    --output [table|json]   Output format  [default: table]\n    -h, --help              Show this message and exit.\n\n\nmusicbot user\n*************\n.. code-block::\n\n  Usage: musicbot user [OPTIONS] COMMAND [ARGS]...\n\n    User management\n\n  Options:\n    -h, --help  Show this message and exit.\n\n  Commands:\n    help                        Print help\n    list                        List users (admin)\n    login (token)               Authenticate user\n    register (add,create,new)   Register a new user\n    unregister (delete,remove)  Remove a user\n\n\nmusicbot user list\n******************\n.. code-block::\n\n  Usage: musicbot user list [OPTIONS]\n\n    List users (admin)\n\n  Options:\n    --output [table|json]            Output format  [default: table]\n    Admin options: \n      --graphql-admin TEXT           GraphQL endpoint  [default: http://127.0.0.1:5001/graphql]\n      --graphql-admin-user TEXT      GraphQL admin user (basic auth)\n      --graphql-admin-password TEXT  GraphQL admin password (basic auth)\n    -h, --help                       Show this message and exit.\n\n\nmusicbot user login\n*******************\n.. code-block::\n\n  Usage: musicbot user login [OPTIONS]\n\n    Authenticate user\n\n  Options:\n    -s, --save             Save to config file  [default: False]\n    User options: \n      --graphql TEXT       GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT     User email\n      -p, --password TEXT  User password\n    -h, --help             Show this message and exit.\n\n\nmusicbot user register\n**********************\n.. code-block::\n\n  Usage: musicbot user register [OPTIONS]\n\n    Register a new user\n\n  Options:\n    -s, --save             Save to config file  [default: False]\n    Register options: \n      --graphql TEXT       GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT     User email\n      -p, --password TEXT  User password\n      --first-name TEXT    User first name\n      --last-name TEXT     User last name\n    -h, --help             Show this message and exit.\n\n\nmusicbot user unregister\n************************\n.. code-block::\n\n  Usage: musicbot user unregister [OPTIONS]\n\n    Remove a user\n\n  Options:\n    Auth options: \n      --graphql TEXT       GraphQL endpoint  [default: http://127.0.0.1:5000/graphql]\n      -e, --email TEXT     User email\n      -p, --password TEXT  User password\n      -t, --token TEXT     User token\n    -h, --help             Show this message and exit.\n\n\nmusicbot version\n****************\n.. code-block::\n\n  Usage: musicbot version [OPTIONS]\n\n    Print version\n\n    Equivalent : -V\n\n  Options:\n    -h, --help  Show this message and exit.\n\n\nmusicbot youtube\n****************\n.. code-block::\n\n  Usage: musicbot youtube [OPTIONS] COMMAND [ARGS]...\n\n    Youtube tool\n\n  Options:\n    -h, --help  Show this message and exit.\n\n  Commands:\n    download     Download a youtube link with artist and title\n    find         Search a youtube link with artist and title\n    fingerprint  Fingerprint a youtube video\n    help         Print help\n    search       Search a youtube link with artist and title\n\n\nmusicbot youtube download\n*************************\n.. code-block::\n\n  Usage: musicbot youtube download [OPTIONS] ARTIST TITLE\n\n    Download a youtube link with artist and title\n\n  Options:\n    --path TEXT\n    -h, --help   Show this message and exit.\n\n\nmusicbot youtube find\n*********************\n.. code-block::\n\n  Usage: musicbot youtube find [OPTIONS] PATH\n\n    Search a youtube link with artist and title\n\n  Options:\n    --acoustid-api-key TEXT  AcoustID API Key\n    -h, --help               Show this message and exit.\n\n\nmusicbot youtube fingerprint\n****************************\n.. code-block::\n\n  Usage: musicbot youtube fingerprint [OPTIONS] URL\n\n    Fingerprint a youtube video\n\n  Options:\n    --acoustid-api-key TEXT  AcoustID API Key\n    -h, --help               Show this message and exit.\n\n\nmusicbot youtube search\n***********************\n.. code-block::\n\n  Usage: musicbot youtube search [OPTIONS] ARTIST TITLE\n\n    Search a youtube link with artist and title\n\n  Options:\n    -h, --help  Show this message and exit.\n',
    'author': 'Adrien Pensart',
    'author_email': 'crunchengine@gmail.com',
    'maintainer': None,
    'maintainer_email': None,
    'url': None,
    'packages': packages,
    'package_data': package_data,
    'install_requires': install_requires,
    'entry_points': entry_points,
    'python_requires': '>=3.8,<3.9',
}


setup(**setup_kwargs)
