-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
142 lines (130 loc) · 6.55 KB
/
Copy pathindex.html
File metadata and controls
142 lines (130 loc) · 6.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="LinkPark resolves any music link — Spotify, Apple Music, YouTube — into clean, tracker-free links for every major streaming platform. Share music with anyone.">
<meta name="breachme-verify" content="breachme-verify=9e1708529cdbf321ee1c942fe400f344" />
<meta name="robots" content="index, follow">
<meta name="theme-color" content="#0a0a0f">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<!-- Open Graph / Social Previews -->
<meta property="og:type" content="website">
<meta property="og:url" content="/">
<meta property="og:title" content="LinkPark">
<meta property="og:description" content="Paste any streaming link or search a song. Get clean links for every platform instantly.">
<meta property="og:image" content="/assets/logo.webp">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="LinkPark">
<meta name="twitter:description" content="Paste any streaming link or search a song. Get clean links for every platform instantly.">
<meta name="twitter:image" content="/assets/logo.webp">
<link rel="canonical" href="/">
<link rel="icon" type="image/x-icon" href="assets/favicon.ico">
<title>LinkPark</title>
<link rel="preconnect" href="https://api.song.link">
<link rel="preconnect" href="https://api.search.tinyfish.ai">
<link rel="preconnect" href="https://itunes.apple.com">
<link rel="dns-prefetch" href="https://itunes.apple.com">
<link rel="stylesheet" href="style.css">
<script nonce="%%NONCE%%">
window.addEventListener('error', function(e) {
if (e.target && e.target.tagName === 'SCRIPT' && e.target.src.indexOf('config.js') !== -1) {
console.log('No local config.js found');
}
}, true);
</script>
<script src="config.js"></script>
</head>
<body>
<div class="wrap">
<header>
<div class="logo" role="img" aria-label="LinkPark logo — click to go home" tabindex="0">
<div class="logo-pink"></div>
<div class="logo-blue"></div>
<div class="logo-noise"></div>
</div>
<p>Find any song on every platform</p>
</header>
<main>
<form class="search-wrap" id="searchForm" role="search">
<input class="search-input" id="q" type="search" placeholder="Search a song…" autocomplete="off"
spellcheck="false" aria-label="Search for a song by name, artist, or paste a link">
<button type="submit" aria-hidden="true" style="display:none"></button>
<div class="dropdown" id="dd" role="listbox" aria-label="Search suggestions"></div>
</form>
<p class="hint" id="hint" aria-live="polite">↑ ↓ navigate · Enter select · Esc close</p>
<div class="loader" id="loader" role="status" aria-label="Resolving links…"><span></span><span></span><span></span></div>
<div class="error" id="err" role="alert"></div>
<div id="resultsGrid" class="results-grid" style="display:none"></div>
<div id="recentSection" class="stash-section" style="display:none">
<div class="stash-header">
<h2 class="stash-title">Recent</h2>
<button id="clearRecent" class="clear-btn" title="Clear History">×</button>
</div>
<div id="recentGrid" class="recent-grid"></div>
</div>
<div id="stashSection" class="stash-section">
<h2 class="stash-title launcher" title="Open full stash">Saved Songs</h2>
<div id="stashGrid" class="results-grid"></div>
</div>
<div class="card" id="card" aria-live="polite">
<div class="card-meta">
<button id="saveStar" class="save-btn" aria-label="Toggle favorite">
<svg viewBox="0 0 24 24"><path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"/></svg>
</button>
<img class="card-art" id="art" src="" alt="">
<div class="card-info">
<div class="card-title-wrap">
<div class="card-title" id="ctitle"></div>
</div>
<div class="card-artist" id="cartist"></div>
<div class="player-wrap" id="playerWrap" style="display:none">
<button class="play-btn" id="playBtn" aria-label="Play preview">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M8 5v14l11-7z" />
</svg>
</button>
<div class="seek-wrap" id="seekWrap" role="slider" aria-label="Audio progress" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0">
<div class="seek-bar">
<div class="seek-fill" id="seekFill"></div>
</div>
</div>
<div class="time-label" id="timeLabel" aria-live="off">0:00</div>
</div>
</div>
</div>
<div class="links" id="links" role="list" aria-label="Streaming platform links"></div>
<div class="card-footer">
<button id="shareCardBtn" class="share-card-btn" title="Share this music card" aria-label="Copy shareable link to this music card">
<svg viewBox="0 0 24 24" fill="none" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8"/><polyline points="16 6 12 2 8 6"/><line x1="12" y1="2" x2="12" y2="15"/></svg>
Share Music Card
</button>
</div>
</div>
</main>
</div>
<div id="stashModal" class="modal" style="display:none">
<div class="modal-content">
<div class="modal-header">
<h2>Saved Stash</h2>
<button id="closeStash" class="close-btn" aria-label="Close stash">×</button>
</div>
<div class="modal-sort">
<button class="sort-btn active" data-sort="date">Recently Added</button>
<button class="sort-btn" data-sort="name">Name</button>
<button class="sort-btn" data-sort="artist">Artist</button>
</div>
<div id="stashFullList" class="stash-full-list"></div>
</div>
</div>
<div id="imgModal" class="modal" style="display:none">
<div class="img-modal-content">
<img id="fullArt" src="" alt="Full size album artwork">
<button id="closeImg" class="close-btn">×</button>
</div>
</div>
<script type="module" src="js/script.js" nonce="%%NONCE%%"></script>
</body>
</html>