ctucx.git: webmusic-nginx

nginx xslt-based index files optimized for music, inspired by https://git.ztn.sh/zotan/webmusic

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 
<?xml version="1.0" encoding="UTF-8" ?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml" xmlns:func="http://exslt.org/functions" xmlns:str="http://exslt.org/strings" version="1.0" exclude-result-prefixes="xhtml" extension-element-prefixes="func str">
	<xsl:output method="html" encoding="UTF-8" />
	<xsl:template match="directory">
	<li>
		<a class="action"><xsl:text>[--] </xsl:text></a>
		<a class="dir" href="{str:encode-uri(current(),true())}/"><xsl:value-of select="." /></a>
	</li>
	</xsl:template>

	<xsl:template match="file">
	<li>
		<a class="action" href="{str:encode-uri(current(),true())}" download=""><xsl:text>[DL] </xsl:text></a>
		<a class="file" href="{str:encode-uri(current(),true())}" download=""><xsl:value-of select="." /></a>
	</li>
	</xsl:template>

	<xsl:template match="/">
		<xsl:text disable-output-escaping="yes">&lt;!DOCTYPE html&gt;</xsl:text>
		<html lang="en">
		<head>
			<title>webmusic not on .NET 5.0.3</title>

			<meta charset="UTF-8" />
			<meta name="viewport" content="width=device-width, initial-scale=1.0" />
			<meta name="mobile-web-app-capable" content="yes" />
			<meta name="apple-mobile-web-app-capable" content="yes" />
			<meta name="theme-color" content="#ffffff" />

			<link href="/assets/webmusic.css" rel="stylesheet" />

			<script src="/assets/webmusic.js"></script>

			<link rel="manifest" href="/assets/manifest.json" />
			<link rel="apple-touch-icon" sizes="57x57" href="/assets/favicon/apple-icon-57x57.png" />
			<link rel="apple-touch-icon" sizes="60x60" href="/assets/favicon/apple-icon-60x60.png" />
			<link rel="apple-touch-icon" sizes="72x72" href="/assets/favicon/apple-icon-72x72.png" />
			<link rel="apple-touch-icon" sizes="76x76" href="/assets/favicon/apple-icon-76x76.png" />
			<link rel="apple-touch-icon" sizes="114x114" href="/assets/favicon/apple-icon-114x114.png" />
			<link rel="apple-touch-icon" sizes="120x120" href="/assets/favicon/apple-icon-120x120.png" />
			<link rel="apple-touch-icon" sizes="144x144" href="/assets/favicon/apple-icon-144x144.png" />
			<link rel="apple-touch-icon" sizes="152x152" href="/assets/favicon/apple-icon-152x152.png" />
			<link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-icon-180x180.png" />
			<link rel="icon" type="image/png" sizes="192x192" href="/assets/favicon/android-icon-192x192.png" />
			<link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon/favicon-32x32.png" />
			<link rel="icon" type="image/png" sizes="96x96" href="/assets/favicon/favicon-96x96.png" />
			<link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon/favicon-16x16.png" />
		</head>
		<body>
			<div id="container">
				<h2><xsl:value-of select="$path"/><xsl:text> </xsl:text>
				<span id="state"></span><xsl:text> </xsl:text><span id="flags">[<span id="repeatButton">R</span><span id="continuousButton">C</span>]</span></h2>
				<li>
					<a class="action-muted">[..]</a>
					<a href=".." id="back" class="entry-muted cfont"> Go back</a>
				</li>
				<li>
					<a class="action-muted">[--]</a>
					<a class="entry-muted cfont" href="playlist.m3u"><xsl:text> Download playlist</xsl:text></a>
				</li>
				<br/>
				<xsl:apply-templates />
			</div>
		</body>
		</html>
	</xsl:template>
</xsl:stylesheet>