{"id":25602770,"url":"https://github.com/cheapnightbot/yutipy","last_synced_at":"2026-06-09T13:01:12.377Z","repository":{"id":278691173,"uuid":"936462989","full_name":"CheapNightbot/yutipy","owner":"CheapNightbot","description":"A simple Python package to interact with various music platforms APIs.","archived":false,"fork":false,"pushed_at":"2026-06-03T02:31:26.000Z","size":420,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-03T03:14:40.522Z","etag":null,"topics":["api-wrapper","music","music-information-retrieval","python-package","python3","yutipy"],"latest_commit_sha":null,"homepage":"https://yutipy.readthedocs.io/en/latest/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CheapNightbot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"ko_fi":"cheapnightbot"}},"created_at":"2025-02-21T06:05:55.000Z","updated_at":"2026-06-03T02:31:30.000Z","dependencies_parsed_at":"2025-02-21T06:33:11.346Z","dependency_job_id":"d78daadf-776c-4df4-b74b-7bd4a113ec8d","html_url":"https://github.com/CheapNightbot/yutipy","commit_stats":null,"previous_names":["cheapnightbot/yutipy"],"tags_count":58,"template":false,"template_full_name":null,"purl":"pkg:github/CheapNightbot/yutipy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CheapNightbot%2Fyutipy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CheapNightbot%2Fyutipy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CheapNightbot%2Fyutipy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CheapNightbot%2Fyutipy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CheapNightbot","download_url":"https://codeload.github.com/CheapNightbot/yutipy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CheapNightbot%2Fyutipy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34107866,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-wrapper","music","music-information-retrieval","python-package","python3","yutipy"],"created_at":"2025-02-21T17:24:00.285Z","updated_at":"2026-06-09T13:01:12.369Z","avatar_url":"https://github.com/CheapNightbot.png","language":"Python","funding_links":["https://ko-fi.com/cheapnightbot"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/CheapNightbot/yutipy/main/docs/_static/yutipy_header.png\" alt=\"yutipy\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/CheapNightbot/yutipy/actions/workflows/tests.yml\"\u003e\n\u003cimg alt=\"GitHub Actions Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/cheapnightbot/yutipy/pytest-unit-testing.yml?style=for-the-badge\u0026label=Pytest\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://yutipy.readthedocs.io/en/latest/\"\u003e\n\u003cimg src=\"https://img.shields.io/readthedocs/yutipy?style=for-the-badge\" alt=\"Documentation Status\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://pypi.org/project/yutipy/\"\u003e\n\u003cimg src=\"https://img.shields.io/pypi/v/yutipy?style=for-the-badge\" alt=\"PyPI\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/CheapNightbot/yutipy/blob/master/LICENSE\"\u003e\n\u003cimg src=\"https://img.shields.io/github/license/CheapNightbot/yutipy?style=for-the-badge\" alt=\"License\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/CheapNightbot/yutipy/stargazers\"\u003e\n\u003cimg src=\"https://img.shields.io/github/stars/CheapNightbot/yutipy?style=for-the-badge\" alt=\"Stars\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/CheapNightbot/yutipy/issues\"\u003e\n\u003cimg src=\"https://img.shields.io/github/issues/CheapNightbot/yutipy?style=for-the-badge\" alt=\"Issues\" /\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\n\u003e **Looking for an easy-to-use API or GUI to search for music, instead of using the CLI or building your own integration?**\n\u003e Check out [yutify](https://github.com/CheapNightbot/yutify) — it’s powered by yutipy!\n\nA _**simple**_ Python package to interact with various music platforms APIs.\n\n## Table of Contents\n\n- [Features](#features)\n    - [Available Music Platforms](#available-music-platforms)\n- [Installation](#installation)\n- [Usage Example](#usage-example)\n- [Command-Line Interface (CLI)](#command-line-interface-cli)\n    - [Search for Music](#search-for-music)\n        - [Options](#options)\n    - [Configuration Wizard](#configuration-wizard)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Features\n\n- Simple \u0026 Easy integration with popular music APIs.\n- Search for music by artist and song title across multiple platforms.\n- Async support for Deezer, iTunes, KKBOX, Spotify, and YouTube Music.\n- Authorize and access user resources easily.\n\n### Available Music Platforms\n\nRight now, the following music platforms are available in yutipy for searching music. New platforms will be added in the future.\nFeel free to request any music platform you would like me to add by opening an issue on [GitHub](https://github.com/CheapNightbot/yutipy/issues) or by emailing me.\n\n- `Deezer`: https://www.deezer.com\n- `iTunes`: https://music.apple.com\n- `KKBOX`: https://www.kkbox.com\n- `Lastfm`: https://last.fm\n- `Spotify`: https://spotify.com\n- `YouTube Music`: https://music.youtube.com\n\n## Installation\n\nYou can install the package using pip. Make sure you have Python 3.10 or higher installed.\n\n```bash\npip install -U yutipy\n```\n\n## Usage Example\n\nHere's a quick example of how to use the `yutipy` package to search for a song on **Deezer**:\n\n```python\nfrom yutipy.deezer import Deezer\n\nwith Deezer() as deezer:\n    result = deezer.search(\"Artist Name\", \"Song Title\")\n    print(result)\n```\n\nFor asynchronous usage, you can use the matching async service class from the ``yutipy.async_*`` modules. For example:\n\n```python\nimport asyncio\nfrom yutipy.async_deezer import AsyncDeezer\n\nasync def main():\n    async with AsyncDeezer() as deezer:\n        result = await deezer.search(\"Artist Name\", \"Song Title\")\n        print(result)\n\nasyncio.run(main())\n```\n\nFor more usage examples, see the [Usage Examples](https://yutipy.readthedocs.io/en/latest/usage_examples.html) page in docs.\n\n## Command-Line Interface (CLI)\n\nThe `yutipy` package includes a CLI tool that allows you to search for music directly from the command line and configure API keys interactively.\n\n### Search for Music\n\nYou can use the CLI tool to search for music across multiple platforms:\n\n```bash\nyutipy-cli --artist \"Rick Astley\" --song \"Never Gonna Give You Up\" --service spotify\n```\n\n#### Options:\n- `artist` (required): The name of the artist.\n- `song` (required): The title of the song.\n- `--service` (required): Specify a single service to search (e.g., `deezer`, `spotify`, `itunes`).\n- `--limit`: The number of results to retrieve (default: 5).\n- `--verbose`: Enable logging in the terminal.\n- `--version`: Show installed yutipy version and exit.\n\n### Configuration Wizard\n\nTo set up your API keys interactively, use the configuration wizard:\n\n```bash\nyutipy-config\n```\n\nThe wizard will guide you through obtaining and setting up API keys for supported services like Spotify and KKBOX. If the required environment variables are already set, the wizard will skip those steps.\n\n## Contributing\n\nContributions are welcome! Please follow these steps:\n\n1. Fork the repository.\n2. Optionally, create an issue to discuss the changes you plan to make.\n3. Create a new branch linked to that issue.\n4. Make your changes in the new branch.\n5. Write tests if you add new functionality.\n6. Ensure all tests pass before opening a pull request.\n7. Open a pull request for review.\n\nThank you for your contributions!\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcheapnightbot%2Fyutipy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcheapnightbot%2Fyutipy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcheapnightbot%2Fyutipy/lists"}