leilukin-site/_site/projects/playlists/index.html

624 lines
20 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en" dir="ltr" id="page-top">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:title" content="My Music Playlists">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Music playlists that I have created.">
<meta name="generator" content="Eleventy v2.0.1">
<meta property="og:type" content="website">
<meta property="og:url" content="https://leilukin.neocities.org/projects/playlists/">
<meta property="og:site_name" content="Leilukin's Hub">
<meta property="og:locale" content="en_MY">
<meta property="og:description" content="Music playlists that I have created.">
<meta name="twitter:card" content="summary">
<meta name="twitter:url" content="https://leilukin.neocities.org/projects/playlists/">
<meta name="twitter:description" content="Music playlists that I have created.">
<link rel="canonical" href="https://leilukin.neocities.org/projects/playlists/">
<link rel="stylesheet" href="/assets/css/main.css">
<link rel="stylesheet" href="/assets/css/pridesymbols.css">
<link rel="stylesheet" href="/assets/fonts/noto-sans/noto-sans.css">
<link href="/assets/fonts/fontawesome/css/fontawesome.css" rel="stylesheet" />
<link href="/assets/fonts/fontawesome/css/brands.css" rel="stylesheet" />
<link href="/assets/fonts/fontawesome/css/solid.css" rel="stylesheet" />
<link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon/favicon-16x16.png">
<link rel="manifest" href="/assets/favicon/site.webmanifest">
<title>
My Music Playlists | Leilukin's Hub
</title>
</head>
<body>
<header class="hero">
<div class="hero__top-bar hidden"></div>
<div class="hero__img">
<img fetchpriority="high" src="/assets/leilukin/Leilukins-Hub-website-banner.png" alt="Banner of Leilukin's Hub">
</div>
</header>
<style>
.hero {
width: 100%;
background-color: var(--clr-hero-bg);
display: flex;
flex-direction: column;
justify-content: center;
text-align: center;
}
.hero__top-bar {
background-color: var(--clr-navbar-bg);
width: 100%;
padding: 0.5em 0.7em;
}
.hero__img {
display: grid;
place-content: center;
}
.hero img {
object-fit: contain;
overflow: hidden;
max-height: 16rem;
filter: drop-shadow(0.1rem 0.1rem 0.2rem black);
}
</style>
<script defer>
const hero = document.querySelector(".hero");
const heroTopBarEl = document.querySelector(".hero__top-bar");
const headerImgEl = document.querySelector(".hero__img");
const todayEvent = getTodayEvent();
if (todayEvent) {
heroTopBarEl.classList.remove('hidden');
heroTopBarEl.innerHTML = todayEvent.blurb;
if (todayEvent.class) {
headerImgEl.classList.add(todayEvent.class);
}
}
function getTodayEvent() {
const date = new Date();
const month = date.getMonth() + 1;
const day = date.getDate();
const year = date.getFullYear();
const weekOfMonth = Math.ceil(day / 7);
const leilukinsHubLaunchDate = new Date("2022-09-11").getFullYear();
const siteAnniversary = year - leilukinsHubLaunchDate;
if (month === 3 && day === 1)
return {
blurb: `Today is <a href="https://www.unaids.org/en/zero-discrimination-day" target="_blank">Zero Discrimination Day</a>`,
class: "flag-progress-intersex",
};
else if (month === 3 && day === 8)
return {
blurb: `Today is <a href="https://www.internationalwomensday.com/" target="_blank">International Women's Day}</a>`,
class: "symbol-venus",
};
else if (month === 3 && day === 31)
return {
blurb: `Today is <a href="https://www.manygendersonevoice.org/tdov.html" target="_blank">Trans Day of Visibility</a>`,
class: "flag-trans",
};
else if (month === 4 && day === 6)
return {
blurb: `Today is <a href="https://internationalasexualityday.org/en" target="_blank">International Asexuality Day</a>`,
class: "flag-ace",
};
else if (month === 4 && day === 26)
return {
blurb: `Today is <a href="https://www.lesbianvisibilityweek.com" target="_blank">Lesbian Visibility Day</a>`,
class: "flag-lesbian",
};
else if (month === 4 && weekOfMonth === 4)
return {
blurb: `This week is <a href="https://www.lesbianvisibilityweek.com" target="_blank">Lesbian Visibility Week</a>`,
class: "flag-lesbian",
};
else if (month === 5 && day === 17)
return {
blurb: `Today is <a href="https://may17.org" target="_blank">International Day Against Homophobia, Biphobia and Transphobia</a>`,
class: "flag-progress",
};
else if (month === 5 && day === 19)
return {
blurb: `Today is <a href="https://www.believeoutloud.com/voices/article/agender-pride-day/" target="_blank">Agender Pride Day</a>`,
class: "flag-agender",
};
else if (month === 5 && day === 25)
return {
blurb: `Today is <a href="https://genderedintelligence.co.uk/panvisibilityday" target="_blank">Pansexual and Panromantic Awareness and Visibility Day</a>`,
class: "flag-pan",
};
else if (month === 6)
return {
blurb: `Happy <a href="https://www.loc.gov/lgbt-pride-month/about/" target="_blank">Pride Month</a>!`,
class: "flag-progress-intersex",
};
else if (month === 7 && day === 14)
return {
blurb: `Today is <a href="https://www.manygendersonevoice.org/non-binary-peoples-day.html" target="_blank">Non-Binary People's Day</a>`,
class: "flag-non-binary",
};
else if (month === 7 && day === 28)
return {
blurb: `Today is Leilukin's Birthday`
};
else if (month === 8 && day === 25)
return {
blurb: `Today is <a href="https://aromanticspectrumday.net/" target="_blank">Aromantic Spectrum Visibility Day</a>`,
class: "flag-aro",
};
else if (month === 9 && day === 11)
return {
blurb: `Today is the ${siteAnniversary}-year anniversary of the launch of Leilukin&#39;s Hub`
};
else if (month === 9 && day === 23)
return {
blurb: `Today is <a href="https://bivisibilityday.com/about" target="_blank">Bi Visibility Day</a>`,
class: "flag-bi",
};
else if (month === 10 && day === 8)
return {
blurb: `Today is <a href="https://www.lgbtiqhealth.org.au/international_lesbian_day2" target="_blank">International Lesbian Day</a>`,
class: "flag-lesbian",
};
else if (month === 10 && day === 11)
return {
blurb: `Today is <a href="https://www.hrc.org/resources/national-coming-out-day" target="_blank">National Coming Out Day</a>`,
class: "flag-rainbow",
};
else if (month === 10 && day === 17)
return {
blurb: `Today is the start of <a href="https://www.grlgbtqhealthcareconsortium.org/significantdates/genderfluid-visibility-week" target="_blank">Genderfluid Visibility Week</a>`,
class: "flag-genderfluid",
};
else if (month === 10 && day === 24)
return {
blurb: `Today is the start of <a href="https://www.grlgbtqhealthcareconsortium.org/significantdates/ace-week" target="_blank">Ace Week</a>`,
class: "flag-ace",
};
else if (month === 10 && day === 26)
return {
blurb: `Today is <a href="https://interactadvocates.org/intersex-awareness-day" target="_blank">Intersex Awareness Day</a>`,
class: "flag-intersex",
};
else if (month === 11 && day === 13)
return {
blurb: `Today is the start of <a href="https://glaad.org/transweek/" target="_blank">Transgender Awareness Week</a>`,
class: "flag-trans",
};
else
return null;
}
</script>
<nav class="navbar">
<div class="navbar__header">
<button class="navbar__toggle" aria-label="Navigation menu toggle">
<i class="fa-solid fa-bars"></i>
</button>
<h2 class="navbar__title">Navigation</h2>
</div>
<ul class="navbar__links">
<li>
<a href="/">Home</a>
</li>
<li>
<a href="/about/">About</a>
</li>
<li>
<a href="/now/">Now</a>
</li>
<li>
<a href="/blog/">Blog</a>
</li>
<li>
<a href="/articles/">Articles</a>
</li>
<li>
<a href="/projects/">Projects</a>
</li>
<li>
<a href="/shrines/">Shrines</a>
</li>
<li>
<a href="/links/">Links</a>
</li>
<li><a href="https://leilukin.123guestbook.com/">Guestbook</a></li>
</ul>
</nav>
<style>
.navbar {
background: var(--clr-navbar-bg);
padding: 0.6em 1em;
width: 100%;
z-index: 999;
position: sticky;
top: 0;
}
.navbar__header {
display: flex;
align-items: center;
gap: 0.8em;
}
.navbar__toggle {
border: none;
padding: 0;
margin: 0;
font-size: 1.3rem;
background-color: inherit;
color: var(--clr-navbar-link);
}
.navbar__toggle:focus,
.navbar a:focus {
outline: 0.15em solid var(--clr-navbar-link);
}
.navbar__title {
font-size: 1.3rem;
color: var(--clr-navbar-link);
}
.navbar a {
color: var(--clr-navbar-link);
text-decoration: none;
cursor: pointer;
}
.navbar a:hover {
color: var(--clr-link-hover);
}
.navbar a:focus {
outline-offset: 0.3em;
}
.navbar__links {
list-style: none;
display: none;
gap: 1em;
padding: 0.5em 2em;
overflow: auto;
}
.navbar__links--show {
display: grid;
}
/* Tablet screen size */
@media only screen and (min-width: 43.75rem) {
.navbar {
padding: 0 0.6em;
}
.navbar__header {
display: none;
}
.navbar__links {
display: flex;
justify-content: space-evenly;
gap: 0.5em;
flex-wrap: wrap;
padding: 0;
overflow: unset;
}
}
</style>
<script defer>
const navbarToggle = document.querySelector('.navbar__toggle');
const navbarLinks = document.querySelector(".navbar__links");
navbarToggle.addEventListener('click', () => {
navbarLinks.classList.toggle("navbar__links--show");
});
</script>
<main>
<header class="main__header">
<ul class="breadcrumbs">
<li>
<a href="/projects/">Projects</a>
</li>
</ul>
<h1>My Music Playlists</h1>
<p>Music playlists that I have created.</p>
</header>
<div class="content__wrapper">
<aside class="left-sidebar">
<details class="toc__wrapper sidebar--sticky">
<summary class="toc__heading">
On This Page
</summary>
<nav class="toc">
<ol>
<li><a href="#my-dear-summer-lover">My Dear Summer Lover</a>
</li>
<li><a href="#mandopop-lgbtq-anthem">Mandopop LGBTQ+ Anthem 華語流行音樂同志國歌</a>
</li>
</ol>
</nav>
</details>
</aside>
<style>
.toc__wrapper {
max-height: 89vh;
overflow: auto;
background-color: var(--clr-content-bg);
padding: 1rem 1.3rem;
}
.toc__heading {
font-size: 1.3rem;
font-weight: 700;
color: var(--clr-sub-heading);
cursor: pointer;
}
.toc ol,
.toc ol ol {
display: grid;
gap: 0.3em;
}
.toc ol {
border-top: 0.1em solid var(--clr-title-border);
padding-left: 1.3em;
padding-top: 1em;
}
.toc ol ol {
border-top: none;
list-style-type: disc;
padding-left: 1em;
padding-top: 0.3em;
}
.toc ol a {
font-size: 1.1rem;
padding-left: 0.3em;
}
.toc ol ol a {
padding: 0;
font-size: 1rem;
}
</style>
<div class="content ">
<div class="heading-wrapper h2">
<h2 id="my-dear-summer-lover">My Dear Summer Lover</h2>
<a class="heading-anchor" href="#my-dear-summer-lover" aria-labelledby="my-dear-summer-lover"><span hidden>#</span></a></div>
<figure>
<img src="/assets/projects/playlists/My-Dear-Summer-Lover-cover.png" alt="Cover image of A Summers End fanmix 'My Dear Summer Lover: A Sam x Michelle Fanmix'">
<figcaption>
[Image description: Sam and Michelle from A Summers End almost kisses, with a play symbol and text on the top left corner, and the text &quot;My Dear Summer Lover: A Sam x Michelle Fanmix&quot; in a digital style font in front.]
</figcaption>
</figure>
<p>A fanmix for the visual novel <a href="https://www.asummersend.com/home" target="_blank"><cite>A Summers End — Hong Kong 1986</cite></a>, dedicated to Sam and Michelles love story.</p>
<p>This mix contains mostly Cantonese and English songs, with one Mandarin song. Majority of these songs were performed by Hong Kong artists and released in the 80s, because A Summers End took place in Hong Kong and in the 80s.</p>
<p>I have carefully selected and arranged these tracks, so the lyrics would reflect Sam and Michelles relationship development throughout <cite>A Summers End</cite>. Therefore, the content of this mix could be considered spoilers if you have not played the visual novel.</p>
<p>Since Oracle and Bone has cited Anita Mui as a major inspiration for them and this visual novel, I have also included multiple songs performed by Anita Mui in this mix. Because A Summers End is a lesbian story, when I was choosing which songs to include in this mix, I also prioritize songs that were performed by women artists.</p>
<p>Tracklist:</p>
<ol>
<li>輕輕嘆 (Sigh Softly) — Deanie Ip</li>
<li>愛我便說愛我吧 (Just Say You Love Me) — Anita Mui</li>
<li>夏日戀人 (Summer Lover) — Anita Mui</li>
<li>星空下的戀人 (Lovers Under the Stars) — Shirley Kwan</li>
<li>I Want Your Love — CHIC</li>
<li>激情 (Passion) — Sandy Lam</li>
<li>When Will I See You Again — Teresa Carpio</li>
<li>愛你、想你 (Love You, Miss You) — Anita Mui</li>
<li>Within Youll Remain — Julia Hsu</li>
<li>I Want to Know What Love Is — Tina Arena</li>
<li>Touch — Anita Mui</li>
<li>親密愛人 (Intimate Lover) — Anita Mui</li>
</ol>
<p><a href="https://open.spotify.com/playlist/3SIV7VjSKhspYwugVIQjug" target="_blank" class="link-btn">Listen on Spotify</a></p>
<iframe style="border-radius:12px" src="https://open.spotify.com/embed/playlist/3SIV7VjSKhspYwugVIQjug?utm_source=generator" width="100%" height="380" frameBorder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe>
<div class="heading-wrapper h2">
<h2 id="mandopop-lgbtq-anthem">Mandopop LGBTQ+ Anthem 華語流行音樂同志國歌</h2>
<a class="heading-anchor" href="#mandopop-lgbtq-anthem" aria-labelledby="mandopop-lgbtq-anthem"><span hidden>#</span></a></div>
<figure>
<img src="/assets/projects/playlists/Mandopop-LGBTQ+-Anthem-Cover.png" alt="Cover image of the Mandopop LGBTQ+ Anthem playlist">
<figcaption>
[Image description: A progress pride flag, with Chinese words meaning queer anthem on top.]
</figcaption>
</figure>
<p>A collection of Mandarin queer anthems.</p>
<p>I made this playlist after discovering Wikipedia's list of Chinese queer anthems on <a href="https://zh.wikipedia.org/wiki/%E5%90%8C%E5%BF%97%E5%9C%8B%E6%AD%8C#%E8%8F%AF%E8%AA%9E">its Mandarin article for Gay Anthem (同志國歌)</a>.</p>
<p><a class="link-btn" href="https://open.spotify.com/playlist/5JXAUPZkmv1cFScAfhOkXh" target="_blank">Listen on Spotify</a></p>
<iframe style="border-radius:12px" src="https://open.spotify.com/embed/playlist/5JXAUPZkmv1cFScAfhOkXh?utm_source=generator" width="100%" height="380" frameBorder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe>
</div>
</div>
<style>
.breadcrumbs {
list-style: none;
padding: 0;
margin: 0 0 0.7em 0;
display: flex;
gap: 0.5em;
flex-wrap: wrap;
justify-content: center;
}
.breadcrumbs li::after {
content: '➔';
padding-left: 0.3em;
}
</style>
</main>
<footer class="footer">
<p>Made with ♥ by Leilukin since <time>11 September 2022</time></p>
<ul class="footer__links">
<li><a
href="/sitemap/
">Site Map</a></li>
<li><a
href="/changelogs/"
>Changelogs</a></li>
<li><a href="/feed.xml">RSS</a></li>
</ul>
</footer>
<style>
.footer {
margin-top: auto;
width: 100%;
background: var(--clr-main-footer-bg);
padding: 1rem 1rem 3rem 1rem;
text-align: center;
display: grid;
}
.footer p {
padding: 0;
}
.footer__links {
justify-self: center;
list-style: none;
margin: 0;
padding: 0;
display: flex;
gap: 0.7em;
}
.footer__links li:not(:last-child)::after {
content: '|';
padding-left: 0.6em;
}
/* Screen sizes larger than mobile */
@media only screen and (min-width: 30rem) {
.footer {
padding: 1rem 1rem 2rem 1rem;
}
}
/* Tablet screen size */
@media only screen and (min-width: 43.75rem) {
.footer {
padding: 1rem;
}
}
</style>
<button class="top-btn hidden" aria-label="Scroll to top">
<i class="fa-solid fa-chevron-up"></i>
</button>
<style>
.top-btn {
position: fixed;
margin: 0;
padding: 0;
bottom: 0.5rem;
right: 0.5rem;
z-index: 999;
border: none;
background-color: var(--clr-top-btn-bg);
color: var(--clr-top-btn-txt);
border-radius: 50em;
width: 2rem;
aspect-ratio: 1 / 1;
}
.top-btn:focus {
outline: 0.25em solid var(--clr-top-btn-bg);
outline-offset: 0.15em;
}
</style>
<script defer>
const topButton = document.querySelector(".top-btn");
window.onscroll = () => {
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
topButton.classList.remove("hidden");
} else {
topButton.classList.add("hidden");
}
}
topButton.addEventListener('click', () => {
window.scrollTo({
top: 0,
left: 0,
behavior: "smooth",
});
});
</script>
</body>
</html>