{"id":13682836,"url":"https://github.com/fedecalendino/wrap-genius","last_synced_at":"2026-04-06T02:01:30.797Z","repository":{"id":42772960,"uuid":"256611909","full_name":"fedecalendino/wrap-genius","owner":"fedecalendino","description":"Unofficial python wrapper for genius' API.","archived":false,"fork":false,"pushed_at":"2026-03-26T21:53:01.000Z","size":6006,"stargazers_count":13,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-03-27T09:29:57.385Z","etag":null,"topics":["api","genius","genius-api","genius-lyrics","lyrics","python","python-library","wrapper","wrapper-api"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/wrap-genius/","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/fedecalendino.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}},"created_at":"2020-04-17T21:18:03.000Z","updated_at":"2026-03-26T21:48:48.000Z","dependencies_parsed_at":"2024-01-14T16:08:54.156Z","dependency_job_id":"6a1c7a82-1ed7-4a5e-bc0a-e7aa9ffc731d","html_url":"https://github.com/fedecalendino/wrap-genius","commit_stats":{"total_commits":77,"total_committers":3,"mean_commits":"25.666666666666668","dds":0.4675324675324676,"last_synced_commit":"6210cb8e524cfde7b72d473773a68edc8868c1ab"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/fedecalendino/wrap-genius","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedecalendino%2Fwrap-genius","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedecalendino%2Fwrap-genius/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedecalendino%2Fwrap-genius/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedecalendino%2Fwrap-genius/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fedecalendino","download_url":"https://codeload.github.com/fedecalendino/wrap-genius/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedecalendino%2Fwrap-genius/sbom","scorecard":{"id":395239,"data":{"date":"2025-08-11","repo":{"name":"github.com/fedecalendino/wrap-genius","commit":"0429317bc573e548bae1947e012a4a6a88f5b342"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"name":"Code-Review","score":0,"reason":"Found 2/21 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/main.yml:1","Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/fedecalendino/wrap-genius/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/fedecalendino/wrap-genius/main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/fedecalendino/wrap-genius/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/fedecalendino/wrap-genius/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/fedecalendino/wrap-genius/main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/fedecalendino/wrap-genius/main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/fedecalendino/wrap-genius/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/fedecalendino/wrap-genius/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/fedecalendino/wrap-genius/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/fedecalendino/wrap-genius/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/fedecalendino/wrap-genius/publish.yml/main?enable=pin","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   5 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":1,"reason":"9 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-48 / GHSA-fj7x-q9j7-g6q6","Warn: Project is vulnerable to: PYSEC-2024-230 / GHSA-248v-346w-9cwc","Warn: Project is vulnerable to: PYSEC-2024-60 / GHSA-jjg7-2v4v-x38h","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: GHSA-34jh-p97f-mpxf","Warn: Project is vulnerable to: PYSEC-2023-212 / GHSA-g4mx-q9vg-27p4","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v","Warn: Project is vulnerable to: PYSEC-2023-192 / GHSA-v845-jxx5-vc9f"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 11 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T18:49:20.771Z","repository_id":42772960,"created_at":"2025-08-18T18:49:20.771Z","updated_at":"2025-08-18T18:49:20.771Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31456664,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"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","genius","genius-api","genius-lyrics","lyrics","python","python-library","wrapper","wrapper-api"],"created_at":"2024-08-02T13:01:54.079Z","updated_at":"2026-04-06T02:01:30.779Z","avatar_url":"https://github.com/fedecalendino.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":" # wrap-genius\n\n[![Version](https://img.shields.io/pypi/v/wrap-genius?logo=pypi)](https://pypi.org/project/wrap-genius)\n[![Quality Gate Status](https://img.shields.io/sonar/alert_status/fedecalendino_wrap-genius?logo=sonarcloud\u0026server=https://sonarcloud.io)](https://sonarcloud.io/dashboard?id=fedecalendino_wrap-genius)\n[![CodeCoverage](https://img.shields.io/sonar/coverage/fedecalendino_wrap-genius?logo=sonarcloud\u0026server=https://sonarcloud.io)](https://sonarcloud.io/dashboard?id=fedecalendino_wrap-genius)\n\nUnofficial python wrapper for genius.com's API\n\n\n## Setup\n\n**wrap-genius** is supported on Python 3.8+ and it can be installed using [pip](https://pypi.python.org/pypi/pip).\n\n```bash\npip install wrap-genius\n```   \n\nTo be able to use it, you'll need to create an API client for [genius.com](https://genius.com/api-clients) and get a **CLIENT ACCESS TOKEN**.\n\n\n## Quickstart\n\nThe `genius` wrapper library provides a convenient interface to interact with the Genius API, allowing you to search for songs, artists, and retrieve information about them. This documentation will guide you through the available functionalities of the library with examples.\n\n### Initialization\n\nTo start using the `genius` wrapper library, you need to initialize an instance of the `Genius` class. This requires an access token, which you can obtain from the Genius API.\n\n```python\nfrom genius import Genius\n\ng = Genius(access_token=\"YOUR_ACCESS_TOKEN\")\n```\n\n### Search All\n\nYou can use the `search_all` method to search for songs or artists. It returns a generator that yields search results. Here are some examples:\n\n```python\n# Search for an artist\nsongs = g.search_all(\"Dua Lipa\", page_limit=1) # page_limit is 10 by default, use conservatively if not needed\nprint(next(songs).title)  # Get the first song\nprint([song.title for song in songs])  # Get the rest of the songs\n\n# Search for a song\nsongs = g.search_all(\"My Iron Lung\", page_limit=1)\nprint(next(songs).title)\n\n# Search for a song by an artist\nsongs = g.search_all(\"White Light Gorillaz\", page_limit=1)\nprint(next(songs).title)\n```\nOutput:\n```\nNew Rules\n['Scared to Be Lonely', 'Don’t Start Now', 'IDGAF', 'Levitating', 'One Kiss', 'Blow Your Mind (Mwah)', 'Break My Heart', 'Be the One', 'Kiss and Make Up', 'Physical', 'Levitating (Remix)', 'UN DÍA (ONE DAY)', 'Electricity', 'We’re Good', 'Homesick', 'Dua Lipa', 'Love Again', 'Dua Lipa \u0026 BLACKPINK - Kiss and Make Up (Romanized)', 'Hotter Than Hell']\n\nMy Iron Lung\n\nWhite Light\n```\n\n### Search Artist\n\nYou can use the `search_artist` method to search for an artist by their name. It returns an `Artist` object representing the artist. Here is an example:\n\n```python\nartist = g.search_artist(\"Radiohead\")\nprint(artist)  # Artist object\nprint(artist.alternate_names)\nprint(artist.followers_count)\nprint(artist.description[:100] + \"...\" if len(artist.description) \u003e 100 else artist.description)\nprint(artist.header_image_url)\nprint(artist.id)\nprint(artist.name)\nprint(artist.is_verified)\nprint(list(itertools.islice(artist.songs, 5)))\nprint(list(itertools.islice(artist.songs_by_popularity, 5)))\nprint(artist.url)\n```\n\n## Search Song\n\nYou can use the `search_all` method to search for a specific song. It returns a generator that yields song objects. Here is an example:\n\n```python\nsongs = g.search_all(\"Karma Police Radiohead\", page_limit=1)\nsong = next(songs)\nprint(song)  # Song object\nprint(song.album)\nprint(song.artist)\nprint(song.pageviews)\nprint(song.song_art_image_url)\nprint(song.title)\nprint(song.title_with_featured)\nprint(song.hot)\nprint(song.description)\nprint(song.recording_location)\nprint(song.release_date)\nprint(song.release_date_for_display)\nprint(song.features)\nprint(song.media)\nprint(song.writers)\nprint(song.producers)\nprint(song.samples)\nprint(song.sampled_in)\nprint(song.interpolates)\nprint(song.interpolated_by)\nprint(song.is_cover)\nprint(song.is_live)\nprint(song.is_remix)\nprint(song.cover_of)\nprint(song.covered_by)\nprint(song.remix_of)\nprint(song.remixed_by)\nprint(song.live_version_of)\nprint(song.performed_live_as)\nprint(\"\\n\".join(song.lyrics))\n```\n\n\n## Get Artist Information\n\nYou can use the `get_artist` method to retrieve detailed information about an artist by their ID. Here is an example:\n\n```python\nartist = g.get_artist(604)\nprint(artist)  # Artist object\n```\n\n\n\n## Get Song Information\n\nYou can use the `get_song` method to retrieve detailed information about a song by its ID. Here is an example:\n\n```python\nsong = g.get_song(378195)\nprint(song)  # Song object\n```\n\n\n\n## Get Album Information\n\nYou can use the `get_all_album_songs` method to retrieve information about an album by the artist's ID. Here is an example:\n\n```python\nsong=g.get_song(378195)\nalbum = song.album\nprint(album.name)\nprint(album.artist)\nprint(album.cover_art_url)\nprint(album.id)\nprint(album.url)\nprint(list(album.songs))\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffedecalendino%2Fwrap-genius","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffedecalendino%2Fwrap-genius","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffedecalendino%2Fwrap-genius/lists"}