Public
Edited
Aug 18, 2024
Insert cell
Insert cell
Insert cell
Insert cell
mbo-music-export (1).csv
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell
user_albums_export
Insert cell
Insert cell
withImages = {
return Promise.all(
user_albums_export.slice(0, 10).map((review) =>
getImg({
title: review.Title,
lastName: review["Last Name"]
}).catch((e) => console.log(e))
)
);
}
Insert cell
Plot.plot({
facet: {
data: user_albums_export,
y: "Rating"
},
marks: [
Plot.dot(
user_albums_export,
Plot.dodgeY({
x: "Release_Date",
y: "Rating",
tip: true
})
)
]
})
Insert cell
getImg({
title: user_albums_export[4].Title,
lastName: user_albums_export[4]["Last Name"]
})
Insert cell
getImg = async ({ title, lastName }) => {
const release = `release:${title}`;
const artist = `artist:${lastName}`;

let json;

try {
const response = await fetch(
`https://musicbrainz.org/ws/2/release/?query=${release}%20AND%20${artist}&fmt=json`,
{
headers: {
"Content-Type": "application/json"
}
}
);

json = await response.json();
} catch {
// if that didn't work, try for a less aggressive search
const response = await fetch(
`https://musicbrainz.org/ws/2/release/?query=${release}&fmt=json`,
{
headers: {
"Content-Type": "application/json"
}
}
);

json = await response.json();
}

console.debug(`Got musicbrainz response for query against ${title}`, json);

for (const release of json.releases) {
try {
return await getCoverArt(release.id);
} catch {
continue;
}
}
}
Insert cell
getCoverArt = async (releaseId) => {
const response = await fetch(
`https://coverartarchive.org/release/${releaseId}`
);
const json = await response.json();

console.debug(
`Got coverartarchive response for query for ${releaseId}`,
json
);

let src; // TODO: create not found image

for (const image of json.images) {
if (image.thumbnails?.small) {
src = image.thumbnails?.small;
break;
}

if (image.image) {
src = image.image;
}
}

if (!src) {
throw new Error("No image found");
}

return src;
}
Insert cell
Insert cell
res.assessments.filter((d) => d.status != "FINE")
Insert cell
res = ({
assessments: [
{
firstName: "",
lastName: "100 gecs",
status: "FINE"
},
{
firstName: "",
lastName: "3776",
status: "FINE"
},
{
firstName: "",
lastName: "Aaliyah",
status: "FINE"
},
{
firstName: "Poppy",
lastName: "Ackroyd",
status: "FINE"
},
{
firstName: "",
lastName: "Aesop Rock",
status: "FINE"
},
{
firstName: "",
lastName: "AL-90",
status: "FINE"
},
{
firstName: "",
lastName: "Alice in Chains",
status: "FINE"
},
{
firstName: "",
lastName: "Animal Collective",
status: "FINE"
},
{
firstName: "",
lastName: "Aphex Twin",
status: "FINE"
},
{
firstName: "",
lastName: "Arctic Monkeys",
status: "FINE"
},
{
firstName: "The",
lastName: "Avalanches",
status: "FINE"
},
{
firstName: "",
lastName: "Bad Brains",
status: "FINE"
},
{
firstName: "Nik",
lastName: "Bärtsch's Ronin",
status: "FINE"
},
{
firstName: "Nik",
lastName: "Bärtsch's Ronin",
status: "FINE"
},
{
firstName: "",
lastName: "Basic Channel",
status: "FINE"
},
{
firstName: "The",
lastName: "Beach Boys",
status: "FINE"
},
{
firstName: "",
lastName: "Beach House",
status: "FINE"
},
{
firstName: "",
lastName: "Belong",
status: "FINE"
},
{
firstName: "",
lastName: "Björk",
status: "FINE"
},
{
firstName: "",
lastName: "Bonobo",
status: "FINE"
},
{
firstName: "The",
lastName: "Books",
status: "FINE"
},
{
firstName: "Anouar",
lastName: "Brahem",
status: "FINE"
},
{
firstName: "Nicholas",
lastName: "Britell",
status: "FINE"
},
{
firstName: "Nicholas",
lastName: "Britell",
status: "FINE"
},
{
firstName: "Dave",
lastName: "Brubeck",
status: "FINE"
},
{
firstName: "",
lastName: "bye2",
status: "FINE"
},
{
firstName: "",
lastName: "C418",
status: "FINE"
},
{
firstName: "",
lastName: "Cibo Matto",
status: "FINE"
},
{
firstName: "",
lastName: "CoLD SToRAGE",
status: "FINE"
},
{
firstName: "The",
lastName: "Comet Is Coming",
status: "FINE"
},
{
firstName: "Denzel",
lastName: "Curry",
status: "FINE"
},
{
firstName: "",
lastName: "Cut Copy",
status: "FINE"
},
{
firstName: "",
lastName: "Daft Punk",
status: "FINE"
},
{
firstName: "",
lastName: "DEAFCULT",
status: "FINE"
},
{
firstName: "",
lastName: "Death Grips",
status: "SOMEWHAT_CANCELLED",
reason: "Controversial lyrics and public behavior."
},
{
firstName: "",
lastName: "Death Grips",
status: "SOMEWHAT_CANCELLED",
reason: "Controversial lyrics and public behavior."
},
{
firstName: "",
lastName: "Deerhunter",
status: "FINE"
},
{
firstName: "",
lastName: "Deftones",
status: "FINE"
},
{
firstName: "The",
lastName: "Depreciation Guild",
status: "FINE"
},
{
firstName: "",
lastName: "DIIV",
status: "SOMEWHAT_CANCELLED",
reason: "Public accusations of misconduct."
},
{
firstName: "",
lastName: "DIIV",
status: "SOMEWHAT_CANCELLED",
reason: "Public accusations of misconduct."
},
{
firstName: "McKinley",
lastName: "Dixon",
status: "FINE"
},
{
firstName: "",
lastName: "Dizzee Rascal",
status: "FINE"
},
{
firstName: "The",
lastName: "Doors",
status: "FINE"
},
{
firstName: "",
lastName: "Dosh",
status: "FINE"
},
{
firstName: "",
lastName: "Drab Majesty",
status: "FINE"
},
{
firstName: "",
lastName: "Duster",
status: "FINE"
},
{
firstName: "Billie",
lastName: "Eilish",
status: "FINE"
},
{
firstName: "",
lastName: "Elder",
status: "FINE"
},
{
firstName: "",
lastName: "Emancipator",
status: "FINE"
},
{
firstName: "",
lastName: "Enon",
status: "FINE"
},
{
firstName: "",
lastName: "Explosions in the Sky",
status: "FINE"
},
{
firstName: "",
lastName: "Explosions in the Sky",
status: "FINE"
},
{
firstName: "La",
lastName: "Femme",
status: "FINE"
},
{
firstName: "",
lastName: "FKA twigs",
status: "FINE"
},
{
firstName: "",
lastName: "FKA twigs",
status: "FINE"
},
{
firstName: "",
lastName: "FKA twigs",
status: "FINE"
},
{
firstName: "",
lastName: "Fleshwater",
status: "FINE"
},
{
firstName: "",
lastName: "Flight Facilities",
status: "FINE"
},
{
firstName: "",
lastName: "Floral",
status: "FINE"
},
{
firstName: "",
lastName: "Fog Lake",
status: "FINE"
},
{
firstName: "Toby",
lastName: "Fox",
status: "FINE"
},
{
firstName: "",
lastName: "Fugazi",
status: "FINE"
},
{
firstName: "",
lastName: "Future Islands",
status: "FINE"
},
{
firstName: "João",
lastName: "Gilberto",
status: "FINE"
},
{
firstName: "",
lastName: "Giraffes? Giraffes!",
status: "FINE"
},
{
firstName: "Philip",
lastName: "Glass",
status: "FINE"
},
{
firstName: "",
lastName: "Global Communication",
status: "FINE"
},
{
firstName: "",
lastName: "Godspeed You! Black Emperor",
status: "FINE"
},
{
firstName: "",
lastName: "Golden Features",
status: "FINE"
},
{
firstName: "Mick",
lastName: "Gordon",
status: "FINE"
},
{
firstName: "The",
lastName: "Go! Team",
status: "FINE"
},
{
firstName: "",
lastName: "Grimes",
status: "SOMEWHAT_CANCELLED",
reason: "Controversial views and social media conduct."
},
{
firstName: "",
lastName: "Guerilla Toss",
status: "FINE"
},
{
firstName: "",
lastName: "Guitar",
status: "FINE"
},
{
firstName: "",
lastName: "GZA/Genius",
status: "FINE"
},
{
firstName: "Tim",
lastName: "Hecker",
status: "FINE"
},
{
firstName: "Tim",
lastName: "Hecker",
status: "FINE"
},
{
firstName: "",
lastName: "Hella",
status: "FINE"
},
{
firstName: "",
lastName: "HOME",
status: "FINE"
},
{
firstName: "",
lastName: "HOMESHAKE",
status: "FINE"
},
{
firstName: "",
lastName: "Humming Urban Stereo",
status: "FINE"
},
{
firstName: "",
lastName: "IDLES",
status: "FINE"
},
{
firstName: "",
lastName: "Inti-Illimani",
status: "FINE"
},
{
firstName: "",
lastName: "Isis",
status: "FINE"
},
{
firstName: "",
lastName: "Isis",
status: "FINE"
},
{
firstName: "",
lastName: "Jaga Jazzist",
status: "FINE"
},
{
firstName: "Nicolás",
lastName: "Jaar",
status: "FINE"
},
{
firstName: "",
lastName: "Jazz Spastiks",
status: "FINE"
},
{
firstName: "",
lastName: "jinsang",
status: "FINE"
},
{
firstName: "Antônio Carlos",
lastName: "Jobim",
status: "FINE"
},
{
firstName: "",
lastName: "Jóhann Jóhannsson",
status: "FINE"
},
{
firstName: "",
lastName: "Joy Division",
status: "FINE"
},
{
firstName: "",
lastName: "Kero Kero Bonito",
status: "FINE"
},
{
firstName: "The",
lastName: "Kilimanjaro Darkjazz Ensemble",
status: "FINE"
},
{
firstName: "Kendrick",
lastName: "Lamar",
status: "SOMEWHAT_CANCELLED",
reason: "Controversial statements and public behavior."
},
{
firstName: "",
lastName: "Little People",
status: "FINE"
},
{
firstName: "",
lastName: "Mahavishnu Orchestra",
status: "FINE"
},
{
firstName: "",
lastName: "Maps",
status: "FINE"
},
{
firstName: "",
lastName: "Massive Attack",
status: "FINE"
},
{
firstName: "",
lastName: "maudlin of the Well",
status: "FINE"
},
{
firstName: "Curtis",
lastName: "Mayfield",
status: "FINE"
},
{
firstName: "MF",
lastName: "DOOM",
status: "FINE"
},
{
firstName: "The",
lastName: "Microphones",
status: "FINE"
},
{
firstName: "",
lastName: "Milky Chance",
status: "FINE"
},
{
firstName: "",
lastName: "Modest Mouse",
status: "FINE"
},
{
firstName: "Janelle",
lastName: "Monáe",
status: "FINE"
},
{
firstName: "",
lastName: "Mount Kimbie",
status: "FINE"
},
{
firstName: "",
lastName: "Sigur Rós",
status: "FINE"
},
{
firstName: "",
lastName: "青葉市子 [Ichiko Aoba]",
status: "FINE"
},
{
firstName: "",
lastName: "This Town Needs Guns",
status: "FINE"
},
{
firstName: "",
lastName: "Wire",
status: "FINE"
},
{
firstName: "",
lastName: "Azealia Banks",
status: "SOMEWHAT_CANCELLED",
reason: "Controversial statements and behavior."
},
{
firstName: "",
lastName: "Against All Logic",
status: "FINE"
},
{
firstName: "Against All Logic",
lastName: "",
status: "FINE"
},
{
firstName: "",
lastName: "2814",
status: "FINE"
},
{
firstName: "",
lastName: "Beach House",
status: "FINE"
},
{
firstName: "",
lastName: "A.G. Cook",
status: "FINE"
},
{
firstName: "",
lastName: "Souls of Mischief",
status: "FINE"
},
{
firstName: "",
lastName: "Fishmans",
status: "FINE"
},
{
firstName: "",
lastName: "Kaytranada",
status: "FINE"
},
{
firstName: "The",
lastName: "Beatles",
status: "FINE"
},
{
firstName: "",
lastName: "Dälek",
status: "FINE"
},
{
firstName: "",
lastName: "Chelsea Wolfe",
status: "FINE"
},
{
firstName: "",
lastName: "Novos Baianos",
status: "FINE"
},
{
firstName: "",
lastName: "Cities Aviv",
status: "FINE"
},
{
firstName: "",
lastName: "Tool",
status: "FINE"
},
{
firstName: "",
lastName: "billy woods",
status: "FINE"
},
{
firstName: "",
lastName: "Mdou Moctar",
status: "FINE"
},
{
firstName: "",
lastName: "The Weeknd",
status: "FINE"
},
{
firstName: "",
lastName: "파란노을 [Parannoul]",
status: "FINE"
},
{
firstName: "",
lastName: "Sigur Rós",
status: "FINE"
},
{
firstName: "",
lastName: "Oneohtrix Point Never",
status: "FINE"
},
{
firstName: "",
lastName: "Grouper",
status: "FINE"
},
{
firstName: "",
lastName: "Steely Dan",
status: "FINE"
},
{
firstName: "",
lastName: "Tropical Fuck Storm",
status: "FINE"
},
{
firstName: "",
lastName: "Freddie Gibbs & The Alchemist",
status: "FINE"
},
{
firstName: "",
lastName: "The Smile",
status: "FINE"
},
{
firstName: "",
lastName:
"Vladimir Spivakov / Sergej Bezrodny / Dietmar Schwalke / Alexander Malter",
status: "FINE"
},
{
firstName: "",
lastName: "JPEGMAFIA",
status: "SOMEWHAT_CANCELLED",
reason: "Controversial statements and online behavior."
},
{
firstName: "",
lastName: "samlrc",
status: "FINE"
},
{
firstName: "",
lastName: "John Coltrane",
status: "FINE"
},
{
firstName: "",
lastName: "Sweet Trip",
status: "FINE"
},
{
firstName: "",
lastName: "Arctic Monkeys",
status: "FINE"
},
{
firstName: "",
lastName: "Xploding Plastix",
status: "FINE"
},
{
firstName: "",
lastName: "Autechre",
status: "FINE"
},
{
firstName: "",
lastName: "Brian Eno",
status: "FINE"
},
{
firstName: "",
lastName: "American Football",
status: "FINE"
},
{
firstName: "",
lastName: "Radiohead",
status: "SOMEWHAT_CANCELLED",
reason: "Allegations of misconduct surrounding personal relationships."
},
{
firstName: "",
lastName: "Lapalux",
status: "FINE"
},
{
firstName: "",
lastName: "Atoms for Peace",
status: "FINE"
},
{
firstName: "",
lastName: "Radiohead",
status: "SOMEWHAT_CANCELLED",
reason: "Allegations of misconduct surrounding personal relationships."
},
{
firstName: "",
lastName: "Do Make Say Think",
status: "FINE"
},
{
firstName: "",
lastName: "caP'n Jazz",
status: "FINE"
},
{
firstName: "",
lastName: "alt-J",
status: "FINE"
},
{
firstName: "",
lastName: "Caribou",
status: "FINE"
},
{
firstName: "",
lastName: "Hooverphonic",
status: "FINE"
},
{
firstName: "",
lastName: "Thom Yorke",
status: "FINE"
},
{
firstName: "",
lastName: "Ke$ha",
status: "FINE"
},
{
firstName: "",
lastName: "This Town Needs Guns",
status: "FINE"
},
{
firstName: "",
lastName: "Pink Floyd",
status: "FINE"
},
{
firstName: "",
lastName: "Geoff Barrow & Ben Salisbury",
status: "FINE"
},
{
firstName: "",
lastName: "Eno",
status: "FINE"
},
{
firstName: "",
lastName: "Rihanna",
status: "SOMEWHAT_CANCELLED",
reason: "Controversial statements and behavior."
},
{
firstName: "",
lastName: "Alvvays",
status: "FINE"
},
{
firstName: "",
lastName: "Black Country, New Road",
status: "FINE"
},
{
firstName: "",
lastName: "寺田創一 [Soichi Terada]",
status: "FINE"
},
{
firstName: "",
lastName: "Xiu Xiu",
status: "SOMEWHAT_CANCELLED",
reason: "Controversial statements and public behavior."
},
{
firstName: "",
lastName: "OutKast",
status: "FINE"
},
{
firstName: "",
lastName: "Arca",
status: "FINE"
},
{
firstName: "The",
lastName: "Jimi Hendrix Experience",
status: "FINE"
},
{
firstName: "",
lastName: "Deftones",
status: "FINE"
},
{
firstName: "",
lastName: "Around the Fur",
status: "FINE"
},
{
firstName: "",
lastName: "Fire! Orchestra",
status: "FINE"
},
{
firstName: "",
lastName: "Pescado Rabioso",
status: "FINE"
},
{
firstName: "",
lastName: "Art Blakey and The Jazz Messengers",
status: "FINE"
},
{
firstName: "",
lastName: "Solange",
status: "FINE"
},
{
firstName: "",
lastName: "Agalloch",
status: "SOMEWHAT_CANCELLED",
reason: "Allegations of misconduct."
},
{
firstName: "",
lastName: "Ulrich Schnauss",
status: "FINE"
},
{
firstName: "",
lastName: "Gonjasufi",
status: "FINE"
},
{
firstName: "Jorge",
lastName: "Ben",
status: "FINE"
},
{
firstName: "Johnny",
lastName: "Cash",
status: "FINE"
},
{
firstName: "",
lastName: "Sweet Trip",
status: "FINE"
},
{
firstName: "",
lastName: "Danny Brown",
status: "FINE"
},
{
firstName: "",
lastName: "Johnny Cash",
status: "FINE"
},
{
firstName: "",
lastName: "Autechre",
status: "FINE"
},
{
firstName: "",
lastName: "Xiu Xiu",
status: "SOMEWHAT_CANCELLED",
reason: "Controversial statements and public behavior."
},
{
firstName: "",
lastName: "Freddie Gibbs & Madlib",
status: "FINE"
},
{
firstName: "",
lastName: "Bowery Electric",
status: "FINE"
},
{
firstName: "",
lastName: "Sneaker Pimps",
status: "FINE"
},
{
firstName: "",
lastName: "The Millennium",
status: "FINE"
},
{
firstName: "",
lastName: "Ultimate Spinach",
status: "FINE"
},
{
firstName: "",
lastName: "Sun Kil Moon",
status: "SOMEWHAT_CANCELLED",
reason: "Controversial statements regarding relationships."
},
{
firstName: "",
lastName: "Ulver",
status: "FINE"
},
{
firstName: "",
lastName: "Bicep",
status: "FINE"
},
{
firstName: "",
lastName: "Morcheeba",
status: "FINE"
},
{
firstName: "",
lastName: "Vince Staples",
status: "FINE"
},
{
firstName: "",
lastName: "Laurie Anderson",
status: "FINE"
},
{
firstName: "",
lastName: "Big Calm",
status: "FINE"
},
{
firstName: "",
lastName: "Romy",
status: "FINE"
},
{
firstName: "",
lastName: "Monitors",
status: "FINE"
},
{
firstName: "black",
lastName: "midi",
status: "FINE"
},
{
firstName: "",
lastName: "Bones",
status: "FINE"
},
{
firstName: "",
lastName: "billy woods & Kenny Segal",
status: "FINE"
},
{
firstName: "",
lastName: "of Montreal",
status: "FINE"
},
{
firstName: "",
lastName: "Serge Gainsbourg",
status: "FINE"
},
{
firstName: "",
lastName: "Flume",
status: "FINE"
},
{
firstName: "",
lastName: "mewithoutYou",
status: "FINE"
},
{
firstName: "",
lastName: "H.E.R.",
status: "FINE"
},
{
firstName: "",
lastName: "Julien Baker",
status: "FINE"
},
{
firstName: "",
lastName: "King Gizzard and The Lizard Wizard",
status: "FINE"
},
{
firstName: "",
lastName: "Moderat",
status: "FINE"
},
{
firstName: "",
lastName: "Superorganism",
status: "FINE"
},
{
firstName: "",
lastName: "Madvillain",
status: "FINE"
},
{
firstName: "",
lastName: "The Beatles",
status: "FINE"
},
{
firstName: "",
lastName: "Dälek",
status: "FINE"
},
{
firstName: "",
lastName: "Chelsea Wolfe",
status: "FINE"
},
{
firstName: "",
lastName: "Novos Baianos",
status: "FINE"
},
{
firstName: "",
lastName: "knxda",
status: "FINE"
},
{
firstName: "",
lastName: "Elder",
status: "FINE"
},
{
firstName: "",
lastName: "Cries in A Minor",
status: "FINE"
},
{
firstName: "",
lastName: "Björk",
status: "FINE"
},
{
firstName: "",
lastName: "Björk",
status: "FINE"
},
{
firstName: "",
lastName: "Flamboyant",
status: "FINE"
},
{
firstName: "",
lastName: "Yoshu",
status: "FINE"
},
{
firstName: "",
lastName: "of Montreal",
status: "FINE"
},
{
firstName: "",
lastName: "Dawn Richard",
status: "FINE"
},
{
firstName: "",
lastName: "David Bowie",
status: "FINE"
},
{
firstName: "",
lastName: "Quicksilver Messenger Service",
status: "FINE"
},
{
firstName: "",
lastName: "Simon & Garfunkel",
status: "FINE"
},
{
firstName: "",
lastName: "Lana Del Rey",
status: "SOMEWHAT_CANCELLED",
reason: "Controversial statements and social media behavior."
},
{
firstName: "",
lastName: "Joni Mitchell",
status: "FINE"
},
{
firstName: "",
lastName: "Bruno Pernadas",
status: "FINE"
},
{
firstName: "",
lastName: "D'Angelo",
status: "FINE"
},
{
firstName: "",
lastName: "Kanye West",
status: "SOMEWHAT_CANCELLED",
reason: "Multiple controversies surrounding public statements."
},
{
firstName: "",
lastName: "Tame Impala",
status: "FINE"
},
{
firstName: "",
lastName: "Janelle Monáe",
status: "FINE"
},
{
firstName: "",
lastName: "Meatbodies",
status: "FINE"
},
{
firstName: "",
lastName: "John Coltrane",
status: "FINE"
},
{
firstName: "",
lastName: "Sufjan Stevens",
status: "FINE"
},
{
firstName: "",
lastName: "Call Me If You Get Lost",
status: "FINE"
},
{
firstName: "",
lastName: "Pink Floyd",
status: "FINE"
},
{
firstName: "",
lastName: "The Cure",
status: "FINE"
},
{
firstName: "",
lastName: "Nine Inch Nails",
status: "FINE"
},
{
firstName: "",
lastName: "Joy Division",
status: "FINE"
},
{
firstName: "",
lastName: "Do Make Say Think",
status: "FINE"
},
{
firstName: "",
lastName: "Fleet Foxes",
status: "FINE"
},
{
firstName: "",
lastName: "Death Grips",
status: "SOMEWHAT_CANCELLED",
reason: "Controversial lyrics and public behavior."
},
{
firstName: "",
lastName: "Deerhoof",
status: "FINE"
},
{
firstName: "",
lastName: "Supergrass",
status: "FINE"
},
{
firstName: "",
lastName: "Massive Attack",
status: "FINE"
}
]
})
Insert cell
Insert cell
ratings.csv
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell

One platform to build and deploy the best data apps

Experiment and prototype by building visualizations in live JavaScript notebooks. Collaborate with your team and decide which concepts to build out.
Use Observable Framework to build data apps locally. Use data loaders to build in any language or library, including Python, SQL, and R.
Seamlessly deploy to Observable. Test before you ship, use automatic deploy-on-commit, and ensure your projects are always up-to-date.
Learn more