revert sqlite refactor
This commit is contained in:
2026-05-10 16:46:20 +02:00
parent 1411f11e7d
commit 051a8690eb
4 changed files with 17 additions and 77 deletions
-2
View File
@@ -1,2 +0,0 @@
db/
yt-downloader/
+5 -9
View File
@@ -1,15 +1,11 @@
FROM alpine:3.22.4 as base FROM alpine:3.22.4
USER root USER root
RUN apk upgrade --no-cache RUN apk upgrade --no-cache
RUN apk add --no-cache ffmpeg mutagen curl sqlite deno bash RUN apk add --no-cache ffmpeg mutagen curl
RUN curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /yt-dlp RUN curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /yt-dlp
RUN chmod a+rx /yt-dlp RUN chmod a+rx /yt-dlp
COPY . .
FROM base as downloader
COPY download.sh /download.sh
RUN mkdir /download RUN mkdir /download
RUN mkdir /music RUN mkdir /music
RUN touch /music/archive.dat RUN chmod +x download.sh
RUN mkdir /db CMD ["sh", "./download.sh"]
RUN chmod +x /download.sh
CMD ["bash", "/download.sh"]
+7 -10
View File
@@ -4,16 +4,13 @@ services:
image: yt-downloader image: yt-downloader
container_name: yt-downloader container_name: yt-downloader
volumes: volumes:
- ./music/:/music - ./yt-downloader/:/music
- ./db/:/db
# - ./download.sh:/download.sh
restart: "unless-stopped" restart: "unless-stopped"
environment: environment:
PLAYLIST_URL: "https://www.youtube.com/playlist?list=PL4QRSQmrCreF3dSp3RokdWmS50o0QNesJ" PLAYLIST_URL: "{}"
FILE_NAME_FORMAT: "%(title)s;%(uploader)s" FILE_NAME_FORMAT: "%(title)s;%(uploader)s"
DB: "/db/yt.db" #deploy:
deploy: #resources:
resources: #limits:
limits: #cpus: '0.005'
cpus: '0.005' #memory: 1000M
memory: 325M
+5 -56
View File
@@ -1,57 +1,6 @@
#!/bin/bash #!/bin/bash
#./yt-dlp -U apk update && apk upgrade
cp /music/archive.dat /download
TABLE="downloads" ./yt-dlp -U
CACHE="cache" ./yt-dlp -P "/download" --download-archive "/download/archive.dat" --sleep-interval 5 -x -o ${FILE_NAME_FORMAT} --add-metadata --embed-thumbnail --embed-chapters ${PLAYLIST_URL}
S_NEW=0 cp /download/* /music
S_DOWNLOADED=1
S_MISSING_FROM_PLAYLIST=2
S_DELETED=3
S_FAILED=4
#CREATE database
if [ ! -f "$DB" ]; then
echo "Database not found. Creating database"
sqlite3 "$DB" "CREATE TABLE $TABLE (id INTEGER PRIMARY KEY,yt_id varchar(20) UNIQUE, file_name TEXT, status INTEGER);"
sqlite3 "$DB" "CREATE TABLE $CACHE (id INTEGER PRIMARY KEY,yt_id varchar(20) UNIQUE);"
fi
#Clear Cache
sqlite3 "$DB" "DELETE FROM $CACHE ;"
#Fill Cache
./yt-dlp --get-id --flat-playlist "${PLAYLIST_URL}" | while read -r ID; do
#echo "Inserting video ID: $ID"
sqlite3 "$DB" "INSERT INTO $CACHE (yt_id) VALUES ('$ID');" 2>/dev/null
done
#Download music existing in cache but not in downloads table
sqlite3 -list -noheader "$DB" "SELECT yt_id FROM $CACHE" | while IFS='|' read -r ID; do
count=$(sqlite3 "$DB" "SELECT count(*) FROM $TABLE WHERE yt_id = '$ID' AND status = $S_DOWNLOADED")
if [ $count -eq 0 ];then
./yt-dlp -P "/download" --sleep-interval 5 -x -o ${FILE_NAME_FORMAT} --add-metadata --embed-thumbnail --embed-chapters $ID
name=$(./yt-dlp --get-filename -o ${FILE_NAME_FORMAT} $ID)
if [ $? -eq 0 ]; then
sqlite3 "$DB" "INSERT INTO $TABLE (yt_id,status,file_name) VALUES ('$ID', $S_DOWNLOADED,${name@Q});"
mv /download/* /music/
else
sqlite3 "$DB" "INSERT INTO $TABLE (yt_id,status,file_name) VALUES ('$ID', $S_FAILED,${name@Q});"
fi
fi
done
#Delete files existing in downloads but not in cache
sqlite3 -list -noheader "$DB" "SELECT $TABLE.file_name FROM $TABLE LEFT OUTER JOIN $CACHE ON $TABLE.yt_id = $CACHE.yt_id WHERE $CACHE.ID IS NULL AND $TABLE.status != '3' " | while IFS='|' read -r file_name; do
echo "DELETING FILE WITH NAME: ${file_name@Q}"
sqlite3 "$DB" "UPDATE $TABLE SET status = '$S_DELETED' where file_name=${file_name@Q};"
echo "/music/${file_name@Q}*"
rm "/music/${file_name@Q}"*
done
#cp /music/archive.dat /download
#./yt-dlp -U
#./yt-dlp -P "/download" --download-archive "/download/archive.dat" --sleep-interval 5 -x -o ${FILE_NAME_FORMAT} --add-metadata --embed-thumbnail --embed-chapters ${PLAYLIST_URL}
#cp /download/* /music