{"id":16099259,"url":"https://github.com/yvasyliev/deezer-api","last_synced_at":"2025-03-17T17:31:20.939Z","repository":{"id":61412471,"uuid":"431532187","full_name":"yvasyliev/deezer-api","owner":"yvasyliev","description":"Deezer API Java Library","archived":false,"fork":false,"pushed_at":"2024-09-09T00:14:23.000Z","size":545,"stargazers_count":9,"open_issues_count":9,"forks_count":2,"subscribers_count":1,"default_branch":"3.0.0-methods-refactoring-v2","last_synced_at":"2025-03-16T13:22:42.544Z","etag":null,"topics":["deezer","deezer-api"],"latest_commit_sha":null,"homepage":"","language":"Java","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/yvasyliev.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}},"created_at":"2021-11-24T15:17:38.000Z","updated_at":"2025-03-10T16:40:04.000Z","dependencies_parsed_at":"2024-01-30T20:33:19.688Z","dependency_job_id":"115c0907-74df-4039-acf5-2ae93d790843","html_url":"https://github.com/yvasyliev/deezer-api","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yvasyliev%2Fdeezer-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yvasyliev%2Fdeezer-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yvasyliev%2Fdeezer-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yvasyliev%2Fdeezer-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yvasyliev","download_url":"https://codeload.github.com/yvasyliev/deezer-api/tar.gz/refs/heads/3.0.0-methods-refactoring-v2","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244078015,"owners_count":20394397,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["deezer","deezer-api"],"created_at":"2024-10-09T18:26:35.490Z","updated_at":"2025-03-17T17:31:20.064Z","avatar_url":"https://github.com/yvasyliev.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.yvasyliev/deezer-api/badge.svg?\u0026kill_cache=1)](https://search.maven.org/artifact/com.github.yvasyliev/deezer-api)\n[![javadoc](https://javadoc.io/badge2/com.github.yvasyliev/deezer-api/javadoc.svg)](https://javadoc.io/doc/com.github.yvasyliev/deezer-api)\n[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](https://github.com/yvasyliev/deezer-api/blob/master/LICENSE)\n![Build status](https://github.com/yvasyliev/deezer-api/actions/workflows/build-maven-project.yml/badge.svg?branch=master)\n![CodeQL](https://github.com/yvasyliev/deezer-api/workflows/CodeQL/badge.svg)\n[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_deezer-api\u0026metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=yvasyliev_deezer-api)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_deezer-api\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=yvasyliev_deezer-api)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_deezer-api\u0026metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=yvasyliev_deezer-api)\n[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_deezer-api\u0026metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=yvasyliev_deezer-api)\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_deezer-api\u0026metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=yvasyliev_deezer-api)\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_deezer-api\u0026metric=bugs)](https://sonarcloud.io/summary/new_code?id=yvasyliev_deezer-api)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_deezer-api\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=yvasyliev_deezer-api)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_deezer-api\u0026metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=yvasyliev_deezer-api)\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_deezer-api\u0026metric=code_smells)](https://sonarcloud.io/summary/new_code?id=yvasyliev_deezer-api)\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_deezer-api\u0026metric=ncloc)](https://sonarcloud.io/summary/new_code?id=yvasyliev_deezer-api)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat)](http://makeapullrequest.com)\n\n# Deezer API Java Library\n\nA Java implementation of [Deezer API](https://developers.deezer.com/api).\n\n## Third-party dependencies\n\n- `SLF4J`\n- `Gson`\n- `OkHttp`\n\n## Requirements\n\n1. Java 8+\n2. Maven (or other build tool)\n\n## Quickstart\n\n1. Add to your `pom.xml`:\n    ```xml\n    \u003cdependency\u003e\n        \u003cgroupId\u003ecom.github.yvasyliev\u003c/groupId\u003e\n        \u003cartifactId\u003edeezer-api\u003c/artifactId\u003e\n        \u003cversion\u003e2.1.0\u003c/version\u003e\n    \u003c/dependency\u003e\n    ```\n2. Use `DeezerApi` instance to execute Deezer API requests:\n   ```java\n   public class DeezerApp {\n       public static void main(String[] args) throws DeezerException {\n           DeezerApi deezerApi = new DeezerApi();\n   \n           Album album = deezerApi.album().getById(302127).execute();\n           System.out.println(album);\n   \n           TrackData trackData = deezerApi.search().searchTrack(\"eminem\").execute();\n           System.out.println(trackData);\n       }\n   }\n   ```\n\n## OAuth\n\nSome Deezer API requests should be executed with `access_token` param passed.\u003cbr/\u003e\nTo obtain `access_token` our application must be registered and the user must be authorized.\u003cbr/\u003e\nTo register new app:\n\n1. Go to https://developers.deezer.com/myapps\n2. Create new Application.\n\nNow we are ready to authorize the user. Deezer uses OAuth 2.0 protocol for authentication and authorization.\u003cbr/\u003e\n\n### Authorization flow example\n\n```java\npublic class DeezerApp {\n    /**\n     * Can be found at https://developers.deezer.com/myapps\n     */\n    private static final int APP_ID = 123;\n\n    /**\n     * Can be found at https://developers.deezer.com/myapps\n     */\n    private static final String SECRET = \"secret_string\";\n\n    /**\n     * Your domain where user will be redirected to.\n     */\n    private static final String REDIRECT_URI = \"your.domain.com\";\n\n    public static void main(String[] args) throws DeezerException {\n        DeezerApi deezerApi = new DeezerApi();\n\n        // Step 1. Create login URL.\n        String loginUrl = deezerApi.auth().getLoginUrl(APP_ID, REDIRECT_URI, Permission.BASIC_ACCESS);\n        System.out.println(loginUrl); // https://connect.deezer.com/oauth/auth.php?app_id=123\u0026redirect_uri=your.domain.com\u0026perms=basic_access\n\n        /*\n         * Step 2. Authorize.\n         *\n         *      1. Open loginUrl in your browser.\n         *      2. Login to Deezer. (if haven't done yet)\n         *      3. Accept application permissions.\n         *      4. Find a 'code' parameter in URL after redirection to:\n         *          http://redirect_uri?code=A_CODE_GENERATED_BY_DEEZER\n         */\n        System.out.print(\"Please enter code: \");\n        String code = new Scanner(System.in).next();\n\n        // Step 3. Get access_token.\n        DeezerAccessToken accessToken = deezerApi.auth().getAccessToken(APP_ID, SECRET, code).execute();\n        deezerApi.setAccessToken(accessToken);\n\n        // Now we are ready to execute any request we want.\n        User me = deezerApi.user().getMe().execute();\n        System.out.println(me);\n\n        TrackData favouriteTracks = deezerApi.user().getFavouriteTracks(me.getId()).execute();\n        System.out.println(favouriteTracks);\n    }\n}\n```\n\n## Features\n1. Interceptors\n2. `Artist#picture`, `Genre#picture`\n3. `Artist#trackList`\n4. `Page#next`, `Page#prev`\n\n## To improve\n1. Migrate `User#status` to enum.\n2. `Infos` is not fully populated.\n3. Migrate `Offer#tryAndBuy` to `enum` or `boolean`.\n4. `SearchHistory#result` - it's unclear what structure `result` may have.\n5. Does `search / history` return `prev`/`next` links? If so, need to add deserializer.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyvasyliev%2Fdeezer-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyvasyliev%2Fdeezer-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyvasyliev%2Fdeezer-api/lists"}