2023-8-8 14:39
Saw
Kiana Ledé - Grudges (2023)
<div class="thread-content">
<div class="thread-inner">
<div class="album-info">
<div class="album-lockup">
<div class="album-artwork">
<img class="album-artwork-img" src="https://is2-ssl.mzstatic.com/image/thumb/Music126/v4/a2/fb/7a/a2fb7aea-010d-74bf-72f3-789369e65f3e/23UMGIM49817.rgb.jpg/800x800bb.jpg">
</div>
</div>
<div class="header-and-tracks">
<div class="album-header">
<div class="album-header-meta">
<h1 class="album-title">Grudges</h1>
<h2 class="album-artist">Kiana Ledé</h2>
<h3 class="album-meta-info">
<span class="token">R&B/Soul</span>
<span class="token">16/06/2023</span>
</h3>
</div>
<div class="album-notes">
<div class="description-container">
<div class="description-data">
<p>
<span class="line-title">
</span>
</p>
</div>
</div>
</div>
</div>
<div class="tracklist">
<div class="tracklist-row track">
<div class="tracklist-col song-index">
<span>1-1</span>
</div>
<div class="tracklist-col song-title">
<span>Bitter Bitch</span>
</div>
</div>
<div class="tracklist-row track">
<div class="tracklist-col song-index">
<span>1-2</span>
</div>
<div class="tracklist-col song-title">
<span>Irresponsible</span>
</div>
</div>
<div class="tracklist-row track">
<div class="tracklist-col song-index">
<span>1-3</span>
</div>
<div class="tracklist-col song-title">
<span>Promise Me</span>
</div>
</div>
<div class="tracklist-row track">
<div class="tracklist-col song-index">
<span>1-4</span>
</div>
<div class="tracklist-col song-title">
<span>Gone</span>
</div>
</div>
<div class="tracklist-row track">
<div class="tracklist-col song-index">
<span>1-5</span>
</div>
<div class="tracklist-col song-title">
<span>Gemini Slander</span>
</div>
</div>
<div class="tracklist-row track">
<div class="tracklist-col song-index">
<span>1-6</span>
</div>
<div class="tracklist-col song-title">
<span>LMK</span>
</div>
</div>
<div class="tracklist-row track">
<div class="tracklist-col song-index">
<span>1-7</span>
</div>
<div class="tracklist-col song-title">
<span>Jealous (feat. Ella Mai)</span>
</div>
</div>
<div class="tracklist-row track">
<div class="tracklist-col song-index">
<span>1-8</span>
</div>
<div class="tracklist-col song-title">
<span>Focus</span>
</div>
</div>
<div class="tracklist-row track">
<div class="tracklist-col song-index">
<span>1-9</span>
</div>
<div class="tracklist-col song-title">
<span>Damage</span>
</div>
</div>
<div class="tracklist-row track">
<div class="tracklist-col song-index">
<span>1-10</span>
</div>
<div class="tracklist-col song-title">
<span>Too Far</span>
</div>
</div>
<div class="tracklist-row track">
<div class="tracklist-col song-index">
<span>1-11</span>
</div>
<div class="tracklist-col song-title">
<span>Deeper</span>
</div>
</div>
<div class="tracklist-row track">
<div class="tracklist-col song-index">
<span>1-12</span>
</div>
<div class="tracklist-col song-title">
<span>Grudges (feat. Kiki & Friends)</span>
</div>
</div>
<div class="tracklist-row track">
<div class="tracklist-col song-index">
<span>1-13</span>
</div>
<div class="tracklist-col song-title">
<span>Deserve</span>
</div>
</div>
<div class="tracklist-row track">
<div class="tracklist-col song-index">
<span>1-14</span>
</div>
<div class="tracklist-col song-title">
<span>Same Type</span>
</div>
</div>
<div class="tracklist-row track">
<div class="tracklist-col song-index">
<span>1-15</span>
</div>
<div class="tracklist-col song-title">
<span>Where You Go</span>
</div>
</div>
<div class="tracklist-row track">
<div class="tracklist-col song-index">
<span>1-16</span>
</div>
<div class="tracklist-col song-title">
<span>Closure</span>
</div>
</div>
<div class="tracklist-row track">
<div class="tracklist-col song-index">
<span>1-17</span>
</div>
<div class="tracklist-col song-title">
<span>Magic</span>
</div>
</div>
</div>
<div class="bottom-metadata">
<div class="song-stat-container">
17 song(s)
</div>
<div class="release-stat-container">
<span class="token">CD</span>
<span class="token"></span>
<span class="token">C4</span>
</div>
<div class="release-footnotes">
97280000 bytes
</div>
</div>
</div>
</div>
<div class="download-info">
<div class="streaming">
<audio controls preload=auto id="audio-player" src="">
Browser does not support
<span>audio</span> element
</audio>
</div>
<div class="button-content">
<button class="download-button" id="download-button" type="button">
Download
</button>
</div>
</div>
</div>
</div>
<div id="downloadModal" class="download-modal">
<div class="download-modal-content">
<div class="download-modal-header">
<h1 class="download-modal-title">Mirrors</h1>
<span class="download-modal-close">×</span>
</div>
<div class="download-modal-body">
</div>
<div class="download-modal-footer">
</div>
</div>
</div>
<style type="text/css">
.thread-content {
line-height: 1.4;
color: rgba(0, 0, 0, 0.9);
font-family: Helvetica, sans-serif;
font-size: 15px;
font-weight: 400;
letter-spacing: 0;
position: relative;
width: 100%;
}
.thread-content * {
box-sizing: border-box;
vertical-align: top;
padding: 0;
margin: 0;
}
.thread-content h1,
.thread-content h2,
.thread-content h3 {
display: block;
}
.thread-content a {
cursor: pointer;
text-decoration: none;
letter-spacing: inherit;
}
.thread-inner {
display: flex;
flex-direction: column;
margin-left: 20px;
margin-right: 20px;
margin-bottom: 20px;
padding: 0 0 0 50px;
}
.album-info {
padding-top: 20px;
padding-bottom: 20px;
display: flex;
flex-direction: column;
align-items: center;
flex: 2 0;
}
.album-lockup {
padding: 20px;
top: 40px;
}
.album-artwork {
box-shadow: 0 4px 8px 0 rgb(0 0 0 / 10%), 0 10px 13px 0 rgb(0 0 0 / 11%);
position: relative;
}
.album-artwork-img {
width: 350px;
height: 350px;
}
.header-and-tracks {
width: 100%;
flex: 1;
}
.album-header {
display: flex;
flex-flow: column;
}
.album-header-meta {
flex: 1;
width: 100%;
}
.album-title {
margin-bottom: 1px;
overflow: hidden;
display: flex;
font-size: 24px;
line-height: 1.16667;
font-weight: 600;
letter-spacing: 0;
margin-block-start: 8px;
margin-block-end: 8px;
margin-inline-start: 0px;
margin-inline-end: 0px;
}
.album-artist {
font-size: 24px;
line-height: 1.16667;
font-weight: 400;
letter-spacing: 0;
color: #543900;
margin-block-start: 6px;
margin-block-end: 6px;
margin-inline-start: 0px;
margin-inline-end: 0px;
}
.album-meta-info {
text-transform: uppercase;
margin-top: 4px;
color: rgba(60, 60, 67, 0.6);
font-size: 11px;
line-height: 1.18182;
font-weight: 500;
letter-spacing: 0;
margin-block-start: 5px;
margin-block-end: 5px;
margin-inline-start: 0px;
margin-inline-end: 0px;
}
.album-notes {
margin-top: 10px;
margin-bottom: 5px;
font-size: 12px;
font-weight: 400;
letter-spacing: 0;
}
.description-container {
overflow: hidden;
position: relative;
}
.description-data>p {
display: inline;
}
.line-title {
color: rgba(60, 60, 67, 0.6);
}
.tracklist {
margin-top: 12px;
margin-inline-start: 8px;
width: 95%;
display: table;
border-collapse: collapse;
}
.tracklist .tracklist-row {
display: table-row;
color: rgba(60, 60, 67, 0.6);
height: 45px;
border-bottom: 0.25px solid rgba(0, 0, 0, 0.15);
}
.tracklist .tracklist-col {
padding-top: 0;
padding-bottom: 0;
display: table-cell;
vertical-align: middle;
}
.tracklist-col.song-index {
width: 2.5rem;
padding-left: 5px;
}
.tracklist .song-title {
overflow: unset;
color: rgba(0, 0, 0, 0.8);
}
.tracklist .playable {
cursor: pointer;
}
.tracklist .playable:hover {
background-color: rgb(247, 247, 247);
}
.tracklist .playing {
font-weight: 600;
background-color: rgb(247, 247, 247);
}
.tracklist .playing > .song-title::before {
content: "";
display: inline-block;
width: 0;
height: 0;
border: 8px solid transparent;
border-left: 12px solid #afafaf;
vertical-align: text-bottom;
}
.bottom-metadata {
color: rgba(60, 60, 67, 0.6);
padding-top: 20px;
font-size: 11px;
font-weight: 500;
letter-spacing: 0;
}
.song-stat-container,
.release-stat-container,
.release-footnotes {
padding-bottom: 1px;
}
span.token::before {
content: "\2022\0020";
}
span.token:empty::before,
span.token:first-child::before {
content: "";
}
.hidden-info-wrapper {
padding-top: 2px;
}
.hidden-info-content {
font-weight: 500;
color: rgba(0, 0, 0, 0.6);
}
.download-info {
padding-top: 20px;
padding-bottom: 15px;
display: flex;
flex-flow: column;
flex: 0 0;
}
.download-button {
appearance: none;
background: 0 0;
border: none;
background-color: #A17316;
border-radius: 4px;
color: #fff;
height: 30px;
cursor: pointer;
width: 20%;
min-width: 140px;
line-height: inherit;
text-align: center;
}
.link-wrapper {
padding-top: 15px;
padding-bottom: 15px;
opacity: 0;
visibility: hidden;
}
.link-content {
vertical-align: text-bottom;
}
.download-link a {
color: rgba(0, 0, 0, 0.9);
font-size: 14px;
font-weight: 400;
}
.download-link a:hover {
color: #A1276B;
}
.link-passcode {
color: rgba(60, 60, 67, 0.6);
font-size: 14px;
font-weight: 500;
}
.show {
visibility: visible;
opacity: 1;
transition: visibility 0s linear 0s, opacity 300ms;
}
.download-modal {
display: none;
position: fixed;
z-index: 999;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: hidden;
background-color: rgba(0,0,0,0.6);
}
.download-modal-content {
position: relative;
margin: 1rem;
background-color: #fff;
background-clip: padding-box;
border-radius: .3rem;
}
.download-modal-header {
display: flex;
padding: 1rem;
border-bottom: 1px solid #dee2e6;
justify-content: space-between;
align-items: center;
}
.download-modal-close {
font-size: 1.5rem;
font-weight: 600;
}
.download-modal-close:hover,
.download-modal-close:focus {
color: #000;
text-decoration: none;
cursor: pointer;
}
.download-modal-body {
padding: 1rem;
}
.download-modal-body .segment {
display: flex;
flex-wrap: wrap;
flex-flow: column;
padding: 1rem 0;
border-bottom: 1px solid #dee2e6;
}
.download-modal-body .segment:first-child {
padding-top: 0;
}
.download-modal-body .segment:last-child {
border-bottom: none;
padding-bottom: 0;
}
.download-modal-body .download-link {
padding-block-start: 0.4rem;
display: flex;
flex-flow: row;
justify-content: space-between;
}
.link-passcode {
font-weight: 300;
text-shadow: #a7a7a7 0px 0px 10px;
}
.download-modal-body a {
overflow-wrap: anywhere;
}
.download-modal-footer {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: flex-end;
padding: .75rem;
border-top: 1px solid #dee2e6;
}
.download-info .button-content {
margin-top: 2rem;
}
@media only screen and (min-width: 576px) {
.download-modal-content {
margin: 6.75rem auto;
max-width: 500px;
}
}
@media only screen and (min-width: 1200px) {
.thread-inner {
flex-direction: row;
align-items: flex-start;
max-width: 1400px;
margin: auto;
}
.download-info {
position: sticky;
top: 0;
padding-top: 40px;
align-items: center;
}
}
</style>
<script>
document.styleSheets[0].cssRules[111].style.removeProperty('overflow');
const previewUrls = [
"https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview126/v4/0a/39/1d/0a391d87-7dd2-c420-532e-fc17e83945b8/mzaf_257912785329730754.plus.aac.p.m4a","https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview126/v4/6e/53/f3/6e53f33a-1cdb-b74a-43b7-5b462d5c8fa0/mzaf_8363694482521745911.plus.aac.p.m4a","https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview116/v4/45/13/3e/45133eb3-5b3c-7814-693f-29e65954088b/mzaf_16868105424015311153.plus.aac.p.m4a","https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview116/v4/17/8a/6d/178a6d18-2b7d-3c54-5477-8fd8888bcf91/mzaf_4982668448183892463.plus.aac.p.m4a","https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview126/v4/7b/f3/60/7bf360f1-ff70-ab6b-b73d-f24cb522d2a2/mzaf_3743586348037050344.plus.aac.p.m4a","https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview116/v4/06/d4/27/06d42747-edd2-98d7-38d6-5cbc96989ad4/mzaf_10266575995092495469.plus.aac.p.m4a","https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview116/v4/46/b8/ea/46b8ea2b-8378-cc84-a1bf-a8eda6de8b01/mzaf_6262334271757593949.plus.aac.p.m4a","https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview116/v4/a0/58/2d/a0582d62-fac5-7f78-dfad-cf3411d8941a/mzaf_15894145285835721019.plus.aac.p.m4a","https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview116/v4/88/f1/2d/88f12d5e-d63c-ea25-f720-0601c4bf9521/mzaf_964297647011863921.plus.aac.p.m4a","https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview126/v4/73/1f/61/731f61aa-069a-3099-5450-ab21fc5a41eb/mzaf_17089599661996914394.plus.aac.p.m4a","https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview126/v4/21/12/ba/2112bada-87aa-b793-0081-97309c6e8ce6/mzaf_16849960928099341722.plus.aac.p.m4a","https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview126/v4/26/e4/4c/26e44ca5-76bb-9cfa-29ed-42e4080cb503/mzaf_9489012731166984445.plus.aac.p.m4a","https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview126/v4/b0/6c/50/b06c5039-4759-e82a-e21b-2c06d32d1f3b/mzaf_3937908084597211279.plus.aac.p.m4a","https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview116/v4/d4/86/ec/d486ec3e-043f-bc85-9dbb-19fd2d1a66b2/mzaf_10231006631516966340.plus.aac.p.m4a","https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview126/v4/6c/80/b4/6c80b49e-f67d-887b-4992-27ee936a2dca/mzaf_10161483951060290966.plus.aac.p.m4a","https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview126/v4/3d/84/44/3d844463-6a1f-b2f6-d0b2-6a84c35ddcab/mzaf_14915866573413444964.plus.aac.p.m4a","https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview116/v4/80/b2/eb/80b2ebad-2236-9426-b287-3c0495f6d0c9/mzaf_8659521732736028047.plus.aac.p.m4a",
];
const links = [
"https://pixeldrain.com/u/8em43K7g","https://pan.baidu.com/s/1YBxJZu_UUkKXh9z87MiSiw?pwd=szas",
];
const downloadModal = document.getElementById("downloadModal");
const downloadBtn = document.getElementById("download-button");
const tracksDiv = document.querySelectorAll('.track');
const audioPlayer = document.getElementById('audio-player');
tracksDiv.forEach( (e, n) => {
if (previewUrls[n]) {
e.classList.add('playable');
e.addEventListener('click', handleTrackDivClick, false);
}
});
function handleTrackDivClick(event) {
const currentPlaying = document.querySelector('.track.playing');
const clicked = event.currentTarget;
const index = Array.from(clicked.parentElement.children).indexOf(clicked);
if (currentPlaying === clicked) {
return;
}
try {
currentPlaying?.classList.replace('playing', 'playable');
} catch (error) {
// no track is playing
}
clicked.classList.replace('playable', 'playing');
audioPlayer.src = previewUrls[index];
audioPlayer.play();
}
function populateDownloadModal(modal, links) {
const segmentContainer = document.createElement("div");
segmentContainer.classList.add("segment");
links.forEach((link) => {
const linkContainer = document.createElement("div");
linkContainer.classList.add("download-link");
linkContainer.innerHTML = `<a href="#">${link}</a></div>`;
linkContainer.querySelector("a").addEventListener('click', handleDownloadLinkClick, false);
segmentContainer.appendChild(linkContainer);
});
modal.querySelector(".download-modal-body").appendChild(segmentContainer);
}
function handleDownloadBtnClick(event, links) {
downloadModal.style.display = "block";
populateDownloadModal(downloadModal, links);
}
function handleDownloadLinkClick(event) {
event.target.id = 'download-link-clicked';
window.open(event.target.innerText);
callApi();
}
function resetDownloadModal(modal) {
const downloadModalBody = modal.querySelector(".download-modal-body");
while (downloadModalBody.firstChild) {
downloadModalBody.removeChild(downloadModalBody.firstChild);
}
}
downloadBtn.addEventListener('click', ( e ) => handleDownloadBtnClick(e, links), false);
document.querySelector(".download-modal-close").onclick = function () {
downloadModal.style.display = "none";
resetDownloadModal(downloadModal);
};
window.onclick = function (event) {
if (event.target === downloadModal) {
downloadModal.style.display = "none";
resetDownloadModal(downloadModal);
}
};
async function callApi(){const t=document.getElementById("download-link-clicked");if(t&&t.href){const e="https://pretunedb-worker.aivio.eu.org/api/records/click",n=document.querySelector("div.mainheader > div.menu > div > span.bold > a"),c=n?n.textContent.trim():null,i={linkClicked:t.textContent.trim(),nick:c};try{await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)})}catch(t){console.error("Error occurred:",t)}}}
</script>
<script src="https://automexis.aivio.eu.org/static/script.js" async no-referrer></script>