diff options
author | Doge <guiqiqi187@gmail.com> | 2021-05-15 17:35:35 +0800 |
---|---|---|
committer | Doge <guiqiqi187@gmail.com> | 2021-05-15 17:35:35 +0800 |
commit | 4ad7f73c7f04609a57fb322f652fbf4d6edd0241 (patch) | |
tree | da6c7ecaf205c41cb519883c27109d35c7b65338 | |
parent | 0090a12718400e9d3b230d85b93d54056eaede76 (diff) | |
download | chromate-4ad7f73c7f04609a57fb322f652fbf4d6edd0241.tar.gz chromate-4ad7f73c7f04609a57fb322f652fbf4d6edd0241.tar.bz2 chromate-4ad7f73c7f04609a57fb322f652fbf4d6edd0241.zip |
Add chapters to web-player support
-rw-r--r-- | layout/_partial/scripts.ejs | 5 | ||||
-rw-r--r-- | layout/post.ejs | 29 |
2 files changed, 33 insertions, 1 deletions
diff --git a/layout/_partial/scripts.ejs b/layout/_partial/scripts.ejs index da0a8a1..2efb659 100644 --- a/layout/_partial/scripts.ejs +++ b/layout/_partial/scripts.ejs @@ -41,6 +41,11 @@ <% if (is_post() && theme.podcast && page.podcast) { %> <script defer src="https://cdn.jsdelivr.net/npm/shikwasa/dist/shikwasa.min.js"></script> <link media="none" onload="media='all'" rel="stylesheet" href="https://cdn.jsdelivr.net/npm/shikwasa/dist/shikwasa.min.css"> + <% if (page.podcast.chapters) { %> + <script defer src="https://cdn.jsdelivr.net/npm/shikwasa/dist/shikwasa.chapter.min.js"></script> + <link media="none" onload="media='all'" rel="stylesheet" + href="https://cdn.jsdelivr.net/npm/shikwasa/dist/shikwasa.chapter.min.css"> + <% } %> <% } %> <!-- Font Awesome delay loading --> diff --git a/layout/post.ejs b/layout/post.ejs index 1e75de4..a9b1f8a 100644 --- a/layout/post.ejs +++ b/layout/post.ejs @@ -17,16 +17,43 @@ <%= page.title %> </h2> <% if (page.podcast) { %> + <script>let chapters = [];</script> <div class="post-podcast-player"></div> + <% if (page.podcast.chapters) { %> + <% + let final = page.podcast.duration; + let timestamps = []; + let data = page.podcast.chapters; + let chapters = []; + (data).forEach((chapter) => { + timestamps.push(chapter[1]); + }); + timestamps.push(final); + for (let index = 0; index < timestamps.length - 1; index++) { + let start = timestamps[index]; + let end = timestamps[index + 1]; + chapters.push({ + title: data[index][0], + startTime: start, endTime: end + }); + }; + %> + <script> + chapters = JSON.parse('<%- JSON.stringify(chapters) %>'); + </script> + <% } %> <script> window.addEventListener("load", () => { + if (chapters !== []) + Shikwasa.use(Chapter); const player = new Shikwasa({ container: () => document.querySelector('.post-podcast-player'), audio: { title: "<%= page.title %>", artist: "<%= page.podcast.authors %>", cover: "<%= page.podcast.cover %>", - src: "<%= page.podcast.media.url %>" + src: "<%= page.podcast.media.url %>", + chapters: chapters }, fixed: { type: "auto", |