diff options
author | pdp8 <pdp8@pdp8.info> | 2022-08-22 00:52:15 +0200 |
---|---|---|
committer | pdp8 <pdp8@pdp8.info> | 2022-08-22 00:52:15 +0200 |
commit | e3c672f4648997dbe00624e09c63c990a8ea3596 (patch) | |
tree | 2b81023c89da84b09188d9bbbcc3d907faf8df6f /html.rb | |
parent | 28792e4d504d59b5aeab70d66ea6be51c9c683b1 (diff) |
audio and video rendering, Fork-Awesome-1.2.0 included
Diffstat (limited to 'html.rb')
-rwxr-xr-x | html.rb | 153 |
1 files changed, 125 insertions, 28 deletions
@@ -1,43 +1,140 @@ #!/usr/bin/env ruby + ROOT = ARGV[0] SNIPPETS = File.join(File.dirname(__FILE__), "snippets") -tree = { - "music" => Dir[File.join(ROOT, "music", "*")], - "videos" => Dir[File.join(ROOT, "videos", "*")], -} -def html src - cat = File.basename(src, ".html") - html = File.read(File.join(SNIPPETS, "head.html")) - html += "<nav>\n" - html += "<a href='/about.html'><img src='/pdp8.png' id='logo' alt='pdp8'></a>\n" +def nav cat + html = "<nav>" + html += "<a href='/about.html'><img src='/pdp8.png' id='logo' alt='pdp8'></a>" ["music", "pictures", "videos", "code", "newsletter"].each do |c| c == cat ? cl = 'item current' : cl = 'item' - html += "<a class='#{cl}' href='/#{c}.html'>#{c}</a>\n" - end - html += "<a id='menu' href='#' onclick='show_vertical_menu()'>\n" - html += "<div class='fa fa-bars' aria-hidden='true'></div>\n" - html += "</a>\n" - html += "</nav>\n" - case cat - when "music" - html += music src - when "videos" - html += videos src - else - html += File.read(src) + html += "<a class='#{cl}' href='/#{c}.html'>#{c}</a>" end + html += "<a id='menu' href='#' onclick='show_vertical_menu()'>" + html += "<div class='fa fa-bars' aria-hidden='true'></div>" + html += "</a>" + html += "</nav>" + html +end + +def file_html basename + path = File.join(SNIPPETS, basename + ".html") + html = File.read(File.join(SNIPPETS, "head.html")) + html += nav basename + html += "<div class='post'>" + html += File.read(path) + html += "</div>" html += File.read(File.join(SNIPPETS, "tail.html")) - out = File.join(ROOT, cat + ".html") + print_html basename, html +end + +def print_html basename, html + out = File.join(ROOT, basename + ".html") puts out File.open(out, "w+") { |f| f.puts html } - puts `tidy -iqm -w 80 #{out} 2>&1` - # puts `echo "#{html}" > #{out} ` + puts `tidy -iqm -w 0 #{out} 2>&1` +end + +def music_html + music = Dir[File.join(ROOT, "music", "*")].sort.reverse + music.each_with_index do |dir, i| + html = File.read(File.join(SNIPPETS, "head.html")) + html += nav "music" + html += "<div class='post'>" + title = File.basename(dir).split("_")[1..-1].join(" ") + html += "<h1>#{title}</h1>" + html += File.read(File.join(dir, "README")) + "<p>" + cover = File.join("/", dir.sub(ROOT, ''), "cover.jpeg") + html += "<a title='Download cover.jpeg' href='#{cover}' download> + <img src='#{cover}' alt='cover'></a> + <p>" + Dir[File.join(dir, "*mp3")].each do |f| + f = "/" + f.sub(ROOT, '') + html += "<audio controls> + <source src='#{f}' type='audio/mpeg'> + <a href='#{f}'>#{f}</a> + </audio> + <a title='Download #{f}' href='#{f}' class='btn' download> + #{File.basename(f, '.mp3')}</a><br> + " + end + bc = "https://pdp8.bandcamp.com/#{title.gsub(' ', '-')}" + html += "<p>Bandcamp: <a href='#{bc}'>#{bc}</a>" + html += "</div>" + html += "<div class='pager'>" + j = (i - 1) % music.size + p = File.join("/", File.basename(music[j]) + ".html") + html += "<a class='btn-left' href='#{p}'> + <div class='fa fa-caret-left' aria-hidden='true'></div> previous + </a>" + html += "" + j = (i + 1) % music.size + n = File.join("/", File.basename(music[j]) + ".html") + html += "<a class='btn-right' href='#{n}'> + [#{i + 1}/#{music.size}] next <div class='fa fa-caret-right' aria-hidden='true'></div> + </a>" + + html += "</div>" + html += File.read(File.join(SNIPPETS, "tail.html")) + print_html File.basename(dir), html + if i == 0 + print_html "music", html + end + end end -["about", "code", "pictures", "info", "newsletter"].each do |cat| - html File.join(SNIPPETS, cat + ".html") +def video_html + videos = Dir[File.join(ROOT, "videos", "*")].sort.reverse + videos.each_with_index do |dir, i| + html = File.read(File.join(SNIPPETS, "head.html")) + html += nav "videos" + html += "<div class='post'>" + title = File.basename(dir).split("_")[1..-1].join(" ") + html += "<h1>#{title}</h1>" + txt = File.read(File.join(dir, "README")) + txt = txt.gsub(/(http\S*)/, '<a href="\1">\1</a>') + lines = txt.split("\n") + html += lines.shift + "<p>" + mp4 = File.join("/videos", File.basename(dir), title.gsub(" ", "_") + ".mp4") + webm = File.join("/videos", File.basename(dir), title.gsub(" ", "_") + ".webm") + + html += "<video controls> + <source src='#{mp4}' type='video/mpeg'> + <source src='#{webm}' type='video/webm'> + <a href='#{mp4}'>#{mp4}</a> + </video><p> + " + html += lines.join("<br>") + html += "</div>" + html += "<div class='pager'>" + j = (i - 1) % videos.size + p = File.join("/", File.basename(videos[j]) + ".html") + html += "<a class='btn-left' href='#{p}'> + <div class='fa fa-caret-left' aria-hidden='true'></div> previous + </a>" + html += "" + j = (i + 1) % videos.size + n = File.join("/", File.basename(videos[j]) + ".html") + html += "<a class='btn-right' href='#{n}'> + [#{i + 1}/#{videos.size}] next <div class='fa fa-caret-right' aria-hidden='true'></div> + </a>" + + html += "</div>" + html += File.read(File.join(SNIPPETS, "tail.html")) + print_html File.basename(dir), html + if i == 0 + print_html "videos", html + end + end +end + +music_html +video_html + +["about", "code", "pictures", "newsletter"].each do |basename| + file_html basename end -["pdp8.png", "style.css", "distances.js", "images.js"].each { |f| `cp "#{File.join(SNIPPETS, f)}" "#{ROOT}"` } +["pdp8.png", "style.css", "distances.js", "images.js"].each { |f| `rsync -av "#{File.join(SNIPPETS, f)}" "#{ROOT}"` } +`rsync -av #{File.join(SNIPPETS, "Fork-Awesome-1.2.0")} "#{ROOT}"` # rss |