mirror of
https://github.com/9001/copyparty.git
synced 2026-02-26 13:33:09 -07:00
Compare commits
No commits in common. "hovudstraum" and "v1.20.7" have entirely different histories.
hovudstrau
...
v1.20.7
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -29,10 +29,6 @@ copyparty.egg-info/
|
|||
copyparty/res/COPYING.txt
|
||||
copyparty/web/deps/
|
||||
srv/
|
||||
scripts/docker/base/b/
|
||||
scripts/docker/base/cver*
|
||||
scripts/docker/base/test-aac/
|
||||
scripts/docker/base/whl/
|
||||
scripts/docker/i/
|
||||
scripts/deps-docker/uncomment.py
|
||||
contrib/package/arch/pkg/
|
||||
|
|
|
|||
|
|
@ -492,9 +492,6 @@ upgrade notes
|
|||
* thumbnails are broken (you get a colorful square which says the filetype instead)
|
||||
* you need to install `FFmpeg` or `Pillow`; see [thumbnails](#thumbnails)
|
||||
|
||||
* thumbnails are broken, specifically for photos and videos taken by iphones
|
||||
* the [docker image](https://github.com/9001/copyparty/blob/hovudstraum/scripts/docker) and [bootable flashdrive](https://a.ocv.me/pub/stuff/edcd001/enterprise-edition/) are not able to read heif/heic images and h265/HEVC video due to [legal reasons](docs/bad-codecs.md)
|
||||
|
||||
* thumbnails are broken (some images appear, but other files just get a blank box, and/or the broken-image placeholder)
|
||||
* probably due to a reverse-proxy messing with the request URLs and stripping the query parameters (`?th=w`), so check your URL rewrite rules
|
||||
* could also be due to incorrect caching settings in reverse-proxies and/or CDNs, so make sure that nothing is set to ignore the query string
|
||||
|
|
@ -764,7 +761,8 @@ to show `/icons/exe.png` and `/icons/elf.gif` as the thumbnail for all `.exe` an
|
|||
* be careful with svg; chrome will crash if you have too many unique svg files showing on the same page (the limit is 250 or so) -- showing the same handful of svg files thousands of times is ok however
|
||||
|
||||
note:
|
||||
* heif/heifs/heic/heics images usually require the `libvips` [optional dependency](#optional-dependencies) but this is not possible with the docker-images due to [legal reasons](docs/bad-codecs.md)
|
||||
* heif/heifs/heic/heics images usually require the `libvips` [optional dependency](#optional-dependencies) (available in the `iv` docker image, `withFastThumbnails` in nixos)
|
||||
* technical trivia: FFmpeg has basic support for tiled heic as of v7.0; need `-show_stream_groups` for correct resolution
|
||||
|
||||
config file example:
|
||||
|
||||
|
|
@ -1440,7 +1438,7 @@ general usage:
|
|||
on macos, connect from finder:
|
||||
* [Go] -> [Connect to Server...] -> http://192.168.123.1:3923/
|
||||
|
||||
to be able to edit existing files, the client must have the Delete-permission, and some webdav clients will also require the [daw](https://copyparty.eu/cli/#g-daw) volflag or global-option (not necessary if the client sends the `x-oc-mtime` header). Without `daw`, those clients will fail to modify existing files and instead create new copies with names like `notes.txt-1771978661.726032-3i9GPghL.txt`. **NOTE:** Enabling `daw` will also make all PUT-uploads overwrite existing files if the user has delete-access, so use with caution. Another alternative is the [dav-port](https://copyparty.eu/cli/#g-dav-port) option
|
||||
to upload or edit files with WebDAV clients, enable the `daw` volflag (because most WebDAV clients expect this) and give your account the delete-permission. This avoids getting several copies of the same file on the server. HOWEVER: This will also make all PUT-uploads overwrite existing files if the user has delete-access, so use with caution.
|
||||
|
||||
> note: if you have enabled [IdP authentication](#identity-providers) then that may cause issues for some/most webdav clients; see [the webdav section in the IdP docs](https://github.com/9001/copyparty/blob/hovudstraum/docs/idp.md#connecting-webdav-clients)
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
# NOTE: You generally shouldn't use this PKGBUILD on Arch, as it is mainly for testing purposes. Install copyparty using pacman instead.
|
||||
|
||||
pkgname=copyparty
|
||||
pkgver="1.20.10"
|
||||
pkgver="1.20.6"
|
||||
pkgrel=1
|
||||
pkgdesc="File server with accelerated resumable uploads, dedup, WebDAV, SFTP, FTP, TFTP, zeroconf, media indexer, thumbnails++"
|
||||
arch=("any")
|
||||
|
|
@ -24,7 +24,7 @@ optdepends=("ffmpeg: thumbnails for videos, images (slower) and audio, music tag
|
|||
)
|
||||
source=("https://github.com/9001/${pkgname}/releases/download/v${pkgver}/${pkgname}-${pkgver}.tar.gz")
|
||||
backup=("etc/${pkgname}/copyparty.conf" )
|
||||
sha256sums=("a651df2ab768ebdf2f41b7ff1e1fec788ae8a34848ce228c189f2d0f566c9fd9")
|
||||
sha256sums=("c1656e07a0fd49983bb1caa93c5d5e9519a8a08b5d85e65bef3eea761ad06d30")
|
||||
|
||||
build() {
|
||||
cd "${srcdir}/${pkgname}-${pkgver}/copyparty/web"
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
|
||||
pkgname=copyparty
|
||||
pkgver=1.20.10
|
||||
pkgver=1.20.6
|
||||
pkgrel=1
|
||||
pkgdesc="File server with accelerated resumable uploads, dedup, WebDAV, SFTP, FTP, TFTP, zeroconf, media indexer, thumbnails++"
|
||||
arch=("any")
|
||||
|
|
@ -21,7 +21,7 @@ optdepends=("ffmpeg: thumbnails for videos, images (slower) and audio, music tag
|
|||
)
|
||||
source=("https://github.com/9001/${pkgname}/releases/download/v${pkgver}/${pkgname}-${pkgver}.tar.gz")
|
||||
backup=("/etc/${pkgname}.d/init" )
|
||||
sha256sums=("a651df2ab768ebdf2f41b7ff1e1fec788ae8a34848ce228c189f2d0f566c9fd9")
|
||||
sha256sums=("c1656e07a0fd49983bb1caa93c5d5e9519a8a08b5d85e65bef3eea761ad06d30")
|
||||
|
||||
build() {
|
||||
cd "${srcdir}/${pkgname}-${pkgver}/copyparty/web"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"url": "https://github.com/9001/copyparty/releases/download/v1.20.10/copyparty-1.20.10.tar.gz",
|
||||
"version": "1.20.10",
|
||||
"hash": "sha256-plHfKrdo698vQbf/Hh/seIroo0hIziKMGJ8tD1Zsn9k="
|
||||
"url": "https://github.com/9001/copyparty/releases/download/v1.20.6/copyparty-1.20.6.tar.gz",
|
||||
"version": "1.20.6",
|
||||
"hash": "sha256-wWVuB6D9SZg7scqpPF1elRmooItdheZb7z7qdhrQbTA="
|
||||
}
|
||||
|
|
@ -108,7 +108,6 @@ web/tl/epo.js
|
|||
web/tl/fin.js
|
||||
web/tl/fra.js
|
||||
web/tl/grc.js
|
||||
web/tl/hun.js
|
||||
web/tl/ita.js
|
||||
web/tl/jpn.js
|
||||
web/tl/kor.js
|
||||
|
|
|
|||
|
|
@ -1059,17 +1059,13 @@ def get_sects():
|
|||
|
||||
similarly, \033[33m--chmod-d\033[0m and \033[33mchmod_d\033[0m sets the directory/folder perm
|
||||
|
||||
the value is a three- or four-digit octal number such as \033[32m755\033[0m, \033[32m0644\033[0m, \033[32m2750\033[0m, etc.
|
||||
the value is a three-digit octal number such as \033[32m755\033[0m, \033[32m750\033[0m, \033[32m644\033[0m, etc.
|
||||
|
||||
if 3 digits: User, Group, Other
|
||||
if 4 digits: Special, User, Group, Other
|
||||
first digit = "User"; permission for the unix-user
|
||||
second digit = "Group"; permission for the unix-group
|
||||
third digit = "Other"; permission for all other users/groups
|
||||
|
||||
"Special" digit (sum of the following):
|
||||
\033[32m1\033[0m = sticky (files: n/a; dirs: files in directory can be deleted only by their owners)
|
||||
\033[32m2\033[0m = setgid (files: run executable as file group; dirs: files inherit group from directory)
|
||||
\033[32m4\033[0m = setuid (files: run executable as file owner; dirs: n/a)
|
||||
|
||||
"User", "Group", "Other" digits for files:
|
||||
for files:
|
||||
\033[32m0\033[0m = \033[35m---\033[0m = no access
|
||||
\033[32m1\033[0m = \033[35m--x\033[0m = can execute the file as a program
|
||||
\033[32m2\033[0m = \033[35m-w-\033[0m = can write
|
||||
|
|
@ -1079,7 +1075,7 @@ def get_sects():
|
|||
\033[32m6\033[0m = \033[35mrw-\033[0m = can read and write
|
||||
\033[32m7\033[0m = \033[35mrwx\033[0m = can read, write, execute
|
||||
|
||||
"User", "Group", "Other" digits for directories/folders:
|
||||
for directories/folders:
|
||||
\033[32m0\033[0m = \033[35m---\033[0m = no access
|
||||
\033[32m1\033[0m = \033[35m--x\033[0m = can read files in folder but not list contents
|
||||
\033[32m2\033[0m = \033[35m-w-\033[0m = n/a
|
||||
|
|
@ -1265,7 +1261,7 @@ def add_upload(ap):
|
|||
ap2.add_argument("--no-fpool", action="store_true", help="disable file-handle pooling -- instead, repeatedly close and reopen files during upload (bad idea to enable this on windows and/or cow filesystems)")
|
||||
ap2.add_argument("--use-fpool", action="store_true", help="force file-handle pooling, even when it might be dangerous (multiprocessing, filesystems lacking sparse-files support, ...)")
|
||||
ap2.add_argument("--chmod-f", metavar="UGO", type=u, default="", help="unix file permissions to use when creating files; default is probably 644 (OS-decided), see --help-chmod. Examples: [\033[32m644\033[0m] = owner-RW + all-R, [\033[32m755\033[0m] = owner-RWX + all-RX, [\033[32m777\033[0m] = full-yolo (volflag=chmod_f)")
|
||||
ap2.add_argument("--chmod-d", metavar="UGO", type=u, default="755", help="unix file permissions to use when creating directories; see --help-chmod. Examples: [\033[32m755\033[0m] = owner-RW + all-R, [\033[32m2750\033[0m] = setgid + owner-RW + group-R, [\033[32m777\033[0m] = full-yolo (volflag=chmod_d)")
|
||||
ap2.add_argument("--chmod-d", metavar="UGO", type=u, default="755", help="unix file permissions to use when creating directories; see --help-chmod. Examples: [\033[32m755\033[0m] = owner-RW + all-R, [\033[32m777\033[0m] = full-yolo (volflag=chmod_d)")
|
||||
ap2.add_argument("--uid", metavar="N", type=int, default=-1, help="unix user-id to chown new files/folders to; default = -1 = do-not-change (volflag=uid)")
|
||||
ap2.add_argument("--gid", metavar="N", type=int, default=-1, help="unix group-id to chown new files/folders to; default = -1 = do-not-change (volflag=gid)")
|
||||
ap2.add_argument("--wram", action="store_true", help="allow uploading even if a volume is inside a ramdisk, meaning that all data will be lost on the next server reboot (volflag=wram)")
|
||||
|
|
@ -1482,7 +1478,7 @@ def add_ftp(ap):
|
|||
|
||||
def add_webdav(ap):
|
||||
ap2 = ap.add_argument_group("WebDAV options")
|
||||
ap2.add_argument("--daw", action="store_true", help="enable full write support, even if client may not be webdav. Some webdav clients need this option for editing existing files; not necessary for clients that send the 'x-oc-mtime' header. Regardless, the delete-permission must always be given. \033[1;31mWARNING:\033[0m This has side-effects -- PUT-operations will now \033[1;31mOVERWRITE\033[0m existing files, rather than inventing new filenames to avoid loss of data. You might want to instead set this as a volflag where needed. By not setting this flag, uploaded files can get written to a filename which the client does not expect (which might be okay, depending on client)")
|
||||
ap2.add_argument("--daw", action="store_true", help="enable full write support, even if client may not be webdav. \033[1;31mWARNING:\033[0m This has side-effects -- PUT-operations will now \033[1;31mOVERWRITE\033[0m existing files, rather than inventing new filenames to avoid loss of data. You might want to instead set this as a volflag where needed. By not setting this flag, uploaded files can get written to a filename which the client does not expect (which might be okay, depending on client)")
|
||||
ap2.add_argument("--dav-inf", action="store_true", help="allow depth:infinite requests (recursive file listing); extremely server-heavy but required for spec compliance -- luckily few clients rely on this")
|
||||
ap2.add_argument("--dav-mac", action="store_true", help="disable apple-garbage filter -- allow macos to create junk files (._* and .DS_Store, .Spotlight-*, .fseventsd, .Trashes, .AppleDouble, __MACOS)")
|
||||
ap2.add_argument("--dav-rt", action="store_true", help="show symlink-destination's lastmodified instead of the link itself; always enabled for recursive listings (volflag=davrt)")
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
# coding: utf-8
|
||||
|
||||
VERSION = (1, 20, 10)
|
||||
VERSION = (1, 20, 7)
|
||||
CODENAME = "sftp is fine too"
|
||||
BUILD_DT = (2026, 2, 25)
|
||||
BUILD_DT = (2026, 2, 14)
|
||||
|
||||
S_VERSION = ".".join(map(str, VERSION))
|
||||
S_BUILD_DT = "{0:04d}-{1:02d}-{2:02d}".format(*BUILD_DT)
|
||||
|
|
|
|||
|
|
@ -2476,8 +2476,8 @@ class AuthSrv(object):
|
|||
if not zs:
|
||||
vol.flags.pop(k, None)
|
||||
continue
|
||||
if not re.match("^[0-7]{3,4}$", zs):
|
||||
t = "config-option '%s' must be a three- or four-digit octal value such as [0755] or [644] but the value was [%s]"
|
||||
if not re.match("^[0-7]{3}$", zs):
|
||||
t = "config-option '%s' must be a three-digit octal value such as [755] or [644] but the value was [%s]"
|
||||
t = t % (k, zs)
|
||||
self.log(t, 1)
|
||||
raise Exception(t)
|
||||
|
|
|
|||
|
|
@ -178,7 +178,6 @@ RE_HTTP1 = re.compile(r"(GET|HEAD|POST|PUT) [^ ]+ HTTP/1.1$")
|
|||
RE_HR = re.compile(r"[<>\"'&]")
|
||||
RE_MDV = re.compile(r"(.*)\.([0-9]+\.[0-9]{3})(\.[Mm][Dd])$")
|
||||
RE_RSS_KW = re.compile(r"(\{[^} ]+\})")
|
||||
RE_SETCK = re.compile(r"[^0-9a-z=]")
|
||||
|
||||
UPARAM_CC_OK = set("doc move tree".split())
|
||||
|
||||
|
|
@ -650,8 +649,8 @@ class HttpCli(object):
|
|||
if len(zso) > self.args.cookie_cmax:
|
||||
self.loud_reply("cookie header too big", status=400)
|
||||
return False
|
||||
zsll = [x.lstrip().split("=", 1) for x in zso.split(";") if "=" in x]
|
||||
cookies = {k.rstrip(): unescape_cookie(zs.strip(), k) for k, zs in zsll}
|
||||
zsll = [x.split("=", 1) for x in zso.split(";") if "=" in x]
|
||||
cookies = {k.strip(): unescape_cookie(zs) for k, zs in zsll}
|
||||
cookie_pw = cookies.get("cppws" if self.is_https else "cppwd") or ""
|
||||
if "b" in cookies and "b" not in uparam:
|
||||
uparam["b"] = cookies["b"]
|
||||
|
|
@ -2576,10 +2575,6 @@ class HttpCli(object):
|
|||
vfs.flags.get("daw")
|
||||
or "replace" in self.headers
|
||||
or "x-oc-mtime" in self.headers
|
||||
or (
|
||||
self.args.dav_port
|
||||
and self.args.dav_port == self.s.getsockname()[1]
|
||||
)
|
||||
)
|
||||
) or (
|
||||
not bos.path.exists(os.path.join(fdir, tnam))
|
||||
|
|
@ -5633,10 +5628,7 @@ class HttpCli(object):
|
|||
return True
|
||||
|
||||
def setck(self) -> bool:
|
||||
zs = self.uparam["setck"]
|
||||
if len(zs) > 9 or RE_SETCK.search(zs):
|
||||
raise Pebkac(400, "illegal value")
|
||||
k, v = zs.split("=")
|
||||
k, v = self.uparam["setck"].split("=", 1)
|
||||
t = 0 if v in ("", "x") else 86400 * 299
|
||||
ck = gencookie(k, v, self.args.R, True, False, t)
|
||||
self.out_headerlist.append(("Set-Cookie", ck))
|
||||
|
|
|
|||
|
|
@ -1439,7 +1439,7 @@ class SvcHub(object):
|
|||
self.log("root", "ssdp startup failed;\n" + min_ex(), 3)
|
||||
|
||||
def reload(self, rescan_all_vols: bool, up2k: bool) -> str:
|
||||
t = "users, volumes, and volflags have been reloaded"
|
||||
t = "config has been reloaded"
|
||||
with self.reload_mutex:
|
||||
self.log("root", "reloading config")
|
||||
self.asrv.reload(9 if up2k else 4)
|
||||
|
|
@ -1449,7 +1449,6 @@ class SvcHub(object):
|
|||
t += "; volumes are now reinitializing"
|
||||
else:
|
||||
self.log("root", "reload done")
|
||||
t += "\n\nchanges to global options (if any) require a restart of copyparty to take effect"
|
||||
self.broker.reload()
|
||||
return t
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import io
|
|||
import logging
|
||||
import os
|
||||
import re
|
||||
import shlex
|
||||
import shutil
|
||||
import subprocess as sp
|
||||
import tempfile
|
||||
|
|
@ -555,12 +554,11 @@ class ThumbSrv(object):
|
|||
conv_ok = True
|
||||
break
|
||||
except Exception as ex:
|
||||
r321 = getattr(ex, "returncode", 0) == 321
|
||||
msg = "%s could not create thumbnail of %r\n%s"
|
||||
msg = msg % (fun.__name__, abspath, ex if r321 else min_ex())
|
||||
msg = msg % (fun.__name__, abspath, min_ex())
|
||||
c: Union[str, int] = 1 if "<Signals.SIG" in msg else "90"
|
||||
self.log(msg, c)
|
||||
if not r321:
|
||||
if getattr(ex, "returncode", 0) != 321:
|
||||
if fun == funs[-1]:
|
||||
try:
|
||||
with open(ttpath, "wb") as _:
|
||||
|
|
@ -828,13 +826,7 @@ class ThumbSrv(object):
|
|||
|
||||
c: Union[str, int] = "90"
|
||||
t = "FFmpeg failed (probably a corrupt file):\n"
|
||||
|
||||
if "but no decoder found for: hevc" in serr:
|
||||
t = "thumbnail cannot be created due to legal reasons; https://github.com/9001/copyparty/blob/hovudstraum/docs/bad-codecs.md \033[0;90m\n"
|
||||
ret = 321
|
||||
c = 3
|
||||
|
||||
elif (
|
||||
if (
|
||||
(not self.args.th_ff_jpg or time.time() - int(self.args.th_ff_jpg) < 60)
|
||||
and cmd[-1].lower().endswith(b".webp")
|
||||
and (
|
||||
|
|
@ -849,7 +841,7 @@ class ThumbSrv(object):
|
|||
ret = 321
|
||||
c = 1
|
||||
|
||||
elif (
|
||||
if (
|
||||
not self.args.th_ff_swr or time.time() - int(self.args.th_ff_swr) < 60
|
||||
) and (
|
||||
"Requested resampling engine is unavailable" in serr
|
||||
|
|
@ -868,12 +860,7 @@ class ThumbSrv(object):
|
|||
if len(txt) > 5000:
|
||||
txt = txt[:2500] + "...\nff: [...]\nff: ..." + txt[-2500:]
|
||||
|
||||
try:
|
||||
zs = shlex.join([x.decode("utf-8", "replace") for x in cmd])
|
||||
except:
|
||||
zs = "'" + (b"' '".join(cmd2)).decode("utf-8", "replace") + "'"
|
||||
|
||||
self.log("%scmd: %s\n%s" % (t, zs, txt), c=c)
|
||||
self.log(t + txt, c=c)
|
||||
raise sp.CalledProcessError(ret, (cmd[0], b"...", cmd[-1]))
|
||||
|
||||
def conv_waves(self, abspath: str, tpath: str, fmt: str, vn: VFS) -> None:
|
||||
|
|
|
|||
|
|
@ -3439,10 +3439,8 @@ def rmdirs_up(top: str, stop: str) -> tuple[list[str], list[str]]:
|
|||
return [top] + ok, ng
|
||||
|
||||
|
||||
def unescape_cookie(orig: str, name: str) -> str:
|
||||
def unescape_cookie(orig: str) -> str:
|
||||
# mw=idk; doot=qwe%2Crty%3Basd+fgh%2Bjkl%25zxc%26vbn # qwe,rty;asd fgh+jkl%zxc&vbn
|
||||
if not name.startswith("cppw"):
|
||||
orig = orig[:3]
|
||||
ret = []
|
||||
esc = ""
|
||||
for ch in orig:
|
||||
|
|
|
|||
|
|
@ -6,11 +6,6 @@ pk: $(addsuffix .gz, $(wildcard tl/*.js *.js *.css) \
|
|||
a/webdav-cfg.txt )
|
||||
un: $(addsuffix .un, $(wildcard tl/*.gz *.gz a/*.gz))
|
||||
|
||||
tl/%.js.gz: tl/%.js
|
||||
./Makefile.s1 <$< | pigz -c11 -J 34 -I 573 >$@
|
||||
touch -r $< $@
|
||||
rm $<
|
||||
|
||||
%.gz: %
|
||||
pigz -c11 -J 34 -I 573 <$< >$@
|
||||
touch -r $< $@
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
sed -r 's/^\t+//;s/^"([a-zA-Z][a-zA-Z0-9_]*)": /\1:/; /^\/\//d; s/([^\]["'\''],) *\/\/.*/\1/; /^$/d'
|
||||
|
|
@ -332,7 +332,8 @@ if (1)
|
|||
"mt_ssvt": "volume threshold (0-255)\">vol",
|
||||
"mt_ssts": "active threshold (% of track, start)\">start",
|
||||
"mt_sste": "active threshold (% of track, end)\">end",
|
||||
"mt_sssm": "playback speed multiplier (range: 0.15 to 8)\">ffwd",
|
||||
"mt_ssrt": "volume/speed ramp up/down time\">fade",
|
||||
"mt_sssm": "playback speed multiplier\">ffwd",
|
||||
|
||||
"mb_play": "play",
|
||||
"mm_hashplay": "play this audio file?",
|
||||
|
|
@ -690,7 +691,6 @@ var LANGN = [
|
|||
["fin", "Suomi"],
|
||||
["fra", "français"],
|
||||
["grc", "Ελληνικά"],
|
||||
["hun", "Magyar"],
|
||||
["ita", "Italiano"],
|
||||
["jpn", "日本語"],
|
||||
["kor", "한국어"],
|
||||
|
|
@ -2717,8 +2717,8 @@ var afilt = (function () {
|
|||
"drcv": [-24, 30, 12, 0.01, 0.25],
|
||||
"drch": ['tresh', 'knee', 'ratio', 'atk', 'rls'],
|
||||
"drck": ['threshold', 'knee', 'ratio', 'attack', 'release'],
|
||||
"sscl": [L.mt_ssvt, L.mt_ssts, L.mt_sste, L.mt_sssm],
|
||||
"sscv": [1, 5, 5, 5.0],
|
||||
"sscl": [L.mt_ssvt, L.mt_ssts, L.mt_sste, L.mt_ssrt, L.mt_sssm],
|
||||
"sscv": [1, 5, 5, 5.0, 0.2],
|
||||
"drcn": null,
|
||||
"filters": [],
|
||||
"filterskip": [],
|
||||
|
|
@ -2887,9 +2887,9 @@ var afilt = (function () {
|
|||
}
|
||||
|
||||
function add_ss() {
|
||||
r.filters.push(afilt.ssg = actx.createGain());
|
||||
r.filters.push(afilt.ssa = actx.createAnalyser());
|
||||
afilt.ssa.fftSize = 256;
|
||||
r.filters.push(mp.ssg = actx.createGain());
|
||||
r.filters.push(mp.ssa = actx.createAnalyser());
|
||||
mp.ssa.fftSize = 256;
|
||||
}
|
||||
|
||||
function add_eq() {
|
||||
|
|
@ -10034,15 +10034,15 @@ var mpss = (function() {
|
|||
var r = {}, config, ssint, npaint = 0;
|
||||
|
||||
r.load = function () {
|
||||
if (!afilt.ssg)
|
||||
if (!mp || !mp.ssg)
|
||||
return false;
|
||||
|
||||
config = {
|
||||
vthresh: afilt.sscv[0],
|
||||
sthresh: afilt.sscv[1],
|
||||
etresh: afilt.sscv[2],
|
||||
sspeed: clamp(afilt.sscv[3], 0.15, 8.0),
|
||||
rspeed: 0.2,
|
||||
sspeed: afilt.sscv[3],
|
||||
rspeed: afilt.sscv[4],
|
||||
loopInterval: 25,
|
||||
};
|
||||
return true;
|
||||
|
|
@ -10057,7 +10057,7 @@ var mpss = (function() {
|
|||
clearInterval(ssint);
|
||||
ssint = null;
|
||||
if (!mp) return;
|
||||
if (afilt.ssg) afilt.ssg.gain.value = 1.0;
|
||||
if (mp.ssg) mp.ssg.gain.value = 1.0;
|
||||
if (mp.au && mp.au._ss) mp.au.playbackRate = 1.0;
|
||||
if (mp.au2 && mp.au2._ss) mp.au2.playbackRate = 1.0;
|
||||
};
|
||||
|
|
@ -10066,7 +10066,6 @@ var mpss = (function() {
|
|||
var ae = mp.au;
|
||||
ae._ss = true;
|
||||
|
||||
var gain = afilt.ssg.gain;
|
||||
var duration = ae.duration || 0;
|
||||
|
||||
var slimit = duration * (config.sthresh / 100);
|
||||
|
|
@ -10078,7 +10077,7 @@ var mpss = (function() {
|
|||
var is_silent = false;
|
||||
|
||||
if (in_limits) {
|
||||
var analyser = afilt.ssa;
|
||||
var analyser = mp.ssa;
|
||||
var da = new Uint8Array(analyser.frequencyBinCount);
|
||||
analyser.getByteFrequencyData(da);
|
||||
|
||||
|
|
@ -10103,12 +10102,12 @@ var mpss = (function() {
|
|||
if (Math.abs(ae.playbackRate - tspeed) > 0.01) {
|
||||
ae.playbackRate += (tspeed - ae.playbackRate) * config.rspeed;
|
||||
}
|
||||
if (Math.abs(gain.value - tvol) > 0.01) {
|
||||
gain.value += (tvol - gain.value) * config.rspeed;
|
||||
if (Math.abs(mp.ssg.gain.value - tvol) > 0.01) {
|
||||
mp.ssg.gain.value += (tvol - mp.ssg.gain.value) * config.rspeed;
|
||||
}
|
||||
} else {
|
||||
ae.playbackRate = 1.0;
|
||||
gain.value = 1.0;
|
||||
mp.ssg.gain.value = 1.0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -325,6 +325,7 @@ Ls.chi = {
|
|||
"mt_ssvt": "音量阈值 (0-255)\">音量", //m
|
||||
"mt_ssts": "活动阈值 (曲目百分比,开始)\">开始", //m
|
||||
"mt_sste": "活动阈值 (曲目百分比,结束)\">结束", //m
|
||||
"mt_ssrt": "音量/速度 渐变时间\">攻", //m
|
||||
"mt_sssm": "播放速度倍率\">快进", //m
|
||||
|
||||
"mb_play": "播放",
|
||||
|
|
|
|||
|
|
@ -329,6 +329,7 @@ Ls.cze = {
|
|||
"mt_ssvt": "prahová hlasitost (0-255)\">hl", //m
|
||||
"mt_ssts": "aktivní práh (% stopy, začátek)\">zač", //m
|
||||
"mt_sste": "aktivní práh (% stopy, konec)\">kon", //m
|
||||
"mt_ssrt": "doba náběhu/útlumu hlasitosti/rychlosti\">fade", //m
|
||||
"mt_sssm": "násobič rychlosti přehrávání\">rych", //m
|
||||
|
||||
"mb_play": "přehrát",
|
||||
|
|
|
|||
|
|
@ -325,6 +325,7 @@ Ls.deu = {
|
|||
"mt_ssvt": "Lautstärkeschwelle (0-255)\">laut", //m
|
||||
"mt_ssts": "Aktiv-Schwelle (% Titel, Anfang)\">anf", //m
|
||||
"mt_sste": "Aktiv-Schwelle (% Titel, Ende)\">end", //m
|
||||
"mt_ssrt": "Ein/Ausblendzeit Lautstärke/Geschwindigkeit\">fade", //m
|
||||
"mt_sssm": "Wiedergabegeschwindigkeits-Multiplikator\">vor", //m
|
||||
|
||||
"mb_play": "Abspielen",
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ Ls.epo = {
|
|||
"login": "Ensaluti",
|
||||
"access": " atingo",
|
||||
"ot_close": "fermi submenuon",
|
||||
"ot_search": "`serĉi dosierojn per atributoj, indiko / nomo, etikedoj de muziko aŭ ĉiu kombinaĵo de tiuj parametroj$N$N`foo bar` = devas enhavi ambaŭ «foo» kaj «bar»,$N`foo -bar` = devas enhavi «foo», sed ne «bar»,$N`^yana .opus$` = komenci per «yana» kaj esti dosiero de formato «opus»$N`"try unite"` = enhavi precipe «try unite»$N$Nformato de datoj estas iso-8601, ekzemple$N`2009-12-31` aŭ `2020-09-12 23:30:00`",
|
||||
"ot_search": "`serĉi dosierojn per atributoj, indiko / nomo, etikedoj de muziko aŭ ĉiu kombinaĵo de tiuj parametroj$N$N`foo bar` = devas enhavi ambaŭ «foo» kaj «bar»,$N`foo -bar` = devas enhavi «foo», sed ne «bar»,$N`^yana .opus$` = komenci per «yana» kaj esti dosieron de formato «opus»$N`"try unite"` = enhavi precipe «try unite»$N$Nformato de datoj estas iso-8601, ekzemple$N`2009-12-31` aŭ `2020-09-12 23:30:00`",
|
||||
"ot_unpost": "unpost: forigi viaj plej lastaj alŝutoj, aŭ ĉesigi nefinigitajn",
|
||||
"ot_bup": "bup: fundamenta alŝutilo, funkias eĉ kun netscape 4.0",
|
||||
"ot_mkdir": "mkdir: krei novan dosierujon",
|
||||
|
|
@ -227,8 +227,8 @@ Ls.epo = {
|
|||
"ct_thumb": 'dum krado-vido, baskuli montradon de simboloj aŭ bildetoj$NFulmoklavo: T">🖼️ bildetoj',
|
||||
"ct_csel": 'uzi STIR kaj MAJ por elekti dosierojn en krado-vido">elekto',
|
||||
"ct_dsel": 'uzi tren-elekton en krado-vido">treni',
|
||||
"ct_dl": 'devigi elŝuton (ne montri enkadre), kiam dosiero estas alklakita">elŝuti',
|
||||
"ct_ihop": 'rulumi al la lasta vidita bildo-dosiero post fermado de bildo-vidilo">🖼️⮯',
|
||||
"ct_dl": 'devigi elŝuton (ne montri enkadre), kiam dosiero estas alklakita">dl',
|
||||
"ct_ihop": 'montri la lastan viditan bildo-dosieron post fermado de bildo-vidilo">g⮯',
|
||||
"ct_dots": 'montri kaŝitajn dosierojn (se servilo permesas)">kaŝitaj',
|
||||
"ct_qdel": 'peti konfirmon nur unufoje antaŭ forigado">rapid-forig.',
|
||||
"ct_dir1st": 'ordigi dosierujojn antaŭ dosieroj">📁 unue',
|
||||
|
|
@ -291,10 +291,10 @@ Ls.epo = {
|
|||
"mt_aplay": "ludi aŭtomate, se ligilo enhavas identigilon de kanto$N$Nmalŝaltado de ĉi tiu agordo ankaŭ malŝaltas ĝisdatigadon de paĝ-adreso, por ke ludado ne rekomenciĝas, se la paĝo estos poste malfermita sen aliaj agordoj\">a▶",
|
||||
"mt_preload": "komenci ŝargadon de sekva kanto antaŭ la fino de la nuna, por kontinua ludado\">antaŭŝarg.",
|
||||
"mt_prescan": "eniri la sekvan dosierujon antaŭ la fino de la lasta kanto, $Npor ke la retumilo ne interrompis la ludadon\">nav",
|
||||
"mt_fullpre": "antaŭŝargi la tutan kanton;$N✅ ŝalti por <b>malaltkvalitaj</b> konektoj,$N❌ eble <b>malŝalti</b> por malrapidaj konektoj\">tute",
|
||||
"mt_fullpre": "antaŭŝargi la tutan kanton;$N✅ ŝalti por <b>malaltkvalitaj</b> konektoj,$N❌ eble <b>malŝalti</b> por malrapidaj konektoj\">full",
|
||||
"mt_fau": "por poŝtelefonoj: komenci sekvan kanton, eĉ se ĝi ne estis tute ŝargita (povas difektigi la montradon de muzikaĵ-etikedoj)\">☕️",
|
||||
"mt_waves": "bildigo:$Nmontri amplitudon de ludanta kanto en ludadbreto\">~",
|
||||
"mt_npclip": "montri butonojn por kopiado de ludanta kanto\">/np", //ne tradukita: "/np" estas referenco al komando, uzata en IRC-babilejoj
|
||||
"mt_npclip": "montri butonojn por kopiado de ludanta kanto\">/np",
|
||||
"mt_m3u_c": "montri butonojn por kopiado de elektitaj kantoj kiel m3u8-ludlisto\">📻",
|
||||
"mt_octl": "integrado kun operaciumo (medio-klavoj kaj montriloj)\">integr.",
|
||||
"mt_oseek": "movi tra kanto per operaciumaj stiriloj$N$Nnoto: en iuj komputiloj (iPhone),$N ĉi tiu agordo anstataŭigas la butonon de sekva kanto\">movado",
|
||||
|
|
@ -321,10 +321,11 @@ Ls.epo = {
|
|||
"mt_tint": "travideblo (0-100) de ludadbreto$Nvi povas ŝanĝi ĝin, se ĝi aspektas tro distre dum ŝargado",
|
||||
"mt_eq": "`ŝaltas ekvalizilon kaj stirilon de plifortigado;$N$Nboost (plifortigado) `0` = senmodifa 100%a laŭteco$N$Nwidth (larĝo) `1 ` = senmodifa dukanala sono$Nwidth (larĝo) `0.5` = 50% miksado inter maldekstra kaj dekstra kanaloj$Nwidth (larĝo) `0 ` = unukanala sono$N$Nboost `-0.8` & width `10` = senvokigo :^)$N$Nŝaltita ekvalizilo ankaŭ forigas paŭzojn inter muzikaĵoj en senpaŭzaj albumoj, agordi ĉion kiel 0 (sed 'width' kiel 1), se vi volas nur tion",
|
||||
"mt_drc": "ŝaltas kompresoron de dinamiko (glatigas laŭtecon de muzikaĵoj); ankaŭ ŝaltas ekvalizilon, do agordu ĉion (sed 'width') kiel 0, se vi ne volas ĝin; $N$Nplimalgrandigas laŭtecon de aŭdio super sojlo-valoro ('tresh') da dB; ĉiu proporcio-valoro ('ratio') da dB post 'tresh' 1 dB estos eligita, do implicitaj valoroj (tresh = -24, ratio = 12) faras, ke laŭteco neniam pli grandas ol -22 dB; tiel estas sendanĝera agordi 'boost'on kiel 0.8 aŭ eĉ 1.8 dum ATK = 0 kaj grandega RLS, kiel 90 (funkcias nur en Firefox, RLS estas maksimume 1 en aliaj retumiloj)$N$N(rigardu vikipedion, ĝi klariĝas pli bone)",
|
||||
"mt_ss": "`ebligas transsalti silenton; multobligas la ludrapidon per `×rapid` ĉe komenco/fino de aŭdiaĵoj, kiam la laŭteco estas sub `laŭt` kaj la pozicio estas ene de la komencaj `ek%` aŭ finaj `fin%`",
|
||||
"mt_ssvt": "maksimuma laŭtnivelo por silentsaltado (0-255)\">laŭt",
|
||||
"mt_ssts": "komenca intervalo por silentsaltado (% de trakolongo)\">ek%",
|
||||
"mt_sste": "fina intervalo por silentsaltado (% de trakolongo)\">fin%",
|
||||
"mt_ss": "`ebligas transsalti silenton; multobligas la ludrapidon per `rap` ĉe komenco/fino de aŭdiaĵoj, kiam la laŭteco estas sub `laŭt` kaj la pozicio estas ene de la komencaj `kom`% aŭ finaj `fin`%",
|
||||
"mt_ssvt": "laŭteca intervalo por silentsaltado (0-255)\">laŭt",
|
||||
"mt_ssts": "komenca intervalo por silentsaltado (% de trakolongo)\">kom",
|
||||
"mt_sste": "fina intervalo por silentsaltado (% de trakolongo)\">fin",
|
||||
"mt_ssrt": "tempo por laŭgrada ŝanĝo de laŭteco/rapideco dum silentsaltado\">ŝanĝ⏱️",
|
||||
"mt_sssm": "multiplikado de ludrapideco dum silentsaltado\">×rapid",
|
||||
|
||||
"mb_play": "ludi",
|
||||
|
|
|
|||
|
|
@ -84,8 +84,8 @@ Ls.fin = {
|
|||
["M", "sulje tekstitiedosto"],
|
||||
["E", "muokkaa tekstitiedostoa"],
|
||||
["S", "valitse tiedosto (leikkausta/kopiointia/uudelleennimeämistä varten)"],
|
||||
["Y", "lataa tekstitiedosto"],
|
||||
["⇧ J", "muotoile/siisti json"],
|
||||
["Y", "lataa tekstitiedosto"], //m
|
||||
["⇧ J", "kaunista json"], //m
|
||||
]
|
||||
],
|
||||
|
||||
|
|
@ -111,14 +111,14 @@ Ls.fin = {
|
|||
"gou": 'ylempi hakemisto">ylös',
|
||||
"gon": 'seuraava hakemisto">seur',
|
||||
"logout": "Kirjaudu ulos ",
|
||||
"login": "Kirjaudu sisään",
|
||||
"login": "Kirjaudu sisään", //m
|
||||
"access": " -oikeudet",
|
||||
"ot_close": "sulje alavalikko",
|
||||
"ot_search": "`etsi tiedostoja ominaisuuksien, tiedostopolun tai -nimen, musiikkitägien tai näiden yhdistelmän perusteella$N$N`foo bar` = täytyy sisältää sekä «foo» että «bar»,$N`foo -bar` = täytyy sisältää «foo» mutta ei «bar»,$N`^yana .opus$` = alkaa «yana» ja on «opus»-tiedosto$N`"try unite"` = sisältää täsmälleen «try unite»$N$Npäivämäärän muoto on iso-8601, kuten$N`2009-12-31` tai `2020-09-12 23:30:00`",
|
||||
"ot_unpost": "unpost: poista viimeaikaiset tai keskeytä keskeneräiset lataukset",
|
||||
"ot_bup": "bup: tiedostojen 'perus'lähetysohjelma, tukee jopa netscape 4.0",
|
||||
"ot_mkdir": "mkdir: luo uusi hakemisto",
|
||||
"ot_md": "new-file: luo uusi tekstitiedosto",
|
||||
"ot_md": "new-file: luo uusi tekstitiedosto", //m
|
||||
"ot_msg": "msg: lähetä viesti palvelinlokiin",
|
||||
"ot_mp": "mediasoittimen asetukset",
|
||||
"ot_cfg": "asetukset",
|
||||
|
|
@ -127,7 +127,7 @@ Ls.fin = {
|
|||
"ot_noie": 'Suosittelemme käyttämään uudempaa selainta.',
|
||||
|
||||
"ab_mkdir": "luo hakemisto",
|
||||
"ab_mkdoc": "luo tekstitiedosto",
|
||||
"ab_mkdoc": "luo tekstitiedosto", //m
|
||||
"ab_msg": "lähetä viesti palvelinlokiin",
|
||||
|
||||
"ay_path": "siirry hakemistoihin",
|
||||
|
|
@ -155,7 +155,7 @@ Ls.fin = {
|
|||
"ul_par": "rinnakkaislatausten lkm:",
|
||||
"ut_rand": "satunnaisgeneroidut tiedostonimet",
|
||||
"ut_u2ts": "kopioi viimeksi muokattu aikaleima$Ntiedostojärjestelmästäsi palvelimelle\">📅",
|
||||
"ut_ow": "korvaa olemassa olevat tiedostot palvelimella?$N🛡️: ei koskaan (luo sen sijaan uuden tiedostonimen)$N🕒: korvaa jos palvelintiedosto on vanhempi kuin omasi$N♻️: korvaa aina jos tiedostot ovat erilaisia$N⏭️: ohita kaikki olemassa olevat tiedostot ehdottomasti",
|
||||
"ut_ow": "korvaa olemassa olevat tiedostot palvelimella?$N🛡️: ei koskaan (luo sen sijaan uuden tiedostonimen)$N🕒: korvaa jos palvelintiedosto on vanhempi kuin omasi$N♻️: korvaa aina jos tiedostot ovat erilaisia$N⏭️: ohita kaikki olemassa olevat tiedostot ehdottomasti", //m
|
||||
"ut_mt": "jatka muiden tiedostojen tiivisteiden laskemista latauksen aikana$N$Nkannattanee poistaa käytöstä, mikäli prosessori tai kovalevy on vanhempaa mallia",
|
||||
"ut_ask": 'kysy vahvistusta ennen latauksen aloittamista">💭',
|
||||
"ut_pot": "paranna latausnopeutta hitailla laitteilla$Nvähentämällä käyttöliittymän monimutkaisuutta",
|
||||
|
|
@ -206,7 +206,7 @@ Ls.fin = {
|
|||
"u_nav_b": '<a href="#" id="modal-ok">Tiedostoja</a><a href="#" id="modal-ng">Yksi hakemisto</a>',
|
||||
|
||||
"cl_opts": "asetukset",
|
||||
"cl_hfsz": "tiedostokoko",
|
||||
"cl_hfsz": "tiedostokoko", //m
|
||||
"cl_themes": "teema",
|
||||
"cl_langs": "kieli",
|
||||
"cl_ziptype": "hakemiston pakkaustyyppi",
|
||||
|
|
@ -220,14 +220,14 @@ Ls.fin = {
|
|||
"cl_reset": "palauta",
|
||||
"cl_hpick": "napauta sarakeotsikoita piilottaaksesi alla olevassa taulukossa",
|
||||
"cl_hcancel": "sarakkeiden piilotus peruttu",
|
||||
"cl_rcm": "hiiren pikavalikko",
|
||||
"cl_rcm": "hiiren oikean painikkeen valikko", //m
|
||||
|
||||
"ct_grid": '田 kuvanäkymä',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ vihjelaatikot',
|
||||
"ct_thumb": 'valitse kuvakkeiden / pienoiskuvien välillä kuvanäkymässä $NPikanäppäin: T">🖼️ pienoiskuvat',
|
||||
"ct_csel": 'käytä CTRL ja SHIFT tiedostojen valintaan kuvanäkymässä">valitse',
|
||||
"ct_dsel": 'käytä aluevalintaa tiedostojen valintaan kuvanäkymässä">aluevalinta',
|
||||
"ct_dl": 'pakota lataus (älä näytä upotettuna), kun tiedostoa klikataan">dl',
|
||||
"ct_dl": 'pakota lataus (älä näytä upotettuna), kun tiedostoa napsautetaan">dl', //m
|
||||
"ct_ihop": 'kun kuvakatselin suljetaan, vieritä alas viimeksi katsottuun tiedostoon">g⮯',
|
||||
"ct_dots": 'näytä piilotetut tiedostot (jos palvelin sallii)">piilotiedostot',
|
||||
"ct_qdel": 'kysy vahvistusta vain kerran tiedostoja poistaessa">qdel',
|
||||
|
|
@ -264,8 +264,8 @@ Ls.fin = {
|
|||
"cdt_lim": "tiedostojen enimmäismäärä näytettäväksi hakemistossa",
|
||||
"cdt_ask": "sivun lopussa, sen sijaan että lataa $Nautomaattisesti lisää tiedostoja, kysy mitä tehdä",
|
||||
"cdt_hsort": "`kuinka monta lajittelusääntöä (`,sorthref`) sisällyttää media-URL:eihin. Tämän asettaminen nollaan jättää myös huomioimatta media-linkeissä sisällytetyt lajittelusäännöt kun napsautat niitä",
|
||||
"cdt_ren": "ota käyttöön mukautettu pikavalikko, tavallinen valikko on käytettävissä painamalla shift ja napsauttamalla hiiren oikeanpuoleisella painikkeella\">aktivoi",
|
||||
"cdt_rdb": "näytä tavallinen pikavalikko, kun mukautettu on jo auki ja oikeanpuoleista painiketta painetaan uudelleen\">x2",
|
||||
"cdt_ren": "ota käyttöön mukautettu valikko, tavallinen valikko on käytettävissä painamalla shift ja napsauttamalla oikealla\">aktivoi", //m
|
||||
"cdt_rdb": "näytä tavallinen oikean painikkeen valikko, kun mukautettu on jo auki ja oikeaa painiketta painetaan uudelleen\">x2", //m
|
||||
|
||||
"tt_entree": "näytä navigointipaneeli$NPikanäppäin: B",
|
||||
"tt_detree": "näytä linkkipolku$NPikanäppäin: B",
|
||||
|
|
@ -283,7 +283,7 @@ Ls.fin = {
|
|||
"ml_tint": "sävy",
|
||||
"ml_eq": "taajuuskorjain",
|
||||
"ml_drc": "dynaaminen alueen kompressori",
|
||||
"ml_ss": "ohita hiljaiset kohdat",
|
||||
"ml_ss": "ohita hiljaisuus", //m
|
||||
|
||||
"mt_loop": "toista samaa kappaletta\">🔁",
|
||||
"mt_one": "lopeta yhden toiston jälkeen\">1️⃣",
|
||||
|
|
@ -312,8 +312,8 @@ Ls.fin = {
|
|||
"mt_c2owa": "opus-weba, iOS 17.5:lle ja uudemmille\">owa",
|
||||
"mt_c2caf": "opus-caf, iOS 11:lle - 17:lle\">caf",
|
||||
"mt_c2mp3": "käytä tätä erittäin vanhoissa laitteissa\">mp3",
|
||||
"mt_c2flac": "paras äänenlaatu, suuremmat latauskoot\">flac",
|
||||
"mt_c2wav": "pakkaamaton toisto, suurimmat latauskoot\">wav",
|
||||
"mt_c2flac": "paras äänenlaatu, mutta isot lataukset\">flac", //m
|
||||
"mt_c2wav": "pakkaamaton toisto (vielä suurempi tiedosto)\">wav", //m
|
||||
"mt_c2ok": "hienoa, hyvä valinta",
|
||||
"mt_c2nd": "tuo ei ole suositeltu formaatti laitteellesi, mutta tee miten lystäät",
|
||||
"mt_c2ng": "laitteesi ei näytä tukevan tätä formaattia, mutta yritetään nyt silti",
|
||||
|
|
@ -321,11 +321,12 @@ Ls.fin = {
|
|||
"mt_tint": "taustan taso (0-100) liukupalkissa$Ntehden puskuroinnista vähemmän häiritsevän",
|
||||
"mt_eq": "`aktivoi taajuuskorjaimen ja vahvistussäätimen;$N$Nvahvistus `0` = normaali 100% äänenvoimakkuus (muokkaamaton)$N$Nleveys `1 ` = normaali stereo (muokkaamaton)$Nleveys `0.5` = 50% vasen-oikea ristisyöttö$Nleveys `0 ` = mono$N$Nvahvistus `-0.8` & leveys `10` = laulun poisto :^)$N$Nequalizerin käyttöönotto tekee saumattomista albumeista täysin saumattomia, joten jätä se päälle kaikilla arvoilla nollassa (paitsi leveys = 1) jos välität siitä",
|
||||
"mt_drc": "aktivoi dynaamisen alueen kompressorin; ottaa myös käyttöön taajuuskorjaimen tasapainottamaan spagettia, joten aseta kaikki EQ-kentät paitsi 'leveys' nollaan jos et halua sitä$N$Nalentaa äänenvoimakkuutta KYNNYS dB:n yläpuolella; jokaisesta SUHDE dB:stä KYNNYKSEN yli tulee 1 dB ulos, joten oletusarvot kynnys -24 ja suhde 12 tarkoittaa ettei sen pitäisi koskaan tulla kovempaa kuin -22 dB ja on turvallista nostaa equalizerin vahvistus 0.8:aan, tai jopa 1.8:aan ATK 0:lla ja valtavalla RLS:llä kuten 90 (toimii vain firefoxissa; RLS on max 1 muissa selaimissa)$N$N(katso wikipedia, he selittävät sen paljon paremmin)",
|
||||
"mt_ss": "`ottaa käyttöön hiljaisuuden ohituksen; moninkertaistaa toistonopeuden `nop`:lla lähellä kappaleen alkua/loppua, kun äänenvoimakkuus on alle `vol` ja kappaleesta on kulunut vasta on `alk`% tai sitä on jäljellä enää `lop`%",
|
||||
"mt_ssvt": "äänenvoimakkuuden kynnysarvo (0-255)\">vol",
|
||||
"mt_ssts": "alkuraja (prosenttia kappaleen alusta)\">alk",
|
||||
"mt_sste": "loppuraja (prosenttia kappaleen lopusta)\">lop",
|
||||
"mt_sssm": "toistonopeuden kerroin (min. 0.15, max. 8))\">nop",
|
||||
"mt_ss": "`ottaa käyttöön hiljaisuuden ohituksen; moninkertaistaa toistonopeuden `pik` lähellä kappaleen alkua/loppua, kun äänenvoimakkuus on alle `vol` ja sijainti on ensimmäisessä `alk`% tai viimeisessä `lop`%", //m
|
||||
"mt_ssvt": "äänenvoimakkuuden kynnys (0-255)\">vol", //m
|
||||
"mt_ssts": "aktiivikynnys (% kappale, alku)\">alk", //m
|
||||
"mt_sste": "aktiivikynnys (% kappale, loppu)\">lop", //m
|
||||
"mt_ssrt": "äänenvoim./nopeuden nousu/laskuaika\">häiv", //m
|
||||
"mt_sssm": "toistonopeuden kerroin\">pik", //m
|
||||
|
||||
"mb_play": "toista",
|
||||
"mm_hashplay": "soita tämä äänitiedosto?",
|
||||
|
|
@ -342,7 +343,7 @@ Ls.fin = {
|
|||
"mm_eunk": "Tuntematon virhe",
|
||||
"mm_e404": "Kappaletta ei voitu toistaa; virhe 404: Tiedostoa ei löydy.",
|
||||
"mm_e403": "Kappaletta ei voitu toistaa; virhe 403: Pääsy kielletty.\n\nKokeile painaa F5 päivittääksesi, ehkä kirjauduit ulos",
|
||||
"mm_e415": "Kappaletta ei voitu toistaa; virhe 415: Tiedoston muunnos epäonnistui; tarkista palvelimen lokitiedostot.",
|
||||
"mm_e415": "Kappaletta ei voitu toistaa; virhe 415: Tiedoston muunnos epäonnistui; tarkista palvelinlokit.", //m
|
||||
"mm_e500": "Kappaletta ei voitu toistaa; virhe 500: Tarkista palvelinlokit.",
|
||||
"mm_e5xx": "Kappaletta ei voitu toistaa; palvelinvirhe ",
|
||||
"mm_nof": "ei löydy enempää äänitiedostoja lähistöltä",
|
||||
|
|
@ -362,7 +363,7 @@ Ls.fin = {
|
|||
"f_anota": "vain {0} / {1} kohdetta valittiin;\nvalitaksesi koko hakemiston, vieritä ensin loppuun",
|
||||
|
||||
"f_dls": 'nykyisen hakemiston tiedostolinkit on\nvaihdettu latauslinkeiksi',
|
||||
"f_dl_nd": 'ohitetaan kansio (käytä sen sijaan zip/tar-latausta):\n',
|
||||
"f_dl_nd": 'ohitetaan kansio (käytä zip/tar-latausta sen sijaan):\n', //m
|
||||
|
||||
"f_partial": "Ladataksesi turvallisesti tiedoston joka on parhaillaan latautumassa, klikkaa tiedostoa jolla on sama nimi mutta ilman <code>.PARTIAL</code> päätettä. Paina PERUUTA tai Escape tehdäksesi tämän.\n\nOK / Enter painaminen sivuuttaa tämän varoituksen ja jatkaa <code>.PARTIAL</code> väliaikaistiedoston lataamista, mikä todennäköisesti antaa sinulle vioittunutta dataa.",
|
||||
|
||||
|
|
@ -431,16 +432,16 @@ Ls.fin = {
|
|||
"fcc_warn": 'kopioitiin {0} kohdetta leikepöydälle\n\nmutta: vain <b>tämä</b> selain-välilehti voi liittää ne\n(koska valinta on niin valtavan suuri)',
|
||||
|
||||
"fp_apply": "käytä näitä nimiä",
|
||||
"fp_skip": "ohita ristiriitatilanteissa",
|
||||
"fp_skip": "ohita ristiriidat", //m
|
||||
"fp_ecut": "leikkaa tai kopioi ensin joitakin tiedostoja / hakemistoja liitettäväksi / siirrettäväksi\n\nhuom: voit leikata / liittää eri selain-välilehtien välillä",
|
||||
"fp_ename": "{0} kohdetta ei voida siirtää tänne koska nimet ovat jo käytössä. Anna niille uudet nimet alla jatkaaksesi, tai tyhjennä nimi (\"ohita ristiriitatilanteissa\") ohittaaksesi ne:",
|
||||
"fcp_ename": "{0} kohdetta ei voida kopioida tänne koska nimet ovat jo käytössä. Anna niille uudet nimet alla jatkaaksesi, tai tyhjennä nimi (\"ohita ristiriitatilanteissa\") ohittaaksesi ne:",
|
||||
"fp_ename": "{0} kohdetta ei voida siirtää tänne koska nimet ovat jo käytössä. Anna niille uudet nimet alla jatkaaksesi, tai tyhjennä nimi (\"ohita ristiriidat\") ohittaaksesi ne:", //m
|
||||
"fcp_ename": "{0} kohdetta ei voida kopioida tänne koska nimet ovat jo käytössä. Anna niille uudet nimet alla jatkaaksesi, tai tyhjennä nimi (\"ohita ristiriidat\") ohittaaksesi ne:", //m
|
||||
"fp_emore": "tiedostonimien törmäyksiä on vielä korjaamatta",
|
||||
"fp_ok": "siirto OK",
|
||||
"fcp_ok": "kopiointi OK",
|
||||
"fp_busy": "siirretään {0} kohdetta...\n\n{1}",
|
||||
"fcp_busy": "kopioidaan {0} kohdetta...\n\n{1}",
|
||||
"fp_abrt": "keskeytetään...",
|
||||
"fp_abrt": "keskeytetään...", //m
|
||||
"fp_err": "siirto epäonnistui:\n",
|
||||
"fcp_err": "kopiointi epäonnistui:\n",
|
||||
"fp_confirm": "siirrä nämä {0} kohdetta tänne?",
|
||||
|
|
@ -453,8 +454,8 @@ Ls.fin = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Kopioi</a><a href="#" id="modal-ng">Lähetä</a>',
|
||||
|
||||
"mk_noname": "kirjoita nimi vasemmalla olevaan tekstikenttään ennen kuin teet tuon :p",
|
||||
"nmd_i1": "voit myös lisätä haluamasi tiedostopäätteen, esimerkiksi <code>.md</code>",
|
||||
"nmd_i2": "voit luoda vain <code>.{0}</code>-tiedostoja, koska sinulla ei ole “delete”-oikeutta",
|
||||
"nmd_i1": "voit myös lisätä haluamasi tiedostopäätteen, esimerkiksi <code>.md</code>", //m
|
||||
"nmd_i2": "voit luoda vain <code>.{0}</code>-tiedostoja, koska sinulla ei ole poistolupaa", //m
|
||||
|
||||
"tv_load": "Ladataan tekstidokumenttia:\n\n{0}\n\n{1}% ({2} / {3} Mt ladattu)",
|
||||
"tv_xe1": "tekstitiedoston lataaminen epäonnistui:\n\nvirhe ",
|
||||
|
|
@ -465,7 +466,7 @@ Ls.fin = {
|
|||
"tvt_prev": "näytä edellinen dokumentti$NPikanäppäin: i\">⬆ edell",
|
||||
"tvt_next": "näytä seuraava dokumentti$NPikanäppäin: K\">⬇ seur",
|
||||
"tvt_sel": "valitse tiedosto ( leikkausta / kopiointia / poistoa / ... varten )$NPikanäppäin: S\">val",
|
||||
"tvt_j": "muotoile/siisti json$NPikanäppäin: shift-J\">j",
|
||||
"tvt_j": "kaunista json$NPikanäppäin: shift-J\">j", //m
|
||||
"tvt_edit": "avaa tiedosto tekstieditorissa$NPikanäppäin: E\">✏️ muokkaa",
|
||||
"tvt_tail": "seuraa tiedoston muutoksia; näytä uudet rivit reaaliaikaisesti\">📡 seuraa",
|
||||
"tvt_wrap": "rivitys\">↵",
|
||||
|
|
@ -650,25 +651,25 @@ Ls.fin = {
|
|||
"ur_um": "Valmis;\n{0} latausta OK,\n{1} latausta epäonnistui, pahoittelen",
|
||||
"ur_sm": "Valmis;\n{0} tiedostoa löytyi palvelimelta,\n{1} tiedostoa EI löytynyt palvelimelta",
|
||||
|
||||
"rc_opn": "avaa",
|
||||
"rc_ply": "toista",
|
||||
"rc_pla": "toista äänitiedostona",
|
||||
"rc_txt": "avaa tekstinäkymässä",
|
||||
"rc_md": "avaa markdown-näkymässä",
|
||||
"rc_dl": "lataa",
|
||||
"rc_zip": "lataa arkistona",
|
||||
"rc_cpl": "kopioi linkki",
|
||||
"rc_del": "poista",
|
||||
"rc_cut": "leikkaa",
|
||||
"rc_cpy": "kopioi",
|
||||
"rc_pst": "liitä",
|
||||
"rc_rnm": "nimeä uudelleen",
|
||||
"rc_nfo": "uusi kansio",
|
||||
"rc_nfi": "uusi tiedosto",
|
||||
"rc_sal": "valitse kaikki",
|
||||
"rc_sin": "käänteinen valinta",
|
||||
"rc_shf": "jaa tämä kansio",
|
||||
"rc_shs": "jaa valinta",
|
||||
"rc_opn": "avaa", //m
|
||||
"rc_ply": "toista", //m
|
||||
"rc_pla": "toista äänenä", //m
|
||||
"rc_txt": "avaa tiedostoselaimessa", //m
|
||||
"rc_md": "avaa tekstieditorissa", //m
|
||||
"rc_dl": "Lataa", //m
|
||||
"rc_zip": "Lataa arkistona", //m
|
||||
"rc_cpl": "kopioi linkki", //m
|
||||
"rc_del": "poista", //m
|
||||
"rc_cut": "Leikkaa", //m
|
||||
"rc_cpy": "kopioi", //m
|
||||
"rc_pst": "Liitä", //m
|
||||
"rc_rnm": "nimeä uudelleen", //m
|
||||
"rc_nfo": "uusi kansio", //m
|
||||
"rc_nfi": "uusi tiedosto", //m
|
||||
"rc_sal": "valitse kaikki", //m
|
||||
"rc_sin": "käännä valinta", //m
|
||||
"rc_shf": "jaa tämä kansio", //m
|
||||
"rc_shs": "jaa valinta", //m
|
||||
|
||||
"lang_set": "ladataanko sivu uudestaan kielen vaihtamiseksi?",
|
||||
|
||||
|
|
@ -688,11 +689,11 @@ Ls.fin = {
|
|||
"j1": "k304 katkaisee yhteytesi jokaisella HTTP 304:llä, mikä voi estää joitain bugisia välityspalvelimia jumittumasta/lopettamasta sivujen lataamista, <em>mutta</em> se myös vähentää suorituskykyä",
|
||||
"k1": "nollaa asetukset",
|
||||
"l1": "kirjaudu sisään:",
|
||||
"ls3": "kirjaudu sisään",
|
||||
"lu4": "käyttäjätunnus",
|
||||
"lp4": "salasana",
|
||||
"lo3": "kirjaa “{0}” ulos kaikkialta",
|
||||
"lo2": "tämä lopettaa istunnon kaikissa selaimissa",
|
||||
"ls3": "kirjaudu sisään", //m
|
||||
"lu4": "käyttäjätunnus", //m
|
||||
"lp4": "salasana", //m
|
||||
"lo3": "kirjaa “{0}” ulos kaikkialta", //m
|
||||
"lo2": "tämä lopettaa istunnon kaikissa selaimissa", //m
|
||||
"m1": "tervetuloa takaisin,",
|
||||
"n1": "404: ei löytynyt mitään ┐( ´ -`)┌",
|
||||
"o1": 'tai ehkä sinulla ei vain ole käyttöoikeuksia? kokeile salasanaa tai <a href="' + SR + '/?h">mene kotiin</a>',
|
||||
|
|
@ -711,8 +712,8 @@ Ls.fin = {
|
|||
"ta1": "täytä ensin uusi salasana",
|
||||
"ta2": "toista vahvistaaksesi uuden salasanan:",
|
||||
"ta3": "löytyi kirjoitusvirhe; yritä uudelleen",
|
||||
"nop": "VIRHE: Salasana ei voi olla tyhjä",
|
||||
"nou": "VIRHE: Käyttäjänimi ja/tai salasana ei voi olla tyhjä",
|
||||
"nop": "VIRHE: Salasana ei voi olla tyhjä", //m
|
||||
"nou": "VIRHE: Käyttäjänimi ja/tai salasana ei voi olla tyhjä", //m
|
||||
"aa1": "saapuvat:",
|
||||
"ab1": "poista no304 käytöstä",
|
||||
"ac1": "ota no304 käyttöön",
|
||||
|
|
|
|||
|
|
@ -325,6 +325,7 @@ Ls.fra = {
|
|||
"mt_ssvt": "seuil de volume (0-255)\">vol", //m
|
||||
"mt_ssts": "seuil actif (% piste, début)\">deb", //m
|
||||
"mt_sste": "seuil actif (% piste, fin)\">fin", //m
|
||||
"mt_ssrt": "temps de montée/descente volume/vitesse\">fondu", //m
|
||||
"mt_sssm": "multiplicateur de vitesse de lecture\">av", //m
|
||||
|
||||
"mb_play": "lecture",
|
||||
|
|
|
|||
|
|
@ -325,6 +325,7 @@ Ls.grc = {
|
|||
"mt_ssvt": "ὅριον φωνῆς (0-255)\">φων", //m
|
||||
"mt_ssts": "ἐνεργὸν ὅριον (% τροχιᾶς, ἀρχή)\">ἀρχ", //m
|
||||
"mt_sste": "ἐνεργὸν ὅριον (% τροχιᾶς, τέλος)\">τελ", //m
|
||||
"mt_ssrt": "χρόνος αὔξησης/μείωσης φωνῆς/ταχύτητος\">σβέσις", //m
|
||||
"mt_sssm": "πολλαπλασιαστὴς ταχύτητος\">ταχ", //m
|
||||
|
||||
"mb_play": "παίξε",
|
||||
|
|
|
|||
|
|
@ -1,725 +0,0 @@
|
|||
Ls.hun = {
|
||||
"tt": 'Magyar',
|
||||
|
||||
"cols": {
|
||||
"c": 'műveletek',
|
||||
"dur": 'hossz',
|
||||
"q": 'minőség / bitrate',
|
||||
"Ac": 'audió kodek',
|
||||
"Vc": 'videó kodek',
|
||||
"Fmt": 'konténer',
|
||||
"Ahash": 'audió hash',
|
||||
"Vhash": 'videó hash',
|
||||
"Res": 'felbontás',
|
||||
"T": 'típus',
|
||||
"aq": 'audió minőség / bitrate',
|
||||
"vq": 'videó minőség / bitrate',
|
||||
"pixfmt": 'színkódolás / pixel',
|
||||
"resw": 'szélesség',
|
||||
"resh": 'magasság',
|
||||
"chs": 'csatornák',
|
||||
"hz": 'mintavételezés',
|
||||
},
|
||||
|
||||
"hks": [
|
||||
[
|
||||
'egyéb',
|
||||
['ESC', 'minden bezárása'],
|
||||
|
||||
'fájlkezelő',
|
||||
['G', 'lista / rács nézet'],
|
||||
['T', 'ikon / indexkép váltás'],
|
||||
['⇧ A/D', 'méret módosítása'],
|
||||
['ctrl-K', 'kijelöltek törlése'],
|
||||
['ctrl-X', 'kivágás vágólapra'],
|
||||
['ctrl-C', 'másolás vágólapra'],
|
||||
['ctrl-V', 'beillesztés ide'],
|
||||
['Y', 'kijelöltek letöltése'],
|
||||
['F2', 'átnevezés'],
|
||||
|
||||
'kijelölés',
|
||||
['space', 'fájl kijelölése'],
|
||||
['↑/↓', 'kurzor mozgatása'],
|
||||
['ctrl ↑/↓', 'kurzor + nézet mozgatása'],
|
||||
['⇧ ↑/↓', 'fájlok kijelölése'],
|
||||
['ctrl-A', 'mindet kijelöli'],
|
||||
],
|
||||
[
|
||||
'navigáció',
|
||||
['B', 'fa / breadcrumbs váltás'],
|
||||
['I/K', 'előző/következő mappa'],
|
||||
['M', 'vissza a főmappába'],
|
||||
['V', 'fájlok mutatása az oldalsávon'],
|
||||
['A/D', 'oldalsáv mérete'],
|
||||
],
|
||||
[
|
||||
'zenelejátszó',
|
||||
['J/L', 'előző/következő szám'],
|
||||
['U/O', '10 mp tekerés (vissza/előre)'],
|
||||
['0..9', 'ugrás (0%..90%)'],
|
||||
['P', 'play/pause'],
|
||||
['S', 'épp szóló szám kijelölése'],
|
||||
['Y', 'szám letöltése'],
|
||||
],
|
||||
[
|
||||
'képnézegető',
|
||||
['J/L, ←/→', 'előző/következő kép'],
|
||||
['Home/End', 'első/utolsó kép'],
|
||||
['F', 'teljes képernyő'],
|
||||
['R', 'forgatás jobbra'],
|
||||
['⇧ R', 'forgatás balra'],
|
||||
['S', 'kép kijelölése'],
|
||||
['Y', 'kép letöltése'],
|
||||
],
|
||||
[
|
||||
'videólejátszó',
|
||||
['U/O', '10 mp tekerés (vissza/előre)'],
|
||||
['P/K/Space', 'play/pause'],
|
||||
['C', 'folyamatos lejátszás'],
|
||||
['V', 'ismétlés'],
|
||||
['M', 'némítás'],
|
||||
['[ és ]', 'ismétlési tartomány'],
|
||||
],
|
||||
[
|
||||
'szövegszerkesztő',
|
||||
['I/K', 'előző/következő fájl'],
|
||||
['M', 'bezárás'],
|
||||
['E', 'szerkesztés'],
|
||||
['S', 'kijelöl fv művelethez'],
|
||||
['Y', 'letöltés'],
|
||||
['⇧ J', 'json formázás (beautify)'],
|
||||
],
|
||||
],
|
||||
|
||||
"m_ok": 'ok',
|
||||
"m_ng": 'mégse',
|
||||
|
||||
"enable": 'bekapcsolva',
|
||||
"danger": 'FIGYELEM',
|
||||
"clipped": 'vágólapra másolva',
|
||||
|
||||
"ht_s1": 'másodperce',
|
||||
"ht_s2": 'másodperce',
|
||||
"ht_m1": 'perce',
|
||||
"ht_m2": 'perce',
|
||||
"ht_h1": 'órája',
|
||||
"ht_h2": 'órája',
|
||||
"ht_d1": 'napja',
|
||||
"ht_d2": 'napja',
|
||||
"ht_and": ' és ',
|
||||
|
||||
"goh": 'irányítópult',
|
||||
"gop": 'előző mappába">előző',
|
||||
"gou": 'szülőmappa">fel',
|
||||
"gon": 'következő mappába">következő',
|
||||
"logout": 'Kilépés ',
|
||||
"login": 'Belépés',
|
||||
"access": ' hozzáférés',
|
||||
"ot_close": 'almenü bezárása',
|
||||
"ot_search": '`keresés attribútumok, név, elérési út vagy metaadatok alapján$N$N`valami más` = szerepelnie kell mindkettőnek,$N`valami -más` = tartalmazza a «valami»-t, de a «más»-t nem,$N`^kezd .mp3$` = «kezd»-del induló mp3 fájlok$N`"pontosan ez"` = pontos egyezés$N$Ndátum formátum iso-8601, pl.$N`2024-12-31` vagy `2024-09-12 23:30:00`',
|
||||
"ot_unpost": 'töröld a nemrég feltöltött fájljaidat, vagy állítsd le a folyamatban lévőket',
|
||||
"ot_bup": 'bup: egyszerű feltöltő (még netscape 4-en is megy)',
|
||||
"ot_mkdir": 'új mappa létrehozása',
|
||||
"ot_md": 'új szöveges fájl',
|
||||
"ot_msg": 'üzenet küldése a szerver logba',
|
||||
"ot_mp": 'lejátszó beállításai',
|
||||
"ot_cfg": 'beállítások',
|
||||
"ot_u2i": 'up2k: fájlok feltöltése (ha van írási jogod) vagy keresés a szerveren$N$Nfolytatható, többszálú, dátumokat megőrzi, de CPU-éhesebb az egyszerű [🎈]-nél.<br /><br />feltöltés közben az ikon mutatja a haladást!',
|
||||
"ot_u2w": 'up2k: feltöltés folytatási támogatással (böngésző bezárás után is folytathatod)$N$Ntöbbszálú, dátumokat megőrzi, de CPU-éhesebb az egyszerűnél.<br /><br />feltöltés közben az ikon mutatja a haladást!',
|
||||
"ot_noie": 'Kérlek használj Chrome-ot / Firefox-ot / Edge-et',
|
||||
|
||||
"ab_mkdir": 'mappa létrehozása',
|
||||
"ab_mkdoc": 'új szövegfájl',
|
||||
"ab_msg": 'log üzenet küldése',
|
||||
|
||||
"ay_path": 'ugrás a mappákhoz',
|
||||
"ay_files": 'ugrás a fájlokhoz',
|
||||
|
||||
"wt_ren": 'átnevezés$Ngyorsbillentyű: F2',
|
||||
"wt_del": 'törlés$Ngyorsbillentyű: ctrl-K',
|
||||
"wt_cut": 'kivágás <small>(beillesztéshez)</small>$Ngyorsbillentyű: ctrl-X',
|
||||
"wt_cpy": 'másolás vágólapra$Ngyorsbillentyű: ctrl-C',
|
||||
"wt_pst": 'beillesztés$Ngyorsbillentyű: ctrl-V',
|
||||
"wt_selall": 'összes kijelölése$Ngyorsbillentyű: ctrl-A',
|
||||
"wt_selinv": 'kijelölés megfordítása',
|
||||
"wt_zip1": 'mappa letöltése zip/tar-ként',
|
||||
"wt_selzip": 'kijelöltek letöltése archívumként',
|
||||
"wt_seldl": 'kijelöltek letöltése külön fájlokként$Ngyorsbillentyű: Y',
|
||||
"wt_npirc": 'irc-formátumú infó másolása',
|
||||
"wt_nptxt": 'egyszerű szöveges infó másolása',
|
||||
"wt_m3ua": 'hozzáadás m3u listához (később <code>📻másolás</code>)',
|
||||
"wt_m3uc": 'm3u lista másolása vágólapra',
|
||||
"wt_grid": 'lista / rács nézet váltás$Ngyorsbillentyű: G',
|
||||
"wt_prev": 'előző szám$Ngyorsbillentyű: J',
|
||||
"wt_play": 'lejátszás / szünet$Ngyorsbillentyű: P',
|
||||
"wt_next": 'következő szám$Ngyorsbillentyű: L',
|
||||
|
||||
"ul_par": 'párhuzamos szálak:',
|
||||
"ut_rand": 'véletlen fájlnevek',
|
||||
"ut_u2ts": 'helyi dátumok$Nátvitele a szerverre">📅',
|
||||
"ut_ow": 'felülírás?$N🛡️: soha (új nevet ad)$N🕒: csak ha a tiéd újabb$N♻️: mindig, ha más a tartalom$N⏭️: létezőket kihagy',
|
||||
"ut_mt": 'háttérben hashelés feltöltés alatt$N$Nkapcsold ki, ha fagy a géped',
|
||||
"ut_ask": 'megerősítés feltöltés előtt">💭',
|
||||
"ut_pot": 'feltöltés gyorsítása (egyszerűbb UI)',
|
||||
"ut_srch": 'csak létezés ellenőrzése$N(nem tölt fel semmit)',
|
||||
"ut_par": '0 = szünet$N$Nnöveld, ha lassú a net$N$NHDD limit vagy LAN esetén hagyd 1-en',
|
||||
"ul_btn": 'dobd ide a fájlokat/mappákat<br>(vagy kattints)',
|
||||
"ul_btnu": 'F E L T Ö L T É S',
|
||||
"ul_btns": 'K E R E S É S',
|
||||
|
||||
"ul_hash": 'hash',
|
||||
"ul_send": 'küldés',
|
||||
"ul_done": 'kész',
|
||||
"ul_idle1": 'nincs várakozó feltöltés',
|
||||
"ut_etah": 'átlagos <em>hashelési</em> sebesség és becsült idő',
|
||||
"ut_etau": 'átlagos <em>feltöltési</em> sebesség és becsült idő',
|
||||
"ut_etat": 'átlagos <em>össz</em> sebesség és becsült idő',
|
||||
|
||||
"uct_ok": 'sikerült',
|
||||
"uct_ng": 'hiba / elutasítva',
|
||||
"uct_done": 'összesen',
|
||||
"uct_bz": 'hashelés vagy feltöltés...',
|
||||
"uct_q": 'várakozik',
|
||||
|
||||
"utl_name": 'fájlnév',
|
||||
"utl_ulist": 'lista',
|
||||
"utl_ucopy": 'másolás',
|
||||
"utl_links": 'linkek',
|
||||
"utl_stat": 'státusz',
|
||||
"utl_prog": 'haladás',
|
||||
|
||||
"utl_404": '404',
|
||||
"utl_err": 'HIBA',
|
||||
"utl_oserr": 'OS-hiba',
|
||||
"utl_found": 'megvan',
|
||||
"utl_defer": 'halasztva',
|
||||
"utl_yolo": 'YOLO',
|
||||
"utl_done": 'kész',
|
||||
|
||||
"ul_flagblk": 'fájlok a várólistán</b><br>egy másik lapon már fut egy feltöltés,<br>megvárjuk, amíg az végez',
|
||||
"ul_btnlk": 'szerveroldali korlátozás miatt nem módosítható',
|
||||
|
||||
"udt_up": 'Feltöltés',
|
||||
"udt_srch": 'Keresés',
|
||||
"udt_drop": 'dobd ide',
|
||||
|
||||
"u_nav_m": '<h6>mit töltsünk fel?</h6><code>Enter</code> = Fájlok (egy vagy több)\n<code>ESC</code> = Egy mappa (almappákkal)',
|
||||
"u_nav_b": '<a href="#" id="modal-ok">Fájlok</a><a href="#" id="modal-ng">Egy mappa</a>',
|
||||
|
||||
"cl_opts": 'beállítások',
|
||||
"cl_hfsz": 'méret',
|
||||
"cl_themes": 'téma',
|
||||
"cl_langs": 'nyelv',
|
||||
"cl_ziptype": 'mappa letöltés',
|
||||
"cl_uopts": 'up2k beállítások',
|
||||
"cl_favico": 'favicon',
|
||||
"cl_bigdir": 'limit feletti mappák',
|
||||
"cl_hsort": '#rendezés',
|
||||
"cl_keytype": 'hangnem-jelölés',
|
||||
"cl_hiddenc": 'rejtett oszlopok',
|
||||
"cl_hidec": 'rejt',
|
||||
"cl_reset": 'alaphelyzet',
|
||||
"cl_hpick": 'kattints az oszlopfejlécre az elrejtéshez',
|
||||
"cl_hcancel": 'elrejtés megszakítva',
|
||||
"cl_rcm": 'jobb-klikkes menü',
|
||||
|
||||
"ct_grid": '田 rács nézet',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ segítő szövegek',
|
||||
"ct_thumb": 'rács nézetben ikonok/indexképek váltása$Ngyorsbillentyű: T">🖼️ képek',
|
||||
"ct_csel": 'kijelölés CTRL és SHIFT gombokkal rács nézetben">kijelölés',
|
||||
"ct_dsel": 'kijelölés egérhúzással rács nézetben">húzás',
|
||||
"ct_dl": 'azonnali letöltés (beágyazás helyett)">letöltés',
|
||||
"ct_ihop": 'nézegető bezárásakor ugorjon az utolsó képhez">g⮯',
|
||||
"ct_dots": 'rejtett fájlok mutatása (ha szabad)">rejtett',
|
||||
"ct_qdel": 'csak egyszer kérdezzen rá a törlésre">gyorstörlés',
|
||||
"ct_dir1st": 'mappák előre rendezése">📁 előre',
|
||||
"ct_nsort": 'természetes rendezés (pl. 1, 2, 10)">rendezés',
|
||||
"ct_utc": 'időpontok UTC-ben">UTC',
|
||||
"ct_readme": 'README.md mutatása a mappákban">📜 readme',
|
||||
"ct_idxh": 'index.html mutatása listázás helyett">htm',
|
||||
"ct_sbars": 'gördítősávok mutatása">⟊',
|
||||
|
||||
"cut_umod": 'létező fájl dátumának frissítése a helyire (írható+törölhető jog kell)">re📅',
|
||||
|
||||
"cut_turbo": 'yolo gomb, nem ajánlott:$N$Nrengeteg fájl újraellenőrzéséhez jó$N$Ncsak méretet néz, tartalmat nem! ha a méret egyezik, NEM tölti újra, még ha a fájl más is.$N$Nha kész vagy, kapcsold ki!">turbo',
|
||||
|
||||
"cut_datechk": 'csak turbo módban számít$N$Nnézi a dátumokat is a méret mellé$N$Nvalamivel biztosabb a turbónál, de nem váltja ki a rendes ellenőrzést">dátum-chk',
|
||||
|
||||
"cut_u2sz": 'feltöltési egység (chunk) mérete (MiB); nagy érték jó a távoli szerverekhez, kicsi a gyenge nethez',
|
||||
|
||||
"cut_flag": 'egyszerre csak egy fül tölthessen fel (azonos domainen belül hat)',
|
||||
|
||||
"cut_az": 'fájlok feltöltése ABC-sorrendben (nem a legkisebb-először módon)',
|
||||
|
||||
"cut_nag": 'értesítés, ha kész a feltöltés (ha nem ezen a fülön állsz)',
|
||||
"cut_sfx": 'hangjelzés, ha kész a feltöltés',
|
||||
|
||||
"cut_mt": 'többszálú hashelés (gyorsítás)$N$Nplusz RAM-ot kér (max 512 MiB)$N$Nhttps-t 30%-kal, http-t 4.5x gyorsítja">mt',
|
||||
|
||||
"cut_wasm": 'wasm hashelő; chrome-on gyorsabb, de CPU-igényes és régebbi verzióknál fagyhat">wasm',
|
||||
|
||||
"cft_text": 'favicon szöveg (üresen kikapcsol)',
|
||||
"cft_fg": 'szöveg színe',
|
||||
"cft_bg": 'háttér színe',
|
||||
|
||||
"cdt_lim": 'lista hossza (max fájl/mappa)',
|
||||
"cdt_ask": 'lista végén ne töltsön be automatikusan, inkább kérdezzen rá',
|
||||
"cdt_hsort": 'rendezési szabályok száma a linkekben. 0 = tiltás',
|
||||
"cdt_ren": 'egyedi jobb-klikkes menü (gyári: SHIFT + jobb-klikk)">bekapcsolva',
|
||||
"cdt_rdb": 'mutassa a böngészőnek jobb-klikkes menüjét, ha az egyedi már nyitva van és megint jobb-klikkelsz">dupla',
|
||||
|
||||
"tt_entree": 'oldalsáv (mappafa) mutatása$Ngyorsbillentyű: B',
|
||||
"tt_detree": 'elérési út mutatása$Ngyorsbillentyű: B',
|
||||
"tt_visdir": 'gördítés a kijelölt mappához',
|
||||
"tt_ftree": 'mappák / szövegfájlok váltása$Ngyorsbillentyű: V',
|
||||
"tt_pdock": 'szülőmappák rögzítése felül',
|
||||
"tt_dynt": 'automatikus méretezés nyitáskor',
|
||||
"tt_wrap": 'sortörés',
|
||||
"tt_hover": 'túl hosszú sorok mutatása rámutatáskor',
|
||||
|
||||
"ml_pmode": 'mappa végén...',
|
||||
"ml_btns": 'gombok',
|
||||
"ml_tcode": 'átkódolás',
|
||||
"ml_tcode2": 'átkódolás ide:',
|
||||
"ml_tint": 'színezés',
|
||||
"ml_eq": 'eq',
|
||||
"ml_drc": 'dinamikatartomány-tömörítő',
|
||||
"ml_ss": 'csönd átugrása',
|
||||
|
||||
"mt_loop": 'egy szám ismétlése">🔁',
|
||||
"mt_one": 'leállás egy szám után">1️⃣',
|
||||
"mt_shuf": 'véletlenszerű lejátszás mappánként">🔀',
|
||||
"mt_aplay": 'automatikus kezdés a link alapján$N$Nha kikapcsolod, a linkek sem fognak szám-azonosítót tartalmazni">a▶',
|
||||
"mt_preload": 'következő szám betöltése a végén (gapless)">preload',
|
||||
"mt_prescan": 'mappaváltás az utolsó szám vége előtt, hogy a böngésző ne álljon le">nav',
|
||||
"mt_fullpre": 'teljes szám előtöltése;$N✅ instabil netre,$N❌ lassú neten inkább kapcsold ki">full',
|
||||
"mt_fau": 'mobilon megakadályozza a leállást, ha lassú az előtöltés (a tagek kijelzése hibás lehet)">☕️',
|
||||
"mt_waves": 'hullámforma a tekerősávon:$Nhangerő amplitúdó mutatása a sávban">~s',
|
||||
"mt_npclip": 'gombok a most szóló szám infójának másolásához">/np',
|
||||
"mt_m3u_c": 'gombok a kijelöltek m3u8 listába másolásához">📻',
|
||||
"mt_octl": 'rendszerintegráció (média gombok / osd)">os-ctl',
|
||||
"mt_oseek": 'tekerés engedése a rendszer szinten$N$Nmegjegyzés: iphonon ez felülírja a következő szám gombot">seek',
|
||||
"mt_oscv": 'albumkép mutatása az osd-n">art',
|
||||
"mt_follow": 'fókuszban tartja az aktuális számot">🎯',
|
||||
"mt_compact": 'kompakt vezérlők">⟎',
|
||||
"mt_uncache": 'gyorsítótár ürítése (próbáld ezt, ha a böngésző hibás fájlt mentett el és nem játssza le)">uncache',
|
||||
"mt_mloop": 'mappa ismétlése">🔁 ismétlés',
|
||||
"mt_mnext": 'következő mappa betöltése és folytatás">📂 tovább',
|
||||
"mt_mstop": 'stop">⏸ stop',
|
||||
"mt_cflac": 'flac / wav konvertálása ide: {0}">flac',
|
||||
"mt_caac": 'aac / m4a konvertálása ide: {0}">aac',
|
||||
"mt_coth": 'egyéb (nem mp3) konvertálása ide: {0}">egyéb',
|
||||
"mt_c2opus": 'asztali gép, laptop, android kedvence">opus',
|
||||
"mt_c2owa": 'opus-weba (iOS 17.5+)">owa',
|
||||
"mt_c2caf": 'opus-caf (iOS 11-17)">caf',
|
||||
"mt_c2mp3": 'nagyon régi eszközökhöz">mp3',
|
||||
"mt_c2flac": 'legjobb minőség, de hatalmas fájlok">flac',
|
||||
"mt_c2wav": 'tömörítetlen (még nagyobb)">wav',
|
||||
"mt_c2ok": 'szuper, jó választás',
|
||||
"mt_c2nd": 'nem javasolt ehhez az eszközhöz, de rendben',
|
||||
"mt_c2ng": 'úgy tűnik, az eszközöd nem támogatja, de próbáljuk meg',
|
||||
"mt_xowa": 'iOS hiba akadályozza a háttérben lejátszást ezzel; használd inkább a caf-ot vagy mp3-at',
|
||||
"mt_tint": 'háttérszint (0-100) a tekerősávon, hogy ne zavarjon a betöltés',
|
||||
"mt_eq": '`eq és erősítés;$N$Nboost `0` = alap hangerő (100%)$N$Nszélesség `1 ` = standard sztereó$Nszélesség `0.5` = 50% áthallás$Nszélesség `0 ` = monó$N$Nboost `-0.8` & szélesség `10` = ének eltávolítása :^)$N$Nha az EQ be van kapcsolva, a lemezek teljesen folytonosak lesznek (gapless), hagyd bekapcsolva nullán is, ha ez számít',
|
||||
"mt_drc": 'dinamikatartomány-tömörítés (hangerő-kiegyenlítő); az EQ-t is bekapcsolja, ha nem kell, az értékeit hagyd nullán (kivéve szélesség=1)$N$Nevvel sosem lesz túl hangos, -24 thresh és 12 ratio mellett -22 dB-nél megáll, biztonságos feltekerni a boost-ot 0.8-ra vagy akár 1.8-ra',
|
||||
"mt_ss": '`csönd átugrása; felgyorsít `ffwd`-szeresére a számok elején/végén, ha a hangerő `vol` alatt van és a pozíció a szám első/utolsó `start/end` százalékában van',
|
||||
"mt_ssvt": 'hangerő küszöb (0-255)">vol',
|
||||
"mt_ssts": 'aktív tartomány (%, eleje)">start',
|
||||
"mt_sste": 'aktív tartomány (%, vége)">end',
|
||||
"mt_sssm": 'lejátszási sebesség szorzó">ffwd',
|
||||
|
||||
"mb_play": 'play',
|
||||
"mm_hashplay": 'lejátsszam ezt a fájlt?',
|
||||
"mm_m3u": '<code>Enter/OK</code>: Lejátszás\n<code>ESC/Cancel</code>: Szerkesztés',
|
||||
"mp_breq": "firefox 82+, chrome 73+, vagy iOS 15+ szükséges",
|
||||
"mm_bload": 'betöltés...',
|
||||
"mm_bconv": 'konvertálás ide: {0}, várj légy szíves...',
|
||||
"mm_opusen": 'a böngésződ nem támogatja az aac / m4a fájlokat;\nátkódolás opus-ba bekapcsolva',
|
||||
"mm_playerr": 'lejátszási hiba: ',
|
||||
"mm_eabrt": 'lejátszás megszakítva',
|
||||
"mm_enet": 'szakadozik a neted',
|
||||
"mm_edec": 'ez a fájl valahogy sérült??',
|
||||
"mm_esupp": 'a böngésződ nem ismeri ezt a formátumot',
|
||||
"mm_eunk": 'ismeretlen hiba',
|
||||
"mm_e404": 'audió hiba 404: fájl nem található.',
|
||||
"mm_e403": 'audió hiba 403: hozzáférés megtagadva.\n\npróbáld meg az F5-öt, hátha kiléptetett a rendszer',
|
||||
"mm_e415": 'audió hiba 415: átkódolás sikertelen; nézd meg a szerver logot.',
|
||||
"mm_e500": 'audió hiba 500: nézd meg a szerver logot.',
|
||||
"mm_e5xx": 'audió hiba; szerver hiba ',
|
||||
"mm_nof": 'nem találok több zenét a környéken',
|
||||
"mm_prescan": 'következő szám keresése...',
|
||||
"mm_scank": 'következő megvan:',
|
||||
"mm_uncache": 'gyorsítótár ürítve; minden számot újra letölt az újabb lejátszásnál',
|
||||
"mm_hnf": 'ez a szám már nem létezik',
|
||||
|
||||
"im_hnf": 'ez a kép már nem létezik',
|
||||
|
||||
"f_empty": 'a mappa üres',
|
||||
"f_chide": 'ez elrejti a(z) «{0}» oszlopot\n\nvisszakapcsolhatod a beállításoknál',
|
||||
"f_bigtxt": 'ez a fájl {0} MiB -- valóban megnyitod szövegként?',
|
||||
"f_bigtxt2": 'csak a fájl végét nézed meg? ez bekapcsolja a követést (tail) is, az új sorok élőben jelennek meg',
|
||||
"fbd_more": '<div id="blazy"><code>{0}</code> / <code>{1}</code> fájl látszik; <a href="#" id="bd_more">mutass még {2}-t</a> vagy <a href="#" id="bd_all">mutasd mindet</a></div>',
|
||||
"fbd_all": '<div id="blazy"><code>{0}</code> / <code>{1}</code> fájl látszik; <a href="#" id="bd_all">mutasd mindet</a></div>',
|
||||
"f_anota": 'csak {0} fájl van kijelölve a {1}-ből;\naz egész mappa kijelöléséhez görgess az aljára',
|
||||
|
||||
"f_dls": 'a mappában lévő linkek letöltési linkekké alakultak',
|
||||
"f_dl_nd": 'mappa kihagyása (használd a zip/tar letöltést):\n',
|
||||
|
||||
"f_partial": 'egy épp feltöltés alatt álló fájlt akarsz letölteni. Inkább válaszd azt, aminek megegyezik a neve, de nincs rajta a <code>.PARTIAL</code> kiterjesztés.\n\nha mégis OK-t nyomsz, valószínűleg hibás adatot kapsz.',
|
||||
|
||||
"ft_paste": 'beillesztés: {0} elem$Ngyorsbillentyű: ctrl-V',
|
||||
"fr_eperm": 'nem tudom átnevezni:\nnincs “mozgatás” jogod ebben a mappában',
|
||||
"fd_eperm": 'nem tudom törölni:\nnincs “törlés” jogod ebben a mappában',
|
||||
"fc_eperm": 'nem tudom kivágni:\nnincs “ mozgatás ” jogod ebben a mappában',
|
||||
"fp_eperm": 'nem tudom beilleszteni:\nnincs “írás” jogod ebben a mappában',
|
||||
"fr_emore": 'jelölj ki legalább egy elemet az átnevezéshez',
|
||||
"fd_emore": 'jelölj ki legalább egy elemet a törléshez',
|
||||
"fc_emore": 'jelölj ki legalább egy elemet a kivágáshoz',
|
||||
"fcp_emore": 'jelölj ki legalább egy elemet a másoláshoz',
|
||||
|
||||
"fs_sc": 'mappa megosztása',
|
||||
"fs_ss": 'kijelöltek megosztása',
|
||||
"fs_just1d": 'nem tudsz egyszerre több mappát,\nvagy fájlokat és mappákat vegyesen megosztani',
|
||||
"fs_abrt": '❌ mégse',
|
||||
"fs_rand": '🎲 random név',
|
||||
"fs_go": '✅ megosztás létrehozása',
|
||||
"fs_name": 'név',
|
||||
"fs_src": 'forrás',
|
||||
"fs_pwd": 'jelszó',
|
||||
"fs_exp": 'lejárat',
|
||||
"fs_tmin": 'perc',
|
||||
"fs_thrs": 'óra',
|
||||
"fs_tdays": 'nap',
|
||||
"fs_never": 'örök',
|
||||
"fs_pname": 'nem kötelező link név; üresen véletlenszerű lesz',
|
||||
"fs_tsrc": 'a megosztandó fájl vagy mappa',
|
||||
"fs_ppwd": 'nem kötelező jelszó',
|
||||
"fs_w8": 'megosztás létrehozása...',
|
||||
"fs_ok": '<code>Enter/OK</code>: Másolás vágólapra\n<code>ESC/Cancel</code>: Bezárás',
|
||||
|
||||
"frt_dec": 'helyreállíthatja a hibás fájlneveket">url-decode',
|
||||
"frt_rst": 'eredeti nevek visszaállítása">↺ alaphelyzet',
|
||||
"frt_abrt": 'ablak bezárása">❌ mégse',
|
||||
"frb_apply": 'ÁTNEVEZÉS',
|
||||
"fr_adv": 'tömeges / metaadat / minta alapú átnevezés">haladó',
|
||||
"fr_case": 'kis/nagybetű érzékeny regex">case',
|
||||
"fr_win": 'windows-biztos nevek; cseréli a <code><>:"\\|?*</code> karaktereket japán teljes szélességűekre">win',
|
||||
"fr_slash": '<code>/</code> cseréje olyanra, ami nem hoz létre új mappát">no /',
|
||||
"fr_re": '`regex keresési minta; a csoportokra így hivatkozhatsz lent: `(1)`, `(2)` stb.',
|
||||
"fr_fmt": '`foobar2000 stílus:$N`(title)` = zeneszám címe,$N`[(artist) - ](title)` = kihagyja az előadót, ha üres$N`$lpad((tn),2,0)` = sorszám 2 számjegyen',
|
||||
"fr_pdel": 'törlés',
|
||||
"fr_pnew": 'mentés mint',
|
||||
"fr_pname": 'adj nevet az új presetnek',
|
||||
"fr_aborted": 'megszakítva',
|
||||
"fr_lold": 'régi név',
|
||||
"fr_lnew": 'új név',
|
||||
"fr_tags": 'tagek a kijelölt fájlokban (csak olvasásra):',
|
||||
"fr_busy": '{0} elem átnevezése...\n\n{1}',
|
||||
"fr_efail": 'átnevezés sikertelen:\n',
|
||||
"fr_nchg": '{0} név módosult a <code>win</code> vagy <code>no /</code> miatt\n\nfolytassuk az új nevekkel?',
|
||||
|
||||
"fd_ok": 'törölve',
|
||||
"fd_err": 'törlés sikertelen:\n',
|
||||
"fd_none": 'semmi sem lett törölve; lehet, hogy a szerver tiltja (xbd)?',
|
||||
"fd_busy": '{0} elem törlése...\n\n{1}',
|
||||
"fd_warn1": 'TÖRLÖD ezt a(z) {0} elemet?',
|
||||
"fd_warn2": '<b>Utolsó esély!</b> Nem vonható vissza. Törlöd?',
|
||||
|
||||
"fc_ok": '{0} elem kivágva',
|
||||
"fc_warn": '{0} elem kivágva\n\nde: csak <b>ez</b> a fül tudja beilleszteni őket\n(mivel a kijelölés brutálisan nagy)',
|
||||
|
||||
"fcc_ok": '{0} elem vágólapra másolva',
|
||||
"fcc_warn": '{0} elem vágólapra másolva\n\nde: csak <b>ez</b> a fül tudja beilleszteni őket\n(mivel a kijelölés brutálisan nagy)',
|
||||
|
||||
"fp_apply": 'nevek mentése',
|
||||
"fp_skip": 'ütközések kihagyása',
|
||||
"fp_ecut": 'előbb vágj ki vagy másolj valamit\n\nmegjegyzés: néha fülek között is megy',
|
||||
"fp_ename": '{0} elem nem mozgatható ide névütközés miatt. Adj nekik új nevet, vagy hagyd üresen (“kihagyás”) a skippeléshez:',
|
||||
"fcp_ename": '{0} elem nem másolható ide névütközés miatt. Adj nekik új nevet, vagy hagyd üresen (“kihagyás”) a skippeléshez:',
|
||||
"fp_emore": 'maradt még néhány névütközés',
|
||||
"fp_ok": 'mozgatás kész',
|
||||
"fcp_ok": 'másolás kész',
|
||||
"fp_busy": '{0} elem mozgatása...\n\n{1}',
|
||||
"fcp_busy": '{0} elem másolása...\n\n{1}',
|
||||
"fp_abrt": 'megszakítás...',
|
||||
"fp_err": 'mozgatás sikertelen:\n',
|
||||
"fcp_err": 'másolás sikertelen:\n',
|
||||
"fp_confirm": 'mozgassuk ide ezt a {0} elemet?',
|
||||
"fcp_confirm": 'másoljuk ide ezt a {0} elemet?',
|
||||
"fp_etab": 'nem sikerült a vágólap olvasása másik fülről',
|
||||
"fp_name": 'fájl feltöltése. Adj neki nevet:',
|
||||
"fp_both_m": '<h6>mi legyen?</h6><code>Enter</code> = Mozgatás: {0} elem innen: «{1}»\n<code>ESC</code> = Feltöltés: {2} fájl a gépedről',
|
||||
"fcp_both_m": '<h6>mi legyen?</h6><code>Enter</code> = Másolás: {0} elem innen: «{1}»\n<code>ESC</code> = Feltöltés: {2} fájl a gépedről',
|
||||
"fp_both_b": '<a href="#" id="modal-ok">Mozgatás</a><a href="#" id="modal-ng">Feltöltés</a>',
|
||||
"fcp_both_b": '<a href="#" id="modal-ok">Másolás</a><a href="#" id="modal-ng">Feltöltés</a>',
|
||||
|
||||
"mk_noname": 'írj be egy nevet a bal oldali mezőbe :p',
|
||||
"nmd_i1": 'add meg a kiterjesztést is, pl. <code>.md</code>',
|
||||
"nmd_i2": 'csak <code>.{0}</code> fájlt hozhatsz létre, mert nincs törlési jogod',
|
||||
|
||||
"tv_load": 'Szövegfájl betöltése:\n\n{0}\n\n{1}% ({2} / {3} MiB betöltve)',
|
||||
"tv_xe1": 'nem sikerült betölteni:\n\nhiba ',
|
||||
"tv_xe2": '404, fájl nem található',
|
||||
"tv_lst": 'szövegfájlok a mappában:',
|
||||
"tvt_close": 'vissza a mappába$Ngyorsbillentyű: M (vagy Esc)">❌ bezárás',
|
||||
"tvt_dl": 'fájl letöltése$Ngyorsbillentyű: Y">💾 letöltés',
|
||||
"tvt_prev": 'előző dokumentum$Ngyorsbillentyű: i">⬆ előző',
|
||||
"tvt_next": 'következő dokumentum$Ngyorsbillentyű: K">⬇ következő',
|
||||
"tvt_sel": 'kijelölés (vágáshoz/másoláshoz/törléshez)$Ngyorsbillentyű: S">kijelöl',
|
||||
"tvt_j": 'json formázás$Ngyorsbillentyű: shift-J">j',
|
||||
"tvt_edit": 'szerkesztés szövegként$Ngyorsbillentyű: E">✏️ szerkeszt',
|
||||
"tvt_tail": 'fájl figyelése; új sorok mutatása élőben">📡 követve',
|
||||
"tvt_wrap": 'sortörés">↵',
|
||||
"tvt_atail": 'gördítés az aljára rögzítve">⚓',
|
||||
"tvt_ctail": 'terminál színek (ansi escape) dekódolása">🌈',
|
||||
"tvt_ntail": 'visszapörgetési limit (hány bájt szöveg maradjon a memóriában)',
|
||||
|
||||
"m3u_add1": 'szám hozzáadva az m3u listához',
|
||||
"m3u_addn": '{0} szám hozzáadva az m3u listához',
|
||||
"m3u_clip": 'm3u lista vágólapra másolva\n\nhozz létre egy új szövegfájlt valami.m3u névvel és illeszd bele; így már lejátszható lesz',
|
||||
|
||||
"gt_vau": 'videó elrejtése, csak a hang lejátszása">🎧',
|
||||
"gt_msel": 'kijelölés engedélyezése; ctrl-klikk a felülbíráláshoz$N$N<em>ha aktív: dupla klikk a megnyitáshoz</em>$N$Ngyorsbillentyű: S">tömeges',
|
||||
"gt_crop": 'középre vágott indexképek">crop',
|
||||
"gt_3x": 'nagy felbontású indexképek">3x',
|
||||
"gt_zoom": 'zoom',
|
||||
"gt_chop": 'vágás',
|
||||
"gt_sort": 'rendezés:',
|
||||
"gt_name": 'név',
|
||||
"gt_sz": 'méret',
|
||||
"gt_ts": 'dátum',
|
||||
"gt_ext": 'típus',
|
||||
"gt_c1": 'rövidebb fájlnevek',
|
||||
"gt_c2": 'hosszabb fájlnevek',
|
||||
|
||||
"sm_w8": 'keresés...',
|
||||
"sm_prev": 'az alábbi eredmények egy korábbi keresésből vannak:\n ',
|
||||
"sl_close": 'eredmények bezárása',
|
||||
"sl_hits": '{0} találat',
|
||||
"sl_moar": 'továbbiak betöltése',
|
||||
|
||||
"s_sz": 'méret',
|
||||
"s_dt": 'dátum',
|
||||
"s_rd": 'útvonal',
|
||||
"s_fn": 'név',
|
||||
"s_ta": 'tagek',
|
||||
"s_ua": 'feltöltve',
|
||||
"s_ad": 'haladó',
|
||||
"s_s1": 'minimum MiB',
|
||||
"s_s2": 'maximum MiB',
|
||||
"s_d1": 'min. iso8601',
|
||||
"s_d2": 'max. iso8601',
|
||||
"s_u1": 'ezután töltve',
|
||||
"s_u2": 'vagy ez előtt',
|
||||
"s_r1": 'útvonal tartalmazza (szóközzel elválasztva)',
|
||||
"s_f1": 'név tartalmazza (negálás pl -nemez)',
|
||||
"s_t1": 'tagek tartalmazzák (^=kezdet, vég=$)',
|
||||
"s_a1": 'specifikus metaadatok',
|
||||
|
||||
"md_eshow": 'nem sikerült megjeleníteni ',
|
||||
"md_off": '[📜<em>readme</em>] kikapcsolva a beállításokban -- rejtve',
|
||||
|
||||
"badreply": 'Hibás válasz a szervertől',
|
||||
|
||||
"xhr403": '403: Hozzáférés megtagadva\n\npróbáld az F5-öt, hátha kiléptetett a rendszer',
|
||||
"xhr0": 'ismeretlen hiba (valószínűleg megszakadt a kapcsolat)',
|
||||
"cf_ok": 'bocsi, DD' + wah + 'oS védelem bekapcsolt\n\nkb. 30 mp múlva folytatódik\n\nha nem történik semmi, nyomj F5-öt',
|
||||
"tl_xe1": 'almappák listázása sikertelen:\n\nhiba ',
|
||||
"tl_xe2": '404: mappa nem található',
|
||||
"fl_xe1": 'fájlok listázása sikertelen:\n\nhiba ',
|
||||
"fl_xe2": '404: mappa nem található',
|
||||
"fd_xe1": 'almappa létrehozása sikertelen:\n\nhiba ',
|
||||
"fd_xe2": '404: szülőmappa nincs meg',
|
||||
"fsm_xe1": 'üzenetküldés sikertelen:\n\nhiba ',
|
||||
"fsm_xe2": '404: szülőmappa nincs meg',
|
||||
"fu_xe1": 'unpost lista betöltése sikertelen:\n\nhiba ',
|
||||
"fu_xe2": '404: fájl nincs meg??',
|
||||
|
||||
"fz_tar": 'tömörítetlen gnu-tar (linux / mac)',
|
||||
"fz_pax": 'tömörítetlen pax-formátumú tar (lassabb)',
|
||||
"fz_targz": 'gnu-tar gzip 3-as szinten$N$Náltalában lassú, inkább használd a sima tar-t',
|
||||
"fz_tarxz": 'gnu-tar xz 1-es szinten$N$Náltalában lassú, inkább használd a sima tar-t',
|
||||
"fz_zip8": 'zip utf8 nevekkel (régi windows alatt hibás lehet)',
|
||||
"fz_zipd": 'zip cp437 nevekkel (nagyon régi szoftverekhez)',
|
||||
"fz_zipc": 'cp437 crc32 gyorsítással,$NMS-DOS PKZIP v2.04g-hez (1993 októbere)$N(letöltés előtt hosszabb ideig tarthat a feldolgozás)',
|
||||
|
||||
"un_m1": 'itt törölheted a nemrég feltöltött fájljaidat (vagy leállíthatod a futókat)',
|
||||
"un_upd": 'frissítés',
|
||||
"un_m4": 'vagy oszd meg az alábbi fájlokat:',
|
||||
"un_ulist": 'mutasd',
|
||||
"un_ucopy": 'másold',
|
||||
"un_flt": 'szűrő: az URL tartalmazza:',
|
||||
"un_fclr": 'szűrő törlése',
|
||||
"un_derr": 'törlés sikertelen:\n',
|
||||
"un_f5": 'valami elromlott, próbáld meg frissíteni az oldalt',
|
||||
"un_uf5": 'frissítened kell az oldalt (F5 vagy CTRL-R), mielőtt ezt leállíthatnád',
|
||||
"un_nou": '<b>figyelem:</b> a szerver túlterhelt a futó feltöltések listázásához; próbáld később',
|
||||
"un_noc": '<b>figyelem:</b> a kész feltöltések törlése nincs engedélyezve a szerveren',
|
||||
"un_max": 'az első 2000 fájl látszik (használd a szűrőt)',
|
||||
"un_avail": '{0} kész feltöltés törölhető<br />{1} folyamatban lévő leállítható',
|
||||
"un_m2": 'idő szerint rendezve (legfrissebb legelöl):',
|
||||
"un_no1": 'semmi! nincsenek nemrég feltöltött fájljaid',
|
||||
"un_no2": 'semmi! nincs a szűrőnek megfelelő friss feltöltés',
|
||||
"un_next": 'következő {0} fájl törlése',
|
||||
"un_abrt": 'leállítás',
|
||||
"un_del": 'törlés',
|
||||
"un_m3": 'legutóbbi feltöltések betöltése...',
|
||||
"un_busy": '{0} fájl törlése...',
|
||||
"un_clip": '{0} link vágólapra másolva',
|
||||
|
||||
"u_https1": 'érdemesebb lenne',
|
||||
"u_https2": 'https-re váltani',
|
||||
"u_https3": 'a jobb sebességért',
|
||||
"u_ancient": 'lenyűgözően őskori a böngésződ -- talán <a href="#" onclick="goto(\'bup\')">használd inkább az egyszerű uploader-t</a>',
|
||||
"u_nowork": 'legalább Firefox 53, Chrome 57 vagy iOS 11 kell',
|
||||
"tail_2old": 'legalább Firefox 105, Chrome 71 vagy iOS 14.5 kell',
|
||||
"u_nodrop": 'a böngésződ túl öreg a drag-and-drop-hoz',
|
||||
"u_notdir": 'ez nem egy mappa!\n\na böngésződ túl öreg,\npróbáld meg inkább behúzni',
|
||||
"u_uri": 'képek behúzásához más ablakból,\ndobd rá a nagy feltöltés gombra',
|
||||
"u_enpot": 'váltás <a href="#">egyszerű UI-ra</a> (gyorsíthat a feltöltésen)',
|
||||
"u_depot": 'váltás <a href="#">vibráló UI-ra</a> (visszafoghatja a sebességet)',
|
||||
"u_gotpot": 'átváltottunk egyszerű UI-ra a sebesség miatt,\nde bármikor visszaválthatsz!',
|
||||
"u_pott": '<p>fájlok: <b>{0}</b> kész, <b>{1}</b> hiba, <b>{2}</b> fut, <b>{3}</b> vár</p>',
|
||||
"u_ever": 'ez az egyszerű feltöltő; az up2k-hoz legalább<br>chrome 21 // firefox 13 // edge 12 // opera 12 // safari 5.1 kell',
|
||||
"u_su2k": 'ez az egyszerű feltöltő; az <a href="#" id="u2yea">up2k</a> sokkal jobb',
|
||||
"u_uput": 'sebességre optimalizál (ellenőrzés nélkül)',
|
||||
"u_ewrite": 'nincs írási jogod ebben a mappában',
|
||||
"u_eread": 'nincs olvasási jogod ebben a mappában',
|
||||
"u_enoi": 'fájlkeresés letiltva a szerveren',
|
||||
"u_enoow": 'felülírás nem fog menni; törlési jog kell hozzá',
|
||||
"u_badf": 'Ez a(z) {0} fájl ({1}-ből) kimaradt, valószínűleg jogok miatt:\n\n',
|
||||
"u_blankf": 'Ez a(z) {0} fájl ({1}-ből) teljesen üres; biztos feltöltöd?\n\n',
|
||||
"u_applef": 'Ez a(z) {0} fájl ({1}-ből) valószínűleg felesleges;\nNyomj <code>OK/Enter</code>-t a KIHAGYÁSHOZ,\nvagy <code>Cancel/ESC</code>-et a FELTÖLTÉSHEZ:\n\n',
|
||||
"u_just1": '\nlehet, hogy jobban működik, ha csak egy fájlt jelölsz ki',
|
||||
"u_ff_many": 'ha <b>Linux / MacOS / Android</b> rendszert használsz, ennyi fájl <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1790500" target="_blank">fagyást okozhat Firefoxban!</a>\nha ez történik, próbáld újra (vagy használd a Chrome-ot).',
|
||||
"u_up_life": 'ez a feltöltés a befejezés után\n{0} múlva törlődik a szerverről',
|
||||
"u_asku": 'feltöltsem ezt a {0} fájlt ide: <code>{1}</code>?',
|
||||
"u_unpt": 'visszavonhatod/törölheted a feltöltést a bal felső 🧯 gombbal',
|
||||
"u_bigtab": '{0} fájl listázása következik\n\nez lefagyaszthatja a böngészőt, biztos?',
|
||||
"u_scan": 'Fájlok beolvasása...',
|
||||
"u_dirstuck": 'a rendszer elakadt az alábbi {0} elemnél; kihagyjuk őket:',
|
||||
"u_etadone": 'Kész ({0}, {1} fájl)',
|
||||
"u_etaprep": '(előkészítés...)',
|
||||
"u_hashdone": 'hashelés kész',
|
||||
"u_hashing": 'hash',
|
||||
"u_hs": 'kapcsolódás...',
|
||||
"u_started": 'a feltöltés elindult; lásd [🚀]',
|
||||
"u_dupdefer": 'másolat; a végén fogjuk feldolgozni',
|
||||
"u_actx": 'kattints ide, hogy a böngésző ne fogja vissza a sebességet,\nha más ablakba/fülre mész',
|
||||
"u_fixed": 'Oké! Javítva 👍',
|
||||
"u_cuerr": 'hiba a(z) {0} / {1}. egység feltöltésekor;\nvalószínűleg nem gond, folytatjuk\n\nfájl: {2}',
|
||||
"u_cuerr2": 'szerver elutasította az egységet ({0} / {1});\nkésőbb újrapróbáljuk\n\nfájl: {2}\n\nhiba ',
|
||||
"u_ehstmp": 'újrapróbálás; lásd jobb lent',
|
||||
"u_ehsfin": 'szerver elutasította a befejezést; újrapróbáljuk...',
|
||||
"u_ehssrch": 'szerver elutasította a keresést; újrapróbáljuk...',
|
||||
"u_ehsinit": 'szerver elutasította a kezdést; újrapróbáljuk...',
|
||||
"u_eneths": 'hálózati hiba a kapcsolódáskor; újrapróbálás...',
|
||||
"u_enethd": 'hálózati hiba az ellenőrzéskor; újrapróbálás...',
|
||||
"u_cbusy": 'várakozás, hogy a szerver megint bízzon bennünk hiba után...',
|
||||
"u_ehsdf": 'a szerveren elfogyott a hely!\n\naddig próbálkozunk, amíg valaki\nfel nem szabadít egy kis területet',
|
||||
"u_emtleak1": 'úgy tűnik, a böngésződ memóriát szivárogtat;\nkérlek',
|
||||
"u_emtleak2": ' <a href="{0}">válts https-re (ajánlott)</a> vagy ',
|
||||
"u_emtleak3": ' ',
|
||||
"u_emtleakc": 'próbáld a következőt:\n<ul><li>nyomj <code>F5</code>-öt</li><li>kapcsold ki az <code>mt</code> gombot a <code>⚙️ beállításokban</code></li><li>majd próbáld újra</li></ul>Lassabb lesz, de legalább lemegy.\nBocsi a kellemetlenségért!\n\nPS: a chrome v107 már <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=1354816" target="_blank">javított ezen</a>',
|
||||
"u_emtleakf": 'próbáld a következőt:\n<ul><li>nyomj <code>F5</code>-öt</li><li>kapcsold be az <code>egyszerű</code> módot<li>majd próbáld újra megint</li></ul>\nPS: remélhetőleg a firefox is <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1790500" target="_blank">javítja egyszer</a>',
|
||||
"u_s404": 'nincs a szerveren',
|
||||
"u_expl": 'magyarázat',
|
||||
"u_maxconn": 'a legtöbb böngésző limitje 6, de Firefoxban az <code>about:config</code> alatt a <code>connections-per-server</code> értékkel növelhető',
|
||||
"u_tu": '<p class="warn">FIGYELEM: turbo bekapcsolva, <span> lehet, hogy nem veszi észre a félbeszakadt feltöltéseket; lásd a súgót</span></p>',
|
||||
"u_ts": '<p class="warn">FIGYELEM: turbo bekapcsolva, <span> a keresési eredmények hibásak lehetnek; lásd a súgót</span></p>',
|
||||
"u_turbo_c": 'turbo letiltva a szerveren',
|
||||
"u_turbo_g": 'turbo kikapcsolva, mert nincs jogod mappalistázáshoz ezen a köteten',
|
||||
"u_life_cfg": 'autotörlés <input id="lifem" p="60" /> perc (vagy <input id="lifeh" p="3600" /> óra) múlva',
|
||||
"u_life_est": 'a feltöltés törlődni fog ekkor: <span id="lifew" tt="helyi idő">---</span>',
|
||||
"u_life_max": 'ez a mappa kényszeríti a\nmax élettartamot: {0}',
|
||||
"u_unp_ok": 'unpost engedélyezve eddig: {0}',
|
||||
"u_unp_ng": 'unpost NEM lesz engedélyezve',
|
||||
"ue_ro": 'ebben a mappában csak olvasási jogod van\n\n',
|
||||
"ue_nl": 'nem vagy belépve',
|
||||
"ue_la": 'jelenleg mint “{0}” vagy bejelentkezve',
|
||||
"ue_sr": 'kereső módban vagy\n\nválts feltöltésre a nagy KERESÉS gomb melletti nagyítóra 🔎 kattintva,\nés próbáld újra\n\nbocsi',
|
||||
"ue_ta": 'próbáld meg újra, most már mennie kell',
|
||||
"ue_ab": 'ez a fájl már fel van töltve egy másik mappába, várd meg, amíg az kész lesz.\n\nmegszakíthatod a korábbi próbálkozást a bal felső 🧯 gombbal',
|
||||
"ur_1uo": 'OK: Fájl sikeresen feltöltve',
|
||||
"ur_auo": 'OK: Mind a(z) {0} fájl feltöltve',
|
||||
"ur_1so": 'OK: Fájl megvan a szerveren',
|
||||
"ur_aso": 'OK: Mind a(z) {0} fájl megvan a szerveren',
|
||||
"ur_1un": 'A feltöltés nem sikerült',
|
||||
"ur_aun": 'Az összes ({0}) feltöltés megszakadt',
|
||||
"ur_1sn": 'Fájl nincs a szerveren',
|
||||
"ur_asn": 'A(z) {0} fájl nincs a szerveren',
|
||||
"ur_um": 'Kész;\n{0} sikeres,\n{1} sajnos nem sikerült',
|
||||
"ur_sm": 'Kész;\n{0} megvan a szerveren,\n{1} nincs meg',
|
||||
|
||||
"rc_opn": 'megnyitás',
|
||||
"rc_ply": 'lejátszás',
|
||||
"rc_pla": 'lejátszás audióként',
|
||||
"rc_txt": 'megnyitás szövegként',
|
||||
"rc_md": 'megnyitás markdownként',
|
||||
"rc_dl": 'letöltés',
|
||||
"rc_zip": 'letöltés archívumként',
|
||||
"rc_cpl": 'link másolása',
|
||||
"rc_del": 'törlés',
|
||||
"rc_cut": 'kivágás',
|
||||
"rc_cpy": 'másolás',
|
||||
"rc_pst": 'beillesztés',
|
||||
"rc_rnm": 'átnevezés',
|
||||
"rc_nfo": 'új mappa',
|
||||
"rc_nfi": 'új fájl',
|
||||
"rc_sal": 'összes kijelölése',
|
||||
"rc_sin": 'kijelölés megfordítása',
|
||||
"rc_shf": 'mappa megosztása',
|
||||
"rc_shs": 'kijelöltek megosztása',
|
||||
|
||||
"lang_set": 'frissítsünk, hogy átálljon a nyelv?',
|
||||
|
||||
"splash": {
|
||||
"a1": 'frissítés',
|
||||
"b1": 'üdv idegen <small>(nem vagy bejelentkezve)</small>',
|
||||
"c1": 'kilépés',
|
||||
"d1": 'dump stack',
|
||||
"d2": 'minden aktív szál állapotának mutatása',
|
||||
"e1": 'config újratöltés',
|
||||
"e2": 'konfigurációs fájlok (fiókok/kötetek) és e2ds kötetek újraszkennelése$N$Nmegjegyzés: a globális beállításokhoz$Nteljes újraindítás kell',
|
||||
"f1": 'böngészhető:',
|
||||
"g1": 'ide tudsz feltölteni:',
|
||||
"cc1": 'egyéb dolgok:',
|
||||
"h1": 'k304 kikapcsolása',
|
||||
"i1": 'k304 bekapcsolása',
|
||||
"j1": 'a k304 lekapcsolja a klienst minden HTTP 304-nél, ami segíthet némely akadózó proxynál, de amúgy lassítja a dolgokat',
|
||||
"k1": 'beállítások alaphelyzetbe állítása',
|
||||
"l1": 'jelentkezz be a többiért:',
|
||||
"ls3": 'belépés',
|
||||
"lu4": 'felhasználónév',
|
||||
"lp4": 'jelszó',
|
||||
"lo3": '“{0}” kijelentkeztetése mindenhonnan',
|
||||
"lo2": 'minden böngészőben lelövi a munkamenetet',
|
||||
"m1": 'üdv újra,',
|
||||
"n1": '404 nincs meg ┐( ´ -`)┌',
|
||||
"o1": 'vagy nincs jogod -- próbálj belépni vagy <a href="' + SR + '/?h">menj a főoldalra</a>',
|
||||
"p1": '403 tiltva ~┻━┻',
|
||||
"q1": 'kell egy jelszó vagy <a href="' + SR + '/?h">menj a főoldalra</a>',
|
||||
"r1": 'vissza a főoldalra',
|
||||
".s1": 'újraszkennelés',
|
||||
"t1": 'művelet',
|
||||
"u2": 'utolsó írás óta eltelt idő$N( feltöltés / átnevezés / ... )$N$N17n = 17 nap$N1ó23 = 1 óra 23 perc$N4p56 = 4 perc 56 másodperc',
|
||||
"v1": 'csatlakozás',
|
||||
"v2": 'szerver használata helyi meghajtóként',
|
||||
"w1": 'váltás https-re',
|
||||
"x1": 'jelszó megváltoztatása',
|
||||
"y1": 'megosztások szerkesztése',
|
||||
"z1": 'megosztás feloldása:',
|
||||
"ta1": 'írd be az új jelszavad',
|
||||
"ta2": 'új jelszó még egyszer:',
|
||||
"ta3": 'elírtad; próbáld újra',
|
||||
"nop": 'HIBA: A jelszó nem lehet üres',
|
||||
"nou": 'HIBA: A felhasználónév és jelszó nem lehet üres',
|
||||
"aa1": 'érkező fájlok:',
|
||||
"ab1": 'no304 kikapcsolása',
|
||||
"ac1": 'no304 bekapcsolása',
|
||||
"ad1": 'a no304 kikapcsolja a gyorsítótárazást; akkor használd, ha a k304 nem segített. Figyelem: ez jelentős adatforgalmat generál!',
|
||||
"ae1": 'futó letöltések:',
|
||||
"af1": 'utóbbi feltöltések mutatása',
|
||||
"ag1": 'idp cache megtekintése',
|
||||
},
|
||||
};
|
||||
|
|
@ -325,6 +325,7 @@ Ls.ita = {
|
|||
"mt_ssvt": "soglia volume (0-255)\">vol", //m
|
||||
"mt_ssts": "soglia attiva (% traccia, inizio)\">ini", //m
|
||||
"mt_sste": "soglia attiva (% traccia, fine)\">fin", //m
|
||||
"mt_ssrt": "tempo rampa volume/velocità\">fade", //m
|
||||
"mt_sssm": "moltiplicatore velocità riproduzione\">av", //m
|
||||
|
||||
"mb_play": "riproduci",
|
||||
|
|
|
|||
|
|
@ -325,6 +325,7 @@ Ls.jpn = {
|
|||
"mt_ssvt": "音量しきい値 (0-255)\">音", //m
|
||||
"mt_ssts": "有効しきい値 (トラック%, 開始)\">始", //m
|
||||
"mt_sste": "有効しきい値 (トラック%, 終了)\">終", //m
|
||||
"mt_ssrt": "音量/速度 ランプ時間\">フェード", //m
|
||||
"mt_sssm": "再生速度倍率\">速", //m
|
||||
|
||||
"mb_play": "再生",
|
||||
|
|
|
|||
|
|
@ -325,6 +325,7 @@ Ls.kor = {
|
|||
"mt_ssvt": "볼륨 임계값 (0-255)\">음", //m
|
||||
"mt_ssts": "활성 임계값 (% 트랙, 시작)\">시", //m
|
||||
"mt_sste": "활성 임계값 (% 트랙, 끝)\">끝", //m
|
||||
"mt_ssrt": "볼륨/속도 램프 시간\">페이드", //m
|
||||
"mt_sssm": "재생 속도 배율\">고", //m
|
||||
|
||||
"mb_play": "재생",
|
||||
|
|
|
|||
|
|
@ -325,6 +325,7 @@ Ls.nld = {
|
|||
"mt_ssvt": "Volumedrempel (0-255)\">vol", //m
|
||||
"mt_ssts": "Actieve drempel (% track, begin)\">beg", //m
|
||||
"mt_sste": "Actieve drempel (% track, einde)\">eind", //m
|
||||
"mt_ssrt": "Op/aflooptijd volume/snelheid\">fade", //m
|
||||
"mt_sssm": "Vermenigvuldiger afspeelsnelheid\">vrs", //m
|
||||
|
||||
"mb_play": "Afspelen",
|
||||
|
|
|
|||
|
|
@ -322,6 +322,7 @@ Ls.nno = {
|
|||
"mt_ssvt": "volumterskel (0-255)\">volum",
|
||||
"mt_ssts": "aktiv innanfor første % av songen\">start",
|
||||
"mt_sste": "aktiv innanfor siste % av songen\">slutt",
|
||||
"mt_ssrt": "kor fort volum/tempo skal justerast\">fade",
|
||||
"mt_sssm": "avspelingshastigheitsmultiplikator\">ffwd",
|
||||
|
||||
"mb_play": "lytt",
|
||||
|
|
|
|||
|
|
@ -322,6 +322,7 @@ Ls.nor = {
|
|||
"mt_ssvt": "volumterskel (0-255)\">volum",
|
||||
"mt_ssts": "aktiv innenfor første % av sangen\">start",
|
||||
"mt_sste": "aktiv innenfor siste % av sangen\">slutt",
|
||||
"mt_ssrt": "hvor fort volum/tempo skal justeres\">fade",
|
||||
"mt_sssm": "avspillingshastighetsmultiplikator\">ffwd",
|
||||
|
||||
"mb_play": "lytt",
|
||||
|
|
|
|||
|
|
@ -328,6 +328,7 @@ Ls.pol = {
|
|||
"mt_ssvt": "próg głośności (0-255)\">gł", //m
|
||||
"mt_ssts": "aktywny próg (% utworu, początek)\">pocz", //m
|
||||
"mt_sste": "aktywny próg (% utworu, koniec)\">kon", //m
|
||||
"mt_ssrt": "czas narastania/opadania głośn./pręd.\">fade", //m
|
||||
"mt_sssm": "mnożnik prędkości odtwarzania\">szyb", //m
|
||||
|
||||
"mb_play": "odtwórz",
|
||||
|
|
|
|||
|
|
@ -325,6 +325,7 @@ Ls.por = {
|
|||
"mt_ssvt": "limiar de volume (0-255)\">vol", //m
|
||||
"mt_ssts": "limiar ativo (% faixa, início)\">ini", //m
|
||||
"mt_sste": "limiar ativo (% faixa, fim)\">fim", //m
|
||||
"mt_ssrt": "tempo de rampa volume/velocidade\">fade", //m
|
||||
"mt_sssm": "multiplicador de velocidade de reprodução\">av", //m
|
||||
|
||||
"mb_play": "reproduzir",
|
||||
|
|
|
|||
|
|
@ -325,6 +325,7 @@ Ls.rus = {
|
|||
"mt_ssvt": "порог громкости (0-255)\">гром", //m
|
||||
"mt_ssts": "активный порог (% трека, начало)\">нач", //m
|
||||
"mt_sste": "активный порог (% трека, конец)\">кон", //m
|
||||
"mt_ssrt": "время нарастания/спада громк./скор.\">фейд", //m
|
||||
"mt_sssm": "множитель скорости воспроизведения\">уск", //m
|
||||
|
||||
"mb_play": "играть",
|
||||
|
|
|
|||
|
|
@ -324,6 +324,7 @@ Ls.spa = {
|
|||
"mt_ssvt": "umbral de volumen (0-255)\">vol", //m
|
||||
"mt_ssts": "umbral activo (% pista, inicio)\">ini", //m
|
||||
"mt_sste": "umbral activo (% pista, fin)\">fin", //m
|
||||
"mt_ssrt": "tiempo de rampa volumen/velocidad\">fund", //m
|
||||
"mt_sssm": "multiplicador de velocidad de reproducción\">av", //m
|
||||
|
||||
"mb_play": "reproducir",
|
||||
|
|
|
|||
|
|
@ -325,6 +325,7 @@ Ls.swe = {
|
|||
"mt_ssvt": "volymtröskel (0-255)\">vol", //m
|
||||
"mt_ssts": "aktiv tröskel (% spår, start)\">sta", //m
|
||||
"mt_sste": "aktiv tröskel (% spår, slut)\">slt", //m
|
||||
"mt_ssrt": "upp/ned-rampningstid volym/hastighet\">fade", //m
|
||||
"mt_sssm": "uppspelningshastighetsmultiplikator\">sn", //m
|
||||
|
||||
"mb_play": "play",
|
||||
|
|
|
|||
|
|
@ -325,6 +325,7 @@ Ls.tur = {
|
|||
"mt_ssvt": "ses eşiği (0-255)\">ses", //m
|
||||
"mt_ssts": "etkin eşik (% parça, başlangıç)\">bas", //m
|
||||
"mt_sste": "etkin eşik (% parça, bitiş)\">son", //m
|
||||
"mt_ssrt": "ses/hız rampa süresi\">fade", //m
|
||||
"mt_sssm": "oynatma hızı çarpanı\">ileri", //m
|
||||
|
||||
"mb_play": "oynat",
|
||||
|
|
|
|||
|
|
@ -325,6 +325,7 @@ Ls.ukr = {
|
|||
"mt_ssvt": "поріг гучності (0-255)\">гуч", //m
|
||||
"mt_ssts": "активний поріг (% треку, початок)\">поч", //m
|
||||
"mt_sste": "активний поріг (% треку, кінець)\">кін", //m
|
||||
"mt_ssrt": "час нарост./спаду гучн./швидк.\">фейд", //m
|
||||
"mt_sssm": "множник швидкості відтворення\">шв", //m
|
||||
|
||||
"mb_play": "відтворити",
|
||||
|
|
|
|||
|
|
@ -332,6 +332,7 @@ Ls.vie = {
|
|||
"mt_ssvt": "ngưỡng âm lượng (0-255)\">am", //m
|
||||
"mt_ssts": "ngưỡng hoạt động (% bài, đầu)\">dau", //m
|
||||
"mt_sste": "ngưỡng hoạt động (% bài, cuối)\">cuoi", //m
|
||||
"mt_ssrt": "thời gian tăng/giảm âm lượng/tốc độ\">fade", //m
|
||||
"mt_sssm": "hệ số tốc độ phát\">nh", //m
|
||||
|
||||
"mb_play": "phát",
|
||||
|
|
|
|||
|
|
@ -1,53 +0,0 @@
|
|||
due to legal reasons, the copyparty [docker image](https://github.com/9001/copyparty/blob/hovudstraum/scripts/docker) and [bootable flashdrive](https://a.ocv.me/pub/stuff/edcd001/enterprise-edition/) are not able to decode and display images and videos which were made using certain codecs
|
||||
|
||||
* specifically, photos and videos taken with iphones will not work, and perhaps some samsung phones, idk
|
||||
* this also includes thumbnails thereof
|
||||
|
||||
I suggest you stop reading at this point, unless you want to share my frustration, in which case please do continue
|
||||
|
||||
|
||||
## why hevc is not included
|
||||
|
||||
the following is my understanding, which is probably wrong because [I anal](https://en.wikipedia.org/wiki/IANAL)
|
||||
|
||||
* the h265 codec, also known as h.265 and hevc, is patent-encumbered and legally problematic to distribute;
|
||||
* there are several patent-pools of patent-holders with conflicting and unclear requirements
|
||||
* even FOSS is not exempt from demands of payment; https://en.wikipedia.org/wiki/High_Efficiency_Video_Coding#Provision_for_costless_software
|
||||
* I have no idea how "number of sales" maps to FOSS, but copyparty doesn't have telemetry so it would be impossible to satisfy the requirements either way
|
||||
* due to this, both chrome and firefox refuse to add a built-in decoder for hevc; https://caniuse.com/hevc
|
||||
* and while I haven't discussed this with a lawyer, I presume the reason is they did
|
||||
* most heif/heic images are hevc, meaning they are equally troublesome
|
||||
* safari is the only webbrowser willing to decode and display heif/heic photos, for self-inflicted reasons https://caniuse.com/heif
|
||||
|
||||
and anyways there's no reason to use hevc in the first place because [av1](https://en.wikipedia.org/wiki/AV1) gives higher quality at a smaller filesize, is entirely free, and avif (its heif counterpart) is widely supported across all browsers: https://caniuse.com/avif
|
||||
|
||||
|
||||
## why only the docker and flashdrive images are affected
|
||||
|
||||
supposedly, royalties is like a jigsaw puzzle, where whoever lays down the last piece wins the responsibility of dealing with that mess -- and because the docker-image has everything bundled as one big ball of software, that might(?) be a problem...idk, i anal
|
||||
|
||||
so because ffmpeg is the component that handles everything regarding hevc, only the packages which include ffmpeg are affected, which means the docker-image and bootable-flashdrive-image
|
||||
|
||||
if you use or install copyparty in any other way, then you are in charge of obtaining and providing an ffmpeg for copyparty to use, and thus nothing has changed
|
||||
|
||||
|
||||
## how hevc support was removed
|
||||
|
||||
the regular ffmpeg package from the alpinelinux repos was replaced with a [custom ffmpeg build](https://github.com/9001/copyparty/tree/hovudstraum/scripts/docker/base) where the hevc decoder was physically stripped out, meaning hevc is not just "disabled", but entirely removed from all official copyparty distributions
|
||||
|
||||
oh and the aac support has also been tampered with; now only AAC-LC can be decoded, which is fine because that's like 99% of all aac files (nobody uses HE-AAC or AAC-LD), and LC-AAC has become royalty-free in all relevant parts of the world at this point
|
||||
|
||||
and any traces of vvc was also stripped out because that codec was dead on arrival, unable to compete with av1 (and soon av2)
|
||||
|
||||
the silver lining is that this has made the docker images *much* smaller; the `ac` image is now half the size -- it went from 67 to 35 MiB gzipped, from 195 to 99 MiB installed, which is nice
|
||||
|
||||
|
||||
## how to enable hevc support
|
||||
|
||||
all I can say is good luck; I legally cannot help you with that
|
||||
|
||||
see, here's the fun part -- apparently I'm not allowed to assist with a technical explanation on how it could be done, because that would "facilitate access" as they call it?? but all copyparty does is call `ffmpeg` to generate the thumbnail; copyparty doesn't even know or care what "hevc" is; this is all purely on the ffmpeg side of things -- so technically none of this is even related to copyparty itself in the first place... ah whatever
|
||||
|
||||
man I just wanna write software, I hate this
|
||||
|
||||
pain peko
|
||||
|
|
@ -1,88 +1,3 @@
|
|||
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
|
||||
# 2026-0225-0834 `v1.20.9` SECURITY: XSS fix
|
||||
|
||||
## ⚠️ ATTN: this release fixes an XSS vulnerability
|
||||
|
||||
[GHSA-62cr-6wp5-q43h](https://github.com/9001/copyparty/security/advisories/GHSA-62cr-6wp5-q43h) could let an attacker execute arbitrary JS by tricking you into clicking a malicious link 31b2801f
|
||||
|
||||
## 🔧 other changes
|
||||
|
||||
* webdav: [dav-port](https://copyparty.eu/cli/#g-dav-port) can be used as an alternative to [daw](https://copyparty.eu/cli/#g-daw) d21242fc
|
||||
|
||||
|
||||
|
||||
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
|
||||
# 2026-0222-1507 `v1.20.8` no265
|
||||
|
||||
## 🧪 new features
|
||||
|
||||
* #1298 add Hungarian translation (thx @sonacl!) eefb181b f37c3b96
|
||||
* #1299 chown now accepts 4-digit values (thx @new-sashok724!) 5a7504fd
|
||||
|
||||
## 🩹 bugfixes
|
||||
|
||||
* audioplayer skip-silence:
|
||||
* #1303 clamp ffwd to safe values (thx @icxes!) f5e70c7f
|
||||
* fix crash on folderchange f1a433a6
|
||||
|
||||
## 🔧 other changes
|
||||
|
||||
* due to [legal reasons](https://github.com/9001/copyparty/blob/hovudstraum/docs/bad-codecs.md), the [docker-images](https://github.com/9001/copyparty/blob/hovudstraum/scripts/docker) and [bootable flashdrive](https://a.ocv.me/pub/stuff/edcd001/enterprise-edition/) are now unable to create thumbnails of HEVC/h265 videos and heif/heic images 1bec91d1
|
||||
* this primarily means photos/videos taken with iphones (and maybe some samsung phones)
|
||||
* on the bright side, this has made the docker-images much smaller; `ac` is now half the size it used to be, and `iv` / `dj` are each 97 MiB smaller
|
||||
|
||||
## 🌠 fun facts
|
||||
|
||||
* if you wanna see your car doing its best impression of a frictionless spherical cow, I can warmly (heh) recommend the icy snowcoated countryroads of viken this weekend
|
||||
* goes oddly well with [sakuraburst - deconstructing nature](https://www.youtube.com/watch?v=MJjO-pwYpJg)
|
||||
|
||||
|
||||
|
||||
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
|
||||
# 2026-0214-2315 `v1.20.7` fika
|
||||
|
||||
## 🧪 new features
|
||||
|
||||
* now possible to upload/delete files while the filesystem-indexer is still busy d44ea245 0ca4c1bd
|
||||
* global-option [fika](https://copyparty.eu/cli/#g-fika) decides which actions to allow while still indexing; default is upload+copy+delete
|
||||
* full deduplication is only guaranteed if this option is set blank, as dupes are allowed while indexing
|
||||
* #1266 browsers can request thumbnails as jxl images, and view jxl files in the gallery (thx @intelfx!) b2711e05 720c83b2 93ffc65c a65a30b1 a7a25deb 59de5e2c 16403d8c 48c10178 0e8913c2
|
||||
* only works in browsers which support jxl, which is FINALLY happening ([sure took a while](https://issues.chromium.org/issues/40168998))
|
||||
* some notes on memory/RAM usage though -- it is fine on Alpine Linux, so docker is also fine, just don't enable mimalloc
|
||||
* jxl can be disabled with global-option [th-no-jxl](https://copyparty.eu/cli/#g-th-no-jxl) if necessary on baremetal deployments until libvips fixes this
|
||||
* #1265 audioplayer can "skip silence" now (thx @icxes!) 66949989
|
||||
* #1287 opensearch support for opds (thx @philips!) 84e687a0
|
||||
* #1276 option [rw-edit](https://copyparty.eu/cli/#g-rw-edit) is the list of file-extensions that can be edited as textfiles with only permissions read+write (default is `md` like before); all other files still require read+write+delete 312f48e1 d6928380
|
||||
* #1288 option to customize the links copied when selecting files and pressing ctrl-c (thx @icxes!) e5d0a057
|
||||
* docker: add env-var [DI_PREPARTY](https://github.com/9001/copyparty/blob/hovudstraum/scripts/docker/devnotes.md#modding-on-the-fly) to run an arbitrary script during startup, for customizations and such bf01ca48
|
||||
|
||||
## 🩹 bugfixes
|
||||
|
||||
* #1279 the textfile-viewer would refuse to load huge documents when hotlinked f02e9cf6
|
||||
* #1280 the custom rightclick-menu was enabled in the textfile viewer fc8a4b8e
|
||||
* #1262 logtail now works on windows; would previously take an exclusive-lock on the monitored file, as windows does by default a368fc66
|
||||
|
||||
## 🔧 other changes
|
||||
|
||||
* volumes are hidden from the treeview if the name starts with a dot 76041fdb
|
||||
* #1277 `descript.ion` files no longer require the `e2d` and `e2t` options to be enabled 4cb4e820
|
||||
* chunked PUT-uploads are now terminated if they exceed a configured size limit dfadb5a7
|
||||
* #1282 improved compatibility with GraalPy (thx @vgskye!) e8609b87
|
||||
* #1292 #1296 updated Esperanto translation (thx @slashdevslashurandom!) 418bf2f9 914f84ce
|
||||
* thumbnails: use libvips as fallback for rawpy 27ae2e1e
|
||||
* libvips doesn't support .arw files (sony) yet, so still need rawpy
|
||||
* make server config slightly easier:
|
||||
* improve xff warnings 96aeb898
|
||||
* warn if config-values are quoted 598df44e
|
||||
* lowercase headernames in configs fd096385
|
||||
|
||||
## 🌠 fun facts
|
||||
|
||||
* the `fika` option sends the filesystem-indexer on [a coffee break](https://en.wikipedia.org/wiki/Coffee_in_Sweden#Fika)
|
||||
* exci wants me to mention aoi yuuki here for some reason :^) so here's [gekisou gungnir](https://www.youtube.com/watch?v=feeFscLH6QE)
|
||||
|
||||
|
||||
|
||||
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
|
||||
# 2026-0131-2001 `v1.20.6` one safeguard too many
|
||||
|
||||
|
|
|
|||
|
|
@ -164,7 +164,7 @@
|
|||
# 📂 also available as volflag "chmod_f"
|
||||
chmod-f: 644 # hint; default is unset
|
||||
|
||||
# unix file permissions to use when creating directories; see --help-chmod. Examples: [755] = owner-RW + all-R, [2750] = owner-RW + group-R + setgid, [777] = full-yolo
|
||||
# unix file permissions to use when creating directories; see --help-chmod. Examples: [755] = owner-RW + all-R, [777] = full-yolo
|
||||
# 📂 also available as volflag "chmod_d"
|
||||
chmod-d: 755 # default
|
||||
|
||||
|
|
|
|||
|
|
@ -10,9 +10,11 @@ ENV XDG_CONFIG_HOME=/cfg
|
|||
RUN apk --no-cache add !pyc \
|
||||
tzdata wget mimalloc2 mimalloc2-insecure \
|
||||
py3-jinja2 py3-argon2-cffi py3-pyzmq \
|
||||
py3-openssl py3-paramiko py3-pillow
|
||||
py3-openssl py3-paramiko py3-pillow \
|
||||
ffmpeg
|
||||
|
||||
COPY i innvikler.sh ./
|
||||
COPY i/dist/copyparty-sfx.py innvikler.sh ./
|
||||
ADD base ./base
|
||||
RUN ash innvikler.sh ac
|
||||
|
||||
WORKDIR /state
|
||||
|
|
|
|||
|
|
@ -15,15 +15,15 @@ RUN apk add -U !pyc \
|
|||
py3-jinja2 py3-argon2-cffi py3-pyzmq \
|
||||
py3-openssl py3-paramiko py3-pillow \
|
||||
py3-pip py3-cffi \
|
||||
ffmpeg \
|
||||
py3-magic \
|
||||
vips-jxl vips-poppler vips-magick \
|
||||
vips-jxl vips-heif vips-poppler vips-magick \
|
||||
py3-numpy fftw libsndfile \
|
||||
vamp-sdk vamp-sdk-libs keyfinder-cli \
|
||||
libraw py3-numpy \
|
||||
&& apk add -t .bd \
|
||||
bash wget gcc g++ make cmake patchelf \
|
||||
ffmpeg ffmpeg-dev \
|
||||
python3-dev fftw-dev libsndfile-dev \
|
||||
python3-dev ffmpeg-dev fftw-dev libsndfile-dev \
|
||||
py3-wheel py3-numpy-dev libffi-dev \
|
||||
vamp-sdk-dev \
|
||||
libraw-dev py3-numpy-dev cython \
|
||||
|
|
@ -35,7 +35,8 @@ RUN apk add -U !pyc \
|
|||
&& chmod 777 /root \
|
||||
&& ln -s /root/vamp /root/.local /
|
||||
|
||||
COPY i innvikler.sh ./
|
||||
COPY i/dist/copyparty-sfx.py innvikler.sh ./
|
||||
ADD base ./base
|
||||
RUN ash innvikler.sh dj
|
||||
|
||||
WORKDIR /state
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@ RUN apk --no-cache add !pyc \
|
|||
py3-jinja2 py3-argon2-cffi \
|
||||
py3-openssl py3-paramiko py3-pillow py3-mutagen
|
||||
|
||||
COPY i innvikler.sh ./
|
||||
COPY i/dist/copyparty-sfx.py innvikler.sh ./
|
||||
ADD base ./base
|
||||
RUN ash innvikler.sh im
|
||||
|
||||
WORKDIR /state
|
||||
|
|
|
|||
|
|
@ -12,8 +12,9 @@ RUN apk add -U !pyc \
|
|||
py3-jinja2 py3-argon2-cffi py3-pyzmq \
|
||||
py3-openssl py3-paramiko py3-pillow \
|
||||
py3-pip py3-cffi \
|
||||
ffmpeg \
|
||||
py3-magic \
|
||||
vips-jxl vips-poppler vips-magick \
|
||||
vips-jxl vips-heif vips-poppler vips-magick \
|
||||
libraw py3-numpy \
|
||||
&& apk add -t .bd \
|
||||
bash wget gcc g++ make cmake patchelf \
|
||||
|
|
@ -24,7 +25,8 @@ RUN apk add -U !pyc \
|
|||
&& python3 -m pip install "$(wget -O- https://api.github.com/repos/letmaik/rawpy/releases/latest | awk -F\" '$2=="tarball_url"{print$4}')" \
|
||||
&& apk del py3-pip .bd
|
||||
|
||||
COPY i innvikler.sh ./
|
||||
COPY i/dist/copyparty-sfx.py innvikler.sh ./
|
||||
ADD base ./base
|
||||
RUN ash innvikler.sh iv
|
||||
|
||||
WORKDIR /state
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ ENV XDG_CONFIG_HOME=/cfg
|
|||
RUN apk --no-cache add !pyc \
|
||||
py3-jinja2
|
||||
|
||||
COPY i innvikler.sh ./
|
||||
COPY i/dist/copyparty-sfx.py innvikler.sh ./
|
||||
RUN ash innvikler.sh min
|
||||
|
||||
WORKDIR /state
|
||||
|
|
|
|||
|
|
@ -2,7 +2,4 @@ FROM alpine:latest
|
|||
WORKDIR /z
|
||||
|
||||
RUN apk add py3-pip make gcc musl-dev python3-dev
|
||||
|
||||
RUN pip wheel https://files.pythonhosted.org/packages/46/7d/901c6e333fb031b5bfbd1532099200cf859f12aa83689be494eade6685ec/zlib_ng-1.0.0.tar.gz \
|
||||
&& mkdir whl \
|
||||
&& mv *.whl whl
|
||||
RUN pip wheel https://files.pythonhosted.org/packages/c4/a7/0b7673be5945071e99364a3ac1987b02fc1d416617e97f3e8816d275174e/zlib_ng-0.5.1.tar.gz
|
||||
|
|
|
|||
|
|
@ -1,26 +1,14 @@
|
|||
self := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
|
||||
|
||||
|
||||
all:
|
||||
# build all outdated
|
||||
bash verchk.sh
|
||||
|
||||
|
||||
ff:
|
||||
# legally comfy
|
||||
/usr/bin/time ./build-no265.sh img
|
||||
|
||||
|
||||
zlib:
|
||||
# build zlib-ng from source so we know how the sausage was made
|
||||
# (still only doing the archs which are officially supported/tested)
|
||||
|
||||
podman build --arch amd64 -t localhost/cpp-zlibng-amd64:latest -f Dockerfile.zlibng .
|
||||
podman run --arch amd64 --rm --log-driver=none -i localhost/cpp-zlibng-amd64:latest tar -cC/z whl | tar -xv
|
||||
podman run --arch amd64 --rm --log-driver=none -i localhost/cpp-zlibng-amd64:latest tar -cC/z . | tar -xv
|
||||
|
||||
podman build --arch arm64 -t localhost/cpp-zlibng-amd64:latest -f Dockerfile.zlibng .
|
||||
podman run --arch arm64 --rm --log-driver=none -i localhost/cpp-zlibng-amd64:latest tar -cC/z whl | tar -xv
|
||||
|
||||
podman run --arch arm64 --rm --log-driver=none -i localhost/cpp-zlibng-amd64:latest tar -cC/z . | tar -xv
|
||||
|
||||
sh:
|
||||
@printf "\n\033[1;31mopening a shell in the most recently created docker image\033[0m\n"
|
||||
|
|
|
|||
|
|
@ -1,65 +0,0 @@
|
|||
#!/bin/ash
|
||||
set -e
|
||||
|
||||
[ $1 = 1 ] && hub=1
|
||||
|
||||
uname -a
|
||||
apk add alpine-sdk doas wget
|
||||
echo permit nopass root > /etc/doas.d/u.conf
|
||||
cp -pv /root/.abuild/*.pub /etc/apk/keys/ || abuild-keygen -ina
|
||||
|
||||
##
|
||||
## yeet h265
|
||||
|
||||
mkdir /ffmpeg
|
||||
cd /ffmpeg
|
||||
base=https://github.com/alpinelinux/aports/raw/refs/heads/3.23-stable/community/ffmpeg/
|
||||
wget ${base}APKBUILD
|
||||
awk <APKBUILD -vb="$base" '/"/{o=0}/^source=/{o=1;next}o{print b $1}' | wget -i-
|
||||
cp -pv APKBUILD /root/
|
||||
|
||||
# grep -E '^extern const.* FF[^ ]+ +ff_(hevc|vvc)_' libavcodec/allcodecs.c libavcodec/hwaccels.h libavcodec/bitstream_filters.c libavcodec/parsers.c libavformat/allformats.c | sed -r 's/.* ff_([^/;]*)_([^/;]*);.*/--disable-\2=\1/' | tr '\n' ' '
|
||||
sed -ri 's/--enable-libx265/--disable-decoder=hevc --disable-decoder=hevc_qsv --disable-decoder=hevc_rkmpp --disable-encoder=hevc_rkmpp --disable-decoder=hevc_v4l2m2m --disable-decoder=vvc --disable-encoder=hevc_amf --disable-decoder=hevc_amf --disable-decoder=hevc_cuvid --disable-encoder=hevc_d3d12va --disable-decoder=hevc_mediacodec --disable-encoder=hevc_mediacodec --disable-encoder=hevc_mf --disable-encoder=hevc_nvenc --disable-decoder=hevc_oh --disable-encoder=hevc_oh --disable-encoder=hevc_qsv --disable-encoder=hevc_v4l2m2m --disable-encoder=hevc_vaapi --disable-encoder=hevc_videotoolbox --disable-encoder=hevc_vulkan --disable-decoder=vvc_qsv --disable-hwaccel=hevc_d3d11va --disable-hwaccel=hevc_d3d11va2 --disable-hwaccel=hevc_d3d12va --disable-hwaccel=hevc_dxva2 --disable-hwaccel=hevc_nvdec --disable-hwaccel=hevc_vaapi --disable-hwaccel=hevc_vdpau --disable-hwaccel=hevc_videotoolbox --disable-hwaccel=hevc_vulkan --disable-hwaccel=vvc_vaapi --disable-bsf=hevc_metadata --disable-bsf=hevc_mp4toannexb --disable-bsf=vvc_metadata --disable-bsf=vvc_mp4toannexb --disable-parser=hevc --disable-parser=vvc --disable-demuxer=hevc --disable-muxer=hevc --disable-demuxer=vvc --disable-muxer=vvc /;s/\bx265-dev\b//' APKBUILD
|
||||
|
||||
##
|
||||
## yeet aac he/he+/ld (sbr/ps); keep lc only
|
||||
|
||||
cat >>APKBUILD <<'EOF'
|
||||
prepare() {
|
||||
default_prepare
|
||||
tar -cC/opt/patch/ffmpeg . | tar -x
|
||||
patch -p1 <aac-lc-only.patch
|
||||
}
|
||||
EOF
|
||||
|
||||
##
|
||||
## shrink-ray
|
||||
|
||||
sed -ri 's/--enable-lib(bluray|placebo|rav1e|shaderc)/--disable-lib\1/; s/--enable-(vdpau)/--disable-\1/; s/\b(rav1e|shaderc)-dev//; s/\blib(bluray|placebo|vdpau|xfixes)-dev\b//' APKBUILD
|
||||
# `- rm placebo+shaderc to drop spirv-tools (1.7 MiB apk)
|
||||
|
||||
sed -ri 's/--enable-libxcb/--disable-libxcb --disable-indev=xcbgrab --disable-ffplay --disable-encoder=opus /' APKBUILD
|
||||
sed -ri 's/\bffplay$//; s/\bsdl2-dev\b//' APKBUILD
|
||||
|
||||
##
|
||||
## golflympics; decode-only, super-specific for copyparty only
|
||||
|
||||
[ $hub ] || {
|
||||
sed -ri 's/--enable-(ladspa|lv2|vaapi|vulkan)/--disable-\1/' APKBUILD
|
||||
sed -ri 's/--enable-lib(aom|ass|drm|fontconfig|freetype|fribidi|harfbuzz|pulse|rist|srt|ssh|v4l2|vidstab|x264|xvid|zimg|vpl)/--disable-lib\1/' APKBUILD
|
||||
sed -ri 's/\b(v4l-utils|libvpx)-dev\b//' APKBUILD # (try to) drop v4l2_m2m, and use builtin vp8/vp9 instead of libvpx for decode
|
||||
sed -ri 's/(--disable-vulkan)/\1 --disable-devices --disable-hwaccels --disable-encoders --enable-encoder=flac --enable-encoder=libjxl --enable-encoder=libmp3lame --enable-encoder=libopus --enable-encoder=libwebp --enable-encoder=mjpeg --enable-encoder=pcm_s16le --enable-encoder=pcm_s16le_planar --enable-encoder=png --enable-encoder=rawvideo --enable-encoder=vnull --enable-encoder=wrapped_avframe --disable-muxers --enable-muxer=aiff --enable-muxer=apng --enable-muxer=caf --enable-muxer=ffmetadata --enable-muxer=fifo --enable-muxer=flac --enable-muxer=image2 --enable-muxer=image2pipe --enable-muxer=matroska --enable-muxer=matroska_audio --enable-muxer=mjpeg --enable-muxer=mp3 --enable-muxer=null --enable-muxer=opus --enable-muxer=pcm_s16le --enable-muxer=wav --enable-muxer=webm --enable-muxer=webp --enable-muxer=yuv4mpegpipe --disable-filters --enable-filter=anoisesrc --enable-filter=asplit --enable-filter=amerge --enable-filter=amix --enable-filter=aresample --enable-filter=crop --enable-filter=showspectrumpic --enable-filter=showwavespic --enable-filter=convolution --enable-filter=volume --enable-filter=compand --enable-filter=setsar --enable-filter=scale --disable-decoder=av1 --disable-hwaccel=v4l2_m2m --disable-decoder=h263_v4l2m2m --disable-decoder=h264_v4l2m2m --disable-decoder=mpeg1_v4l2m2m --disable-decoder=mpeg2_v4l2m2m --disable-decoder=mpeg4_v4l2m2m --disable-decoder=vc1_v4l2m2m --disable-decoder=vp8_v4l2m2m --disable-decoder=vp9_v4l2m2m --disable-decoder=subrip --disable-decoder=srt --disable-decoder=pgssub --disable-decoder=cc_dec --disable-decoder=dvdsub --disable-decoder=dvbsub --disable-decoder=ssa --disable-decoder=ass --disable-decoder=opus /' APKBUILD
|
||||
# `- s/av1/libdav1d/; s/libvorbis/vorbis/; s/opus/libopus/; libvorbis and mpg123 gets pulled in by openmpt
|
||||
}
|
||||
|
||||
p=/root/packages/$(abuild -A)
|
||||
rm -rf $p
|
||||
abuild -FrcK
|
||||
|
||||
mkdir $p/ex
|
||||
mv $p/ffmpeg-d* $p/ex # dbg,dev,doc
|
||||
cp -pv src/ffmpeg-*/ffbuild/config.log $p/
|
||||
|
||||
[ $hub ] && rm -rf $p.hub && mv $p $p.hub
|
||||
|
||||
cp -pv /root/.abuild/*.pub ~/packages/
|
||||
|
|
@ -1,99 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
[ $(id -u) -eq 0 ] && {
|
||||
echo dont root
|
||||
exit 1
|
||||
}
|
||||
self=$(cd -- "$(dirname "$BASH_SOURCE")"; pwd -P)
|
||||
cd "$self"
|
||||
|
||||
sarchs="386 amd64 arm/v7 arm64/v8 ppc64le s390x"
|
||||
archs="amd64 amd64 386 arm64 arm s390x ppc64le"
|
||||
|
||||
err=
|
||||
for x in awk jq podman python3 tar wget ; do
|
||||
command -v $x >/dev/null && continue
|
||||
err=1; echo ERROR: missing dependency: $x
|
||||
done
|
||||
[ $err ] && exit 1
|
||||
|
||||
for v in "$@"; do
|
||||
[ "$v" = pull ] && pull=1
|
||||
[ "$v" = img ] && img=1
|
||||
done
|
||||
|
||||
[ $# -gt 0 ] || {
|
||||
echo "need list of commands, for example: pull img"
|
||||
exit 1
|
||||
}
|
||||
|
||||
wt() {
|
||||
printf '\033]0;%s\033\\' "$*"
|
||||
[ -z "$TMUX" ] || tmux renamew "$*"
|
||||
}
|
||||
|
||||
[ $pull ] && {
|
||||
for a in $sarchs; do # arm/v6
|
||||
podman pull --arch=$a alpine:latest
|
||||
done
|
||||
|
||||
podman images --format "{{.ID}} {{.History}}" |
|
||||
awk '/library\/alpine/{print$1}' |
|
||||
while read id; do
|
||||
tag=alpine-$(podman inspect $id | jq -r '.[]|.Architecture' | tr / -)
|
||||
[ -e .tag-$tag ] && continue
|
||||
touch .tag-$tag
|
||||
echo tagging $tag
|
||||
podman untag $id
|
||||
podman tag $id $tag
|
||||
done
|
||||
rm .tag-*
|
||||
}
|
||||
|
||||
[ $img ] && {
|
||||
mkdir -p "$self/b"
|
||||
|
||||
# enable arm32 crossbuild from aarch64 (macbook or whatever)
|
||||
[ $(uname -m) = aarch64 ] && [ ! -e /proc/sys/fs/binfmt_misc/qemu-arm ] &&
|
||||
echo ":qemu-arm:M:0:\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-static:F" |
|
||||
sudo tee >/dev/null /proc/sys/fs/binfmt_misc/register
|
||||
|
||||
# kill abandoned builders
|
||||
ps aux | awk '/bin\/qemu-[^-]+-static/{print$2}' | xargs -r kill -9
|
||||
|
||||
n=0; set -x
|
||||
for a in $archs; do
|
||||
n=$((n+1)); wt "$n/$a"
|
||||
#[ $n -le 3 ] || continue
|
||||
touch b/t.$a.1.$(date +%s)
|
||||
|
||||
tar -c arbeidspakke.sh patch/ffmpeg |
|
||||
time nice podman run \
|
||||
--rm -i --pull=never -v "$self/b:/root:z" localhost/alpine-$a \
|
||||
/bin/ash -c "cd /opt;tar -x;/bin/ash ./arbeidspakke.sh $n $a" 2>&1 |
|
||||
tee b/log.$a
|
||||
|
||||
touch b/t.$a.2.$(date +%s)
|
||||
done
|
||||
wt -;wt ""
|
||||
}
|
||||
|
||||
echo ok
|
||||
|
||||
# just-no265
|
||||
# 4m18.77 x64
|
||||
# 4m22.81 386
|
||||
# 45m36.44 arm64
|
||||
# 34m31.22 ppc64le
|
||||
# 50m01.04 s390x
|
||||
|
||||
# golflympics
|
||||
# 4:09 x86_64-hub
|
||||
# 2:57 x86_64
|
||||
# 2:54 x86
|
||||
# 31:13 aarch64
|
||||
# 22:38 armv7
|
||||
# 32:17 s390x
|
||||
# 24:27 ppc64le
|
||||
# 2:00:35 summa summarum
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
remove all advanced aac features, leaving only aac-lc which is
|
||||
no longer patent-encumbered in any relevant parts of the world
|
||||
( and 99% of all aac files are lc-aac anyways so that's fine )
|
||||
|
||||
diff --git a/libavcodec/aac/aacdec.c b/libavcodec/aac/aacdec.c
|
||||
index b8d53036d4..054c46f84e 100644
|
||||
--- a/libavcodec/aac/aacdec.c
|
||||
+++ b/libavcodec/aac/aacdec.c
|
||||
@@ -880,9 +880,7 @@ static int decode_pce(AVCodecContext *avctx, MPEG4AudioConfig *m4ac,
|
||||
*/
|
||||
static int decode_ga_specific_config(AACDecContext *ac, AVCodecContext *avctx,
|
||||
- GetBitContext *gb,
|
||||
- int get_bit_alignment,
|
||||
- MPEG4AudioConfig *m4ac,
|
||||
- int channel_config)
|
||||
+ GetBitContext *gb, int get_bit_alignment, MPEG4AudioConfig *m4ac, int channel_config)
|
||||
{
|
||||
+ if (m4ac->sbr > 0) return AVERROR_DECODER_NOT_FOUND;
|
||||
int extension_flag, ret, ep_config, res_flags;
|
||||
uint8_t layout_map[MAX_ELEM_ID*4][3];
|
||||
@@ -961,8 +959,7 @@ static int decode_ga_specific_config(AACDecContext *ac, AVCodecContext *avctx,
|
||||
|
||||
static int decode_eld_specific_config(AACDecContext *ac, AVCodecContext *avctx,
|
||||
- GetBitContext *gb,
|
||||
- MPEG4AudioConfig *m4ac,
|
||||
- int channel_config)
|
||||
+ GetBitContext *gb, MPEG4AudioConfig *m4ac, int channel_config)
|
||||
{
|
||||
+ return AVERROR_DECODER_NOT_FOUND; // kill ELD support
|
||||
int ret, ep_config, res_flags;
|
||||
uint8_t layout_map[MAX_ELEM_ID*4][3];
|
||||
@@ -1070,5 +1067,4 @@ static int decode_audio_specific_config_gb(AACDecContext *ac,
|
||||
case AOT_AAC_LTP:
|
||||
case AOT_ER_AAC_LC:
|
||||
- case AOT_ER_AAC_LD:
|
||||
if ((ret = decode_ga_specific_config(ac, avctx, gb, get_bit_alignment,
|
||||
&oc->m4ac, m4ac->chan_config)) < 0)
|
||||
@@ -1948,4 +1944,5 @@ static int decode_extension_payload(AACDecContext *ac, GetBitContext *gb, int cn
|
||||
crc_flag++;
|
||||
case EXT_SBR_DATA:
|
||||
+ return res; // kill HE/SBR support
|
||||
if (!che) {
|
||||
av_log(ac->avctx, AV_LOG_ERROR, "SBR was found before the first channel element.\n");
|
||||
@@ -2087,4 +2084,5 @@ static void spectral_to_sample(AACDecContext *ac, int samples)
|
||||
}
|
||||
if (ac->oc[1].m4ac.sbr > 0) {
|
||||
+ exit(1); // kill HE/SBR support
|
||||
ac->proc.sbr_apply(ac, che, type,
|
||||
che->ch[0].output,
|
||||
diff --git a/libavcodec/aacsbr_template.c b/libavcodec/aacsbr_template.c
|
||||
index 31d2d844c4..b55f93752a 100644
|
||||
--- a/libavcodec/aacsbr_template.c
|
||||
+++ b/libavcodec/aacsbr_template.c
|
||||
@@ -639,4 +639,5 @@ static int read_sbr_grid(AACDecContext *ac, SpectralBandReplication *sbr,
|
||||
GetBitContext *gb, SBRData *ch_data)
|
||||
{
|
||||
+ exit(1); // kill SBR support
|
||||
int i;
|
||||
int bs_pointer = 0;
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
// just the signatures from the original file; all bodies/logic removed
|
||||
|
||||
#include <stdint.h>
|
||||
#include "libavutil/common.h"
|
||||
#include "libavutil/mathematics.h"
|
||||
#include "libavutil/mem_internal.h"
|
||||
#include "aacps.h"
|
||||
#if USE_FIXED
|
||||
#include "aacps_fixed_tablegen.h"
|
||||
#else
|
||||
#include "libavutil/internal.h"
|
||||
#include "aacps_tablegen.h"
|
||||
#endif /* USE_FIXED */
|
||||
|
||||
static void hybrid_analysis(PSDSPContext *dsp, INTFLOAT out[91][32][2],
|
||||
INTFLOAT in[5][44][2], INTFLOAT L[2][38][64],
|
||||
int is34, int len) {}
|
||||
|
||||
static void hybrid_synthesis(PSDSPContext *dsp, INTFLOAT out[2][38][64],
|
||||
INTFLOAT in[91][32][2], int is34, int len) {}
|
||||
|
||||
static void decorrelation(PSContext *ps, INTFLOAT (*out)[32][2], const INTFLOAT (*s)[32][2], int is34) {}
|
||||
|
||||
int AAC_RENAME(ff_ps_apply)(PSContext *ps, INTFLOAT L[2][38][64], INTFLOAT R[2][38][64], int top) { return 0; }
|
||||
|
||||
av_cold void AAC_RENAME(ff_ps_init)(void) {}
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
// just the signatures from the original file; all bodies/logic removed
|
||||
|
||||
#define USE_FIXED 0
|
||||
|
||||
#include "aac.h"
|
||||
#include "sbr.h"
|
||||
#include "aacsbr.h"
|
||||
#include "aacsbrdata.h"
|
||||
#include "aacps.h"
|
||||
#include "sbrdsp.h"
|
||||
#include "libavutil/internal.h"
|
||||
#include "libavutil/intfloat.h"
|
||||
#include "libavutil/libm.h"
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavutil/mem_internal.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include <float.h>
|
||||
#include <math.h>
|
||||
|
||||
static void aacsbr_func_ptr_init(AACSBRContext *c);
|
||||
|
||||
static void make_bands(int16_t* bands, int start, int stop, int num_bands) {}
|
||||
|
||||
static void sbr_dequant(SpectralBandReplication *sbr, int id_aac) {}
|
||||
|
||||
static void sbr_hf_inverse_filter(SBRDSPContext *dsp,
|
||||
float (*alpha0)[2], float (*alpha1)[2],
|
||||
const float X_low[32][40][2], int k0) {}
|
||||
|
||||
static void sbr_chirp(SpectralBandReplication *sbr, SBRData *ch_data) {}
|
||||
|
||||
static void sbr_gain_calc(SpectralBandReplication *sbr,
|
||||
SBRData *ch_data, const int e_a[2]) {}
|
||||
|
||||
static void sbr_hf_assemble(float Y1[38][64][2],
|
||||
const float X_high[64][40][2],
|
||||
SpectralBandReplication *sbr, SBRData *ch_data,
|
||||
const int e_a[2]) {}
|
||||
|
||||
#include "aacsbr_template.c"
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
// just the signatures from the original file; all bodies/logic removed
|
||||
|
||||
#define USE_FIXED 1
|
||||
|
||||
#include "aac.h"
|
||||
#include "sbr.h"
|
||||
#include "aacsbr.h"
|
||||
#include "aacsbrdata.h"
|
||||
#include "aacps.h"
|
||||
#include "sbrdsp.h"
|
||||
#include "libavutil/internal.h"
|
||||
#include "libavutil/libm.h"
|
||||
#include "libavutil/avassert.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include <float.h>
|
||||
#include <math.h>
|
||||
|
||||
static void aacsbr_func_ptr_init(AACSBRContext *c);
|
||||
static const int CONST_RECIP_LN2 = Q31(0.7);
|
||||
static const int CONST_076923 = Q31(0.7);
|
||||
|
||||
static const int fixed_log_table[] = {Q31(0)};
|
||||
|
||||
static int fixed_log(int x) {return 1;}
|
||||
|
||||
static void make_bands(int16_t* bands, int start, int stop, int num_bands) {}
|
||||
|
||||
static void sbr_dequant(SpectralBandReplication *sbr, int id_aac) {}
|
||||
|
||||
static void sbr_hf_inverse_filter(SBRDSPContext *dsp,
|
||||
int (*alpha0)[2], int (*alpha1)[2],
|
||||
const int X_low[32][40][2], int k0) {}
|
||||
|
||||
static void sbr_chirp(SpectralBandReplication *sbr, SBRData *ch_data) {}
|
||||
|
||||
static void sbr_gain_calc(SpectralBandReplication *sbr,
|
||||
SBRData *ch_data, const int e_a[2]) {}
|
||||
|
||||
static void sbr_hf_assemble(int Y1[38][64][2],
|
||||
const int X_high[64][40][2],
|
||||
SpectralBandReplication *sbr, SBRData *ch_data,
|
||||
const int e_a[2]) {}
|
||||
|
||||
#include "aacsbr_template.c"
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
// just the signatures from the original file; all bodies/logic removed
|
||||
|
||||
#ifndef AVCODEC_AACSBRDATA_H
|
||||
#define AVCODEC_AACSBRDATA_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "libavutil/mem_internal.h"
|
||||
#include "aac_defines.h"
|
||||
|
||||
static const int8_t sbr_offset[6][16] = {};
|
||||
|
||||
static const DECLARE_ALIGNED(32, INTFLOAT, sbr_qmf_window_ds)[320] = {};
|
||||
|
||||
static const DECLARE_ALIGNED(32, INTFLOAT, sbr_qmf_window_us)[640] = {};
|
||||
|
||||
#endif /* AVCODEC_AACSBRDATA_H */
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
v=3.23
|
||||
|
||||
mkdir -p cver
|
||||
rm -rf cver2
|
||||
mkdir cver2
|
||||
cd cver2
|
||||
curl \
|
||||
-Lo1 https://raw.githubusercontent.com/alpinelinux/aports/refs/heads/$v-stable/main/musl/APKBUILD \
|
||||
-Lo2 https://raw.githubusercontent.com/alpinelinux/aports/refs/heads/$v-stable/main/python3/APKBUILD \
|
||||
-Lo3 https://raw.githubusercontent.com/alpinelinux/aports/refs/heads/$v-stable/community/ffmpeg/APKBUILD \
|
||||
;
|
||||
|
||||
zlib= ff=
|
||||
cmp 1 ../cver/1 || zlib=1
|
||||
cmp 2 ../cver/2 || zlib=1
|
||||
cmp 3 ../cver/3 || ff=1
|
||||
echo zlib=$zlib ff=$ff
|
||||
|
||||
[ $zlib ] && { make zlib; cp -pv 1 2 ../cver/; }
|
||||
[ $ff ] && { make ff; cp -pv 3 ../cver/; }
|
||||
rm -rf cver2
|
||||
|
|
@ -14,29 +14,15 @@ ised() {
|
|||
tmv "$2"
|
||||
}
|
||||
|
||||
# use custom ffmpeg if relevant
|
||||
echo $1 | grep -qE 'ac|iv|dj' && (
|
||||
cp -pv /z/packages/*.pub /etc/apk/keys/
|
||||
cd /z/packages/$(cat /etc/apk/arch)
|
||||
apk add ./ffmpeg-*.apk
|
||||
cd /z/test-aac
|
||||
for f in *.m4a; do ffmpeg -v 0 -i $f ${f%.*}.flac || true; done
|
||||
ls -1 *.flac | tee /dev/stderr | tr '\n' ' ' | grep -qE '^(lc.flac *)?$' || {
|
||||
echo ERROR: incorrect aac decoder subset
|
||||
exit 1
|
||||
}
|
||||
)
|
||||
rm -rf /z/packages /z/test-aac
|
||||
|
||||
# use zlib-ng if available
|
||||
f=/z/whl/zlib_ng-0.5.1-cp312-cp312-linux_$(cat /etc/apk/arch).whl
|
||||
f=/z/base/zlib_ng-0.5.1-cp312-cp312-linux_$(cat /etc/apk/arch).whl
|
||||
[ "$1" != min ] && [ -e $f ] && {
|
||||
apk add -t .bd !pyc py3-pip
|
||||
rm -f /usr/lib/python3*/EXTERNALLY-MANAGED
|
||||
pip install $f
|
||||
apk del .bd
|
||||
}
|
||||
rm -rf /z/whl
|
||||
rm -rf /z/base
|
||||
|
||||
# cleanup for flavors with python build steps (dj/iv)
|
||||
rm -rf /var/cache/apk/* /root/.cache
|
||||
|
|
@ -84,11 +70,6 @@ rm -rf \
|
|||
/tmp/pe-* /z/copyparty-sfx.py \
|
||||
ensurepip pydoc_data turtle.py turtledemo lib2to3
|
||||
|
||||
cd /usr/lib/python3.*/site-packages
|
||||
rm -rf \
|
||||
numpy/*/tests \
|
||||
/usr/share/mime/packages/freedesktop.org.xml
|
||||
|
||||
cd /usr/lib/python3.*/site-packages/copyparty/
|
||||
rm stolen/surrogateescape.py
|
||||
iawk '/^[^ ]/{s=0}/^if not VENDORED:/{s=1}!s' qrkode.py
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
self=$(cd -- "$(dirname "$BASH_SOURCE")"; pwd -P)
|
||||
cd "$self"
|
||||
|
||||
[ $(id -u) -eq 0 ] && {
|
||||
echo dont root
|
||||
|
|
@ -80,20 +78,6 @@ filt=
|
|||
}
|
||||
|
||||
[ $img ] && {
|
||||
[ -e base/test-aac/lc.m4a ] || (
|
||||
echo building aac smoketest
|
||||
mkdir -p base/test-aac
|
||||
cd base/test-aac
|
||||
ffmpeg -nostdin -y -f lavfi -i sine -ac 2 -t 1 a.wav &&
|
||||
fdkaac -m 3 -o lc.m4a a.wav &&
|
||||
fdkaac -m 2 -p 5 -o he.m4a a.wav &&
|
||||
fdkaac -m 1 -p 29 -o he2.m4a a.wav &&
|
||||
fdkaac -m 3 -p 23 -o ld.m4a a.wav &&
|
||||
fdkaac -m 3 -p 39 -o eld.m4a a.wav ||
|
||||
echo "nevermind, failed to build test files, cannot verify aac decoding"
|
||||
rm -f a.wav
|
||||
)
|
||||
|
||||
fp=../../dist/copyparty-sfx.py
|
||||
[ -e $fp ] || {
|
||||
echo downloading copyparty-sfx.py ...
|
||||
|
|
@ -112,11 +96,7 @@ filt=
|
|||
# grab deps
|
||||
rm -rf i err
|
||||
mkdir i
|
||||
tar -cC "$self/base" whl test-aac \
|
||||
-C "$self/base/b" packages \
|
||||
-C "$self/../.." bin/mtag \
|
||||
-C dist copyparty-sfx.py \
|
||||
| tar -xvCi
|
||||
tar -cC../.. dist/copyparty-sfx.py bin/mtag | tar -xvCi
|
||||
|
||||
for i in $imgs; do
|
||||
podman rm copyparty-$i || true # old manifest
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ done
|
|||
|
||||
rm -rf contrib
|
||||
[ $fast ] && sed -ri s/573/10/ copyparty/web/Makefile
|
||||
(cd copyparty/web && make -j$(nproc) && rm Makefile*)
|
||||
(cd copyparty/web && make -j$(nproc) && rm Makefile)
|
||||
rm -f copyparty/web/deps/README.md
|
||||
|
||||
# build
|
||||
|
|
|
|||
|
|
@ -435,11 +435,7 @@ find -name py.typed -delete
|
|||
find -type f \( -name .DS_Store -or -name ._.DS_Store \) -delete
|
||||
find -type f -name ._\* | while IFS= read -r f; do cmp <(printf '\x00\x05\x16') <(head -c 3 -- "$f") && rm -fv -- "$f"; done
|
||||
|
||||
rm -f \
|
||||
copyparty/web/deps/*.full.* \
|
||||
copyparty/web/deps/README.md \
|
||||
copyparty/web/dbg-* \
|
||||
copyparty/web/Makefile*
|
||||
rm -f copyparty/web/deps/*.full.* copyparty/web/deps/README.md copyparty/web/dbg-* copyparty/web/Makefile
|
||||
|
||||
find copyparty | LC_ALL=C sort | sed -r 's/\.gz$//;s/$/,/' > have
|
||||
cat have | while IFS= read -r x; do
|
||||
|
|
@ -603,10 +599,6 @@ gzres() {
|
|||
np=$(nproc)
|
||||
echo "$pk #$np"
|
||||
|
||||
find copyparty/web/tl | grep '\.js$' | while IFS= read -r f; do
|
||||
/bin/sh ../copyparty/web/Makefile.s1 <"$f" >t; tmv "$f"
|
||||
done
|
||||
|
||||
while IFS=' ' read -r _ f; do
|
||||
while true; do
|
||||
na=$(ps auxwww | grep -F "$pk" | wc -l)
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ v=$1; shift
|
|||
printf '%s\n' "$v" | grep -qE '^[0-9\.]+$' || exit 1
|
||||
grep -E "(${v//./, })" ../copyparty/__version__.py || exit 1
|
||||
|
||||
make -C docker/base
|
||||
./make-sfx.sh nopk gz
|
||||
../dist/copyparty-sfx.py --version >/dev/null
|
||||
|
||||
|
|
|
|||
|
|
@ -122,7 +122,6 @@ copyparty/web/tl/epo.js,
|
|||
copyparty/web/tl/fin.js,
|
||||
copyparty/web/tl/fra.js,
|
||||
copyparty/web/tl/grc.js,
|
||||
copyparty/web/tl/hun.js,
|
||||
copyparty/web/tl/ita.js,
|
||||
copyparty/web/tl/jpn.js,
|
||||
copyparty/web/tl/kor.js,
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ from copyparty.httpcli import HttpCli
|
|||
from copyparty.u2idx import U2idx
|
||||
from copyparty.up2k import Up2k
|
||||
from tests import util as tu
|
||||
from tests.util import J2_ENV, Cfg
|
||||
from tests.util import Cfg
|
||||
|
||||
try:
|
||||
from typing import Optional
|
||||
|
|
@ -23,16 +23,15 @@ except:
|
|||
pass
|
||||
|
||||
|
||||
def hdr(query, uname, extra=""):
|
||||
h = "GET /%s HTTP/1.1\r\nPW: %s\r\nConnection: close\r\n%s\r\n"
|
||||
return (h % (query, uname, extra)).encode("utf-8")
|
||||
def hdr(query, uname):
|
||||
h = "GET /%s HTTP/1.1\r\nPW: %s\r\nConnection: close\r\n\r\n"
|
||||
return (h % (query, uname)).encode("utf-8")
|
||||
|
||||
|
||||
class TestDots(unittest.TestCase):
|
||||
def __init__(self, *a, **ka):
|
||||
super(TestDots, self).__init__(*a, **ka)
|
||||
self.is_dut = True
|
||||
self.j2_brw = None
|
||||
|
||||
def setUp(self):
|
||||
self.conn: Optional[tu.VHttpConn] = None
|
||||
|
|
@ -50,13 +49,6 @@ class TestDots(unittest.TestCase):
|
|||
self.conn = None
|
||||
self.conn = tu.VHttpConn(self.args, self.asrv, self.log, b"")
|
||||
|
||||
if not self.j2_brw:
|
||||
zs = os.path.dirname(__file__)
|
||||
with open("%s/../copyparty/web/browser.html" % (zs,), "rb") as f:
|
||||
zs = f.read().decode("utf-8")
|
||||
self.j2_brw = J2_ENV.from_string(zs)
|
||||
self.conn.hsrv.j2["browser"] = self.j2_brw
|
||||
|
||||
def test_dots(self):
|
||||
td = os.path.join(self.td, "vfs")
|
||||
os.mkdir(td)
|
||||
|
|
@ -158,10 +150,8 @@ class TestDots(unittest.TestCase):
|
|||
os.chdir(td)
|
||||
|
||||
vcfg = []
|
||||
zs = "dk dks=12 dky fk fka dk,fk dks=12:c,fk"
|
||||
for k2 in zs.split():
|
||||
k = k2.replace("=12", "").replace(":c,", ",")
|
||||
vcfg += ["{0}:{0}:r.,u1:g,u2:c,{1}".format(k, k2)]
|
||||
for k in "dk dks dky fk fka dk,fk dks,fk".split():
|
||||
vcfg += ["{0}:{0}:r.,u1:g,u2:c,{0}".format(k)]
|
||||
zs = "%s/s1/s2" % (k,)
|
||||
os.makedirs(zs)
|
||||
|
||||
|
|
@ -230,15 +220,6 @@ class TestDots(unittest.TestCase):
|
|||
zs = self.curl("dks/%s&ls" % (s1), "u2")[1]
|
||||
self.assertIn('"s2/?k=', zs)
|
||||
|
||||
# parent key should not exist in response
|
||||
self.assertNotIn(dk["dks"], zs)
|
||||
# and not in html either
|
||||
for ck in ("", "Cookie: js=y\r\n"):
|
||||
zb = hdr("dks/%s" % (s1), "u2", ck)
|
||||
zs = self.curl("", "", False, zb)[1]
|
||||
self.assertNotIn(dk["dks"], zs)
|
||||
self.assertIn('"s2/?k=', zs)
|
||||
|
||||
##
|
||||
## dks thumbs
|
||||
|
||||
|
|
@ -385,7 +366,7 @@ class TestDots(unittest.TestCase):
|
|||
zb = zs.encode("utf-8")
|
||||
hdr = "POST /%s HTTP/1.1\r\nPW: %s\r\nConnection: close\r\nContent-Type: multipart/form-data; boundary=XD\r\nContent-Length: %d\r\n\r\n"
|
||||
req = (hdr % (url, uname, len(zb))).encode("utf-8") + zb
|
||||
h, b = self.curl("", "", True, req)
|
||||
h, b = self.curl("/" + url, uname, True, req)
|
||||
tar = tarfile.open(fileobj=io.BytesIO(b), mode="r|").getnames()
|
||||
return " ".join(tar)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue