Compare commits

...

3 Commits

Author SHA1 Message Date
lamp 1987330aa7 update for ytdl ejs 2025-12-04 16:43:30 -08:00
lamp 5ba0447644 fix mediainfo 2025-08-31 12:41:47 -07:00
lamp 5b3181669d prefer ipv6 w/o force
can't force ipv6 because some sites like niconico don't have it, change to debian so that ula can be preferred
2025-08-31 01:48:37 -07:00
5 changed files with 77 additions and 8 deletions
+1
View File
@@ -1,3 +1,4 @@
.git
node_modules
downloads
metadata
+7 -6
View File
@@ -1,14 +1,15 @@
FROM alpine:3.20
RUN adduser -S ytdl
RUN apk add --no-cache nodejs npm python3 py3-pip ffmpeg mediainfo make g++
FROM node:20-bookworm
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
RUN useradd -r -m -s /bin/bash -u 369 ytdl
RUN apt update; apt install -y python3-pip ffmpeg mediainfo make g++ iproute2
ADD . /app
WORKDIR /app
RUN npm ci
ENV DOWNLOADS=/downloads
ENV META_DIR=/metadata
ADD ./gai.conf /etc/gai.conf
ENV DOWNLOADS=/downloads META_DIR=/metadata
RUN mkdir $DOWNLOADS $META_DIR; chown -R ytdl $DOWNLOADS $META_DIR
USER ytdl
ENV PATH="/home/ytdl/.local/bin:$PATH"
VOLUME $DOWNLOADS $META_DIR
EXPOSE 8080
CMD ["sh", "-c", "pip install --break-system-packages --upgrade yt-dlp; exec node ."]
CMD ["sh", "-c", "pip install --break-system-packages --upgrade yt-dlp[default]; exec node ."]
+67
View File
@@ -0,0 +1,67 @@
# prefer ipv6 ULA over ipv4 because docker uses NATed ULA
# Configuration for getaddrinfo(3).
#
# So far only configuration for the destination address sorting is needed.
# RFC 3484 governs the sorting. But the RFC also says that system
# administrators should be able to overwrite the defaults. This can be
# achieved here.
#
# All lines have an initial identifier specifying the option followed by
# up to two values. Information specified in this file replaces the
# default information. Complete absence of data of one kind causes the
# appropriate default information to be used. The supported commands include:
#
# reload <yes|no>
# If set to yes, each getaddrinfo(3) call will check whether this file
# changed and if necessary reload. This option should not really be
# used. There are possible runtime problems. The default is no.
#
# label <mask> <value>
# Add another rule to the RFC 3484 label table. See section 2.1 in
# RFC 3484. The default is:
#
label ::1/128 0
label ::/0 1
label 2002::/16 2
label ::/96 3
label ::ffff:0:0/96 4
#label fec0::/10 5
#label fc00::/7 6
#label 2001:0::/32 7
#
# This default differs from the tables given in RFC 3484 by handling
# (now obsolete) site-local IPv6 addresses and Unique Local Addresses.
# The reason for this difference is that these addresses are never
# NATed while IPv4 site-local addresses most probably are. Given # *NEVER* NATed huh? You CLUELESS FUCKING RETARDS
# the precedence of IPv6 over IPv4 (see below) on machines having only
# site-local IPv4 and IPv6 addresses a lookup for a global address would
# see the IPv6 be preferred. The result is a long delay because the
# site-local IPv6 addresses cannot be used while the IPv4 address is
# (at least for the foreseeable future) NATed. We also treat Teredo
# tunnels special.
#
# precedence <mask> <value>
# Add another rule to the RFC 3484 precedence table. See section 2.1
# and 10.3 in RFC 3484. The default is:
#
#precedence ::1/128 50
#precedence ::/0 40
#precedence 2002::/16 30
#precedence ::/96 20
#precedence ::ffff:0:0/96 10
#
# For sites which prefer IPv4 connections change the last line to
#
#precedence ::ffff:0:0/96 100
#
# scopev4 <mask> <value>
# Add another rule to the RFC 6724 scope table for IPv4 addresses.
# By default the scope IDs described in section 3.2 in RFC 6724 are
# used. Changing these defaults should hardly ever be necessary.
# The defaults are equivalent to:
#
#scopev4 ::ffff:169.254.0.0/112 2
#scopev4 ::ffff:127.0.0.0/104 2
#scopev4 ::ffff:0.0.0.0/96 14
+1 -1
View File
@@ -26,7 +26,7 @@ async function generateList() {
var metadata = {};
try {
metadata.duration = await getVideoLength(filepath);
} catch(error) {console.error(error.message)};
} catch(error) {console.error(error.stack)};
fs.writeFileSync(metapath, JSON.stringify(metadata));
}
+1 -1
View File
@@ -27,7 +27,7 @@ wss.on("connection", function(ws, req) {
} else next();
function next() {
var cp = makeCp("yt-dlp", ["--no-mtime", "--no-playlist", "-6", "--progress-delta", "1", url], {cwd: process.env.DOWNLOADS, shell: false});
var cp = makeCp("yt-dlp", ["--js-runtimes", "node", "--no-mtime", "--no-playlist", "--progress-delta", "1", url], {cwd: process.env.DOWNLOADS, shell: false});
cp.on("close", (code, signal) => {
uncacheList();
ws.close();