From 26e22f8bd0753b49fc411f9a9a6d9c9827320bea Mon Sep 17 00:00:00 2001 From: danoloan Date: Sun, 30 Jan 2022 20:38:26 +0100 Subject: [PATCH] Add first version (from old git) --- admin/index.html | 35 ++++ admin/static/main.js | 114 +++++++++++++ covers/.gitignore | 2 + covers/covers.js | 53 ++++++ covers/fetch_covers.js | 32 ++++ covers/package.json | 6 + go.mod | 13 ++ go.sum | 42 +++++ index.html | 169 +++++++++++++++++++ main.go | 317 ++++++++++++++++++++++++++++++++++++ static/admin.css | 99 +++++++++++ static/load.gif | Bin 0 -> 119570 bytes static/main.css | 64 ++++++++ static/main.js | 65 ++++++++ static/noalbum.jpg | Bin 0 -> 32346 bytes static/prog.js | 123 ++++++++++++++ static/style.css | 109 +++++++++++++ systemd/muse-covers.service | 12 ++ systemd/muse.service | 12 ++ 19 files changed, 1267 insertions(+) create mode 100644 admin/index.html create mode 100644 admin/static/main.js create mode 100644 covers/.gitignore create mode 100644 covers/covers.js create mode 100755 covers/fetch_covers.js create mode 100644 covers/package.json create mode 100644 go.mod create mode 100644 go.sum create mode 100644 index.html create mode 100644 main.go create mode 100644 static/admin.css create mode 100644 static/load.gif create mode 100644 static/main.css create mode 100644 static/main.js create mode 100644 static/noalbum.jpg create mode 100644 static/prog.js create mode 100644 static/style.css create mode 100644 systemd/muse-covers.service create mode 100644 systemd/muse.service diff --git a/admin/index.html b/admin/index.html new file mode 100644 index 0000000..b2222b7 --- /dev/null +++ b/admin/index.html @@ -0,0 +1,35 @@ + + + + + + + + splog: zona del admin 😎 + + +

Zona del admin 😎

+
+ +
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+ + + + diff --git a/admin/static/main.js b/admin/static/main.js new file mode 100644 index 0000000..ae2ab4f --- /dev/null +++ b/admin/static/main.js @@ -0,0 +1,114 @@ +function refreshHeight(elem) { + elem.style.maxHeight = `${elem.scrollHeight}px`; +} +function validate(form) { + var valid = true; + if (form['artist'].value == '') { + form['artist'].parentElement.setAttribute('error', + 'Se necesita el nombre del artista'); + valid = false; + } + if (form['album'].value == '' && form['track'].value == '') { + form['album'].parentElement.setAttribute('error', + 'Se necesita al menos uno de entre «canción» o «áblum»'); + form['track'].parentElement.setAttribute('error', + 'Se necesita al menos uno de entre «canción» o «áblum»'); + valid = false; + } + refreshHeight(form.closest('.action-wrap')); + return valid; +} + +function deleteSong() { + var button = this; + var data = button.closest('.data-elem'); + var index = data.getAttribute('data-info'); + if (confirm('¿Seguro?')) { + fetch(`del?p=${index}`).then(response => { + var wrap = button.closest('.action-wrap'); + if (response.ok) { + data.parentElement.removeChild(data); + } else { + button.closest('.action') + .setAttribute('result', 'Error en la solicitud'); + } + refreshHeight(wrap); + }); + } +} + +fetch('../list') + .then(response => { + if (response.ok) { + return response.json(); + } + }) + .then(list => { + list.forEach((elem, index) => { + var newButton = document.createElement('button'); + var title = elem['track'] == undefined ? elem['album'] : elem['track']; + newButton.setAttribute('class', 'data-elem'); + newButton.onclick = deleteSong; + newButton.setAttribute('data-info', index); + newButton.innerText = `${elem['artist']} - ${title}`; + document.querySelector('#dellist').appendChild(newButton); + }); + }) + .catch(reason => console.log(reason)); + +document.querySelectorAll('.action-wrap').forEach(elem => { + var cajetin = elem.querySelector('.cajetin'); + elem.setAttribute('collapsed', 'true'); + elem.style.maxHeight = `${cajetin.scrollHeight}px`; + cajetin.onclick = function() { + var form = elem.querySelector('form'); + if (elem.getAttribute('collapsed') == 'true') { + refreshHeight(elem); + elem.setAttribute('collapsed', 'false'); + } else { + elem.style.maxHeight = `${cajetin.scrollHeight}px`; + elem.setAttribute('collapsed', 'true'); + } + } +}); + +document.querySelectorAll('.form-elem > input').forEach(elem => { + elem.addEventListener('input', () => { + elem.parentElement.removeAttribute('error'); + elem.closest('form').removeAttribute('result'); + refreshHeight(elem.closest('.action-wrap')); + }); +}); + +const add = document.querySelector('#add'); +add.addEventListener('submit', (event) => { + event.preventDefault(); + if (validate(add)) { + var xmlHttp = new XMLHttpRequest(); + var json = {} + var data = new FormData(add); + data.forEach((v, k) => json[k] = v); + if (!json['date']) { + const date = new Date(Date.now()); + const year = `${date.getFullYear()}`; + const month = `${date.getMonth() < 10 ? '0' : '' }${date.getMonth()+1}`; + const day = `${date.getDate() < 10 ? '0' : '' }${date.getDate()+1}`; + json['date'] = `${year}-${month}-${day}`; + } + fetch('add', { + method: 'POST', + body: JSON.stringify(json), + headers: { + 'Content-Type': 'application/json' + } + }).then(response => { + if (response.ok) { + add.setAttribute('result', 'Canción añadida'); + } else { + add.setAttribute('result', 'Error en la solicitud'); + } + refreshHeight(add.closest('.action-wrap')); + }); + } + return false; +}); diff --git a/covers/.gitignore b/covers/.gitignore new file mode 100644 index 0000000..504afef --- /dev/null +++ b/covers/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +package-lock.json diff --git a/covers/covers.js b/covers/covers.js new file mode 100644 index 0000000..956c294 --- /dev/null +++ b/covers/covers.js @@ -0,0 +1,53 @@ +const fetch = require('node-fetch'); +const allSettled = require('promise.allsettled'); +const lastfm = 'http://ws.audioscrobbler.com/2.0/' +const quality = 3; + +allSettled.shim(); + +async function asklastfm(apikey, query) { + try { + let url = `${lastfm}?format=json&api_key=${apikey}&${query}`; + let res = await fetch(url); + return res.json(); + } catch(e) { + console.log(query); + throw e; + } +} + +async function getalbum(apikey, elem) { + let query, info = undefined; + + if (elem['album'] !== undefined) { + query =`method=album.getinfo&artist=${encodeURIComponent(elem['artist'])}&album=${encodeURIComponent(elem['album'])}`; + info = await asklastfm(apikey, query); + } else if (elem['track'] !== undefined) { + query =`method=track.getinfo&artist=${encodeURIComponent(elem['artist'])}&track=${encodeURIComponent(elem['track'])}`; + info = (await asklastfm(apikey, query))['track'] + } + + if (info !== undefined) { + return info['album']; + } else { + return undefined; + } +} + +exports.updatecovers = async function (apikey, list) { + let promises = list.map(async elem => { + if (!elem.cover) { + let info = await getalbum(apikey, elem); + if (typeof info === 'object' && info['image'] instanceof Array) { + let count = info['image'].length; + let index = count > quality ? quality : count; + let image = info['image'][index]['#text']; + if (image) { + elem['cover'] = image; + } + } + } + return elem; + }); + return Promise.allSettled(promises); +} diff --git a/covers/fetch_covers.js b/covers/fetch_covers.js new file mode 100755 index 0000000..14535d8 --- /dev/null +++ b/covers/fetch_covers.js @@ -0,0 +1,32 @@ +#!/bin/node +const fs = require('fs'); +const fsp = fs.promises; +const covers = require('./covers.js') +const apikey = '77456d34d3c9185016ef4535935dccf3' + +function listener() { + console.log('File changed, updating covers...'); + watcher.close(); + fsp.readFile('../list.json') + .then(data => { + return covers.updatecovers(apikey, JSON.parse(data.toString())); + }) + .then(list => { + list = list.map(result => { + if (result.status === 'rejected') { + throw result.reason; + } + return result['value']; + }); + console.log(`Updated ${list.length} entries`); + return fsp.writeFile('../list.json', JSON.stringify(list, null, 4)); + }) + .catch(reason => { + console.log(reason); + }) + .finally(() => { + watcher = fs.watch('../list.json', listener); + }); +} + +let watcher = fs.watch('../list.json', listener); diff --git a/covers/package.json b/covers/package.json new file mode 100644 index 0000000..9a50314 --- /dev/null +++ b/covers/package.json @@ -0,0 +1,6 @@ +{ + "dependencies": { + "node-fetch": "^2.6.1", + "promise.allsettled": "^1.0.4" + } +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..51ab1d4 --- /dev/null +++ b/go.mod @@ -0,0 +1,13 @@ +module muse + +go 1.16 + +require ( + github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect + github.com/gorilla/feeds v1.1.1 // indirect + github.com/labstack/echo v3.3.10+incompatible + github.com/labstack/gommon v0.3.0 // indirect + github.com/stretchr/testify v1.7.0 // indirect + github.com/valyala/fasttemplate v1.2.1 // indirect + golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..1ba6cc4 --- /dev/null +++ b/go.sum @@ -0,0 +1,42 @@ +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/gorilla/feeds v1.1.1 h1:HwKXxqzcRNg9to+BbvJog4+f3s/xzvtZXICcQGutYfY= +github.com/gorilla/feeds v1.1.1/go.mod h1:Nk0jZrvPFZX1OBe5NPiddPw7CfwF6Q9eqzaBbaightA= +github.com/labstack/echo v3.3.10+incompatible h1:pGRcYk231ExFAyoAjAfD85kQzRJCRI8bbnE7CX5OEgg= +github.com/labstack/echo v3.3.10+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= +github.com/labstack/gommon v0.3.0 h1:JEeO0bvc78PKdyHxloTKiF8BD5iGrH8T6MSeGvSgob0= +github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.9 h1:d5US/mDsogSGW37IV293h//ZFaeajb69h+EHFsv2xGg= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4= +github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a h1:kr2P4QFmQr29mSLA43kwrOcgcReGTfbE9N577tCTuBc= +golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 h1:nxC68pudNYkKU6jWhgrqdreuFiOQWj1Fs7T3VrH4Pjw= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/index.html b/index.html new file mode 100644 index 0000000..49e49f3 --- /dev/null +++ b/index.html @@ -0,0 +1,169 @@ + + + + bitácora musical de danoloan + + + + + + + + + +
+

+ danoloan +

+

+ bitácora musical +

+

+ la música que me va +

+

+ pincha en una canción para abrirla en spotify +

+

+ en este enlace está la lista de reproducción de Spotify con todas las canciones bueno no todas que soy un vago y no la actualizo +

+
+ +
+ +
+
+
+ + diff --git a/main.go b/main.go new file mode 100644 index 0000000..79e457d --- /dev/null +++ b/main.go @@ -0,0 +1,317 @@ +package main + +import ( + "os" + "encoding/json" + "crypto/sha512" + "fmt" + "net/http" + "io/ioutil" + "sort" + "strconv" + "strings" + "sync" + "time" + "encoding/hex" + + "github.com/labstack/echo" + "github.com/labstack/echo/middleware" + "github.com/gorilla/feeds" +) + +type ( + JSTime time.Time + Entry struct { + Artist string `json:"artist" form:"artist"` + Linkto string `json:"linkto,omitempty" form:"linkto,omitempty"` + Track string `json:"track,omitempty" form:"track,omitempty"` + Album string `json:"album,omitempty" form:"album,omitempty"` + Cover string `json:"cover,omitempty" form:"cover,omitempty"` + Date JSTime `json:"date" form:"date"` + } + Response struct { + Ok bool `json:"ok"` + Message string `json:"message"` + } +) + +type ( + entryList struct { + filename string + modtime time.Time + v []Entry + mu sync.RWMutex + } +) + +const ( + jsTimeLayout = "2006-01-02" + adminUsername = "danolo" + adminPassword = "bd4cad796950f50352225de3c773d8f3c39622bc17f34ad661eabe615cdf6d32751c5751e0648dc17d890f40330018334a2ae899878f200f6dc80121ddb70cc9" +) + +var ( + list *entryList = &entryList{ + filename: "list.json", + modtime: time.Unix(0, 0), + } +) + +func (ct *JSTime) UnmarshalJSON(b []byte) (err error) { + s := strings.Trim(string(b), `"`) + nt, err := time.Parse(jsTimeLayout, s) + *ct = JSTime(nt) + return +} + +func (ct JSTime) MarshalJSON() ([]byte, error) { + return []byte(ct.String()), nil +} + +func (ct *JSTime) String() string { + t := time.Time(*ct) + return fmt.Sprintf("%q", t.Format(jsTimeLayout)) +} + +func (list *entryList) Len() int { return len(list.v) } +func (list *entryList) Swap(i, j int) { list.v[i], list.v[j] = list.v[j], list.v[i] } +func (list *entryList) Less(i, j int) bool { + return time.Time(list.v[i].Date).After(time.Time(list.v[j].Date)) +} + +func (list *entryList) modified() (mod bool) { + info, err := os.Stat(list.filename) + if err == nil { + mod = list.modtime.Before(info.ModTime()) + list.modtime = info.ModTime() + } else { + mod = true + } + return +} + +func (list *entryList) write() (err error) { + data, err := json.MarshalIndent(list.v, "", " ") + if err == nil { + err = ioutil.WriteFile(list.filename, data, 0644) + } + if err == nil { + list.modtime = time.Now() + } + return +} + +func (list *entryList) read() (err error) { + if list.modified() { + list.v = make([]Entry, 0, len(list.v)) + if data, err := ioutil.ReadFile(list.filename); err == nil { + err = json.Unmarshal(data, &list.v) + } + } + return +} + +func (list *entryList) addEntry(entry *Entry) (err error) { + list.mu.Lock() + defer list.mu.Unlock() + + if err = list.read(); err == nil { + list.v = append(list.v, *entry) + sort.Sort(list) + err = list.write() + } + + return +} + +func (list *entryList) readSliceList(oval int, nval int) (entries []Entry, err error) { + list.mu.RLock() + defer list.mu.RUnlock() + + if nval <= 0 { + nval = list.Len() + } + + if oval <= 0 { + oval = 0 + } + + err = list.read() + if err == nil { + if oval >= list.Len() { + entries = nil + } else if oval+nval >= list.Len() { + entries = list.v[oval:] + } else { + entries = list.v[oval : oval+nval] + } + } + + return +} + +func (list *entryList) deleteElement(pos int) (err error) { + list.mu.Lock() + defer list.mu.Unlock() + + if err = list.read(); err == nil { + if pos >= 0 && pos < list.Len() { + if pos == 0 { + list.v = list.v[pos+1:] + } else if pos == list.Len() - 1 { + list.v = list.v[:pos] + } else { + list.v = append(list.v[:pos], list.v[pos+1:]...) + } + + err = list.write() + } + } + + return +} + +// TODO rutas relativas +func (list *entryList) getFeed() (feed *feeds.Feed) { + list.mu.RLock() + defer list.mu.RUnlock() + + err := list.read() + + if err == nil { + feed = &feeds.Feed { + Title: "danoloan.es muse", + Link: &feeds.Link { Href: "https://danoloan.es/muse" }, + Description: "bitácora musical de danoloan", + Author: &feeds.Author { Name: "danoloan", Email: "danolo@danoloan.es" }, + } + + feed.Items = make([]*feeds.Item, 0, list.Len()) + for _, elem := range list.v { + item := &feeds.Item { + Created: time.Time(elem.Date), + } + + if elem.Track != "" { + item.Title = elem.Track + } else if elem.Album != "" { + item.Title = elem.Album + } + + item.Description = fmt.Sprintf("

%s - %s

\n", item.Title, elem.Artist) + if elem.Cover != ""{ + item.Description = fmt.Sprintf("%s\n", item.Description, elem.Cover) + } + + if elem.Linkto != "" { + item.Link = &feeds.Link{ Href: elem.Linkto } + } else { + item.Link = &feeds.Link{ Href: "https://danoloan.es/muse" } + } + + feed.Items = append(feed.Items, item) + } + } + + return +} + +func ListController(c echo.Context) (res error) { + var err error + var oval, nval int + + oval, err = strconv.Atoi(c.QueryParam("o")) + if err != nil { + oval = 0 + } + + nval, err = strconv.Atoi(c.QueryParam("n")) + if err != nil { + nval = 0 + } + + slice, err := list.readSliceList(oval, nval) + if err == nil { + res = c.JSON(http.StatusOK, slice) + } else { + response := Response{ false, "Error fetching song list" } + res = c.JSON(http.StatusInternalServerError, response) + } + + return +} + +func AddController(c echo.Context) (error) { + var res Response + var status int + var err error + + entry := new(Entry) + if err = c.Bind(entry); err != nil { + res = Response{ false, err.Error() } + status = http.StatusBadRequest + } else if err = list.addEntry(entry); err != nil { + res = Response{ false, "Failed to write into list" } + status = http.StatusInternalServerError + } else { + res = Response{ true, "OK" } + status = http.StatusOK + } + + return c.JSON(status, res) +} + +func DelController(c echo.Context) (error) { + var res Response + var status int + var pos int + + pos, err := strconv.Atoi(c.QueryParam("p")) + if err == nil { + err = list.deleteElement(pos) + } + + if err == nil { + res = Response{ true, "OK" } + status = http.StatusOK + } else { + res = Response{ false, "Failed to delete from list" } + status = http.StatusInternalServerError + } + + return c.JSON(status, res) +} + +func auth(username, password string, c echo.Context) (bool, error) { + hash := sha512.Sum512([]byte(password)) + hashString := hex.EncodeToString(hash[:]) + if username == adminUsername && hashString == adminPassword { + return true, nil + } + return false, nil +} + +func RSSController(c echo.Context) (err error) { + if blob, err := list.getFeed().ToRss(); err == nil { + c.Blob(http.StatusOK, "application/xml", []byte(blob)) + } + return +} + +func main() { + e := echo.New() + + e.GET("/list", ListController) + + e.GET("/rss", RSSController) + e.Static("/", "index.html") + e.Static("/static", "static") + + admin := e.Group("/admin", middleware.BasicAuth(auth)) + admin.POST("/add", AddController) + admin.GET("/del", DelController) + admin.Static("/", "admin/index.html") + admin.Static("/static", "admin/static") + + e.Logger.Fatal(e.Start(":30303")) +} diff --git a/static/admin.css b/static/admin.css new file mode 100644 index 0000000..7ce8032 --- /dev/null +++ b/static/admin.css @@ -0,0 +1,99 @@ +input { + width: 100%; + box-sizing: border-box; + padding: 0.75em; +} + +body { + max-width: 40em; +} + +footer { + margin: 1em auto; + text-align: center; +} + +footer > a { + display: inline-block; +} + +.action { + padding: 20px; +} +.action[result]::after { + content: attr(result); + display: block; + padding-top: 1em; + text-align: center; + font-size: 0.75em; +} + +.action-wrap { + margin: 0.5em auto; + border-radius: 6px; + overflow: hidden; + transition: max-height 0.2s linear; + box-shadow: 0px 0px 0.1em #777; +} + +.form-elem { + padding: 5px 0px; +} +.form-elem[error] > input { + border-color: #e44; + border-bottom: none; + color: #e44; + border-radius: 4px 4px 0px 0px; +} +.form-elem[error]::after { + font-size: 0.7em; + content: attr(error); + display: block; + color: #e44; + border-radius: 0px 0px 4px 4px; + border: 1px solid #e44; + padding: 10px; +} + +.scroll { + margin: auto; + max-height: 800px; + overflow: auto; +} + +.cajetin { + width: 100%; + display: block; + padding: 0.5em; +} + +.data-elem { + display: block; + margin: 10px 0px; + padding: 10px; + width: 100%; + text-align: left; +} +.data-elem:hover { + background-color: #a22; +} + +@media screen and (max-width: 1000px) { + body { + max-width: 620px; + } +} +@media screen and (max-width: 700px) { + .data-elem { + width: 100%; + display: block; + } + form { + padding: 10px; + } +} +@media (prefers-color-scheme: light) { + .data-elem:hover { + background-color: #e77; + } +} diff --git a/static/load.gif b/static/load.gif new file mode 100644 index 0000000000000000000000000000000000000000..d09cc0b48b66f83cceff173be63fec363cac8eec GIT binary patch literal 119570 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 III#Zz0F+UV@Bjb+ literal 0 HcmV?d00001 diff --git a/static/main.css b/static/main.css new file mode 100644 index 0000000..18fdc52 --- /dev/null +++ b/static/main.css @@ -0,0 +1,64 @@ +body { + font-family : Open Sans, Arial; + font-size : 20px; + color : #eee; + background-color: #222; + margin : 0em auto; + padding : 25px; + line-height : 1.4; +} + +a { + color: #7af; + align-items: center; + text-decoration: none; +} + +a:hover { + color: #77f; +} + +img.icon { + margin-right: 5px; + vertical-align: middle; + height: 20px; +} + +input, +button { + background-color: #333; + border-radius: 4px; + border: none; + outline: none; + color: inherit; + padding: 10px; +} + +input[type=button], +input[type=submit], +button { + cursor: pointer; +} +input[type=button]:hover, +input[type=submit]:hover, +button:hover { + background-color: #444; +} +input[type=button]:active, +input[type=submit]:active, +button:active { + box-shadow: inset 0px 0px 2px #aaa; +} +input[type=button]::-moz-focus-inner, +input[type=submit]::-moz-focus-inner, +button::-moz-focus-inner { + border: 0; +} +input[type=text] { + border: 1px solid #555; +} + +hr { + border: 1px solid #555; + margin: 20px 0px; +} diff --git a/static/main.js b/static/main.js new file mode 100644 index 0000000..1fb6fc9 --- /dev/null +++ b/static/main.js @@ -0,0 +1,65 @@ +function songNode(info) { + let wrap = document.createElement("div"); + let a = document.createElement("a"); + let cover = document.createElement("img"); + let title = document.createElement("div"); + let date = document.createElement("div"); + + title.innerText = "" + info["artist"] + " - " + (info["track"] == undefined ? info["album"] : info["track"]); + + options = { + year: "numeric", + month:"numeric", + day:"numeric" + }; + + if (info["date"] !== undefined) { + date.innerText = new Date(info["date"].replace(/-/g, "/")) + .toLocaleString(window.navigator.language, options); + } + + if (info["cover"] !== undefined) { + cover.setAttribute("src", info["cover"]); + } else { + cover.setAttribute("src", "static/noalbum.jpg"); + } + + title.setAttribute("class", "title"); + cover.setAttribute("class", "cover"); + date.setAttribute("class", "date"); + + wrap.setAttribute("class", "elem"); + wrap.appendChild(cover); + wrap.appendChild(title); + wrap.appendChild(date); + + if (info["linkto"]) { + a.setAttribute("href", info["linkto"]); + } + a.appendChild(wrap); + + return a; +} + +function addimages(list) { + let cont = document.querySelector("main"); + let ret = false; + if (typeof list === "object" && list !== null) { + for (let i = 0; i < list.length; i++) { + cont.appendChild(songNode(list[i])); + } + ret = !list.length; + } + return ret; +} + +window.onload = () => { + window.app = new ProgView("list", addimages); + window.app.down(); +} + +window.onbeforeunload = () => { + if (!window.app.stored) { + window.app.clear(); + } +}; diff --git a/static/noalbum.jpg b/static/noalbum.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a06ab921eeab404f9aab01455e75769835dca9bd GIT binary patch literal 32346 zcmbTe4LsBP|3CbhxrsuUPDbQ@=nk7qWMXp@v)Oc`Iw}%Na#I}~F%(%Lcg09^yG=(W z>GqsZ37v+RLYL@vf*?LVh$Vs`3lMn>9#Md67`Uv*=>F$A4MRY%^FN2r z7;8ihuB*X?4i|XKt3VL!>;L*1xhpK<;Hro{2bU99twH9VBCd!W27`Y5`-WA(qHl`w z@>m5WMI|NlvOsyE@`42_3zU>pR8>?KE`m2DWi@rxMQZ4E^iI$}NB;^w7A;U(fZpQ& z+uK|dqOkzG9NsZTh@1untAUxjhZw*CDZp!jzAXQ~VdSv#3X1TQR2ISw8WzLT$71E+ z$tuXp!>y0N?-6+o1x-V17ey`RE+wNVoK130*#hGYb!YfpA?b)(YUJv_ZwZ2wK0w`>gv3f>d4H#CeBbMVmNUt;6pQ;!}?OFy2$ z%gxI#IDMwDh+ke&Sye3*iEA#`Uun2{?fQ+IckbS6x!>B>{-C=@+WYuPU;n_1p_jw2 zWFxQNjE;R8pP2moW$NoU^tdnx_QzrU=g9uYacRJD$-z00S3-{qBlinjup06ThSrLj zE=;9eQCdbe$qR5Ba?0wOm5puvK5Fldex$O*g!saA3_Y~@Bl|x)u$2E_NA{ls`|sl# zKo(&!aPqJkh%@s25M6bBg%~%y>FDj3r^e{jWwNuBL;8(}D_uWHJz~YiM2w}rWxz3Y z?KN*)2nC6g8<%Z3TNC_`%MN9&T931qCeEadIs#>5ahZr!yHWjbf$~eSRu%0m$K$n} zhi@lK__xT&J_^2+WsAP$+ICln4T*~i)=&Cq%pQ`P6j#`Dl+DD3j?#m#JMi4s^mFl5 zuH$UWI5DPKOek{b5sM$6Wpnwq{OEK1ieuNsN&)%uZE@nw@1@!{dbM(|9V(BGGkYqC zuP(LMxO7)28I=lOiC@d5rutze?sQjwnY@%qC2+CueGap`OeRv+uJctQEklM*X|hfY zN_V|!>YkMIvbgo;7nM^>coE+gc40GGtV{FA)i(r+d3jXaCN7TY(JGf0{Qf>``yi{H zcd~@P?Q%-7sY9`$tWe`dbr;?LC319AH-J6o5%|1koa@n zNq=~kRAUO^Q6*#lenJ|Mfd*@lqRu66wQ89}3)5w8KplSmhnhw!zE0 zGD{mwY4KglXx3lF*^f);KJXx`sum?S=uV0aYTcg47p>q`IB~pAP70RZ|K5u`JL>wl zJn0r?QFUX$A-F9@8Z=p5ntvgYv+u|Nvg-}AH2=%@2HlwfWDkx>DSfH?fu#p${DzF1 z^^#)~&7s+AFT?J*!?U;$s&w8^XjpC7R;8rK{bZt~SSfll8hr(saFiZTzY1f2Di_>bPv&tH^#R^zMq%CLPDr9C|$hpy`G$MD=mr&=Bv z4c=?z%Nl3c#CAmau?ZZGZ&WTVhL>A*Qra}^M{%%C6W1tw@3qn69k{M3J=H*SU{zFm z_3=y6W!2)gDps2KHPccLpQEm=>Z#lPT0Va-4x2*_q?l!XvglROx1@4T-$F()EjX69 zGNID7psJcCB9!wM;_OtN$)eY)ywluV6dK*Hc3Rn4_~18co&C7X+^p)9l-(YDNQX=^b*I?a zePEKma<-}~mL=vd6b%H;j2;0@VGTa8wohLX){;7L>SEmq(eo-#Q`!h0*>9}3awSP3 zpDAi@7v8wjL$DG&aqI~-H{&T?mW#A>l$DH_6;rNKBO^IpStV)QaTC`ZKSNnLE7cdE zVgiMPeQ=nFu_?6-cI-Xqh@!!h7*gfhvLRh2W>qO@vBh6%47)4oQaO`la2J(=g$rVM zP!L=+zADg#suXo`1vwzC>Ufv@1jB*pwGOvM$*5AvsOIrh}7fulRmeU-qf=Vx)FSUXM8 z!y_$7=t&kR6RMSr&OEGOETgVHvg!r3Zy|iu--G9lDz~huBj#`A4owUYYRn6jn?!Fq z!mg+)7~2s-T5QSUXFGk|=`k&KBDsp3%N8BIx}}y5+<|?iVf`&sW7a5k%W#iD6;zcP z)AuwPoX5(bQyd4y&r3&S)nr*oD<2AvBJHnGbGZ~ilAd8@)6o+C$w{%L!|qX=pcc1y zcCH>TGiyn*hICb&INR$&t654)MbJ3AK<6Kpbb*Yd^TxMuT6+Ht+t<$_tJ2BR0Xf#G z4Nt<|Q5wxyMw12)OAB=DaSO7F4TS&>Dd1vKbnXNDWFqJIq(H84WTmg@waLCx&RTmM zfca!}D8Y+nkGpc8OjKf8TrHg5b8qfE@KdnTA7^C%fc(m%m|(zlOc}5~{JnoOh}E zyjvva&dh+~M&FZzEKHlwaEMFIcV4;DPOCuZN60l!W*L6v{Jxi0r_omJX%bTD$}E$W zsHtM4XMO+lyA#DI8>)1bm|uECa$5h+nof1F-JoNHFYx`7flX!6q6u)yrN?_0*pp1H zmtfi|>_tO~mR>)*nz)N?`N?Yd%1tdR3$?^;<;6M@hhx`OYIy|)MrA_7X5mh=@r^`lK<=^*={n_NZF4fNWg=-v&Z zq}g{iB_q6`tB)u*H9Vx{*J+4O6I5EHV z`<1VjYu`}P$anB5RfW?H+6x4tc8Mo5FWFCiRW#bB4(FHf-JMr5ooH*lPEH6L{}MfW zp^8vi&G<86(pF~@MoN3bth>|m9PTtR0HZ4Eo9;EGwepaY{H)TESJjL~?)Cwh9ZO1O z6)_Sy*DdhGM~DMTGUF1JJyv@Bpa#q^v4l?x_sdIW=H*c$jIM@pV4YE-2`13&F`_qZ zp@c#`DR&quyqhCK{&=kT)P#sJC_NskNKaQ~84d|pEj~JJ0*zhjBqM#!(oU}&Ux_=z z42a6{SkX)PS*V=bKbwrm0lx`l;z7qDuDR={o}OA-IxqelpKEsXMNI&lP9ZE`zjQ-c z)v?>0WN2R4RPP-dRT4S5z#gE`Bx`Q?tH$4+bD_4OCNi2};OB2oGSVZtsZq&z;lp6* z>!wH!DtFY2xKk3dvX>vV%kPz;dUj4{h={>Hj#=$a z(-$(Nd8HhO@_5z62EF{xKr3n~8eTEpLQfw-l;RskTOlKPEZ>bSQ<6&YW}7KaEq`js6VdBDq6i)2fEi_tz&!6lBD z@~C&MpP^{+FzeB0KK6*R_(5NFDxZKi+bpyYF?y0)=nwaBqY0w!?X0`9Om1X?U%JGO zCooZ^k6V($S@jgP=NqrH2m!6+A<7bXc@%I z^1N5`ptMvYbRYRarcX>B>lWt9$w&*GG3Kq{N7u1-VOJP*g-v&Ywhv3A*Y{S1v``Jj z&m7Zwmc9}X53;@cv^V?{wXDXBO#H-gP*KS&);88tNzU>yF~8JG=Ioar?t*i3Q{xuY zA`XpA(nd&~5}&ec2~gyeG>=}bbEjebpXxqdII!;=|Ezb=>1q=jSIOp6<1DW@k--Os zoPNPFC#Yb_2cfTt`d*3O#))1p?N@ahk%{%Dd$mec5gOeGSji~-eTv7kai(>Jo&PMuTD*louzay-*;DTnK*yC;pghi z%U9fY2G>MinQ&xB@pIIPO-1V3yXc#0%EV<6))Xy6@nWf0WUo;PUeQCSSmi2lrPErl z=JPD50#GB!4G!l;m*7D+SzZm*S?Qg9ovjjWF;;>vk~5pH5A}YA!l>*`Ene^&VohXN z>I#cyq1159&p4RjTeM<7FE&BCd=SbZLsyf{i?&4igewY3E6M|+?ZT4lH_`?@)GV6c z@cOID;<)c7UL~*(`eW?FyJhEPB?dSypLg6YEL5sY_>1|7qW;WcEl@aMQa@Fnu0B(p z$3KkOTJK4fA3DKh`mFW|5r-=|7ISR+t3mMSB3jAJ?prb5tNDvnB)rVOPXoafZB_yH z5mT~~CgCf{OmcU!w@P4rda2-{tdKi=XcFG(rf|u9OFMfUEbUg}qZRvYLhcNew#t>A z0$RiTEwVw!UPvA)Y+Xo6V=W!-zR^_O{VUEoTjCufu`iK^Cvt)(RkA=hiGssdV!AS( z#<1OMJ?IMV6xEm(BAocru#<@aNRZx2ltaP!M`$Cdj2lChF)j17l{Ui5$y!nt<3h;n z#6AA^S>UWY6lf!Ir6XqLL3tEqS3MOAU@aya!cO)RFQA>1kX4#)ROBU8On&bLTt%`$ zP1QqH{<2pze!pc23CTD$=9kJprs|b$MQJ}Z?pOAev!GMkK|fT>#8tB8*mdo#bbQsx zE}P!>^O;s(5UeDcB4cNC6aTS6P#zn{U>^7 z41KextEVP`2c?5eh@z|V1m>bjJHzwTL2<7$dR## z52b?Yhw|6s#d4J*#<-s`V?mLRk8VW3g>>F&vw={#gFs{~O&z5os8eimK*Iip8lq#5 zNUiEv1jp+_CKL>47-f@2CA_SXbVZRjf2}wuymu$G#wf}O+^{_fzkZA^aM)557$z>b zrgA}ORFawMnW@E+4zpd}Jm@1{u|OO6so#@r9tsD}M2ZMXxNVn~Kwm0T z-*`Kda^{fP3-7;ZqpO+{zxho3CGDQz$QQqCmr z+ns*5Vwm+&-sgaMaDwz29AT*eX#Qkvc@gF*AxSXO{j^s8sS=fptR-9><_%e;xwcj* zL2j)h%c3K!a*$y*Uv*@aF-+?}8ANM|+X(;HQjWPJ1FPI#mZbo2?((>AkAsg9GD)|D zucGTAN#4k;YZoATY_6;Vl`i9YP-WCq-F;aFg5a7sv85>))GAe8%~j%+&N~Jr#nr{F zN&2Xiqd*QgZQIQ?XB7y`L|tRPtTchgS#>WEz^ETb#w{vRC%%Fc4&4kX+NKSn`#M?M zWc2`d1=bJChuawG{}4AoouWVtQ#8--E>)!ojktZ4ycO6SIzX59RhXIzF9_S7Wci1y zFDr)xei260Oq7kW z{_Io!f+C0h7fs-KGqYDev?|izy5E87M>o04WX#{Cd)_RRWij+Sd12tJ2=^gOkAPEu zFt#5e4L|jcv-K97v$OxhdLX|9?M;Zqg-DBggHSm!x67!83G4%=3Mvu_=^U{;2I~H4 z?DpZFrGtJwONV>4q+a2f4PjgBm>y60+)+|7)Ej6`e7XW+-4T$>BM{u-46fT$&`DZ! zk?-NX&(6mh_()JmgY_Z&h+IX`G2so+I26@ts4?v=?i46fEi}M{#I1EDw5wyH5@{A- zqDwv;TA?FLd?8M78h~=VMCI2~OTY>fME6=pX;vHvJV0|0pqhC@05uKDj;z?_=b-I9 zo=t)hD4u+5TYL$RZO_@QA0}1GF(s=K^}5A(8OxLzsOHIkQNwm7$pzJb`Zze@$RPUa zh!>ARHG(RG`0B{cF=?^l&?OHG)Jb6C%7YsNN?XK%s&b4DO^uJ_sFLZbG&NOEiWcp= z5A>e%7H#67M1oukS(TPqAjGCp;D<)hY3s?{T+k*2GXT4^faT z!)ZtRNFzkA1t6LZR5O7b)4uJ;sSLd*7D;qKYRlaU%4nHC?NrQ8L5T`2oW19@Iul;$ z5|yyr@{nhts;$JL>eCWaofZWwRQiA{)`98T^`ADz zohM11#QXNZU+}0B3$w>zbkVZG&Wdc%0@Kai@E<>|WN2WyfQyJYwBrmrg#wk)UPhJ> zOBiOP4xbIJW|cv3nI%<($tXZ(Y(>I@Kc+L|0m=P*Jd1oIlLa z56)*X#nLmo(~ViuL8(9Vs^Hvov7gVK^A)V*W`QI0sc^RCG%Hn>{NBfRQyZ`)dWVH| zoQ)Twuljt*>7x%!HVKtPE-fBv)HQl0EgqK@MWKQfTROsAcMCQP6^BxeY{b-4U9NX$ z6#7XMk4npqi;ngSDZ8E84cB5-T^;mu|7@1#OIZpdzkZFP|sX^;WWuTe^hAcuh2ehk+Yj?G) zf7ckxP?nN$O4`;dSAs84McSd{usP8dP*9*F5kE$9OdQ#QVTKKqhHuBzs9w-xOqGm) zpj5b~(gn(3y8= zmkZb_drsHv#h4;Pd=ts4Z%AzXVb01s`F88Nd{^)G!n6>b2plZ)#p~xj<=n2sZ);Wd z;1pB8sQ3UkxykMNrO0CoKjMYQb``9Pl(ndd<^3>Jb*qJab-k3DQ7It1pJ_3S-!DIu z!fhaxp1K-FKqT6Cr-Npy6AcnOPaA}eT|4>vx))VeH;n%H!(*f{scuO^>o-gO)RUL3 z(|Wca>zif|T}-~RGO2ZQ#;G%!t3U5J5x=+_yY}`X*R08v$=?tO|L)lHdr9gEtGX(C z9epl@&KmRteSZ>AFnsvZ#cAa>?Wy9iC$kG{$9jea`A=z$-3dxU&jRI&fcH1{OoYi+ zHO(On`W@%CPoH_2eY|w})Y%K|HL-cyA3M5;J-=LNuxejbec=2J^U3m|z3=Zm|G4E` zN`UZwpjxc%-J6dqhW-e;ceCMY_M(CPMN1BU>a@K7+qf6QCgpD7ml1*NcI8Fcm(Tb) zB(HDEX$}dxePRx&`uJobMUw1;)fj;GX&BD-^Ss{k)2ZL4rGD#QdbP?GQR0r_Slhdg z@bDn&LFlPu6|LWe;vJZE*TU;hfFr3yk%{-oL?pizJcme22kb){>LV&Rb)p0c39}cK zjQP&1JdDN-=+YKjUWv0}1+IEyOfuSZH~3&(O&q0av0{LrceE4%50oA&yfIV(3noXG z4{Tl;N;mjj@R&U%!#$x$wRL+H$|Q5W2pypUC1`NiRHl>{O|W{HTas1*k_sJrnL(XQ zw_;c{i%*SH3McJ3;Qy$4WK#YF=kIv03O+{_+2RVfte}YrCTNSr1BEZz22KZ*Ezo2S6EH3I>%*@2V@$P|+6$EgN=yp5oV#e~Ok8C-ciHW1n_{ZmW#C!2 zi>a94RWCsSQn4xo(ZvI0J>kRGuk)>bjb;Cy>(T5-(#!Q6#Egc@1z5?>WgC3l?8`le zcz^tPYN+!bKHnt!($tZpE0rdP0QRPS;wU2)|>Y$MgpeoKB|@$>kK)$ z-qR}1So7;lsbq0i`jH++guKsw#lW3d%OYJZrWiz?W^{yuY8FnbPJNL@gU zblPtHg*0^5GLAbFj^12JZz{%9D`0x<$5mCe8z0op-f-w|5=ve5za0AZd&uq8Q~$tS za;LtJy_BTAy#GXhX-`$>x1Z9DXFL3rMC0tDws&c#P9C8r29*~y75hmeNGIMzTwG;# z^XAzTe-b-_b7@W+t%uLWFdk8ts}Rb$P8&b#+0QiGR-Z%qK9tWPZxTo|`nIPpj;McL z1`DTm${7~U)qfXGw1g+hIR1_o5k)0EC2jbGZ#9F7fdD#zxmn4(Jnx`nPvzq+v!CObKF#PJvCr zpc`>E0mncJw&A{Im1I)X=DP;gjXNkU&@AD_>+uvl(v7NIa~R@gF=Mc6QK23$8lQ>s zN;&FL4k}etp&2CSl>sTuK^uv245bKsvjQLy;MHQyL35-st=L7NpTYZJl(mT$LytHf zZPDKX%oGR!Mh2hAx+Kl3s*W&q-i8~^q=OmH)rW<^afrT3kn<1c1)Ri#=r~LWh;9Jy z)O3@T--;U|ZE=5#{OKjz*~!=Z_k?$+rc#y=RC$?!#CNjfZ@FobRU8dda)@ACxVL_Z z8fW=ncbcpqJ=)8n>`jxb;QL7nR}D|-I|{E^=qrB{ko1R$g!L_3`Y&?gW>Y z|MY#*^w0io*U~w2FkdI>ld}Hg*tyogsnx!%>b$glN$Ni3u}Z#qmWo9j^IMj`5_=Ae z%!qnb_1e^*u3kFz!FB4FGAQV&Te>Hl>y_=vt!HF@xMC1yg2>Sxluhc|JoHoaWmS>aZD=m zKQHlT-a1Bo=Oh@+A$3owb4d5pzHfHsW{oA;eZS87vR)|7WDTsHJ##nk(Rn+|^5uuC zA5j^1`0sczdMep4O-1H)U(D682Df9hR#-7ULCK)LfUA4?po;|eggAr_thwVVU>TEv z0FB6T=i87&MTkK0M!N_GuFuB2;VQHW3ACGqr3B5TK5pP7b|`EZ;VW8$u{pv!1pcD( z(svT-4`#2h2tpooAFzSAFb}thp~omXo#@~QW};~ZHW{bs1-4E)|3bPV49XR>%3vi)mqU}0V$l3U2|iPu z_)Xc&H5HvAjQO1pW-yn-y@G1O4Ra7!aQ@-=-FB)DToa-3Zj@N*qsx;!%(mXMGHY_DhhD+ZvuDl9oh1SS<_Y{nphO?U61n2y`qW^Hy z#eIyS#OH?aPU-F3e+>vY4+_#Q9POjmtcr@&@Pb7PVCC!NlE zNrS&R%dMBwDU&)L68;l^l5DW6%SBqX!a*E6u6ZqdU9Ft-8^z=9AB5A57PsvIVy$bR zSdp&XO-g_K`S%>ClE*K2|K@&RBG&7e^XLBbYZvdI)0;yEs|<7-Lz5f~7EezvMaFn@}15 z^d6r1CinWq%=NG+?)giNRMb{oe5<^|e38X0!R< znZMtZu8t^9c=D6YmCFzQ{_UZs`Lo^t0#eTVf4pF&&b#K2uTIWK4L+|6eg18SY7(tr z`qk_`gHQ2+3zFU*e$+T|6F-}2S&nhB$L)n_-=pgbfK)xj{nm$jP@Zrnr&#WX6@qm8Km_3wJ{K_e)bVdE11epnG8EYQh)7$liOF&82&*AivmQ;`tRBVa#3$=5PQsTQmz z3C#z)bcCPWsciyy?Fis5E>Srq@fhJ98%Q>Ud&r6o1G|MDD+p33@(@psSc{JsQaY-1AD(lJm~* z>>0(8wT<*pTpN{U^5+vuUGn*p;k?XkMrZ87maurx4`HBk?x*0IK4B{3d`Rh!RWN!I zAAL1co#;`^JIrzL4`;~N^w0Yp1$C^~{;do(Rh{yhL8ooR8!hg1b)NFI-IR&ZlX_ih z1nls+tiX@kE+#uGPXBYndE4!=`&G(T!=ZM62d}%8IJ+T7`wK0p>|*9^2SEAVB#ne! zBLPzj?|d^z-M`In)rG#%Uj&DDU0<=W^t$zJhu}%)()aJI>TQ>VkWET*!z@=lsCylV zciy);Bk2nDZewP`fuYrl-QL}Ld+n$2m5V1IG+oa~8nkp!86O~2VyHOA|LH|Zl=wd( zWy_n5oV_W`|bAu#SF`E^zmGF*`axv4f}yKZb-BW^LVu`D)Bpc8dVo zF-8x{W8Pvg_0nNVE#tS!af72t8-Up}z-ckOz%h>qd*8bZS*AdPqDzyd(DLSmw2z=R zrBH&xTwo{7BbQew;U>eo3}McJW%d-*QNEb5a!_Xh%@zRBkGBIOfd`IL=p`W_1mZ}1 zh?rql7{~aE7}A<(g86PXr$}`(6j@^ia~BYgv@%E&g0Hc~HD_Z9o6~D5pKHbD^~zmU z^{7pCaT^@=JHHc1H}M;C3anj7Ex;qE!uWVTYM7b>Git@*{8!;U5El3sbUA=Jh@~Lj z7wPC!*=jdhR7d-(_YxWM$#s5;k_{K>5-YVCpz!I!5FjAH;GKZYIG?#mD6jv2Dw#wNLNRh4HrqHQL9IxYc$Z2&`MLnAEH`tCV28=Gi{{Ve!jauQkef zTW_@7ymsW0n}*7F&&Gdz3zDa<4H~4C8c&_Su&U@qrqY(NCFRdf?6>RKD30n`$Iw)| zF?98|Lt@8m;tW55Dh!>q?~;9-71z9JuX#EkS#iMdTAWGd))d=t)AFc>OLz5>a{?c= zru>dAOR(#D+2gpb{EdTJ@lVehdTNauj;)J4j?7qnQlC}R1v=gRv2`ZHuJPNBB>H3Q z-~ge#Qk^k#JZX3$aWU}ke=3sR93;*BRKL6Nta{&xSzlKa+&6(y0J!(C-R_dhPxfrB zXVV8Id@$sGID1Vc{Cy3JqyyN8XrL*i#U?rKQuVFfC9Po3B!5i>yAa0ChW0oFlq)}q zq>D%P@%QUUfRM}Iw~b-0i}D3J&@KoK(o@NRV#z=Dl!pNPNzj3Ft_yO>>e^bU3(SFp zkBafB;i0@L7#V=Qm-z$S$q<5oa=p?z%SR!?6qegMR;aoi$hcnpF#kI6LeI<2g7gD! z;iRlBhH|P+)+H`DyA61A1<-{BIVjf_bXdA^RLp5ZRkWJHL1|m4qK}_3+bi1Q0hoU) zDp>i0QUb>xrUz$r`8oLWWn$)Kg5pLxt=gikO5jn1=A9_Duy!O^GoclmBOL{R&-?oU zD0pG)43Ne0ZGjuG3PwrcJtB28510v%RIXYK%D9lpSRO95oOs)%UzuN4=dDf`*y-yM z1w$1=r54O<4+A1p&+fDqtHaAWUwz{dL`#`e9P)p=`1SR5*8J>#VBexAKWVM;7|K}q z`_TzR&GXylM~&E|!Q6BD>(|BE228CQxqCCb$>3V-u{or^f)Q`9GPx-EpMsMokI*RV z_g9d<)qh+!tJ?SI;7ipf_YN$3&dH7J+$CsQS+3O8NeDT#{!!T%?aynQo==%~HaGS^ zY0tYei|KmNc&&NIhEK*v;&s2@2|MAC_xhOorKL5muwzPtzr0l#JMsC%r{IqlxrhEa zuX{3Fx~hE1Cb#&EYC>jm2QKej+r`U?3Q5hk0%X;OH>a{+o?o`gHtmSB%h6{K-OEZD zH7A{NT5nwJts%U^%AP0BAs;=RxpRozJvbW6C-(x5niyQ2f}^<-yxYNGWqNMqp$GTX zl2pFg-1WWI{ag9fh7{d>v22qlw`5JoF=M$-$9$*^Gyy`q9mbJ6-I8dR)O^?6`RbW8 z=eJ%BK&$`xHgoFY{W)aHe*4JhN9dZ_gsvG+!Hthca7;h6Aq0MkHvo=t=m*C*q1<$F z#P_qY{Y?F=M$&&RB%D^BzlQbJdI+*T4rj&i%P_DOS;do~Qa*u?h1rl0)GjTPc}5 z5XYJjKF#rQhpLaG*Ye{VHo%G?Vpfv3Y2zClxRWMIxR3p!f;u{6WKplCA4s})E;q`1 zQ;VZsm#+FI2_c+)@KrpLZwD4Puyq3*h7jH@-HE0-lmu^kQhQuOcycqHGBqCIw+E=# zFn_VSG_~>j`q+_|_p3hpDo*(Zj+xxLdTUF+V;xldQ>w?E`jP{8CaBIKDVPNRu@8As zFMWbsKAM)CO9Wawu({3o+419zpVq#h7%0garnNxM{ybH1!M$qg7iw?AJFf`MC-f`1 zqaojnp)@mJofn7MJ>#(7#f^A~nRZHC1T1mk^ zusWYieqR=t<@_$I`# z;_I`ejc1ek&dmC*ePJ+@#sATIti%1?ylr{=?82(*sf-lJO`Pnj9w90f%SDHF5IQVQ z_6ybm@6the*A>JMX4Z90qIN(t=w1G%aDLF$P)y}8kgIO z*6<)rf{WJkxfnB8uUsuMNETBrP%EKT7gp?F2Nogay$8^r9EKIlk+J5RfW+*Sdi8?9 z#n_O%(v8j=LmCoNFQ8)?J�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 { + let app = this; + (function ev() { + if (document.documentElement.scrollHeight < app.s) { + console.log(document.documentElement.scrollHeight); + setTimeout(ev, 50); + } else { + window.scrollTo(0, app.s); + } + })(); + }); + } + + get n() { + return this.nval; + } + set n(sn) { + this.nval = sn == null ? N : Number(sn); + } + get s() { + return this.sval; + } + set s(ss) { + this.sval = ss == null ? 0 : Number(ss); + } + + arm() { + window.onscroll = (ev) => { + if ((window.innerHeight + window.scrollY + 50) >= document.body.offsetHeight) { + this.down(); + } + }; + } + disarm() { + window.onscroll = null; + } + + store(s) { + this.stored = true; + this.n = this.last; + this.s = window.scrollY; + sessionStorage.setItem("n", this.n); + sessionStorage.setItem("s", this.s); + } + load() { + this.n = window.sessionStorage.getItem("n"); + this.s = window.sessionStorage.getItem("s"); + } + clear() { + sessionStorage.removeItem("n"); + sessionStorage.removeItem("s"); + } + + stopload() { + let gif = document.querySelector("div#load > img"); + gif.remove(); + } + startload() { + let load = document.getElementById("load"); + let gif = document.createElement("img"); + + gif.setAttribute("src", "static/load.gif"); + gif.setAttribute("class", "load"); + + load.appendChild(gif); + + return true; + } + + async down(n) { + n = n == null ? this.n : n; + + this.disarm(); + + if (!this.loading && !this.nomore) { + this.loading = true; + + this.startload(); + + await fetch(`${this.list}?o=${this.last}&n=${n}`) + .then(response => { + if (!response.ok) { + throw `down(): error ${response.status}`; + } else { + return response.json(); + } + }) + .then(data => { + this.nomore = this.addelements(data, this.s); + }) + .catch(error => { + console.error(error); + }) + .finally(() => { + this.stopload(); + this.arm(); + this.loading = false; + }); + + this.last += n; + } + } + + addelements() { + return true; + } +} diff --git a/static/style.css b/static/style.css new file mode 100644 index 0000000..6c4deae --- /dev/null +++ b/static/style.css @@ -0,0 +1,109 @@ +body { + font-family : Open Sans, Arial; + font-size : 1.2em; + color : #eee; + background-color: #222; + padding : 0em 1em; + margin : 1em auto; + max-width : 40em; + line-height : 1.4; +} + +blockquote { + font-size: 0.75em; +} + +q { + font-style: italic; +} + +a { + color: #7af; + align-items: center; + text-decoration: none; +} + +a:visited { + color: #77f; +} + +a:hover { + color: #88f; +} + +img.icon { + margin-right: 5px; + vertical-align: middle; + height: 20px; +} + +input, +button, +.button { + display: inline-block; + background-color: #333; + border-radius: 5px; + border: none; + outline: none; + padding: 0.25em 0.5em; +} + +input, button { + color: inherit; +} + +input[type=button], +input[type=submit], +button, +.button { + cursor: pointer; +} +input[type=button]:hover, +input[type=submit]:hover, +button:hover, +.button:hover { + background-color: #444; +} +input[type=button]:active, +input[type=submit]:active, +button:active, +.button:active { + box-shadow: inset 0px 0px 0.15em #777; +} + +hr { + border: 0.5px solid #333; +} + +@media (prefers-color-scheme: light) { + body { + background: #fff; + color: #222; + } + + hr { + border-color: #ddd; + } + + a { + color: #33f; + } + + a:visited, + a:hover { + color: #51e; + } + + input, + button, + .button { + background-color: #eee; + } + + input[type=button]:hover, + input[type=submit]:hover, + button:hover, + .button:hover { + background-color: #ddd; + } +} diff --git a/systemd/muse-covers.service b/systemd/muse-covers.service new file mode 100644 index 0000000..b1c4720 --- /dev/null +++ b/systemd/muse-covers.service @@ -0,0 +1,12 @@ +[Unit] +Description=muse-covers + +[Service] +Type=simple +Restart=always +RestartSec=5s +WorkingDirectory=/var/www/apps/muse/covers/ +ExecStart=/usr/bin/node fetch_covers.js + +[Install] +WantedBy=multi-user.target diff --git a/systemd/muse.service b/systemd/muse.service new file mode 100644 index 0000000..5de8202 --- /dev/null +++ b/systemd/muse.service @@ -0,0 +1,12 @@ +[Unit] +Description=muse + +[Service] +Type=simple +Restart=always +RestartSec=5s +WorkingDirectory=/var/www/apps/muse/ +ExecStart=/var/www/apps/muse/muse + +[Install] +WantedBy=multi-user.target