mirror of
https://github.com/9001/copyparty.git
synced 2025-08-18 01:22:13 -06:00
cleanup
This commit is contained in:
parent
46e7fa31fe
commit
be65c3c6cf
19
README.md
19
README.md
|
@ -39,9 +39,10 @@ turn your phone or raspi into a portable file server with resumable uploads/down
|
||||||
* [batch rename](#batch-rename)
|
* [batch rename](#batch-rename)
|
||||||
* [markdown viewer](#markdown-viewer)
|
* [markdown viewer](#markdown-viewer)
|
||||||
* [other tricks](#other-tricks)
|
* [other tricks](#other-tricks)
|
||||||
* [searching](#searching)
|
* [searching](#searching)
|
||||||
* [search configuration](#search-configuration)
|
* [server config](#server-config)
|
||||||
* [database location](#database-location)
|
* [upload rules](#upload-rules)
|
||||||
|
* [database location](#database-location)upload rules
|
||||||
* [metadata from audio files](#metadata-from-audio-files)
|
* [metadata from audio files](#metadata-from-audio-files)
|
||||||
* [file parser plugins](#file-parser-plugins)
|
* [file parser plugins](#file-parser-plugins)
|
||||||
* [complete examples](#complete-examples)
|
* [complete examples](#complete-examples)
|
||||||
|
@ -431,7 +432,7 @@ the metadata keys you can use in the format field are the ones in the file-brows
|
||||||
* if you are using media hotkeys to switch songs and are getting tired of seeing the OSD popup which Windows doesn't let you disable, consider https://ocv.me/dev/?media-osd-bgone.ps1
|
* if you are using media hotkeys to switch songs and are getting tired of seeing the OSD popup which Windows doesn't let you disable, consider https://ocv.me/dev/?media-osd-bgone.ps1
|
||||||
|
|
||||||
|
|
||||||
# searching
|
## searching
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
@ -443,12 +444,12 @@ path/name queries are space-separated, AND'ed together, and words are negated wi
|
||||||
* path: `shibayan -bossa` finds all files where one of the folders contain `shibayan` but filters out any results where `bossa` exists somewhere in the path
|
* path: `shibayan -bossa` finds all files where one of the folders contain `shibayan` but filters out any results where `bossa` exists somewhere in the path
|
||||||
* name: `demetori styx` gives you [good stuff](https://www.youtube.com/watch?v=zGh0g14ZJ8I&list=PL3A147BD151EE5218&index=9)
|
* name: `demetori styx` gives you [good stuff](https://www.youtube.com/watch?v=zGh0g14ZJ8I&list=PL3A147BD151EE5218&index=9)
|
||||||
|
|
||||||
add `-e2ts` to also scan/index tags from music files:
|
add the argument `-e2ts` to also scan/index tags from music files, which brings us over to:
|
||||||
|
|
||||||
|
|
||||||
## search configuration
|
# server config
|
||||||
|
|
||||||
searching relies on two databases, the up2k filetree (`-e2d`) and the metadata tags (`-e2t`). Configuration can be done through arguments, volume flags, or a mix of both.
|
file indexing relies on two databases, the up2k filetree (`-e2d`) and the metadata tags (`-e2t`). Configuration can be done through arguments, volume flags, or a mix of both.
|
||||||
|
|
||||||
through arguments:
|
through arguments:
|
||||||
* `-e2d` enables file indexing on upload
|
* `-e2d` enables file indexing on upload
|
||||||
|
@ -475,7 +476,7 @@ you can choose to only index filename/path/size/last-modified (and not the hash
|
||||||
if you set `--no-hash`, you can enable hashing for specific volumes using flag `:c,ehash`
|
if you set `--no-hash`, you can enable hashing for specific volumes using flag `:c,ehash`
|
||||||
|
|
||||||
|
|
||||||
## upload rules (Coming Soon™)
|
## upload rules
|
||||||
|
|
||||||
you can set upload rules using volume flags, some examples:
|
you can set upload rules using volume flags, some examples:
|
||||||
|
|
||||||
|
@ -484,7 +485,7 @@ you can set upload rules using volume flags, some examples:
|
||||||
* `:c,rotn=1000,2` moves uploads into subfolders, up to 1000 files in each folder before making a new one, two levels deep (must be at least 1)
|
* `:c,rotn=1000,2` moves uploads into subfolders, up to 1000 files in each folder before making a new one, two levels deep (must be at least 1)
|
||||||
* `:c,rotf=%Y/%m/%d/%H` enforces files to be uploaded into a structure of subfolders according to that date format
|
* `:c,rotf=%Y/%m/%d/%H` enforces files to be uploaded into a structure of subfolders according to that date format
|
||||||
* if someone uploads to `/foo/bar` the path would be rewritten to `/foo/bar/2021/08/06/23` for example
|
* if someone uploads to `/foo/bar` the path would be rewritten to `/foo/bar/2021/08/06/23` for example
|
||||||
* but the actual date is not verified, just the structure, so the uploader can choose any values which conform to the format string
|
* but the actual value is not verified, just the structure, so the uploader can choose any values which conform to the format string
|
||||||
* just to avoid additional complexity in up2k which is enough of a mess already
|
* just to avoid additional complexity in up2k which is enough of a mess already
|
||||||
|
|
||||||
you can also set transaction limits which apply per-IP and per-volume, but these assume `-j 1` (default) otherwise the limits will be off, for example `-j 4` would allow anywhere between 1x and 4x the limits you set depending on which processing node the client gets routed to
|
you can also set transaction limits which apply per-IP and per-volume, but these assume `-j 1` (default) otherwise the limits will be off, for example `-j 4` would allow anywhere between 1x and 4x the limits you set depending on which processing node the client gets routed to
|
||||||
|
|
|
@ -1283,7 +1283,7 @@ function play(tid, is_ev, seek, call_depth) {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (call_depth !== undefined)
|
if (call_depth !== undefined)
|
||||||
return toast.err(0, 'failed to load ogv.js:\ncannot play ogg/opus in this browser');
|
return toast.err(0, 'failed to load ogv.js:\ncannot play ogg/opus in this browser\n(try a non-apple device)');
|
||||||
|
|
||||||
toast.inf(0, '<h1>loading ogv.js</h1><h2>thanks apple</h2>');
|
toast.inf(0, '<h1>loading ogv.js</h1><h2>thanks apple</h2>');
|
||||||
|
|
||||||
|
|
|
@ -97,13 +97,11 @@ function up2k_flagbus() {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var do_take = function (now) {
|
var do_take = function (now) {
|
||||||
//dbg('*', 'do_take');
|
|
||||||
tx(now, "have");
|
tx(now, "have");
|
||||||
flag.owner = [flag.id, now];
|
flag.owner = [flag.id, now];
|
||||||
flag.ours = true;
|
flag.ours = true;
|
||||||
};
|
};
|
||||||
var do_want = function (now) {
|
var do_want = function (now) {
|
||||||
//dbg('*', 'do_want');
|
|
||||||
tx(now, "want");
|
tx(now, "want");
|
||||||
};
|
};
|
||||||
flag.take = function (now) {
|
flag.take = function (now) {
|
||||||
|
@ -260,7 +258,7 @@ function U2pvis(act, btns) {
|
||||||
var obj = ebi('f{0}p'.format(fobj.n)),
|
var obj = ebi('f{0}p'.format(fobj.n)),
|
||||||
o1 = p[0] - 2, o2 = p[0] - 0.1, o3 = p[0];
|
o1 = p[0] - 2, o2 = p[0] - 0.1, o3 = p[0];
|
||||||
|
|
||||||
if (!obj) { //} || true) {
|
if (!obj) {
|
||||||
var msg = [
|
var msg = [
|
||||||
"act", r.act,
|
"act", r.act,
|
||||||
"in", fo.in,
|
"in", fo.in,
|
||||||
|
@ -482,7 +480,6 @@ function fsearch_explain(n) {
|
||||||
|
|
||||||
|
|
||||||
function up2k_init(subtle) {
|
function up2k_init(subtle) {
|
||||||
// show modal message
|
|
||||||
function showmodal(msg) {
|
function showmodal(msg) {
|
||||||
ebi('u2notbtn').innerHTML = msg;
|
ebi('u2notbtn').innerHTML = msg;
|
||||||
ebi('u2btn').style.display = 'none';
|
ebi('u2btn').style.display = 'none';
|
||||||
|
@ -490,7 +487,6 @@ function up2k_init(subtle) {
|
||||||
ebi('u2conf').style.opacity = '0.5';
|
ebi('u2conf').style.opacity = '0.5';
|
||||||
}
|
}
|
||||||
|
|
||||||
// hide modal message
|
|
||||||
function unmodal() {
|
function unmodal() {
|
||||||
ebi('u2notbtn').style.display = 'none';
|
ebi('u2notbtn').style.display = 'none';
|
||||||
ebi('u2btn').style.display = 'block';
|
ebi('u2btn').style.display = 'block';
|
||||||
|
@ -507,7 +503,6 @@ function up2k_init(subtle) {
|
||||||
// chrome<37 firefox<34 edge<12 opera<24 safari<7
|
// chrome<37 firefox<34 edge<12 opera<24 safari<7
|
||||||
shame = 'your browser is impressively ancient';
|
shame = 'your browser is impressively ancient';
|
||||||
|
|
||||||
// upload ui hidden by default, clicking the header shows it
|
|
||||||
var got_deps = false;
|
var got_deps = false;
|
||||||
function init_deps() {
|
function init_deps() {
|
||||||
if (!got_deps && !subtle && !window.asmCrypto) {
|
if (!got_deps && !subtle && !window.asmCrypto) {
|
||||||
|
@ -524,11 +519,9 @@ function up2k_init(subtle) {
|
||||||
got_deps = true;
|
got_deps = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// show uploader if the user only has write-access
|
|
||||||
if (perms.length && !has(perms, 'read'))
|
if (perms.length && !has(perms, 'read'))
|
||||||
goto('up2k');
|
goto('up2k');
|
||||||
|
|
||||||
// shows or clears a message in the basic uploader ui
|
|
||||||
function setmsg(msg, type) {
|
function setmsg(msg, type) {
|
||||||
if (msg !== undefined) {
|
if (msg !== undefined) {
|
||||||
ebi('u2err').setAttribute('class', type);
|
ebi('u2err').setAttribute('class', type);
|
||||||
|
@ -546,13 +539,11 @@ function up2k_init(subtle) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// switches to the basic uploader with msg as error message
|
|
||||||
function un2k(msg) {
|
function un2k(msg) {
|
||||||
setmsg(msg, 'err');
|
setmsg(msg, 'err');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle user intent to use the basic uploader instead
|
|
||||||
ebi('u2nope').onclick = function (e) {
|
ebi('u2nope').onclick = function (e) {
|
||||||
ev(e);
|
ev(e);
|
||||||
setmsg(suggest_up2k, 'msg');
|
setmsg(suggest_up2k, 'msg');
|
||||||
|
@ -769,7 +760,6 @@ function up2k_init(subtle) {
|
||||||
}
|
}
|
||||||
ngot += 1;
|
ngot += 1;
|
||||||
});
|
});
|
||||||
// console.log("ngot: " + ngot);
|
|
||||||
if (!ngot) {
|
if (!ngot) {
|
||||||
dirs.shift();
|
dirs.shift();
|
||||||
rd = null;
|
rd = null;
|
||||||
|
|
Loading…
Reference in a new issue