brecht-vde / soundforest Goto Github PK
View Code? Open in Web Editor NEWExport Spotify playlists based on movies or tv series.
Export Spotify playlists based on movies or tv series.
A user should be able to see a list of already exported playlists
Endpoint
/api/playlists
Method
GET
Response Codes
Response format
{
"total": 3,
"results": [
...,
{
"identifier": "tt1234567",
"title": "Some cool movie",
"playlistTitle": "Some playlist title",
"playlistUri": "http://spotify.com/someplaylist"
},
...
]
}
Example
/api/playlists
A user should be able to a list of exports they've requested
Endpoint
/api/exports
Response Codes
Response format
{
"total": 3,
"results": [
...,
{
"identifier": "tt1234567",
"title": "Some cool movie",
"url": "http://spotify.com/someplaylist",
"status": "completed|pending|inprogress|failed",
"reason": "Any error or status message"
},
...
]
}
Example
/api/exports
A user must be able to login to the web application using their Spotify account.
A user must be able to logout of the web application
API project will consist of multiple Azure Functions projects, to mimic the "API Management" feature on Azure, we can use nginx to create a reverse proxy, so all azure functions are externally available through the same address, despite running on different addresses internally.
All API functions are available through a single address.
Currently UI project uses a NotFound
record to indicate a playlist was not found.
Instead of calling the playlistdetails endpoint and parsing the status code, there should just be a playlistexists endpoint with a valid response structure to indicate if a record exists.
Projects should be containerized, to more easily run specific parts or orchestrate the whole thing on a local environment
Each project can be built as a container or ran via e.g. docker compose
The API must be protected, so only authorized users can make requests. This should be done via a JWT token in the Authorization
header of each request.
An Auth0 account must be setup, JWT tokens will be validated against the Auth0 instances.
When a user makes a request to the API they must:
A user should be able to fetch more details of a movie or series via its identifier.
Endpoint
/api/search/{someid}
Response Codes
Response format
* = optional field
{
"identifier": "tt1234567",
"type": "movie|series",
"title": "Some movie or series",
"plot*": "Some movie or series plot",
"poster*": "Image which belongs to a movie or series",
"seasons*": 7,
"year": 2010,
"endYear*": 2020,
"actors*": ["name1", "name2", "name3"],
"genres*": ["name1", "name2", "name3"]
}
Example
/api/search/{identifier}
A user should be able to see a list of all exported playlists that are available
OMDb API is limited to 1000 requests per day, to decrease amount of calls, the requests to the search & details API should be cached.
A user should be able to search a movie or series via some key words and browse the results (if any).
Endpoint
/api/search
Query parameters
q
Response Codes
Response format
{
"total": 3,
"results": [
...,
{
"identifier": "tt1234567",
"type": "movie|series",
"title": "Some cool movie"
},
...
]
}
Example
/api/search?q={keywords}
A user should be able to see a single exported playlist when a movie/series identifier is requested
Endpoint
/api/playlists/{someid}
Method
GET
Response Codes
Response format
{
"identifier": "tt1234567",
"title": "Some cool movie",
"playlistTitle": "Some playlist title",
"playlistUri": "http://spotify.com/someplaylist"
}
Example
/api/playlists/tt1234567
When a user requests an export via the API endpoint a job should be scheduled through a message queue.
A service should pick up this job from the queue and asynchronously prepare the playlist.
A user must be able to navigate to a search page, in which they can enter search terms, see an overview of the results and being able to click through to the detail of a search result.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.