/ app / index.html
index.html
  1  <!DOCTYPE html>
  2  <html lang="en">
  3  
  4  <head>
  5      <meta charset="UTF-8">
  6      <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport">
  7      <meta content="A minimalistic, elegant video player built to enjoy a seamless shuffle stream of Daoko MVs"
  8            name="description">
  9      <meta content="#000000" name="theme-color">
 10      <meta content="yes" name="apple-mobile-web-app-capable">
 11      <meta content="black-translucent" name="apple-mobile-web-app-status-bar-style">
 12      <meta content="no-cache, no-store, must-revalidate" http-equiv="Cache-Control">
 13      <meta content="no-cache" http-equiv="Pragma">
 14      <meta content="0" http-equiv="Expires">
 15      <title>DaokoTube</title>
 16      <link href="data:image/svg+xml;utf8,%3Csvg%20width%3D%2732px%27%20height%3D%2732px%27%20viewBox%3D%270%200%2032%2032%27%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%3E%3Cpath%20fill%3D%27%231E88E5%27%20d%3D%27M16%2028.261c0%200-14-7.926-14-17.413%200-5.016%203.836-6.609%207.043-6.609%202.282%200%204.368%201.076%206.957%203.739%202.589-2.663%204.675-3.739%206.957-3.739%203.207%200%207.043%201.593%207.043%206.609%200%209.487-14%2017.413-14%2017.413z%27/%3E%3C/svg%3E" rel="icon"
 17            type="image/svg+xml"/>
 18      <link href="css/utilities.css" rel="stylesheet">
 19      <link href="css/index.css" rel="stylesheet">
 20      <link href="css/custom-cursor.css" rel="stylesheet">
 21  </head>
 22  
 23  <body>
 24  <noscript>
 25      <div class="noscript-message">
 26          <h2>👾 JavaScript Required 👾</h2>
 27          <p>👾 DaokoTube requires JavaScript to be enabled in your browser. 👾</p>
 28          <p>👾 Please enable JavaScript and reload the page to continue. 👾</p>
 29      </div>
 30  </noscript>
 31  <div class="container">
 32      <button type="button" class="menu-toggle left icon-hover-effect"
 33              id="left-menu-toggle">
 34          <img alt="menu" class="menu-icon-img icon-base-32" height="48" src="https://img.icons8.com/neon/128/menu.png"
 35               width="48"/>
 36      </button>
 37      <nav class="sidebar left unified-control-base"
 38           id="left-menu" aria-label="Main navigation">
 39          <div class="sidebar-content">
 40              <div class="menu-header">
 41                  <a class="logo-link icon-hover-effect"
 42                     href="https://daoko.jp"
 43                     rel="noopener noreferrer"
 44                     target="_blank">
 45                      <div class="logo-container">
 46                          <img alt="D" class="logo-icon icon-base-24" src="https://img.icons8.com/neon/128/play.png" height="64"
 47                               width="64"/>
 48                          <img alt="A" class="logo-icon logo-icon-point-up icon-base-24" src="https://img.icons8.com/neon/128/play.png" height="64"
 49                               width="64"/>
 50                          <img alt="O" class="logo-icon icon-base-24" src="https://img.icons8.com/neon/128/cd.png" height="64"
 51                               width="64"/>
 52                          <img alt="K" class="logo-icon logo-icon-flip-horizontal icon-base-24" src="https://img.icons8.com/neon/128/play.png" height="64"
 53                               width="64"/>
 54                          <img alt="O" class="logo-icon icon-base-24" src="https://img.icons8.com/neon/128/cd.png" height="64"
 55                               width="64"/>
 56                          <img alt="T" class="logo-icon icon-base-24" src="https://img.icons8.com/neon/128/bass-clef.png" height="64"
 57                               width="64"/>
 58                          <img alt="U" class="logo-icon logo-icon-flip-vertical icon-base-24" src="https://img.icons8.com/neon/128/u-turn.png" height="64"
 59                               width="64"/>
 60                          <img alt="B" class="logo-icon icon-base-24" src="https://img.icons8.com/neon/128/cancer.png" height="64"
 61                               width="64"/>
 62                          <img alt="E" class="logo-icon icon-base-24" src="https://img.icons8.com/neon/128/water-element.png" height="64"
 63                               width="64"/>
 64                      </div>
 65                  </a>
 66              </div>
 67              <button type="button" class="stats-button primary-border primary-shadow-hover" id="livestream-toggle">
 68                  <img alt="rfid-signal" class="stats-icon-left icon-base-24" src="https://img.icons8.com/neon/96/rfid-signal.png"
 69                       height="48" width="48"/>
 70                  <span class="stats-text">Livestream Archives</span>
 71                  <img alt="retro-tv" class="stats-icon-right icon-base-24" src="https://img.icons8.com/neon/96/retro-tv.png" height="48"
 72                       width="48"/>
 73              </button>
 74              <button type="button" class="stats-button primary-border primary-shadow-hover" id="stats-toggle">
 75                  <img alt="drag-list-down" class="stats-icon-left icon-base-24" src="https://img.icons8.com/neon/96/drag-list-down.png"
 76                       height="48" width="48"/>
 77                  <span class="stats-text">Stats for Nerds</span>
 78                  <img alt="combo-chart" class="stats-icon-right icon-base-24" src="https://img.icons8.com/neon/96/combo-chart.png" height="48"
 79                       width="48"/>
 80              </button>
 81              <div class="section-content stats-section hidden" id="stats-content">
 82                  <p>Loading stats...</p>
 83              </div>
 84              <div class="menu-footer">
 85                  <div class="social-links">
 86                      <a class="social-link github-link icon-hover-effect"
 87                         href="https://github.com/dtub/DaokoTube"
 88                         rel="noopener noreferrer"
 89                         target="_blank">
 90                          <img alt="github" class="social-icon-img icon-base-32" src="https://img.icons8.com/neon/128/github.png" height="64"
 91                               width="64"/>
 92                      </a>
 93                      <a class="social-link instagram-link icon-hover-effect"
 94                         href="https://www.instagram.com/daoko_official/"
 95                         rel="noopener noreferrer"
 96                         target="_blank">
 97                          <img alt="instagram-new" class="social-icon-img icon-base-32" src="https://img.icons8.com/neon/128/instagram-new.png"
 98                               height="64" width="64"/>
 99                      </a>
100                      <a class="social-link instagram-alt-link icon-hover-effect"
101                         href="https://www.instagram.com/daoko_meme/"
102                         rel="noopener noreferrer"
103                         target="_blank">
104                          <img alt="instagram" class="social-icon-img icon-base-32" src="https://img.icons8.com/neon/128/instagram.png"
105                               height="64" width="64"/>
106                      </a>
107                      <a class="social-link photoshop-link icon-hover-effect"
108                         href="https://www.instagram.com/vi7._.o/"
109                         rel="noopener noreferrer"
110                         target="_blank">
111                          <img alt="photoshop" class="social-icon-img icon-base-32" src="https://img.icons8.com/neon/128/adobe-photoshop.png"
112                               height="64" width="64"/>
113                      </a>
114                  </div>
115  
116                  <!-- Language selection controls -->
117                  <div class="language-selector" id="language-selector">
118                      <button type="button" aria-label="Japanese" class="lang-btn primary-border primary-shadow-hover" data-lang="ja">
119                          <img alt="sakura" class="lang-icon-img icon-base-24" src="https://img.icons8.com/neon/96/sakura.png" height="48"
120                               width="48"/>
121                          <span>日本語</span>
122                      </button>
123                      <button type="button" aria-label="Chinese" class="lang-btn primary-border primary-shadow-hover" data-lang="zh">
124                          <img alt="lantern" class="lang-icon-img icon-base-24" src="https://img.icons8.com/neon/96/lantern.png" height="48"
125                               width="48"/>
126                          <span>中文</span>
127                      </button>
128                  </div>
129              </div>
130          </div>
131      </nav>
132  
133      <button type="button" class="menu-toggle right icon-hover-effect"
134              id="right-menu-toggle">
135              <img alt="playlist" class="playlist-icon-img icon-base-32" height="48" src="https://img.icons8.com/neon/128/video-playlist.png"
136                   width="48"/>
137              <img class="playlist-corner-icon" id="playlist-corner-icon" alt="notification" src="https://img.icons8.com/neon/24/--tinder.png" />
138      </button>
139      <nav class="sidebar right unified-control-base"
140           id="right-menu" aria-label="Playlist navigation">
141          <div class="sidebar-content">
142              <div class="playlist-search-row">
143                  <button type="button" class="menu-button small tooltip primary-border primary-shadow-hover"
144                          id="playlist-reshuffle-button" title="Reshuffle playlist"><img alt="shuffle" class="shuffle-icon-img icon-base-24"
145                                                                                          src="https://img.icons8.com/neon/96/shuffle.png"
146                                                                                          height="24"
147                                                                                          width="24"/>
148                  </button>
149                  <div class="playlist-search-container">
150                      <div class="search-icon-container">
151                          <img alt="search" class="search-icon-img icon-base-24" src="https://img.icons8.com/neon/96/search.png" height="48"
152                               width="48"/>
153                          <input class="playlist-search primary-border primary-shadow-hover"
154                                 id="playlist-search"
155                                 placeholder="Search videos..." type="text">
156                      </div>
157                      <button type="button" class="playlist-search-clear" id="playlist-search-clear">✕
158                      </button>
159                  </div>
160              </div>
161              <ul id="playlist-items"></ul>
162          </div>
163      </nav>
164  
165      <div class="video-wrapper">
166          <video controlslist="nodownload noplaybackrate"
167                 disablepictureinpicture
168                 id="video-player"
169                 muted
170                 playsinline
171                 poster="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjMDAwIi8+PC9zdmc+"
172                 preload="none"></video>
173          <div id="interaction-zones">
174              <div class="zone left-zone"></div>
175              <div class="zone center-zone"></div>
176              <div class="zone right-zone"></div>
177          </div>
178  
179          <div class="tap-controls-overlay" id="tap-controls-overlay">
180              <div class="tap-control tap-left"></div>
181              <div class="tap-control tap-center"></div>
182              <div class="tap-control tap-right"></div>
183          </div>
184  
185          <div id="startup-animation">
186              <svg id="startup-logo-svg"
187                   viewBox="0 0 100 35"
188                   xmlns="http://www.w3.org/2000/svg">
189                  <g id="logo-g-play">
190                      <path d="M52.83 2.35l-17.5 30.31h35L52.83 2.35z"/>
191                  </g>
192                  <g id="logo-g-left">
193                      <path d="M15.15 17.5L0 0v35l15.15-17.5z"/>
194                  </g>
195                  <g id="logo-g-right">
196                      <path d="M84.85 17.5L100 35V0l-15.15 17.5z"/>
197                  </g>
198                  <g id="logo-g-center-dot">
199                      <circle cx="35"
200                              cy="17.5"
201                              r="7.78"/>
202                  </g>
203                  <g id="logo-g-right-dot">
204                      <circle cx="67.5"
205                              cy="17.5"
206                              r="7.78"/>
207                  </g>
208              </svg>
209          </div>
210  
211          <div class="unified-control-round" id="spinner"></div>
212  
213          <div class="message-overlay unified-control-base unified-control-box" id="message-overlay"></div>
214  
215          <div class="progress-container unified-control-base" id="progress-container">
216              <div class="progress-bar">
217                  <div class="progress-line"></div>
218              </div>
219          </div>
220  
221          <div class="animation-icon"
222               id="play-pause-animation">
223              <div class="play-container">
224                  <img alt="play" class="play-icon-img" src="https://img.icons8.com/neon/256/play.png" height="128"
225                       width="128"/>
226              </div>
227              <div class="pause-container">
228                  <img alt="pause" class="pause-icon-img" src="https://img.icons8.com/neon/256/pause.png" height="128"
229                       width="128"/>
230              </div>
231          </div>
232          <div class="animation-icon fast-seek-animation"
233               id="fast-seek-animation">
234              <div class="seek-left-container">
235                  <img alt="rewind" class="rewind-icon-img" src="https://img.icons8.com/neon/256/rewind.png" height="128"
236                       width="128"/>
237              </div>
238              <div class="seek-right-container">
239                  <img alt="fast-forward" class="forward-icon-img" src="https://img.icons8.com/neon/256/fast-forward.png"
240                       height="128" width="128"/>
241              </div>
242          </div>
243          <div class="animation-icon switch-animation"
244               id="switch-animation">
245              <div class="switch-left-container">
246                  <img alt="back" class="back-icon-img" src="https://img.icons8.com/neon/256/back.png" height="128"
247                       width="128"/>
248              </div>
249              <div class="switch-right-container">
250                  <img alt="forward" class="forward-arrow-img" src="https://img.icons8.com/neon/256/forward.png" height="128"
251                       width="128"/>
252              </div>
253          </div>
254          <div class="animation-icon volume-animation"
255               id="volume-animation">
256              <div class="volume-mute-container">
257                  <img alt="mute" class="volume-icon-img" src="https://img.icons8.com/neon/256/mute.png" height="128"
258                       width="128"/>
259              </div>
260              <div class="volume-low-container">
261                  <img alt="low-volume" class="volume-icon-img" src="https://img.icons8.com/neon/256/low-volume.png" height="128"
262                       width="128"/>
263              </div>
264              <div class="volume-medium-container">
265                  <img alt="medium-volume" class="volume-icon-img" src="https://img.icons8.com/neon/256/medium-volume.png"
266                       height="128" width="128"/>
267              </div>
268              <div class="volume-high-container">
269                  <img alt="high-volume" class="volume-icon-img" src="https://img.icons8.com/neon/256/high-volume.png"
270                       height="128" width="128"/>
271              </div>
272              <div class="volume-max-container">
273                  <img alt="speaker" class="volume-icon-img" src="https://img.icons8.com/neon/256/speaker.png" height="128"
274                       width="128"/>
275              </div>
276          </div>
277          <!-- Fullscreen animation element removed - now using showIconAnimation directly -->
278          <!-- videofit-animation element removed - now using showIconAnimation directly -->
279      </div>
280  
281  
282  
283  </div>
284  
285  <!-- Main application script -->
286  <script crossorigin="anonymous" src="app.js" type="module"></script>
287  
288  </body>
289  
290  </html>