mirror of
https://github.com/9001/copyparty.git
synced 2026-06-20 21:22:26 -06:00
Merge branch 'hovudstraum' of https://github.com/tilse/copyparty-uiV1.5 into hovudstraum
This commit is contained in:
commit
d5228f0c7a
|
|
@ -18,7 +18,7 @@
|
||||||
--btn-bg-a: rgba(128,128,128,0.15);
|
--btn-bg-a: rgba(128,128,128,0.15);
|
||||||
--btn-bg-a: color-mix(in oklab, var(--bg-max) 85%, var(--fg-max) 20%);
|
--btn-bg-a: color-mix(in oklab, var(--bg-max) 85%, var(--fg-max) 20%);
|
||||||
--btn-bg: rgba(128,128,128,0.15);
|
--btn-bg: rgba(128,128,128,0.15);
|
||||||
--btn-bg: linear-gradient(-5deg, color-mix(in oklab, var(--btn-bg-a) 40%, transparent), color-mix(in oklab, var(--btn-bg-a)70%, var(--a-gray)));
|
--btn-bg: color-mix(in oklab, var(--bg-u5), transparent);
|
||||||
--btn-h-fg: var(--a-hil);
|
--btn-h-fg: var(--a-hil);
|
||||||
--btn-h-bg: color-mix(in oklab, var(--a-gray) 45%, var(--bg-max));
|
--btn-h-bg: color-mix(in oklab, var(--a-gray) 45%, var(--bg-max));
|
||||||
--btn-1-fg: var(--bg);
|
--btn-1-fg: var(--bg);
|
||||||
|
|
@ -129,6 +129,7 @@ html.y {
|
||||||
html.b {
|
html.b {
|
||||||
--op-aa-sh: 0 0 .2em var(--bg-d3) inset;
|
--op-aa-sh: 0 0 .2em var(--bg-d3) inset;
|
||||||
|
|
||||||
|
--btn-bg: linear-gradient(-5deg, color-mix(in oklab, var(--btn-bg-a) 40%, transparent), color-mix(in oklab, var(--btn-bg-a)70%, var(--a-gray)));
|
||||||
--btn-bs: .1em .2em .1em var(--mp-sh);
|
--btn-bs: .1em .2em .1em var(--mp-sh);
|
||||||
}
|
}
|
||||||
html.bz {
|
html.bz {
|
||||||
|
|
@ -141,7 +142,6 @@ html.by {
|
||||||
html.a {
|
html.a {
|
||||||
--btn-bs: 0 .05em 0 var(--bg-d3) inset;
|
--btn-bs: 0 .05em 0 var(--bg-d3) inset;
|
||||||
--btn-1-bs: 0 .05em 0 var(--btn-1h-bg) inset;
|
--btn-1-bs: 0 .05em 0 var(--btn-1h-bg) inset;
|
||||||
--btn-bg: color-mix(in oklab, var(--bg-u5), transparent);
|
|
||||||
|
|
||||||
--tree-bg: var(--bg);
|
--tree-bg: var(--bg);
|
||||||
|
|
||||||
|
|
@ -1708,6 +1708,7 @@ html.b #mu_outer {
|
||||||
.opview.splitsub {
|
.opview.splitsub {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
#acc_cbopen:checked+span,
|
||||||
.opview.act {
|
.opview.act {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
@ -1815,6 +1816,9 @@ html.y #ops svg circle {
|
||||||
.pfp.placeholder {
|
.pfp.placeholder {
|
||||||
text-shadow: 1px 1px 0 var(--bg-half), 1px -1px 0 var(--bg-half), -1px -1px 0 var(--bg-half), -1px 1px 0 var(--bg-half);
|
text-shadow: 1px 1px 0 var(--bg-half), 1px -1px 0 var(--bg-half), -1px -1px 0 var(--bg-half), -1px 1px 0 var(--bg-half);
|
||||||
}
|
}
|
||||||
|
#op_acc:not(.act) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
.opbox {
|
.opbox {
|
||||||
padding: .5em;
|
padding: .5em;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
|
|
@ -2209,7 +2213,9 @@ html.b .btn {
|
||||||
min-height: 1.4em;
|
min-height: 1.4em;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
#docul a:hover,
|
#docul a:hover {
|
||||||
|
color: var(--btn-h-fg);
|
||||||
|
}
|
||||||
#tree .ntree a + a:hover {
|
#tree .ntree a + a:hover {
|
||||||
background: var(--btn-h-bg);
|
background: var(--btn-h-bg);
|
||||||
color: var(--btn-h-fg);
|
color: var(--btn-h-fg);
|
||||||
|
|
@ -2248,7 +2254,7 @@ html.b .btn {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
#files th:hover .cfg {
|
#files th:hover .cfg {
|
||||||
display: block;
|
display: none;
|
||||||
width: 1em;
|
width: 1em;
|
||||||
border-radius: var(--radius);
|
border-radius: var(--radius);
|
||||||
margin: -1.2em auto 0 auto;
|
margin: -1.2em auto 0 auto;
|
||||||
|
|
@ -2311,6 +2317,9 @@ html.b .btn {
|
||||||
#u2tdate {
|
#u2tdate {
|
||||||
opacity: .3;
|
opacity: .3;
|
||||||
}
|
}
|
||||||
|
.disabled {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
#up_quick.disabled {
|
#up_quick.disabled {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
@ -2504,10 +2513,16 @@ input[type="text"].invalid {
|
||||||
#docul li.bn {
|
#docul li.bn {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding: .5em;
|
padding: .5em;
|
||||||
|
white-space: normal;
|
||||||
}
|
}
|
||||||
#docul li.bn span {
|
#docul li.bn span {
|
||||||
font-weight: bold;
|
color: var(--fg-weak);
|
||||||
color: var(--fg-max);
|
vertical-align: center;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
#docul li a {
|
||||||
|
display: inline;
|
||||||
|
padding: 0 !important;
|
||||||
}
|
}
|
||||||
#doc.prism {
|
#doc.prism {
|
||||||
padding-left: 3em;
|
padding-left: 3em;
|
||||||
|
|
@ -3513,7 +3528,7 @@ details .setting {
|
||||||
details {
|
details {
|
||||||
border: var(--bg-u3) solid 1px;
|
border: var(--bg-u3) solid 1px;
|
||||||
border-radius: var(--radius);
|
border-radius: var(--radius);
|
||||||
margin: .3em 0;
|
margin: .3em;
|
||||||
}
|
}
|
||||||
details:not(.open) .setting {
|
details:not(.open) .setting {
|
||||||
display: none;
|
display: none;
|
||||||
|
|
@ -5059,7 +5074,7 @@ html.e #wtc {
|
||||||
padding: 1em;
|
padding: 1em;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
transition: width .05s;
|
transition: width .05s;
|
||||||
background: linear-gradient(to top, var(--bg-u2), transparent);
|
background: linear-gradient(to top, var(--bg-u2), color-mix(in oklab, var(--bg-u2) 80%, transparent), transparent);
|
||||||
}
|
}
|
||||||
.popup_button {
|
.popup_button {
|
||||||
border-radius: var(--radius);
|
border-radius: var(--radius);
|
||||||
|
|
@ -5081,6 +5096,9 @@ html.e #wtc {
|
||||||
margin-top: .3em;
|
margin-top: .3em;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
#opa_acc label {
|
||||||
|
cursor: pointer !important;
|
||||||
|
}
|
||||||
#ops input[type=submit],
|
#ops input[type=submit],
|
||||||
#ops #goh {
|
#ops #goh {
|
||||||
font-size: medium;
|
font-size: medium;
|
||||||
|
|
|
||||||
|
|
@ -37,18 +37,6 @@
|
||||||
<div id="spaceUsed_bar" style="width: {{ space_used_percent }}%;"></div>
|
<div id="spaceUsed_bar" style="width: {{ space_used_percent }}%;"></div>
|
||||||
<div id="spaceMax"></div>
|
<div id="spaceMax"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<span id="op_acc" class="opview popup under">
|
|
||||||
<div id="acc_button" class="tgl btn on">
|
|
||||||
<p id="acc_name"></p>
|
|
||||||
</div>
|
|
||||||
<div id="accessType" style="display: block;"></div>
|
|
||||||
<a href="{{ r }}/?h" id="goh" style="display: block;">control-panel</a>
|
|
||||||
<form id="flogout" style="display: block;" method="post" enctype="multipart/form-data">
|
|
||||||
<input type="hidden" name="act" value="logout" />
|
|
||||||
<input id="blogout" type="submit" />
|
|
||||||
</form>
|
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -68,17 +56,32 @@
|
||||||
|
|
||||||
<div id="actionsArea">
|
<div id="actionsArea">
|
||||||
<div id="ops">
|
<div id="ops">
|
||||||
<a href="#" id="opa_srch" data-perm="read" data-dep="idx" data-dest="search">🔎</a>
|
<a href="#" class="disabled" id="opa_srch" data-perm="read" data-dep="idx" data-dest="search">🔎</a>
|
||||||
<a href="#" id="opa_del" data-perm="write" data-dest="unpost">🧯</a>
|
<a href="#" class="disabled" id="opa_del" data-perm="write" data-dest="unpost">🧯</a>
|
||||||
<a href="#" id="opa_up" data-dest="up2k">🚀</a>
|
<a href="#" class="disabled" id="opa_up" data-dest="up2k">🚀</a>
|
||||||
<a href="#" id="opa_bup" data-perm="write" data-dest="bup">🎈</a>
|
<a href="#" class="disabled" id="opa_bup" data-perm="write" data-dest="bup">🎈</a>
|
||||||
<a href="#" id="opa_mkd" data-perm="write" data-dest="mkdir"><p class="overlay_plus">+</p>📂</a>
|
<a href="#" class="disabled" id="opa_mkd" data-perm="write" data-dest="mkdir"><p class="overlay_plus">+</p>📂</a>
|
||||||
<a href="#" id="opa_msg" data-dest="msg">📟</a>
|
<a href="#" class="disabled" id="opa_msg" data-dest="msg">📟</a>
|
||||||
<a href="#" id="opa_cfg" data-dest="cfg">⚙️</a>
|
<a href="#" class="disabled" id="opa_cfg" data-dest="cfg">⚙️</a>
|
||||||
<a href="#" id="opa_acc" data-dest="acc"><span id="acc_pfp" class="pfp">👤</span></a>
|
<a href="#" id="opa_acc" data-dest="acc">
|
||||||
<div id="opdesc"></div>
|
<label for="acc_cbopen" id="acc_pfp" class="pfp">👤</label>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<input type="checkbox" id="acc_cbopen" style="display: none;" />
|
||||||
|
<span id="op_acc" class="opview popup under">
|
||||||
|
<a id="acc_button" class="tgl btn on" href="{{ r }}/?h">
|
||||||
|
<p id="acc_name">Login</p>
|
||||||
|
</a>
|
||||||
|
<div id="accessType" style="display: block;">{{ srv_info }}</div>
|
||||||
|
<a href="{{ r }}/?h" id="goh" style="display: block;">control-panel</a>
|
||||||
|
<form id="flogout" style="display: block;" method="post" enctype="multipart/form-data">
|
||||||
|
<input type="hidden" name="act" value="logout" />
|
||||||
|
<input id="blogout" type="submit" />
|
||||||
|
</form>
|
||||||
|
</span>
|
||||||
|
<div id="opdesc"></div>
|
||||||
|
|
||||||
<div id="srchfolder_div">
|
<div id="srchfolder_div">
|
||||||
<input id="folder_search" type="text" />
|
<input id="folder_search" type="text" />
|
||||||
<span id="srch_quickopts" class="popup under">
|
<span id="srch_quickopts" class="popup under">
|
||||||
|
|
|
||||||
|
|
@ -1531,7 +1531,6 @@ ebi('rcm').innerHTML = (
|
||||||
ops[a].href = '#v=' + v;
|
ops[a].href = '#v=' + v;
|
||||||
}
|
}
|
||||||
|
|
||||||
ebi('opa_acc').appendChild(ebi('op_acc'));
|
|
||||||
ebi('op_acc').onclick = function (e){
|
ebi('op_acc').onclick = function (e){
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
};
|
};
|
||||||
|
|
@ -1663,6 +1662,10 @@ function goto(dest) {
|
||||||
|
|
||||||
window.onhashchange = function() {
|
window.onhashchange = function() {
|
||||||
console.log('hash change: ' + location.hash)
|
console.log('hash change: ' + location.hash)
|
||||||
|
// keep it clean
|
||||||
|
if(location.hash == '')
|
||||||
|
hist_replace(location.pathname + location.search);
|
||||||
|
|
||||||
var a_modal = QS('.modal.vis');
|
var a_modal = QS('.modal.vis');
|
||||||
if(location.hash.length <= 1 && a_modal){
|
if(location.hash.length <= 1 && a_modal){
|
||||||
modaltoggle(a_modal.id);
|
modaltoggle(a_modal.id);
|
||||||
|
|
@ -6187,6 +6190,10 @@ window.thegrid = (function () {
|
||||||
|
|
||||||
ebi('h_hidden').onclick = function () {
|
ebi('h_hidden').onclick = function () {
|
||||||
clmod(this.parentElement, 'open', 't');
|
clmod(this.parentElement, 'open', 't');
|
||||||
|
if(!clgot(this.parentElement, 'open') && filecols.picking){
|
||||||
|
filecols.unpick();
|
||||||
|
clmod(ebi('hcolsh'), 'on', r.picking)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var r = {
|
var r = {
|
||||||
|
|
@ -8987,18 +8994,20 @@ function apply_perms(res) {
|
||||||
ebi('acc_pfp').innerHTML = acct.substring(0, 1);
|
ebi('acc_pfp').innerHTML = acct.substring(0, 1);
|
||||||
ebi('accessType').innerHTML = '<span' + aclass + axs + L.access + '</span>';
|
ebi('accessType').innerHTML = '<span' + aclass + axs + L.access + '</span>';
|
||||||
ebi('blogout').value = L.logout;
|
ebi('blogout').value = L.logout;
|
||||||
ebi('acc_button').onclick = function(){};
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
ebi('blogout').style.display = 'none';
|
ebi('blogout').style.display = 'none';
|
||||||
ebi('acc_name').innerHTML = L.login;
|
ebi('acc_name').innerHTML = L.login;
|
||||||
ebi('acc_pfp').innerHTML = fun_tgl ? '👤' : 'acc';
|
ebi('acc_pfp').innerHTML = fun_tgl ? '👤' : 'acc';
|
||||||
ebi('acc_button').onclick = goHome;
|
|
||||||
}
|
}
|
||||||
clmod(ebi('acc_pfp'), 'placeholder', acct == '*');
|
clmod(ebi('acc_pfp'), 'placeholder', acct == '*');
|
||||||
|
|
||||||
var o = QSA('#ops>a[data-perm]');
|
var o = QSA('#ops>a');
|
||||||
for (var a = 0; a < o.length; a++) {
|
for (var a = 0; a < o.length; a++) {
|
||||||
|
if(!o[a].hasAttribute('data-perm')){
|
||||||
|
clmod(o[a], 'disabled', false);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
var display = '';
|
var display = '';
|
||||||
var enabled = true;
|
var enabled = true;
|
||||||
var needed = o[a].getAttribute('data-perm').split(' ');
|
var needed = o[a].getAttribute('data-perm').split(' ');
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,9 @@ a {
|
||||||
padding: .2em .6em;
|
padding: .2em .6em;
|
||||||
margin: 0 .3em;
|
margin: 0 .3em;
|
||||||
}
|
}
|
||||||
|
#lo{
|
||||||
|
padding: .35em .6em;
|
||||||
|
}
|
||||||
#lo:hover, #lo:focus-visible,
|
#lo:hover, #lo:focus-visible,
|
||||||
a:hover, a:focus-visible {
|
a:hover, a:focus-visible {
|
||||||
background: rgb(10, 134, 206);
|
background: rgb(10, 134, 206);
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,9 @@
|
||||||
--bg-d3: #0b0b0b;
|
--bg-d3: #0b0b0b;
|
||||||
|
|
||||||
--bgg: var(--bg);
|
--bgg: var(--bg);
|
||||||
|
|
||||||
|
background: var(--bg);
|
||||||
|
color: var(--fg);
|
||||||
}
|
}
|
||||||
html.y {
|
html.y {
|
||||||
color-scheme: light;
|
color-scheme: light;
|
||||||
|
|
|
||||||
|
|
@ -494,9 +494,13 @@ to get started, first `cd` into the `scripts` folder
|
||||||
* if you want to build a pypi package, now run `./make-pypi-release.sh d`
|
* if you want to build a pypi package, now run `./make-pypi-release.sh d`
|
||||||
|
|
||||||
* if you want to build a docker-image, you have two options:
|
* if you want to build a docker-image, you have two options:
|
||||||
* if you want to use podman to build all docker-images for all supported architectures, now run `(cd docker; ./make.sh hclean; ./make.sh hclean pull img)`
|
* if you want to use podman to build all docker-images for all supported architectures, now run `(cd docker; make -C base; ./make.sh hclean; ./make.sh hclean pull img)`
|
||||||
* if you want to use docker to build all docker-images for your native architecture, now run `sudo make -C docker`
|
* if you want to use docker to build just the `ac` docker-image for your native architecture, now run `sudo make -C docker`
|
||||||
|
* to use docker to build something other than `ac`, list the image variants you want; `sudo make -C docker min im ac iv dj`
|
||||||
* if you want to do something else, please take a look at `docker/make.sh` or `docker/Makefile` for inspiration
|
* if you want to do something else, please take a look at `docker/make.sh` or `docker/Makefile` for inspiration
|
||||||
|
* beware of the following:
|
||||||
|
* if you build with docker, you get the [stock alpine-provided ffmpeg](https://github.com/9001/copyparty/blob/hovudstraum/docs/bad-codecs.md), which makes the docker-image almost twice as big
|
||||||
|
* if you build with podman (make.sh) you get the copyparty-official legally-comfy custom ffmpeg, but the first build takes about 2-3 hours longer
|
||||||
|
|
||||||
* if you want to build the windows exe, first grab some snacks and a beer, [you'll need it](https://github.com/9001/copyparty/tree/hovudstraum/scripts/pyinstaller)
|
* if you want to build the windows exe, first grab some snacks and a beer, [you'll need it](https://github.com/9001/copyparty/tree/hovudstraum/scripts/pyinstaller)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,9 @@ LABEL org.opencontainers.image.url="https://github.com/9001/copyparty" \
|
||||||
org.opencontainers.image.title="copyparty-ac" \
|
org.opencontainers.image.title="copyparty-ac" \
|
||||||
org.opencontainers.image.description="copyparty with Pillow and FFmpeg (image/audio/video thumbnails, audio transcoding, media tags)"
|
org.opencontainers.image.description="copyparty with Pillow and FFmpeg (image/audio/video thumbnails, audio transcoding, media tags)"
|
||||||
ENV XDG_CONFIG_HOME=/cfg
|
ENV XDG_CONFIG_HOME=/cfg
|
||||||
|
ARG ADD_PKG=""
|
||||||
|
|
||||||
RUN apk --no-cache add !pyc \
|
RUN apk --no-cache add !pyc ${ADD_PKG} \
|
||||||
tzdata wget mimalloc2 mimalloc2-insecure \
|
tzdata wget mimalloc2 mimalloc2-insecure \
|
||||||
py3-jinja2 py3-argon2-cffi py3-pyzmq \
|
py3-jinja2 py3-argon2-cffi py3-pyzmq \
|
||||||
py3-openssl py3-paramiko py3-pillow
|
py3-openssl py3-paramiko py3-pillow
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,12 @@ LABEL org.opencontainers.image.url="https://github.com/9001/copyparty" \
|
||||||
org.opencontainers.image.title="copyparty-dj" \
|
org.opencontainers.image.title="copyparty-dj" \
|
||||||
org.opencontainers.image.description="copyparty with all optional dependencies, including musical key / bpm detection"
|
org.opencontainers.image.description="copyparty with all optional dependencies, including musical key / bpm detection"
|
||||||
ENV XDG_CONFIG_HOME=/cfg
|
ENV XDG_CONFIG_HOME=/cfg
|
||||||
|
ARG ADD_PKG=""
|
||||||
|
|
||||||
COPY i/bin/mtag/install-deps.sh ./
|
COPY i/bin/mtag/install-deps.sh ./
|
||||||
COPY i/bin/mtag/audio-bpm.py /mtag/
|
COPY i/bin/mtag/audio-bpm.py /mtag/
|
||||||
COPY i/bin/mtag/audio-key.py /mtag/
|
COPY i/bin/mtag/audio-key.py /mtag/
|
||||||
RUN apk add -U !pyc \
|
RUN apk add -U !pyc ${ADD_PKG} \
|
||||||
tzdata wget mimalloc2 mimalloc2-insecure \
|
tzdata wget mimalloc2 mimalloc2-insecure \
|
||||||
py3-jinja2 py3-argon2-cffi py3-pyzmq \
|
py3-jinja2 py3-argon2-cffi py3-pyzmq \
|
||||||
py3-openssl py3-paramiko py3-pillow \
|
py3-openssl py3-paramiko py3-pillow \
|
||||||
|
|
@ -29,7 +30,7 @@ RUN apk add -U !pyc \
|
||||||
libraw-dev py3-numpy-dev cython \
|
libraw-dev py3-numpy-dev cython \
|
||||||
&& rm -f /usr/lib/python3*/EXTERNALLY-MANAGED \
|
&& rm -f /usr/lib/python3*/EXTERNALLY-MANAGED \
|
||||||
&& python3 -m pip install pyvips \
|
&& python3 -m pip install pyvips \
|
||||||
&& python3 -m pip install "$(wget -O- https://api.github.com/repos/letmaik/rawpy/releases/latest | awk -F\" '$2=="tarball_url"{print$4}')" \
|
&& python3 -m pip install --no-binary rawpy rawpy \
|
||||||
&& bash install-deps.sh \
|
&& bash install-deps.sh \
|
||||||
&& apk del py3-pip .bd \
|
&& apk del py3-pip .bd \
|
||||||
&& chmod 777 /root \
|
&& chmod 777 /root \
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,9 @@ LABEL org.opencontainers.image.url="https://github.com/9001/copyparty" \
|
||||||
org.opencontainers.image.title="copyparty-im" \
|
org.opencontainers.image.title="copyparty-im" \
|
||||||
org.opencontainers.image.description="copyparty with Pillow and Mutagen (image thumbnails, media tags)"
|
org.opencontainers.image.description="copyparty with Pillow and Mutagen (image thumbnails, media tags)"
|
||||||
ENV XDG_CONFIG_HOME=/cfg
|
ENV XDG_CONFIG_HOME=/cfg
|
||||||
|
ARG ADD_PKG=""
|
||||||
|
|
||||||
RUN apk --no-cache add !pyc \
|
RUN apk --no-cache add !pyc ${ADD_PKG} \
|
||||||
tzdata wget mimalloc2 mimalloc2-insecure \
|
tzdata wget mimalloc2 mimalloc2-insecure \
|
||||||
py3-jinja2 py3-argon2-cffi \
|
py3-jinja2 py3-argon2-cffi \
|
||||||
py3-openssl py3-paramiko py3-pillow py3-mutagen
|
py3-openssl py3-paramiko py3-pillow py3-mutagen
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,9 @@ LABEL org.opencontainers.image.url="https://github.com/9001/copyparty" \
|
||||||
org.opencontainers.image.title="copyparty-iv" \
|
org.opencontainers.image.title="copyparty-iv" \
|
||||||
org.opencontainers.image.description="copyparty with Pillow, FFmpeg, libvips (image/audio/video thumbnails, audio transcoding, media tags)"
|
org.opencontainers.image.description="copyparty with Pillow, FFmpeg, libvips (image/audio/video thumbnails, audio transcoding, media tags)"
|
||||||
ENV XDG_CONFIG_HOME=/cfg
|
ENV XDG_CONFIG_HOME=/cfg
|
||||||
|
ARG ADD_PKG=""
|
||||||
|
|
||||||
RUN apk add -U !pyc \
|
RUN apk add -U !pyc ${ADD_PKG} \
|
||||||
tzdata wget mimalloc2 mimalloc2-insecure \
|
tzdata wget mimalloc2 mimalloc2-insecure \
|
||||||
py3-jinja2 py3-argon2-cffi py3-pyzmq \
|
py3-jinja2 py3-argon2-cffi py3-pyzmq \
|
||||||
py3-openssl py3-paramiko py3-pillow \
|
py3-openssl py3-paramiko py3-pillow \
|
||||||
|
|
@ -21,7 +22,7 @@ RUN apk add -U !pyc \
|
||||||
libraw-dev py3-numpy-dev cython \
|
libraw-dev py3-numpy-dev cython \
|
||||||
&& rm -f /usr/lib/python3*/EXTERNALLY-MANAGED \
|
&& rm -f /usr/lib/python3*/EXTERNALLY-MANAGED \
|
||||||
&& python3 -m pip install pyvips \
|
&& python3 -m pip install pyvips \
|
||||||
&& python3 -m pip install "$(wget -O- https://api.github.com/repos/letmaik/rawpy/releases/latest | awk -F\" '$2=="tarball_url"{print$4}')" \
|
&& python3 -m pip install --no-binary rawpy rawpy \
|
||||||
&& apk del py3-pip .bd
|
&& apk del py3-pip .bd
|
||||||
|
|
||||||
COPY i innvikler.sh ./
|
COPY i innvikler.sh ./
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,9 @@ LABEL org.opencontainers.image.url="https://github.com/9001/copyparty" \
|
||||||
org.opencontainers.image.title="copyparty-min" \
|
org.opencontainers.image.title="copyparty-min" \
|
||||||
org.opencontainers.image.description="just copyparty, no thumbnails / media tags / audio transcoding"
|
org.opencontainers.image.description="just copyparty, no thumbnails / media tags / audio transcoding"
|
||||||
ENV XDG_CONFIG_HOME=/cfg
|
ENV XDG_CONFIG_HOME=/cfg
|
||||||
|
ARG ADD_PKG=""
|
||||||
|
|
||||||
RUN apk --no-cache add !pyc \
|
RUN apk --no-cache add !pyc ${ADD_PKG} \
|
||||||
py3-jinja2
|
py3-jinja2
|
||||||
|
|
||||||
COPY i innvikler.sh ./
|
COPY i innvikler.sh ./
|
||||||
|
|
|
||||||
|
|
@ -1,57 +1,32 @@
|
||||||
self := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
|
self := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
|
||||||
|
|
||||||
all:
|
.PHONY: i min im ac iv dj clean hclean purge sh
|
||||||
-service docker start
|
|
||||||
-systemctl start docker
|
all: ac
|
||||||
|
|
||||||
|
i:
|
||||||
rm -rf i
|
rm -rf i
|
||||||
mkdir i
|
mkdir i
|
||||||
tar -cC../.. dist/copyparty-sfx.py bin/mtag | tar -xvCi
|
tar -cC../../dist copyparty-sfx.py | tar -xvCi
|
||||||
|
tar -cC../.. bin/mtag | tar -xvCi
|
||||||
|
# # use stock ffmpeg because ./base/Makefile requires podman;
|
||||||
|
# # beware: https://github.com/9001/copyparty/blob/hovudstraum/docs/bad-codecs.md
|
||||||
|
touch i/stock_ffmpeg
|
||||||
|
|
||||||
|
min: i
|
||||||
docker build -t copyparty/min:latest -f Dockerfile.min .
|
docker build -t copyparty/min:latest -f Dockerfile.min .
|
||||||
echo 'scale=1;'`docker save copyparty/min:latest | pigz -c | wc -c`/1024/1024 | bc
|
|
||||||
|
|
||||||
# docker build -t copyparty/min-pip:latest -f Dockerfile.min.pip .
|
|
||||||
# echo 'scale=1;'`docker save copyparty/min-pip:latest | pigz -c | wc -c`/1024/1024 | bc
|
|
||||||
|
|
||||||
|
im: i
|
||||||
docker build -t copyparty/im:latest -f Dockerfile.im .
|
docker build -t copyparty/im:latest -f Dockerfile.im .
|
||||||
echo 'scale=1;'`docker save copyparty/im:latest | pigz -c | wc -c`/1024/1024 | bc
|
|
||||||
|
|
||||||
docker build -t copyparty/iv:latest -f Dockerfile.iv .
|
ac: i
|
||||||
echo 'scale=1;'`docker save copyparty/iv:latest | pigz -c | wc -c`/1024/1024 | bc
|
docker build -t copyparty/ac:latest -f Dockerfile.ac --build-arg ADD_PKG=ffmpeg .
|
||||||
|
|
||||||
docker build -t copyparty/ac:latest -f Dockerfile.ac .
|
iv: i
|
||||||
echo 'scale=1;'`docker save copyparty/ac:latest | pigz -c | wc -c`/1024/1024 | bc
|
docker build -t copyparty/iv:latest -f Dockerfile.iv --build-arg ADD_PKG=ffmpeg .
|
||||||
|
|
||||||
docker build -t copyparty/dj:latest -f Dockerfile.dj .
|
dj: i
|
||||||
echo 'scale=1;'`docker save copyparty/dj:latest | pigz -c | wc -c`/1024/1024 | bc
|
docker build -t copyparty/dj:latest -f Dockerfile.dj --build-arg ADD_PKG=ffmpeg .
|
||||||
|
|
||||||
docker image ls
|
|
||||||
|
|
||||||
min:
|
|
||||||
rm -rf i
|
|
||||||
mkdir i
|
|
||||||
tar -cC../.. dist/copyparty-sfx.py bin/mtag | tar -xvCi
|
|
||||||
|
|
||||||
podman build --squash --pull=always -t copyparty/min:latest -f Dockerfile.min .
|
|
||||||
echo 'scale=1;'`podman save copyparty/min:latest | pigz -c | wc -c`/1024/1024 | bc
|
|
||||||
|
|
||||||
push:
|
|
||||||
docker push copyparty/min
|
|
||||||
docker push copyparty/im
|
|
||||||
docker push copyparty/iv
|
|
||||||
docker push copyparty/ac
|
|
||||||
docker push copyparty/dj
|
|
||||||
docker image tag copyparty/min:latest ghcr.io/9001/copyparty-min:latest
|
|
||||||
docker image tag copyparty/im:latest ghcr.io/9001/copyparty-im:latest
|
|
||||||
docker image tag copyparty/iv:latest ghcr.io/9001/copyparty-iv:latest
|
|
||||||
docker image tag copyparty/ac:latest ghcr.io/9001/copyparty-ac:latest
|
|
||||||
docker image tag copyparty/dj:latest ghcr.io/9001/copyparty-dj:latest
|
|
||||||
docker push ghcr.io/9001/copyparty-min:latest
|
|
||||||
docker push ghcr.io/9001/copyparty-im:latest
|
|
||||||
docker push ghcr.io/9001/copyparty-iv:latest
|
|
||||||
docker push ghcr.io/9001/copyparty-ac:latest
|
|
||||||
docker push ghcr.io/9001/copyparty-dj:latest
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-docker kill `docker ps -q`
|
-docker kill `docker ps -q`
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ ised() {
|
||||||
}
|
}
|
||||||
|
|
||||||
# use custom ffmpeg if relevant
|
# use custom ffmpeg if relevant
|
||||||
echo $1 | grep -qE 'ac|iv|dj' && (
|
echo $1 | grep -qE 'ac|iv|dj' && [ ! -e "/z/stock_ffmpeg" ] && (
|
||||||
cp -pv /z/packages/*.pub /etc/apk/keys/
|
cp -pv /z/packages/*.pub /etc/apk/keys/
|
||||||
cd /z/packages/$(cat /etc/apk/arch)
|
cd /z/packages/$(cat /etc/apk/arch)
|
||||||
apk add ./ffmpeg-*.apk
|
apk add ./ffmpeg-*.apk
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue