Closed amartya-dev closed 3 years ago
Hey, for any boxes checked on the required info above, please provide references or evidence to support checking those boxes. This will help us when this issue is ready for development.
@mathemancer I have updated the comment in order to include the required info
Okay, thanks!
Provider API Endpoint / Documentation
Documentation: https://developer.jamendo.com/v3.0/docs The generic GET url form is the following: http[s]://api.jamendo.com/version/entity/subentity/?api_parameter=value
Provider description
On Jamendo Music, you can enjoy a wide catalog of more than 500,000 tracks shared by 40,000 artists from over 150 countries all over the world. You can stream all the music for free, download it and support the artist: become a music explorer and be a part of a great discovery experience!
Licenses Provided
Jamendo uses Creative Commons licenses to enable the free distribution of otherwise copyrighted work. CC licenses all grant 'baseline rights', such as the right to distribute the copyrighted work worldwide for non-commercial purposes, and without modification. Artists choose a license according to the conditions they want to be applied to the song. As per https://www.jamendo.com/legal/creative-commons
Provider API Technical info
The Terms of use does not as such mention a limit, there are different plans though which will be available only after signup. The plans are read-only and write-only. The API uses OAuth2 based authentication. Rate Limit: 35,000 requests per month for non-commercial apps
Checklist to complete before beginning development
No development should be done on a Provider API Script until the following info is gathered:
[x] Verify there is a way to retrieve the entire relevant portion of the provider's collection in a systematic way via their API. There is a read API that can be queried with: https://developer.jamendo.com/v3.0 as the base URL and other information can be sent along with the GET request to retrieve specific info. The API responds with 200 rows in one response and accepts a parameter offset that can be used to specify the position to start returning results from.
[x] Verify the API provides license info (license type and version; license URL provides both, and is preferred) It provides the license URL as the parameter licensecurl in the API response.
[x] Verify the API provides stable direct links to individual works. It provides the same under the key "audio" in the response. The download link is also provided under "audiodownload"
[x] Verify the API provides a stable landing page URL to individual works. The API provides a short and a share version for the landing page of the URL under the keys "shorturl" and "shareurl" respectively.
[x] Note other info the API provides, such as thumbnails, dimensions, attribution info (required if non-CC0 licenses will be kept), title, description, other meta data, tags, etc. The API provides duration, album name, album image, artist name, release date, image for the track, etc.
[x] Attach example responses to API queries that have the relevant info.
General Recommendations for implementation
src/cc_catalog_airflow/dags/provider_api_scripts/
directory.ImageStore
class (Import this fromsrc/cc_catalog_airflow/dags/provider_api_scripts/common/storage/image.py
).DelayedRequester
class (Import this fromsrc/cc_catalog_airflow/dags/provider_api_scripts/common/requester.py
).src/cc_catalog_airflow/dags/provider_api_scripts/modules/etlMods.py
, since that module is deprecated.--date
parameter when run as a script, giving the date for which we should collect images. The form should beYYYY-MM-DD
(so, the script can be run viapython my_favorite_provider.py --date 2018-01-01
).my_favorite_provider.main(date)
. The main should do the same thing calling from the CLI would do.pycodestyle
(available viapip install pycodestyle
) to check for compliance.Examples of other Provider API Scripts
For example Provider API Scripts and accompanying test suites, please see
src/cc_catalog_airflow/dags/provider_api_scripts/flickr.py
andsrc/cc_catalog_airflow/dags/provider_api_scripts/test_flickr.py
, orsrc/cc_catalog_airflow/dags/provider_api_scripts/wikimedia_commons.py
andsrc/cc_catalog_airflow/dags/provider_api_scripts/test_wikimedia_commons.py
.