├── lambda_console ├── getTest.json ├── createTest.json ├── get.js └── create.js ├── static-site ├── error.html ├── main.css ├── index.html └── formlogic.js └── dynamodb ├── dataWriter.js ├── dataDeleter.js └── musicData.json /lambda_console/getTest.json: -------------------------------------------------------------------------------- 1 | { 2 | "body": "{\"Artist\":\"TestArtist\",\"SongTitle\":\"Test Song\"}" 3 | } -------------------------------------------------------------------------------- /lambda_console/createTest.json: -------------------------------------------------------------------------------- 1 | { 2 | "body": "{\"Artist\":\"TestArtist\",\"SongTitle\":\"Test Song\",\"AlbumTitle\":\"TestAlbum\",\"CriticRating\":\"8.9\",\"Genre\":\"Classical\",\"Price\":\"1.99\"}" 3 | } -------------------------------------------------------------------------------- /static-site/error.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

This page was not found. Sorry! Did you mean to go to the home page?

8 | 9 | -------------------------------------------------------------------------------- /dynamodb/dataWriter.js: -------------------------------------------------------------------------------- 1 | var AWS = require("aws-sdk"); 2 | AWS.config.update({region: "us-east-1"}); 3 | var documentClient = new AWS.DynamoDB.DocumentClient(); 4 | 5 | var fs = require("fs"); 6 | 7 | var sleep = require("sleep"); 8 | 9 | var musicData = fs.readFileSync("musicData.json"); 10 | var jsonContent = JSON.parse(musicData); 11 | 12 | for (entry in jsonContent) { 13 | console.log("THIS IS THE ENTRY") 14 | console.log(jsonContent[entry]) 15 | 16 | var params = { 17 | TableName : "PrometheonMusic", 18 | Item: jsonContent[entry] 19 | }; 20 | 21 | documentClient.put(params, function(err, data) { 22 | if (err) console.log(err); 23 | else console.log(data); 24 | }); 25 | sleep.msleep(300) 26 | } -------------------------------------------------------------------------------- /dynamodb/dataDeleter.js: -------------------------------------------------------------------------------- 1 | var AWS = require("aws-sdk"); 2 | AWS.config.update({region: "us-east-1"}); 3 | var documentClient = new AWS.DynamoDB.DocumentClient(); 4 | 5 | var fs = require("fs"); 6 | 7 | var sleep = require("sleep"); 8 | 9 | var counter = 0 10 | 11 | while (counter < 15) { 12 | console.log("Deleting item with SongTitle of test" + counter.toString()) 13 | 14 | var params = { 15 | TableName : "PrometheonMusic", 16 | Key: { 17 | Artist: "Stephen James", 18 | SongTitle: "test"+counter.toString() 19 | } 20 | }; 21 | 22 | documentClient.delete(params, function(err, data) { 23 | if (err) console.log(err); 24 | else console.log(data); 25 | }); 26 | sleep.msleep(300) 27 | counter++ 28 | } -------------------------------------------------------------------------------- /lambda_console/get.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const AWS = require('aws-sdk'); 4 | AWS.config.update({region:'us-east-1'}); 5 | 6 | const dynamoDb = new AWS.DynamoDB.DocumentClient(); 7 | 8 | module.exports.get = (event, context, callback) => { 9 | const data = JSON.parse(event.body); 10 | 11 | const params = { 12 | TableName: 'PrometheonMusic', 13 | Key: { 14 | Artist: data.Artist, 15 | SongTitle: data.SongTitle 16 | }, 17 | } 18 | 19 | // fetch item from DynamoDB 20 | dynamoDb.get(params, (error, result) => { 21 | // handle potential errors 22 | if (error) { 23 | console.error(error); 24 | callback(null, { 25 | statusCode: error.statusCode || 501, 26 | headers: { 'Content-Type': 'text/plain' }, 27 | body: 'Couldn\'t fetch the todo item.', 28 | }); 29 | return; 30 | } 31 | 32 | // create a response 33 | const response = { 34 | statusCode: 200, 35 | body: JSON.stringify(result), 36 | }; 37 | callback(null, response); 38 | }); 39 | }; -------------------------------------------------------------------------------- /lambda_console/create.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const AWS = require('aws-sdk'); 4 | AWS.config.update({region:'us-east-1'}); 5 | 6 | const dynamoDb = new AWS.DynamoDB.DocumentClient(); 7 | 8 | module.exports.create = (event, context, callback) => { 9 | const data = JSON.parse(event.body); 10 | 11 | const params = { 12 | TableName: 'PrometheonMusic', 13 | Item: { 14 | Artist: data.Artist, 15 | SongTitle: data.SongTitle, 16 | AlbumTitle: data.AlbumTitle, 17 | CriticRating: data.CriticRating, 18 | Genre: data.Genre, 19 | Price: data.Price 20 | }, 21 | }; 22 | 23 | // write the item to the database 24 | dynamoDb.put(params, (error) => { 25 | // handle potential errors 26 | if (error) { 27 | console.error(error); 28 | callback(null, { 29 | statusCode: error.statusCode || 501, 30 | headers: { 'Content-Type': 'text/plain' }, 31 | body: 'Couldn\'t create the item.', 32 | }); 33 | return; 34 | } 35 | 36 | // create a response 37 | const response = { 38 | statusCode: 200, 39 | body: JSON.stringify(params.Item), 40 | }; 41 | callback(null, response); 42 | }); 43 | }; -------------------------------------------------------------------------------- /static-site/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 40px; 3 | padding-bottom: 40px; 4 | background-color: #eee; 5 | } 6 | 7 | hr { 8 | border-top: solid black; 9 | } 10 | 11 | div #error-message { 12 | color: red; 13 | font-size: 15px; 14 | font-weight: bold; 15 | } 16 | 17 | div #success-message, #results-message { 18 | color: green; 19 | font-size: 15px; 20 | font-weight: bold; 21 | } 22 | 23 | .form-signin { 24 | max-width: 530px; 25 | padding: 15px; 26 | margin: 0 auto; 27 | } 28 | .form-signin .form-signin-heading, 29 | .form-signin .checkbox { 30 | margin-bottom: 10px; 31 | } 32 | .form-signin .checkbox { 33 | font-weight: normal; 34 | } 35 | .form-signin .form-control { 36 | position: relative; 37 | height: auto; 38 | -webkit-box-sizing: border-box; 39 | box-sizing: border-box; 40 | padding: 10px; 41 | font-size: 16px; 42 | } 43 | .form-signin .form-control:focus { 44 | z-index: 2; 45 | } 46 | .form-signin input[type="Artist"] { 47 | margin-bottom: -1px; 48 | border-bottom-right-radius: 0; 49 | border-bottom-left-radius: 0; 50 | } 51 | .form-signin input[type="bottom"] { 52 | margin-bottom: 10px; 53 | border-top-left-radius: 0; 54 | border-top-right-radius: 0; 55 | } 56 | -------------------------------------------------------------------------------- /static-site/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Prometheon Music Manager 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 |
28 | 29 |
30 |
31 |

You can list the items without adding any values.

32 | 33 |
34 |

Add the Artist and SongTitle values to get a specific item or delete a specific item.

35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 |

Also add the values below in order to update an exisiting item or create a new item.

43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 |
54 |
55 |
56 | 57 |
58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /static-site/formlogic.js: -------------------------------------------------------------------------------- 1 | // Replace the YOUR_API_ENDPOINT_URL with yours 2 | // It should look something like this: 3 | // https://example1a2s3d.execute-api.us-east-1.amazonaws.com/dev/prometheon 4 | 5 | // Do NOT include the /id but make sure you DO include the /prometheon 6 | 7 | var API_ENDPOINT = 'https://example1a2s3d.execute-api.us-east-1.amazonaws.com/dev/prometheon'; 8 | 9 | // Setup divs that will be used to display interactive messages 10 | var errorDiv = document.getElementById('error-message') 11 | var successDiv = document.getElementById('success-message') 12 | var resultsDiv = document.getElementById('results-message') 13 | 14 | // Setup easy way to reference values of the input boxes 15 | function ArtistValue() { return document.getElementById('Artist').value } 16 | function SongTitleValue() { return document.getElementById('SongTitle').value } 17 | function AlbumTitleValue() { return document.getElementById('AlbumTitle').value } 18 | function CriticRatingValue() { return document.getElementById('CriticRating').value } 19 | function GenreValue() { return document.getElementById('Genre').value } 20 | function PriceValue() { return document.getElementById('Price').value } 21 | 22 | function clearNotifications() { 23 | // Clear any exisiting notifications in the browser notifications divs 24 | errorDiv.textContent = ''; 25 | resultsDiv.textContent = ''; 26 | successDiv.textContent = ''; 27 | } 28 | 29 | // Add listeners for each button that make the API request 30 | 31 | document.getElementById('listButton').addEventListener('click', function (event) { 32 | // Prevent the page reloading and clear exisiting notifications 33 | event.preventDefault() 34 | clearNotifications() 35 | // Prepare the appropriate HTTP request to the API with fetch 36 | // list uses the base /prometheon resource path and doesn't require 37 | // a payload or query string paramaters 38 | fetch(API_ENDPOINT, { 39 | method: 'GET', 40 | mode: 'cors' 41 | }) 42 | .then((resp) => resp.json()) 43 | .then(function(data) { 44 | console.log(data) 45 | successDiv.textContent = 'Success! Check the fetched items below'; 46 | resultsDiv.textContent = JSON.stringify(data); 47 | }) 48 | .catch(function(err) { 49 | errorDiv.textContent = 'Yikes! There was an error:\n' + err.toString(); 50 | console.log(err) 51 | }); 52 | }); 53 | 54 | 55 | document.getElementById('getButton').addEventListener('click', function (event) { 56 | // Prevent the page reloading and clear exisiting notifications 57 | event.preventDefault() 58 | clearNotifications() 59 | // Prepare the appropriate HTTP request to the API with fetch 60 | // get uses the /prometheon/id resource path and query string paramaters 61 | // The final result is a GET request to something like: 62 | // https://example1a2s3d.execute-api.us-east-1.amazonaws.com/dev/prometheon/id?Artist=Rihanna&SongTitle=Work 63 | fetch(API_ENDPOINT+'/id?Artist='+ArtistValue()+'&SongTitle='+SongTitleValue(), { 64 | headers:{ 65 | "Content-type": "application/json" 66 | }, 67 | method: 'GET', 68 | mode: 'cors' 69 | }) 70 | .then((resp) => resp.json()) 71 | .then(function(data) { 72 | console.log(data) 73 | successDiv.textContent = 'Success! Check the fetched item below'; 74 | resultsDiv.textContent = JSON.stringify(data); 75 | }) 76 | .catch(function(err) { 77 | errorDiv.textContent = 'Yikes! There was an error:\n' + err.toString(); 78 | console.log(err) 79 | }); 80 | }); 81 | 82 | 83 | document.getElementById('deleteButton').addEventListener('click', function (event) { 84 | // Prevent the page reloading and clear exisiting notifications 85 | event.preventDefault() 86 | clearNotifications() 87 | // Prepare the appropriate HTTP request to the API with fetch 88 | // Delete used the /prometheon/id resource path 89 | // It also requires a JSON body payload 90 | fetch(API_ENDPOINT+'/id', { 91 | headers:{ 92 | "Content-type": "application/json" 93 | }, 94 | method: 'DELETE', 95 | body: JSON.stringify({ 96 | 'Artist': ArtistValue(), 97 | 'SongTitle': SongTitleValue() 98 | }), 99 | mode: 'cors' 100 | }) 101 | .then((resp) => resp.json()) 102 | .then(function(data) { 103 | console.log(data) 104 | successDiv.textContent = 'Success! Check the status of the item below'; 105 | resultsDiv.textContent = JSON.stringify(data); 106 | }) 107 | .catch(function(err) { 108 | errorDiv.textContent = 'Yikes! There was an error:\n' + err.toString(); 109 | console.log(err) 110 | }); 111 | }); 112 | 113 | 114 | document.getElementById('updateButton').addEventListener('click', function (event) { 115 | // Prevent the page reloading and clear exisiting notifications 116 | event.preventDefault() 117 | clearNotifications() 118 | // Prepare the appropriate HTTP request to the API with fetch 119 | // update uses the /prometheon/id endpoint and requires a JSON payload 120 | fetch(API_ENDPOINT+'/id', { 121 | headers:{ 122 | "Content-type": "application/json" 123 | }, 124 | method: 'PUT', 125 | body: JSON.stringify({ 126 | 'Artist': ArtistValue(), 127 | 'SongTitle': SongTitleValue(), 128 | 'AlbumTitle': AlbumTitleValue(), 129 | 'CriticRating': CriticRatingValue(), 130 | 'Genre': GenreValue(), 131 | 'Price': PriceValue() 132 | }), 133 | mode: 'cors' 134 | }) 135 | .then((resp) => resp.json()) 136 | .then(function(data) { 137 | console.log(data) 138 | successDiv.textContent = 'Success! Check the updated item below'; 139 | resultsDiv.textContent = JSON.stringify(data); 140 | 141 | }) 142 | .catch(function(err) { 143 | errorDiv.textContent = 'Yikes! There was an error:\n' + err.toString(); 144 | console.log(err) 145 | }); 146 | }); 147 | 148 | 149 | document.getElementById('createButton').addEventListener('click', function (event) { 150 | // Prevent the page reloading and clear exisiting notifications 151 | event.preventDefault() 152 | clearNotifications() 153 | // Prepare the appropriate HTTP request to the API with fetch 154 | // create uses the root /prometheon endpoint and requires a JSON payload 155 | fetch(API_ENDPOINT, { 156 | headers:{ 157 | "Content-type": "application/json" 158 | }, 159 | method: 'POST', 160 | body: JSON.stringify({ 161 | Artist: ArtistValue(), 162 | SongTitle: SongTitleValue(), 163 | AlbumTitle: AlbumTitleValue(), 164 | CriticRating: CriticRatingValue(), 165 | Genre: GenreValue(), 166 | Price: PriceValue() 167 | }), 168 | mode: 'cors' 169 | }) 170 | .then((resp) => resp.json()) 171 | .then(function(data) { 172 | console.log(data) 173 | successDiv.textContent = 'Success! Check the created item below'; 174 | resultsDiv.textContent = JSON.stringify(data); 175 | }) 176 | .catch(function(err) { 177 | errorDiv.textContent = 'Yikes! There was an error:\n' + err.toString(); 178 | console.log(err) 179 | }); 180 | }); 181 | 182 | 183 | 184 | -------------------------------------------------------------------------------- /dynamodb/musicData.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "Artist": "Post Malone", 4 | "SongTitle": "rockstar", 5 | "AlbumTitle": "Morrow Centers", 6 | "Genre": "Country", 7 | "Price": "13.89", 8 | "CriticRating": "9.9" 9 | }, 10 | { 11 | "Artist": "Lil Pump", 12 | "SongTitle": "Gucci Gang", 13 | "AlbumTitle": "Shepherd Ville", 14 | "Genre": "RNB", 15 | "Price": "6.89", 16 | "CriticRating": "9.89" 17 | }, 18 | { 19 | "Artist": "Camila Cabello", 20 | "SongTitle": "Havana", 21 | "AlbumTitle": "Collins Ways", 22 | "Genre": "Reggae", 23 | "Price": "8.99", 24 | "CriticRating": "9.88" 25 | }, 26 | { 27 | "Artist": "Sam Smith", 28 | "SongTitle": "Too Good At Goodbyes", 29 | "AlbumTitle": "Hayes Plain", 30 | "Genre": "Folk", 31 | "Price": "13.89", 32 | "CriticRating": "9.87" 33 | }, 34 | { 35 | "Artist": "Post Malone", 36 | "SongTitle": "I Fall Apart", 37 | "AlbumTitle": "Rachel Creek", 38 | "Genre": "Pop", 39 | "Price": "19.89", 40 | "CriticRating": "9.86" 41 | }, 42 | { 43 | "Artist": "21 Savage", 44 | "SongTitle": "Bank Account", 45 | "AlbumTitle": "Christopher Freeway", 46 | "Genre": "Classical", 47 | "Price": "8.99", 48 | "CriticRating": "9.85" 49 | }, 50 | { 51 | "Artist": "Logic", 52 | "SongTitle": "1-800-273-8255", 53 | "AlbumTitle": "Ashlee Avenue", 54 | "Genre": "Reggae", 55 | "Price": "5.89", 56 | "CriticRating": "9.84" 57 | }, 58 | { 59 | "Artist": "Cardi B", 60 | "SongTitle": "Bodak Yellow", 61 | "AlbumTitle": "Bruce Walks", 62 | "Genre": "Reggae", 63 | "Price": "19.99", 64 | "CriticRating": "9.83" 65 | }, 66 | { 67 | "Artist": "21 Savage", 68 | "SongTitle": "Ghostface Killers", 69 | "AlbumTitle": "Joseph Hill", 70 | "Genre": "Country", 71 | "Price": "0.99", 72 | "CriticRating": "9.82" 73 | }, 74 | { 75 | "Artist": "Lil Uzi Vert", 76 | "SongTitle": "XO TOUR Llif3", 77 | "AlbumTitle": "Raymond Curve", 78 | "Genre": "Pop", 79 | "Price": "12.99", 80 | "CriticRating": "9.81" 81 | }, 82 | { 83 | "Artist": "Khalid", 84 | "SongTitle": "Young Dumb & Broke", 85 | "AlbumTitle": "Andersen Junctions", 86 | "Genre": "RNB", 87 | "Price": "19.89", 88 | "CriticRating": "9.8" 89 | }, 90 | { 91 | "Artist": "Maroon 5", 92 | "SongTitle": "What Lovers Do (feat. SZA)", 93 | "AlbumTitle": "Melissa Islands", 94 | "Genre": "Folk", 95 | "Price": "1.89", 96 | "CriticRating": "9.79" 97 | }, 98 | { 99 | "Artist": "Migos", 100 | "SongTitle": "MotorSport", 101 | "AlbumTitle": "Hammond Drive", 102 | "Genre": "Country", 103 | "Price": "17.89", 104 | "CriticRating": "9.78" 105 | }, 106 | { 107 | "Artist": "G-Eazy", 108 | "SongTitle": "No Limit", 109 | "AlbumTitle": "Obrien View", 110 | "Genre": "Classical", 111 | "Price": "19.89", 112 | "CriticRating": "9.77" 113 | }, 114 | { 115 | "Artist": "Gucci Mane", 116 | "SongTitle": "I Get The Bag (feat. Migos)", 117 | "AlbumTitle": "Johnny Trafficway", 118 | "Genre": "Classical", 119 | "Price": "9.89", 120 | "CriticRating": "9.76" 121 | }, 122 | { 123 | "Artist": "Selena Gomez", 124 | "SongTitle": "Wolves", 125 | "AlbumTitle": "Kyle Streets", 126 | "Genre": "Reggae", 127 | "Price": "16.99", 128 | "CriticRating": "9.75" 129 | }, 130 | { 131 | "Artist": "Post Malone", 132 | "SongTitle": "Congratulations", 133 | "AlbumTitle": "Williams Valley", 134 | "Genre": "Reggae", 135 | "Price": "5.99", 136 | "CriticRating": "9.74" 137 | }, 138 | { 139 | "Artist": "Dua Lipa", 140 | "SongTitle": "New Rules", 141 | "AlbumTitle": "Davis Junction", 142 | "Genre": "Rock", 143 | "Price": "12.99", 144 | "CriticRating": "9.73" 145 | }, 146 | { 147 | "Artist": "A$AP Ferg", 148 | "SongTitle": "Plain Jane", 149 | "AlbumTitle": "Meza Gateway", 150 | "Genre": "Classical", 151 | "Price": "9.99", 152 | "CriticRating": "9.72" 153 | }, 154 | { 155 | "Artist": "Demi Lovato", 156 | "SongTitle": "Sorry Not Sorry", 157 | "AlbumTitle": "Steven Islands", 158 | "Genre": "Country", 159 | "Price": "12.99", 160 | "CriticRating": "9.71" 161 | }, 162 | { 163 | "Artist": "Marshmello", 164 | "SongTitle": "Silence", 165 | "AlbumTitle": "Moody Wall", 166 | "Genre": "Folk", 167 | "Price": "11.89", 168 | "CriticRating": "9.7" 169 | }, 170 | { 171 | "Artist": "NF", 172 | "SongTitle": "Let You Down", 173 | "AlbumTitle": "Scott Isle", 174 | "Genre": "Pop", 175 | "Price": "17.99", 176 | "CriticRating": "9.69" 177 | }, 178 | { 179 | "Artist": "Ed Sheeran", 180 | "SongTitle": "Perfect", 181 | "AlbumTitle": "Brenda Burg", 182 | "Genre": "Pop", 183 | "Price": "14.99", 184 | "CriticRating": "9.68" 185 | }, 186 | { 187 | "Artist": "Offset", 188 | "SongTitle": "Ric Flair Drip", 189 | "AlbumTitle": "Jacob Circles", 190 | "Genre": "Rock", 191 | "Price": "18.99", 192 | "CriticRating": "9.67" 193 | }, 194 | { 195 | "Artist": "Post Malone", 196 | "SongTitle": "Candy Paint", 197 | "AlbumTitle": "Walker Pass", 198 | "Genre": "Classical", 199 | "Price": "10.99", 200 | "CriticRating": "9.66" 201 | }, 202 | { 203 | "Artist": "Lil Uzi Vert", 204 | "SongTitle": "The Way Life Goes (feat. Oh Wonder)", 205 | "AlbumTitle": "Wilson Shoals", 206 | "Genre": "Reggae", 207 | "Price": "12.99", 208 | "CriticRating": "9.65" 209 | }, 210 | { 211 | "Artist": "Kendrick Lamar", 212 | "SongTitle": "HUMBLE.", 213 | "AlbumTitle": "Rachel Manor", 214 | "Genre": "Rock", 215 | "Price": "11.99", 216 | "CriticRating": "9.64" 217 | }, 218 | { 219 | "Artist": "Portugal. The Man", 220 | "SongTitle": "Feel It Still", 221 | "AlbumTitle": "Tyler Turnpike", 222 | "Genre": "Folk", 223 | "Price": "17.89", 224 | "CriticRating": "9.63" 225 | }, 226 | { 227 | "Artist": "French Montana", 228 | "SongTitle": "Unforgettable", 229 | "AlbumTitle": "Kimberly Trail", 230 | "Genre": "Jazz", 231 | "Price": "12.89", 232 | "CriticRating": "9.62" 233 | }, 234 | { 235 | "Artist": "Travis Scott", 236 | "SongTitle": "Butterfly Effect", 237 | "AlbumTitle": "Flores Extension", 238 | "Genre": "Folk", 239 | "Price": "8.99", 240 | "CriticRating": "9.61" 241 | }, 242 | { 243 | "Artist": "Halsey", 244 | "SongTitle": "Bad At Love", 245 | "AlbumTitle": "Katherine Unions", 246 | "Genre": "Pop", 247 | "Price": "15.99", 248 | "CriticRating": "9.6" 249 | }, 250 | { 251 | "Artist": "XXXTENTACION", 252 | "SongTitle": "Jocelyn Flores", 253 | "AlbumTitle": "Thomas Orchard", 254 | "Genre": "Country", 255 | "Price": "15.99", 256 | "CriticRating": "9.59" 257 | }, 258 | { 259 | "Artist": "Hailee Steinfeld", 260 | "SongTitle": "\"Let Me Go (with Alesso", 261 | "AlbumTitle": " Florida Georgia Line & watt)\"", 262 | "Genre": "Taylor Summit", 263 | "Price": "Reggae", 264 | "CriticRating": "12.89" 265 | }, 266 | { 267 | "Artist": "Taylor Swift", 268 | "SongTitle": "Call It What You Want", 269 | "AlbumTitle": "Henson Turnpike", 270 | "Genre": "RNB", 271 | "Price": "11.99", 272 | "CriticRating": "9.57" 273 | }, 274 | { 275 | "Artist": "Travis Scott", 276 | "SongTitle": "goosebumps", 277 | "AlbumTitle": "Johnathan Stream", 278 | "Genre": "Folk", 279 | "Price": "1.99", 280 | "CriticRating": "9.56" 281 | }, 282 | { 283 | "Artist": "Sam Smith", 284 | "SongTitle": "Pray", 285 | "AlbumTitle": "Espinoza Fall", 286 | "Genre": "Jazz", 287 | "Price": "6.89", 288 | "CriticRating": "9.55" 289 | }, 290 | { 291 | "Artist": "Kodak Black", 292 | "SongTitle": "Roll In Peace (feat. XXXTENTACION)", 293 | "AlbumTitle": "Cruz Roads", 294 | "Genre": "Jazz", 295 | "Price": "5.99", 296 | "CriticRating": "9.54" 297 | }, 298 | { 299 | "Artist": "Yo Gotti", 300 | "SongTitle": "Rake It Up", 301 | "AlbumTitle": "Fox Crescent", 302 | "Genre": "Folk", 303 | "Price": "1.99", 304 | "CriticRating": "9.53" 305 | }, 306 | { 307 | "Artist": "Bebe Rexha", 308 | "SongTitle": "Meant to Be (feat. Florida Georgia Line)", 309 | "AlbumTitle": "Love Drive", 310 | "Genre": "Reggae", 311 | "Price": "14.89", 312 | "CriticRating": "9.52" 313 | }, 314 | { 315 | "Artist": "Migos", 316 | "SongTitle": "Slippery (feat. Gucci Mane)", 317 | "AlbumTitle": "Ross Wall", 318 | "Genre": "Folk", 319 | "Price": "1.99", 320 | "CriticRating": "9.51" 321 | }, 322 | { 323 | "Artist": "Khalid", 324 | "SongTitle": "Location", 325 | "AlbumTitle": "Nichols Meadows", 326 | "Genre": "Folk", 327 | "Price": "12.99", 328 | "CriticRating": "9.5" 329 | }, 330 | { 331 | "Artist": "A Boogie Wit da Hoodie", 332 | "SongTitle": "Drowning (feat. Kodak Black)", 333 | "AlbumTitle": "Kent Mountain", 334 | "Genre": "Jazz", 335 | "Price": "9.89", 336 | "CriticRating": "9.49" 337 | }, 338 | { 339 | "Artist": "Charlie Puth", 340 | "SongTitle": "How Long", 341 | "AlbumTitle": "Morrison Forks", 342 | "Genre": "Country", 343 | "Price": "16.89", 344 | "CriticRating": "9.48" 345 | }, 346 | { 347 | "Artist": "Imagine Dragons", 348 | "SongTitle": "Thunder", 349 | "AlbumTitle": "Ayers Way", 350 | "Genre": "Reggae", 351 | "Price": "3.89", 352 | "CriticRating": "9.47" 353 | }, 354 | { 355 | "Artist": "XXXTENTACION", 356 | "SongTitle": "Fuck Love (feat. Trippie Redd)", 357 | "AlbumTitle": "Anthony Ways", 358 | "Genre": "Rock", 359 | "Price": "16.99", 360 | "CriticRating": "9.46" 361 | }, 362 | { 363 | "Artist": "ZAYN", 364 | "SongTitle": "Dusk Till Dawn - Radio Edit", 365 | "AlbumTitle": "Christopher Lake", 366 | "Genre": "Folk", 367 | "Price": "8.89", 368 | "CriticRating": "9.45" 369 | }, 370 | { 371 | "Artist": "Post Malone", 372 | "SongTitle": "Go Flex", 373 | "AlbumTitle": "Christine Plain", 374 | "Genre": "Jazz", 375 | "Price": "8.89", 376 | "CriticRating": "9.44" 377 | }, 378 | { 379 | "Artist": "Tay-K", 380 | "SongTitle": "The Race", 381 | "AlbumTitle": "Joseph Spurs", 382 | "Genre": "Folk", 383 | "Price": "18.89", 384 | "CriticRating": "9.43" 385 | }, 386 | { 387 | "Artist": "21 Savage", 388 | "SongTitle": "Rap Saved Me", 389 | "AlbumTitle": "Bullock Mountains", 390 | "Genre": "Classical", 391 | "Price": "5.99", 392 | "CriticRating": "9.42" 393 | }, 394 | { 395 | "Artist": "21 Savage", 396 | "SongTitle": "My Choppa Hate Niggas", 397 | "AlbumTitle": "Victoria Ridges", 398 | "Genre": "Pop", 399 | "Price": "2.89", 400 | "CriticRating": "9.41" 401 | }, 402 | { 403 | "Artist": "Macklemore", 404 | "SongTitle": "Glorious (feat. Skylar Grey)", 405 | "AlbumTitle": "Wallace Stream", 406 | "Genre": "Folk", 407 | "Price": "13.89", 408 | "CriticRating": "9.4" 409 | }, 410 | { 411 | "Artist": "Kendrick Lamar", 412 | "SongTitle": "LOVE. FEAT. ZACARI.", 413 | "AlbumTitle": "Diaz Highway", 414 | "Genre": "Folk", 415 | "Price": "10.99", 416 | "CriticRating": "9.39" 417 | }, 418 | { 419 | "Artist": "Kygo", 420 | "SongTitle": "Stargazing", 421 | "AlbumTitle": "Peters Village", 422 | "Genre": "Country", 423 | "Price": "12.99", 424 | "CriticRating": "9.38" 425 | }, 426 | { 427 | "Artist": "Lil Uzi Vert", 428 | "SongTitle": "Sauce It Up", 429 | "AlbumTitle": "Lowe Springs", 430 | "Genre": "Classical", 431 | "Price": "8.89", 432 | "CriticRating": "9.37" 433 | }, 434 | { 435 | "Artist": "Imagine Dragons", 436 | "SongTitle": "Believer", 437 | "AlbumTitle": "Callahan Way", 438 | "Genre": "Country", 439 | "Price": "19.89", 440 | "CriticRating": "9.36" 441 | }, 442 | { 443 | "Artist": "J Balvin", 444 | "SongTitle": "Mi Gente", 445 | "AlbumTitle": "Timothy Villages", 446 | "Genre": "Country", 447 | "Price": "14.89", 448 | "CriticRating": "9.35" 449 | }, 450 | { 451 | "Artist": "Kodak Black", 452 | "SongTitle": "Transportin'", 453 | "AlbumTitle": "Robbins Meadows", 454 | "Genre": "Reggae", 455 | "Price": "13.89", 456 | "CriticRating": "9.34" 457 | }, 458 | { 459 | "Artist": "Playboi Carti", 460 | "SongTitle": "Magnolia", 461 | "AlbumTitle": "Robert Prairie", 462 | "Genre": "Folk", 463 | "Price": "17.99", 464 | "CriticRating": "9.33" 465 | }, 466 | { 467 | "Artist": "Taylor Swift", 468 | "SongTitle": "Look What You Made Me Do", 469 | "AlbumTitle": "Angela Loaf", 470 | "Genre": "Classical", 471 | "Price": "9.99", 472 | "CriticRating": "9.32" 473 | }, 474 | { 475 | "Artist": "Kendrick Lamar", 476 | "SongTitle": "DNA.", 477 | "AlbumTitle": "Joshua Drive", 478 | "Genre": "Jazz", 479 | "Price": "8.99", 480 | "CriticRating": "9.31" 481 | }, 482 | { 483 | "Artist": "SZA", 484 | "SongTitle": "Love Galore", 485 | "AlbumTitle": "Misty Keys", 486 | "Genre": "Pop", 487 | "Price": "2.99", 488 | "CriticRating": "9.3" 489 | }, 490 | { 491 | "Artist": "Maroon 5", 492 | "SongTitle": "Wait", 493 | "AlbumTitle": "Rivers Fields", 494 | "Genre": "Classical", 495 | "Price": "1.99", 496 | "CriticRating": "9.29" 497 | }, 498 | { 499 | "Artist": "Charlie Puth", 500 | "SongTitle": "Attention", 501 | "AlbumTitle": "Jason Club", 502 | "Genre": "RNB", 503 | "Price": "6.99", 504 | "CriticRating": "9.28" 505 | }, 506 | { 507 | "Artist": "J Balvin", 508 | "SongTitle": "Mi Gente (feat. Beyonc��)", 509 | "AlbumTitle": "Hill Tunnel", 510 | "Genre": "Pop", 511 | "Price": "8.89", 512 | "CriticRating": "9.27" 513 | }, 514 | { 515 | "Artist": "Future", 516 | "SongTitle": "Mask Off", 517 | "AlbumTitle": "Brown Via", 518 | "Genre": "Jazz", 519 | "Price": "12.89", 520 | "CriticRating": "9.26" 521 | }, 522 | { 523 | "Artist": "Lorde", 524 | "SongTitle": "\"Homemade Dynamite (Feat. Khalid", 525 | "AlbumTitle": " Post Malone & SZA) - REMIX\"", 526 | "Genre": "Nancy Terrace", 527 | "Price": "Jazz", 528 | "CriticRating": "4.89" 529 | }, 530 | { 531 | "Artist": "Young Thug", 532 | "SongTitle": "Relationship (feat. Future)", 533 | "AlbumTitle": "Amy Landing", 534 | "Genre": "Reggae", 535 | "Price": "5.99", 536 | "CriticRating": "9.24" 537 | }, 538 | { 539 | "Artist": "Childish Gambino", 540 | "SongTitle": "Redbone", 541 | "AlbumTitle": "Jillian Courts", 542 | "Genre": "Rock", 543 | "Price": "11.99", 544 | "CriticRating": "9.23" 545 | }, 546 | { 547 | "Artist": "Post Malone", 548 | "SongTitle": "White Iverson", 549 | "AlbumTitle": "Jacob Creek", 550 | "Genre": "Rock", 551 | "Price": "2.89", 552 | "CriticRating": "9.22" 553 | }, 554 | { 555 | "Artist": "Sam Smith", 556 | "SongTitle": "Burning", 557 | "AlbumTitle": "Hoover Brooks", 558 | "Genre": "Reggae", 559 | "Price": "16.89", 560 | "CriticRating": "9.21" 561 | }, 562 | { 563 | "Artist": "2 Chainz", 564 | "SongTitle": "It's A Vibe", 565 | "AlbumTitle": "Soto Lane", 566 | "Genre": "Pop", 567 | "Price": "9.99", 568 | "CriticRating": "9.2" 569 | }, 570 | { 571 | "Artist": "Ed Sheeran", 572 | "SongTitle": "Shape of You", 573 | "AlbumTitle": "Victor Divide", 574 | "Genre": "RNB", 575 | "Price": "14.99", 576 | "CriticRating": "9.19" 577 | }, 578 | { 579 | "Artist": "Luis Fonsi", 580 | "SongTitle": "Despacito - Remix", 581 | "AlbumTitle": "Nicholas Route", 582 | "Genre": "Jazz", 583 | "Price": "16.99", 584 | "CriticRating": "9.18" 585 | }, 586 | { 587 | "Artist": "Sam Hunt", 588 | "SongTitle": "Body Like A Back Road", 589 | "AlbumTitle": "Roberts Ridge", 590 | "Genre": "Reggae", 591 | "Price": "13.89", 592 | "CriticRating": "9.17" 593 | }, 594 | { 595 | "Artist": "Chris Brown", 596 | "SongTitle": "Pills & Automobiles", 597 | "AlbumTitle": "Long Camp", 598 | "Genre": "RNB", 599 | "Price": "9.89", 600 | "CriticRating": "9.16" 601 | }, 602 | { 603 | "Artist": "Chris Brown", 604 | "SongTitle": "Questions", 605 | "AlbumTitle": "Cynthia Locks", 606 | "Genre": "Jazz", 607 | "Price": "6.99", 608 | "CriticRating": "9.15" 609 | }, 610 | { 611 | "Artist": "Big Sean", 612 | "SongTitle": "Pull Up N Wreck (With Metro Boomin)", 613 | "AlbumTitle": "Sarah Springs", 614 | "Genre": "Classical", 615 | "Price": "13.99", 616 | "CriticRating": "9.14" 617 | }, 618 | { 619 | "Artist": "Lil Xan", 620 | "SongTitle": "Betrayed", 621 | "AlbumTitle": "Baker Grove", 622 | "Genre": "Classical", 623 | "Price": "14.89", 624 | "CriticRating": "9.13" 625 | }, 626 | { 627 | "Artist": "Playboi Carti", 628 | "SongTitle": "wokeuplikethis*", 629 | "AlbumTitle": "Logan Station", 630 | "Genre": "Classical", 631 | "Price": "7.99", 632 | "CriticRating": "9.12" 633 | }, 634 | { 635 | "Artist": "Russ", 636 | "SongTitle": "Losin Control", 637 | "AlbumTitle": "Simmons Estates", 638 | "Genre": "Rock", 639 | "Price": "7.89", 640 | "CriticRating": "9.11" 641 | }, 642 | { 643 | "Artist": "N.E.R.D", 644 | "SongTitle": "Lemon", 645 | "AlbumTitle": "Walker Villages", 646 | "Genre": "Classical", 647 | "Price": "15.89", 648 | "CriticRating": "9.1" 649 | }, 650 | { 651 | "Artist": "YBN Nahmir", 652 | "SongTitle": "Rubbin Off The Paint", 653 | "AlbumTitle": "Hernandez Hills", 654 | "Genre": "Country", 655 | "Price": "14.99", 656 | "CriticRating": "9.09" 657 | }, 658 | { 659 | "Artist": "blackbear", 660 | "SongTitle": "do re mi (feat. Gucci Mane)", 661 | "AlbumTitle": "Caitlin Streets", 662 | "Genre": "Country", 663 | "Price": "4.89", 664 | "CriticRating": "9.08" 665 | }, 666 | { 667 | "Artist": "Clean Bandit", 668 | "SongTitle": "I Miss You (feat. Julia Michaels)", 669 | "AlbumTitle": "Natalie Green", 670 | "Genre": "Reggae", 671 | "Price": "8.99", 672 | "CriticRating": "9.07" 673 | }, 674 | { 675 | "Artist": "21 Savage", 676 | "SongTitle": "Disrespectful", 677 | "AlbumTitle": "Potter Causeway", 678 | "Genre": "Pop", 679 | "Price": "0.89", 680 | "CriticRating": "9.06" 681 | }, 682 | { 683 | "Artist": "Taylor Swift", 684 | "SongTitle": "...Ready For It?", 685 | "AlbumTitle": "Kelly Course", 686 | "Genre": "Country", 687 | "Price": "17.99", 688 | "CriticRating": "9.05" 689 | }, 690 | { 691 | "Artist": "Sam Smith", 692 | "SongTitle": "Say It First", 693 | "AlbumTitle": "Chelsea Estates", 694 | "Genre": "Country", 695 | "Price": "14.99", 696 | "CriticRating": "9.04" 697 | }, 698 | { 699 | "Artist": "Niall Horan", 700 | "SongTitle": "Slow Hands", 701 | "AlbumTitle": "Robinson Forge", 702 | "Genre": "Rock", 703 | "Price": "12.99", 704 | "CriticRating": "9.03" 705 | }, 706 | { 707 | "Artist": "Liam Payne", 708 | "SongTitle": "Strip That Down", 709 | "AlbumTitle": "Michael Gardens", 710 | "Genre": "Rock", 711 | "Price": "9.89", 712 | "CriticRating": "9.02" 713 | }, 714 | { 715 | "Artist": "Macklemore", 716 | "SongTitle": "Good Old Days (feat. Kesha)", 717 | "AlbumTitle": "Felicia Coves", 718 | "Genre": "Folk", 719 | "Price": "7.99", 720 | "CriticRating": "9.01" 721 | }, 722 | { 723 | "Artist": "XXXTENTACION", 724 | "SongTitle": "Everybody Dies In Their Nightmares", 725 | "AlbumTitle": "Hardin Pines", 726 | "Genre": "Country", 727 | "Price": "8.99", 728 | "CriticRating": "9" 729 | }, 730 | { 731 | "Artist": "DJ Khaled", 732 | "SongTitle": "I'm the One", 733 | "AlbumTitle": "Jordan Parkway", 734 | "Genre": "Folk", 735 | "Price": "5.89", 736 | "CriticRating": "8.99" 737 | }, 738 | { 739 | "Artist": "Taylor Swift", 740 | "SongTitle": "Gorgeous", 741 | "AlbumTitle": "Baird Groves", 742 | "Genre": "Folk", 743 | "Price": "2.99", 744 | "CriticRating": "8.98" 745 | }, 746 | { 747 | "Artist": "Cheat Codes", 748 | "SongTitle": "Feels Great (feat. Fetty Wap & CVBZ)", 749 | "AlbumTitle": "Vanessa Heights", 750 | "Genre": "Pop", 751 | "Price": "3.89", 752 | "CriticRating": "8.97" 753 | }, 754 | { 755 | "Artist": "Lil Uzi Vert", 756 | "SongTitle": "The Way Life Goes (feat. Nicki Minaj & Oh Wonder) - Remix", 757 | "AlbumTitle": "Michael Way", 758 | "Genre": "RNB", 759 | "Price": "5.89", 760 | "CriticRating": "8.96" 761 | }, 762 | { 763 | "Artist": "KYLE", 764 | "SongTitle": "iSpy (feat. Lil Yachty)", 765 | "AlbumTitle": "Olson Lodge", 766 | "Genre": "RNB", 767 | "Price": "15.99", 768 | "CriticRating": "8.95" 769 | }, 770 | { 771 | "Artist": "Future", 772 | "SongTitle": "Patek Water", 773 | "AlbumTitle": "Ellis Mountain", 774 | "Genre": "Jazz", 775 | "Price": "17.89", 776 | "CriticRating": "8.94" 777 | }, 778 | { 779 | "Artist": "DJ Khaled", 780 | "SongTitle": "Wild Thoughts", 781 | "AlbumTitle": "Robert Flat", 782 | "Genre": "RNB", 783 | "Price": "2.99", 784 | "CriticRating": "8.93" 785 | }, 786 | { 787 | "Artist": "Sam Smith", 788 | "SongTitle": "One Last Song", 789 | "AlbumTitle": "David Squares", 790 | "Genre": "Reggae", 791 | "Price": "15.89", 792 | "CriticRating": "8.92" 793 | }, 794 | { 795 | "Artist": "Migos", 796 | "SongTitle": "Bad and Boujee (feat. Lil Uzi Vert)", 797 | "AlbumTitle": "Sandra Corners", 798 | "Genre": "Pop", 799 | "Price": "14.99", 800 | "CriticRating": "8.91" 801 | }, 802 | { 803 | "Artist": "Sam Smith", 804 | "SongTitle": "Nothing Left For You", 805 | "AlbumTitle": "Brown Square", 806 | "Genre": "Country", 807 | "Price": "8.89", 808 | "CriticRating": "8.9" 809 | }, 810 | { 811 | "Artist": "Rich The Kid", 812 | "SongTitle": "New Freezer (feat. Kendrick Lamar)", 813 | "AlbumTitle": "Selena Vista", 814 | "Genre": "Country", 815 | "Price": "8.89", 816 | "CriticRating": "8.89" 817 | }, 818 | { 819 | "Artist": "Kane Brown", 820 | "SongTitle": "What Ifs", 821 | "AlbumTitle": "Hahn Branch", 822 | "Genre": "Pop", 823 | "Price": "18.99", 824 | "CriticRating": "8.88" 825 | }, 826 | { 827 | "Artist": "Big Sean", 828 | "SongTitle": "Bounce Back", 829 | "AlbumTitle": "Velasquez Brooks", 830 | "Genre": "Country", 831 | "Price": "14.89", 832 | "CriticRating": "8.87" 833 | }, 834 | { 835 | "Artist": "Kodak Black", 836 | "SongTitle": "Tunnel Vision", 837 | "AlbumTitle": "Susan Manors", 838 | "Genre": "Jazz", 839 | "Price": "2.89", 840 | "CriticRating": "8.86" 841 | }, 842 | { 843 | "Artist": "Offset", 844 | "SongTitle": "Nightmare", 845 | "AlbumTitle": "Ortiz Forks", 846 | "Genre": "Country", 847 | "Price": "18.99", 848 | "CriticRating": "8.85" 849 | }, 850 | { 851 | "Artist": "James Arthur", 852 | "SongTitle": "Say You Won't Let Go", 853 | "AlbumTitle": "Kelli Lodge", 854 | "Genre": "Country", 855 | "Price": "13.99", 856 | "CriticRating": "8.84" 857 | }, 858 | { 859 | "Artist": "Avicii", 860 | "SongTitle": "Lonely Together (feat. Rita Ora)", 861 | "AlbumTitle": "Adam Manor", 862 | "Genre": "Pop", 863 | "Price": "5.89", 864 | "CriticRating": "8.83" 865 | }, 866 | { 867 | "Artist": "Kesha", 868 | "SongTitle": "Praying", 869 | "AlbumTitle": "Robert Burgs", 870 | "Genre": "RNB", 871 | "Price": "16.99", 872 | "CriticRating": "8.82" 873 | }, 874 | { 875 | "Artist": "Kendrick Lamar", 876 | "SongTitle": "LOYALTY. FEAT. RIHANNA.", 877 | "AlbumTitle": "Joshua Roads", 878 | "Genre": "Classical", 879 | "Price": "9.99", 880 | "CriticRating": "8.81" 881 | }, 882 | { 883 | "Artist": "Bruno Mars", 884 | "SongTitle": "That's What I Like", 885 | "AlbumTitle": "Ellen Unions", 886 | "Genre": "Jazz", 887 | "Price": "18.89", 888 | "CriticRating": "8.8" 889 | }, 890 | { 891 | "Artist": "P!nk", 892 | "SongTitle": "What About Us", 893 | "AlbumTitle": "Bell Mission", 894 | "Genre": "Pop", 895 | "Price": "11.99", 896 | "CriticRating": "8.79" 897 | }, 898 | { 899 | "Artist": "Miguel", 900 | "SongTitle": "Sky Walker", 901 | "AlbumTitle": "Stanley Locks", 902 | "Genre": "Classical", 903 | "Price": "17.99", 904 | "CriticRating": "8.78" 905 | }, 906 | { 907 | "Artist": "21 Savage", 908 | "SongTitle": "Mad Stalkers", 909 | "AlbumTitle": "Henry Bridge", 910 | "Genre": "Jazz", 911 | "Price": "18.89", 912 | "CriticRating": "8.77" 913 | }, 914 | { 915 | "Artist": "Sam Smith", 916 | "SongTitle": "Midnight Train", 917 | "AlbumTitle": "Aaron Haven", 918 | "Genre": "Reggae", 919 | "Price": "4.99", 920 | "CriticRating": "8.76" 921 | }, 922 | { 923 | "Artist": "Daya", 924 | "SongTitle": "New", 925 | "AlbumTitle": "Gina Trafficway", 926 | "Genre": "Pop", 927 | "Price": "3.89", 928 | "CriticRating": "8.75" 929 | }, 930 | { 931 | "Artist": "Niall Horan", 932 | "SongTitle": "Too Much To Ask", 933 | "AlbumTitle": "Duran Row", 934 | "Genre": "Classical", 935 | "Price": "0.89", 936 | "CriticRating": "8.74" 937 | }, 938 | { 939 | "Artist": "XXXTENTACION", 940 | "SongTitle": "Look At Me!", 941 | "AlbumTitle": "Madison Freeway", 942 | "Genre": "Pop", 943 | "Price": "0.99", 944 | "CriticRating": "8.73" 945 | }, 946 | { 947 | "Artist": "Migos", 948 | "SongTitle": "T-Shirt", 949 | "AlbumTitle": "Johnston Drive", 950 | "Genre": "Jazz", 951 | "Price": "6.99", 952 | "CriticRating": "8.72" 953 | }, 954 | { 955 | "Artist": "Sam Smith", 956 | "SongTitle": "HIM", 957 | "AlbumTitle": "James Mews", 958 | "Genre": "Jazz", 959 | "Price": "0.99", 960 | "CriticRating": "8.71" 961 | }, 962 | { 963 | "Artist": "Rae Sremmurd", 964 | "SongTitle": "Perplexing Pegasus", 965 | "AlbumTitle": "Tammy Station", 966 | "Genre": "Reggae", 967 | "Price": "3.99", 968 | "CriticRating": "8.7" 969 | }, 970 | { 971 | "Artist": "Sam Smith", 972 | "SongTitle": "No Peace", 973 | "AlbumTitle": "Andrew Squares", 974 | "Genre": "Jazz", 975 | "Price": "0.89", 976 | "CriticRating": "8.69" 977 | }, 978 | { 979 | "Artist": "Lil Pump", 980 | "SongTitle": "Boss", 981 | "AlbumTitle": "Ashley Plain", 982 | "Genre": "Country", 983 | "Price": "8.89", 984 | "CriticRating": "8.68" 985 | }, 986 | { 987 | "Artist": "Thomas Rhett", 988 | "SongTitle": "Unforgettable", 989 | "AlbumTitle": "Kimberly Club", 990 | "Genre": "Country", 991 | "Price": "8.89", 992 | "CriticRating": "8.67" 993 | }, 994 | { 995 | "Artist": "Lauv", 996 | "SongTitle": "I Like Me Better", 997 | "AlbumTitle": "White Brooks", 998 | "Genre": "Folk", 999 | "Price": "7.89", 1000 | "CriticRating": "8.66" 1001 | }, 1002 | { 1003 | "Artist": "Shawn Mendes", 1004 | "SongTitle": "There's Nothing Holdin' Me Back", 1005 | "AlbumTitle": "Long Place", 1006 | "Genre": "Reggae", 1007 | "Price": "5.99", 1008 | "CriticRating": "8.65" 1009 | }, 1010 | { 1011 | "Artist": "Sam Smith", 1012 | "SongTitle": "\"Baby", 1013 | "AlbumTitle": " You Make Me Crazy\"", 1014 | "Genre": "Powell Stream", 1015 | "Price": "Folk", 1016 | "CriticRating": "1.89" 1017 | }, 1018 | { 1019 | "Artist": "Travis Scott", 1020 | "SongTitle": "beibs in the trap", 1021 | "AlbumTitle": "Sarah Place", 1022 | "Genre": "Classical", 1023 | "Price": "1.99", 1024 | "CriticRating": "8.63" 1025 | }, 1026 | { 1027 | "Artist": "Drake", 1028 | "SongTitle": "Passionfruit", 1029 | "AlbumTitle": "Kelly Cliff", 1030 | "Genre": "Pop", 1031 | "Price": "7.99", 1032 | "CriticRating": "8.62" 1033 | }, 1034 | { 1035 | "Artist": "SZA", 1036 | "SongTitle": "The Weekend", 1037 | "AlbumTitle": "Yates Terrace", 1038 | "Genre": "Jazz", 1039 | "Price": "15.89", 1040 | "CriticRating": "8.61" 1041 | }, 1042 | { 1043 | "Artist": "21 Savage", 1044 | "SongTitle": "X (feat. Future)", 1045 | "AlbumTitle": "Cathy Views", 1046 | "Genre": "Country", 1047 | "Price": "13.99", 1048 | "CriticRating": "8.6" 1049 | }, 1050 | { 1051 | "Artist": "Liam Payne", 1052 | "SongTitle": "Bedroom Floor", 1053 | "AlbumTitle": "Alejandro Spurs", 1054 | "Genre": "RNB", 1055 | "Price": "6.89", 1056 | "CriticRating": "8.59" 1057 | }, 1058 | { 1059 | "Artist": "blackbear", 1060 | "SongTitle": "do re mi", 1061 | "AlbumTitle": "John Courts", 1062 | "Genre": "Classical", 1063 | "Price": "13.89", 1064 | "CriticRating": "8.58" 1065 | }, 1066 | { 1067 | "Artist": "J. Cole", 1068 | "SongTitle": "No Role Modelz", 1069 | "AlbumTitle": "Wright Motorway", 1070 | "Genre": "Pop", 1071 | "Price": "8.89", 1072 | "CriticRating": "8.57" 1073 | }, 1074 | { 1075 | "Artist": "Justin Bieber", 1076 | "SongTitle": "Friends (with BloodPop��)", 1077 | "AlbumTitle": "Jill Underpass", 1078 | "Genre": "Jazz", 1079 | "Price": "4.89", 1080 | "CriticRating": "8.56" 1081 | }, 1082 | { 1083 | "Artist": "Rae Sremmurd", 1084 | "SongTitle": "Swang", 1085 | "AlbumTitle": "Joseph Streets", 1086 | "Genre": "RNB", 1087 | "Price": "1.99", 1088 | "CriticRating": "8.55" 1089 | }, 1090 | { 1091 | "Artist": "DJ Snake", 1092 | "SongTitle": "A Different Way (with Lauv)", 1093 | "AlbumTitle": "Mitchell Forges", 1094 | "Genre": "Folk", 1095 | "Price": "10.89", 1096 | "CriticRating": "8.54" 1097 | }, 1098 | { 1099 | "Artist": "Gucci Mane", 1100 | "SongTitle": "Curve (feat. The Weeknd)", 1101 | "AlbumTitle": "Hayes Plaza", 1102 | "Genre": "Jazz", 1103 | "Price": "6.89", 1104 | "CriticRating": "8.53" 1105 | }, 1106 | { 1107 | "Artist": "GoldLink", 1108 | "SongTitle": "Crew", 1109 | "AlbumTitle": "Ryan Crossroad", 1110 | "Genre": "Folk", 1111 | "Price": "8.99", 1112 | "CriticRating": "8.52" 1113 | }, 1114 | { 1115 | "Artist": "Famous Dex", 1116 | "SongTitle": "Pick It Up (feat. A$AP Rocky)", 1117 | "AlbumTitle": "Thomas Glens", 1118 | "Genre": "Rock", 1119 | "Price": "16.99", 1120 | "CriticRating": "8.51" 1121 | }, 1122 | { 1123 | "Artist": "Amin��", 1124 | "SongTitle": "Caroline", 1125 | "AlbumTitle": "Wilson Ridges", 1126 | "Genre": "Country", 1127 | "Price": "14.89", 1128 | "CriticRating": "8.5" 1129 | }, 1130 | { 1131 | "Artist": "DRAM", 1132 | "SongTitle": "Broccoli (feat. Lil Yachty)", 1133 | "AlbumTitle": "Robert Summit", 1134 | "Genre": "RNB", 1135 | "Price": "10.89", 1136 | "CriticRating": "8.49" 1137 | }, 1138 | { 1139 | "Artist": "The Weeknd", 1140 | "SongTitle": "Starboy", 1141 | "AlbumTitle": "Kelli Springs", 1142 | "Genre": "Rock", 1143 | "Price": "19.99", 1144 | "CriticRating": "8.48" 1145 | }, 1146 | { 1147 | "Artist": "Drake", 1148 | "SongTitle": "Portland", 1149 | "AlbumTitle": "Patrick Pines", 1150 | "Genre": "Classical", 1151 | "Price": "10.99", 1152 | "CriticRating": "8.47" 1153 | }, 1154 | { 1155 | "Artist": "The Chainsmokers", 1156 | "SongTitle": "Closer", 1157 | "AlbumTitle": "Hernandez Pines", 1158 | "Genre": "Folk", 1159 | "Price": "2.99", 1160 | "CriticRating": "8.46" 1161 | }, 1162 | { 1163 | "Artist": "Halsey", 1164 | "SongTitle": "Now Or Never", 1165 | "AlbumTitle": "Young Landing", 1166 | "Genre": "RNB", 1167 | "Price": "6.89", 1168 | "CriticRating": "8.45" 1169 | }, 1170 | { 1171 | "Artist": "Tee Grizzley", 1172 | "SongTitle": "First Day Out", 1173 | "AlbumTitle": "Garcia Row", 1174 | "Genre": "Reggae", 1175 | "Price": "19.89", 1176 | "CriticRating": "8.44" 1177 | }, 1178 | { 1179 | "Artist": "2 Chainz", 1180 | "SongTitle": "4:00 AM", 1181 | "AlbumTitle": "Edward Ranch", 1182 | "Genre": "Jazz", 1183 | "Price": "2.89", 1184 | "CriticRating": "8.43" 1185 | }, 1186 | { 1187 | "Artist": "Lil Uzi Vert", 1188 | "SongTitle": "Money Longer", 1189 | "AlbumTitle": "Matthew Locks", 1190 | "Genre": "RNB", 1191 | "Price": "19.89", 1192 | "CriticRating": "8.42" 1193 | }, 1194 | { 1195 | "Artist": "Lil Pump", 1196 | "SongTitle": "D Rose", 1197 | "AlbumTitle": "Derek Fall", 1198 | "Genre": "Classical", 1199 | "Price": "0.89", 1200 | "CriticRating": "8.41" 1201 | }, 1202 | { 1203 | "Artist": "The Chainsmokers", 1204 | "SongTitle": "Something Just Like This", 1205 | "AlbumTitle": "Orr Harbors", 1206 | "Genre": "Jazz", 1207 | "Price": "11.89", 1208 | "CriticRating": "8.4" 1209 | }, 1210 | { 1211 | "Artist": "Sam Smith", 1212 | "SongTitle": "Palace", 1213 | "AlbumTitle": "Sydney Spur", 1214 | "Genre": "Rock", 1215 | "Price": "16.89", 1216 | "CriticRating": "8.39" 1217 | }, 1218 | { 1219 | "Artist": "Drake", 1220 | "SongTitle": "Fake Love", 1221 | "AlbumTitle": "Cherry Junctions", 1222 | "Genre": "Country", 1223 | "Price": "10.99", 1224 | "CriticRating": "8.38" 1225 | }, 1226 | { 1227 | "Artist": "Post Malone", 1228 | "SongTitle": "No Option", 1229 | "AlbumTitle": "Luke Knolls", 1230 | "Genre": "Jazz", 1231 | "Price": "16.99", 1232 | "CriticRating": "8.37" 1233 | }, 1234 | { 1235 | "Artist": "Sam Smith", 1236 | "SongTitle": "The Thrill Of It All", 1237 | "AlbumTitle": "Kelly Dam", 1238 | "Genre": "Pop", 1239 | "Price": "4.89", 1240 | "CriticRating": "8.36" 1241 | }, 1242 | { 1243 | "Artist": "6LACK", 1244 | "SongTitle": "PRBLMS", 1245 | "AlbumTitle": "Shaw Pine", 1246 | "Genre": "RNB", 1247 | "Price": "8.89", 1248 | "CriticRating": "8.35" 1249 | }, 1250 | { 1251 | "Artist": "Sam Smith", 1252 | "SongTitle": "Scars", 1253 | "AlbumTitle": "Brown Rapids", 1254 | "Genre": "Pop", 1255 | "Price": "6.89", 1256 | "CriticRating": "8.34" 1257 | }, 1258 | { 1259 | "Artist": "Luke Combs", 1260 | "SongTitle": "When It Rains It Pours", 1261 | "AlbumTitle": "Herrera Mountain", 1262 | "Genre": "RNB", 1263 | "Price": "2.89", 1264 | "CriticRating": "8.33" 1265 | }, 1266 | { 1267 | "Artist": "ZAYN", 1268 | "SongTitle": "\"I Don't Wanna Live Forever (Fifty Shades Darker) - From \"\"Fifty Shades Darker (Original Motion Picture Soundtrack)\"\"\"", 1269 | "AlbumTitle": "Robinson Parkways", 1270 | "Genre": "Classical", 1271 | "Price": "6.89", 1272 | "CriticRating": "8.32" 1273 | }, 1274 | { 1275 | "Artist": "Kygo", 1276 | "SongTitle": "Kids in Love", 1277 | "AlbumTitle": "Armstrong Inlet", 1278 | "Genre": "Jazz", 1279 | "Price": "17.99", 1280 | "CriticRating": "8.31" 1281 | }, 1282 | { 1283 | "Artist": "A Boogie Wit da Hoodie", 1284 | "SongTitle": "Undefeated (feat. 21 Savage)", 1285 | "AlbumTitle": "Stephanie Villages", 1286 | "Genre": "Country", 1287 | "Price": "4.89", 1288 | "CriticRating": "8.3" 1289 | }, 1290 | { 1291 | "Artist": "Future", 1292 | "SongTitle": "Feed Me Dope", 1293 | "AlbumTitle": "Morrison Meadows", 1294 | "Genre": "Reggae", 1295 | "Price": "9.89", 1296 | "CriticRating": "8.29" 1297 | }, 1298 | { 1299 | "Artist": "Metro Boomin", 1300 | "SongTitle": "No Complaints", 1301 | "AlbumTitle": "Jade Meadow", 1302 | "Genre": "RNB", 1303 | "Price": "0.89", 1304 | "CriticRating": "8.28" 1305 | }, 1306 | { 1307 | "Artist": "YFN Lucci", 1308 | "SongTitle": "Everyday We Lit (feat. PnB Rock)", 1309 | "AlbumTitle": "Daniel Courts", 1310 | "Genre": "Country", 1311 | "Price": "2.99", 1312 | "CriticRating": "8.27" 1313 | }, 1314 | { 1315 | "Artist": "NAV", 1316 | "SongTitle": "Myself", 1317 | "AlbumTitle": "Stephanie Mountain", 1318 | "Genre": "Classical", 1319 | "Price": "2.89", 1320 | "CriticRating": "8.26" 1321 | }, 1322 | { 1323 | "Artist": "Calvin Harris", 1324 | "SongTitle": "Feels", 1325 | "AlbumTitle": "James Point", 1326 | "Genre": "Country", 1327 | "Price": "13.99", 1328 | "CriticRating": "8.25" 1329 | }, 1330 | { 1331 | "Artist": "Zedd", 1332 | "SongTitle": "Stay (with Alessia Cara)", 1333 | "AlbumTitle": "Mcdaniel Spring", 1334 | "Genre": "Rock", 1335 | "Price": "17.99", 1336 | "CriticRating": "8.24" 1337 | }, 1338 | { 1339 | "Artist": "Chance The Rapper", 1340 | "SongTitle": "No Problem (feat. Lil Wayne & 2 Chainz)", 1341 | "AlbumTitle": "Ellis Mountains", 1342 | "Genre": "RNB", 1343 | "Price": "9.89", 1344 | "CriticRating": "8.23" 1345 | }, 1346 | { 1347 | "Artist": "Russ", 1348 | "SongTitle": "What They Want", 1349 | "AlbumTitle": "Myers Manors", 1350 | "Genre": "Pop", 1351 | "Price": "2.89", 1352 | "CriticRating": "8.22" 1353 | }, 1354 | { 1355 | "Artist": "Jon Pardi", 1356 | "SongTitle": "Heartache On The Dance Floor", 1357 | "AlbumTitle": "Kevin Harbor", 1358 | "Genre": "Classical", 1359 | "Price": "9.89", 1360 | "CriticRating": "8.21" 1361 | }, 1362 | { 1363 | "Artist": "21 Savage", 1364 | "SongTitle": "Run Up the Racks", 1365 | "AlbumTitle": "Wheeler Hills", 1366 | "Genre": "Reggae", 1367 | "Price": "2.89", 1368 | "CriticRating": "8.2" 1369 | }, 1370 | { 1371 | "Artist": "Bryson Tiller", 1372 | "SongTitle": "Don't", 1373 | "AlbumTitle": "Harrell Turnpike", 1374 | "Genre": "Jazz", 1375 | "Price": "11.89", 1376 | "CriticRating": "8.19" 1377 | }, 1378 | { 1379 | "Artist": "A Boogie Wit da Hoodie", 1380 | "SongTitle": "Say A'", 1381 | "AlbumTitle": "Kevin Route", 1382 | "Genre": "Classical", 1383 | "Price": "6.89", 1384 | "CriticRating": "8.18" 1385 | }, 1386 | { 1387 | "Artist": "CNCO", 1388 | "SongTitle": "Reggaet�_n Lento (Remix) [CNCO & Little Mix]", 1389 | "AlbumTitle": "Kaufman Pines", 1390 | "Genre": "Classical", 1391 | "Price": "2.99", 1392 | "CriticRating": "8.17" 1393 | }, 1394 | { 1395 | "Artist": "Ayo & Teo", 1396 | "SongTitle": "Rolex", 1397 | "AlbumTitle": "Laurie Flats", 1398 | "Genre": "Jazz", 1399 | "Price": "9.99", 1400 | "CriticRating": "8.16" 1401 | }, 1402 | { 1403 | "Artist": "Bryson Tiller", 1404 | "SongTitle": "Exchange", 1405 | "AlbumTitle": "Martinez Freeway", 1406 | "Genre": "Pop", 1407 | "Price": "7.89", 1408 | "CriticRating": "8.15" 1409 | }, 1410 | { 1411 | "Artist": "6LACK", 1412 | "SongTitle": "Ex Calling", 1413 | "AlbumTitle": "Tara Plain", 1414 | "Genre": "Country", 1415 | "Price": "6.89", 1416 | "CriticRating": "8.14" 1417 | }, 1418 | { 1419 | "Artist": "Julia Michaels", 1420 | "SongTitle": "Issues", 1421 | "AlbumTitle": "Wolf Branch", 1422 | "Genre": "Rock", 1423 | "Price": "1.89", 1424 | "CriticRating": "8.13" 1425 | }, 1426 | { 1427 | "Artist": "Lil Pump", 1428 | "SongTitle": "Flex Like Ouu", 1429 | "AlbumTitle": "Shaw Road", 1430 | "Genre": "Pop", 1431 | "Price": "12.99", 1432 | "CriticRating": "8.12" 1433 | }, 1434 | { 1435 | "Artist": "Gucci Mane", 1436 | "SongTitle": "Both (feat. Drake)", 1437 | "AlbumTitle": "Emily Summit", 1438 | "Genre": "Rock", 1439 | "Price": "1.99", 1440 | "CriticRating": "8.11" 1441 | }, 1442 | { 1443 | "Artist": "Tee Grizzley", 1444 | "SongTitle": "From The D To The A (feat. Lil Yachty)", 1445 | "AlbumTitle": "Kimberly Lights", 1446 | "Genre": "RNB", 1447 | "Price": "8.89", 1448 | "CriticRating": "8.1" 1449 | }, 1450 | { 1451 | "Artist": "Drake", 1452 | "SongTitle": "One Dance", 1453 | "AlbumTitle": "Gutierrez Motorway", 1454 | "Genre": "Jazz", 1455 | "Price": "8.99", 1456 | "CriticRating": "8.09" 1457 | }, 1458 | { 1459 | "Artist": "21 Savage", 1460 | "SongTitle": "Still Serving", 1461 | "AlbumTitle": "Ryan Ridge", 1462 | "Genre": "Rock", 1463 | "Price": "18.89", 1464 | "CriticRating": "8.08" 1465 | }, 1466 | { 1467 | "Artist": "Young Thug", 1468 | "SongTitle": "pick up the phone", 1469 | "AlbumTitle": "Lynch Green", 1470 | "Genre": "Reggae", 1471 | "Price": "17.99", 1472 | "CriticRating": "8.07" 1473 | }, 1474 | { 1475 | "Artist": "Noah Cyrus", 1476 | "SongTitle": "Again", 1477 | "AlbumTitle": "Rodriguez Via", 1478 | "Genre": "Pop", 1479 | "Price": "15.89", 1480 | "CriticRating": "8.06" 1481 | }, 1482 | { 1483 | "Artist": "Khalid", 1484 | "SongTitle": "8TEEN", 1485 | "AlbumTitle": "Davis Stream", 1486 | "Genre": "Country", 1487 | "Price": "0.99", 1488 | "CriticRating": "8.05" 1489 | }, 1490 | { 1491 | "Artist": "Cheat Codes", 1492 | "SongTitle": "No Promises (feat. Demi Lovato)", 1493 | "AlbumTitle": "Charles Lock", 1494 | "Genre": "Reggae", 1495 | "Price": "9.89", 1496 | "CriticRating": "8.04" 1497 | }, 1498 | { 1499 | "Artist": "Hailee Steinfeld", 1500 | "SongTitle": "Most Girls", 1501 | "AlbumTitle": "Owen Forest", 1502 | "Genre": "Folk", 1503 | "Price": "12.99", 1504 | "CriticRating": "8.03" 1505 | }, 1506 | { 1507 | "Artist": "Trippie Redd", 1508 | "SongTitle": "Love Scars", 1509 | "AlbumTitle": "Ibarra Wall", 1510 | "Genre": "Country", 1511 | "Price": "0.99", 1512 | "CriticRating": "8.02" 1513 | }, 1514 | { 1515 | "Artist": "Khalid", 1516 | "SongTitle": "Saved", 1517 | "AlbumTitle": "Kurt Pike", 1518 | "Genre": "RNB", 1519 | "Price": "10.99", 1520 | "CriticRating": "8.01" 1521 | }, 1522 | { 1523 | "Artist": "PnB Rock", 1524 | "SongTitle": "\"Horses (with PnB Rock", 1525 | "AlbumTitle": " Kodak Black & A Boogie Wit da Hoodie)\"", 1526 | "Genre": "Carroll Mountains", 1527 | "Price": "Pop", 1528 | "CriticRating": "18.99" 1529 | }, 1530 | { 1531 | "Artist": "Mariah Carey", 1532 | "SongTitle": "All I Want for Christmas Is You", 1533 | "AlbumTitle": "Heather Well", 1534 | "Genre": "RNB", 1535 | "Price": "17.99", 1536 | "CriticRating": "7.99" 1537 | }, 1538 | { 1539 | "Artist": "Ozuna", 1540 | "SongTitle": "Se Prepar� ", 1541 | "AlbumTitle": "Rogers Divide", 1542 | "Genre": "Rock", 1543 | "Price": "0.99", 1544 | "CriticRating": "7.98" 1545 | }, 1546 | { 1547 | "Artist": "Sam Smith", 1548 | "SongTitle": "One Day At A Time", 1549 | "AlbumTitle": "Daniel Mission", 1550 | "Genre": "Pop", 1551 | "Price": "13.99", 1552 | "CriticRating": "7.97" 1553 | }, 1554 | { 1555 | "Artist": "Calvin Harris", 1556 | "SongTitle": "Slide", 1557 | "AlbumTitle": "Michael Village", 1558 | "Genre": "Classical", 1559 | "Price": "13.99", 1560 | "CriticRating": "7.96" 1561 | }, 1562 | { 1563 | "Artist": "21 Savage", 1564 | "SongTitle": "Darth Vader", 1565 | "AlbumTitle": "Tyler Greens", 1566 | "Genre": "Jazz", 1567 | "Price": "3.89", 1568 | "CriticRating": "7.95" 1569 | }, 1570 | { 1571 | "Artist": "Selena Gomez", 1572 | "SongTitle": "Fetish (feat. Gucci Mane)", 1573 | "AlbumTitle": "Christina Pass", 1574 | "Genre": "Reggae", 1575 | "Price": "7.99", 1576 | "CriticRating": "7.94" 1577 | }, 1578 | { 1579 | "Artist": "Brett Young", 1580 | "SongTitle": "In Case You Didn't Know", 1581 | "AlbumTitle": "Gene Coves", 1582 | "Genre": "Rock", 1583 | "Price": "14.89", 1584 | "CriticRating": "7.93" 1585 | }, 1586 | { 1587 | "Artist": "Sam Smith", 1588 | "SongTitle": "Stay With Me", 1589 | "AlbumTitle": "Garcia Skyway", 1590 | "Genre": "Pop", 1591 | "Price": "0.89", 1592 | "CriticRating": "7.92" 1593 | }, 1594 | { 1595 | "Artist": "Kygo", 1596 | "SongTitle": "It Ain't Me (with Selena Gomez)", 1597 | "AlbumTitle": "Jennifer Motorway", 1598 | "Genre": "RNB", 1599 | "Price": "18.99", 1600 | "CriticRating": "7.91" 1601 | } 1602 | ] --------------------------------------------------------------------------------