mirror of
https://github.com/Tzahi12345/YoutubeDL-Material.git
synced 2026-03-19 03:00:57 +03:00
Changed location of db and config to one unified directory, 'appdata'
Archive files now get generated if nonexistent during deletions Simplified docker-compose.yml to not require environment variables. Added volume for appdata folder which will be automatically shipped with docker builds
This commit is contained in:
@@ -19,7 +19,7 @@ var subscriptions_api = require('./subscriptions')
|
||||
var app = express();
|
||||
|
||||
const FileSync = require('lowdb/adapters/FileSync')
|
||||
const adapter = new FileSync('db.json');
|
||||
const adapter = new FileSync('./appdata/db.json');
|
||||
const db = low(adapter)
|
||||
|
||||
// Set some defaults
|
||||
@@ -41,7 +41,6 @@ var usingEncryption = null;
|
||||
var basePath = null;
|
||||
var audioFolderPath = null;
|
||||
var videoFolderPath = null;
|
||||
var useYoutubeDLArchive = null;
|
||||
var downloadOnlyMode = null;
|
||||
var useDefaultDownloadingAgent = null;
|
||||
var customDownloadingAgent = null;
|
||||
@@ -140,7 +139,6 @@ async function loadConfig() {
|
||||
usingEncryption = config_api.getConfigItem('ytdl_use_encryption');
|
||||
audioFolderPath = config_api.getConfigItem('ytdl_audio_folder_path');
|
||||
videoFolderPath = config_api.getConfigItem('ytdl_video_folder_path');
|
||||
useYoutubeDLArchive = config_api.getConfigItem('ytdl_use_youtubedl_archive');
|
||||
downloadOnlyMode = config_api.getConfigItem('ytdl_download_only_mode');
|
||||
useDefaultDownloadingAgent = config_api.getConfigItem('ytdl_use_default_downloading_agent');
|
||||
customDownloadingAgent = config_api.getConfigItem('ytdl_custom_downloading_agent');
|
||||
@@ -414,6 +412,7 @@ async function deleteAudioFile(name, blacklistMode = false) {
|
||||
}
|
||||
}
|
||||
|
||||
let useYoutubeDLArchive = config_api.getConfigItem('ytdl_use_youtubedl_archive');
|
||||
if (useYoutubeDLArchive) {
|
||||
const archive_path = audioFolderPath + 'archive.txt';
|
||||
|
||||
@@ -424,8 +423,13 @@ async function deleteAudioFile(name, blacklistMode = false) {
|
||||
if (jsonobj) id = jsonobj.id;
|
||||
|
||||
// use subscriptions API to remove video from the archive file, and write it to the blacklist
|
||||
const line = id ? subscriptions_api.removeIDFromArchive(archive_path, id) : null;
|
||||
if (blacklistMode && line) writeToBlacklist('audio', line);
|
||||
if (fs.existsSync(archive_path)) {
|
||||
const line = id ? subscriptions_api.removeIDFromArchive(archive_path, id) : null;
|
||||
if (blacklistMode && line) writeToBlacklist('audio', line);
|
||||
} else {
|
||||
console.log('Could not find archive file for audio files. Creating...');
|
||||
fs.closeSync(fs.openSync(archive_path, 'w'));
|
||||
}
|
||||
}
|
||||
|
||||
if (jsonExists) fs.unlinkSync(jsonPath);
|
||||
@@ -466,6 +470,7 @@ async function deleteVideoFile(name, customPath = null, blacklistMode = false) {
|
||||
}
|
||||
}
|
||||
|
||||
let useYoutubeDLArchive = config_api.getConfigItem('ytdl_use_youtubedl_archive');
|
||||
if (useYoutubeDLArchive) {
|
||||
const archive_path = videoFolderPath + 'archive.txt';
|
||||
|
||||
@@ -476,8 +481,13 @@ async function deleteVideoFile(name, customPath = null, blacklistMode = false) {
|
||||
if (jsonobj) id = jsonobj.id;
|
||||
|
||||
// use subscriptions API to remove video from the archive file, and write it to the blacklist
|
||||
const line = id ? subscriptions_api.removeIDFromArchive(archive_path, id) : null;
|
||||
if (blacklistMode && line) writeToBlacklist('video', line);
|
||||
if (fs.existsSync(archive_path)) {
|
||||
const line = id ? subscriptions_api.removeIDFromArchive(archive_path, id) : null;
|
||||
if (blacklistMode && line) writeToBlacklist('video', line);
|
||||
} else {
|
||||
console.log('Could not find archive file for videos. Creating...');
|
||||
fs.closeSync(fs.openSync(archive_path, 'w'));
|
||||
}
|
||||
}
|
||||
|
||||
if (jsonExists) fs.unlinkSync(jsonPath);
|
||||
@@ -671,6 +681,7 @@ app.post('/api/tomp3', async function(req, res) {
|
||||
downloadConfig.splice(0, 0, '--external-downloader', customDownloadingAgent);
|
||||
}
|
||||
|
||||
let useYoutubeDLArchive = config_api.getConfigItem('ytdl_use_youtubedl_archive');
|
||||
if (useYoutubeDLArchive) {
|
||||
let archive_path = audioFolderPath + 'archive.txt';
|
||||
// create archive file if it doesn't exist
|
||||
@@ -795,6 +806,7 @@ app.post('/api/tomp4', async function(req, res) {
|
||||
downloadConfig.splice(0, 0, '--external-downloader', customDownloadingAgent);
|
||||
}
|
||||
|
||||
let useYoutubeDLArchive = config_api.getConfigItem('ytdl_use_youtubedl_archive');
|
||||
if (useYoutubeDLArchive) {
|
||||
let archive_path = videoFolderPath + 'archive.txt';
|
||||
// create archive file if it doesn't exist
|
||||
|
||||
@@ -3,7 +3,7 @@ const fs = require('fs');
|
||||
let CONFIG_ITEMS = require('./consts.js')['CONFIG_ITEMS'];
|
||||
const debugMode = process.env.YTDL_MODE === 'debug';
|
||||
|
||||
let configPath = debugMode ? '../src/assets/default.json' : 'config/default.json';
|
||||
let configPath = debugMode ? '../src/assets/default.json' : 'appdata/default.json';
|
||||
|
||||
// https://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key
|
||||
Object.byString = function(o, s) {
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
var config = require('config');
|
||||
|
||||
let CONFIG_ITEMS = {
|
||||
// Host
|
||||
'ytdl_url': {
|
||||
|
||||
@@ -8,7 +8,7 @@ var path = require('path');
|
||||
var youtubedl = require('youtube-dl');
|
||||
const config_api = require('./config');
|
||||
|
||||
const adapter = new FileSync('db.json');
|
||||
const adapter = new FileSync('./appdata/db.json');
|
||||
const db = low(adapter)
|
||||
|
||||
const debugMode = process.env.YTDL_MODE === 'debug';
|
||||
|
||||
@@ -4,35 +4,11 @@ services:
|
||||
ytdl_material:
|
||||
build: .
|
||||
environment:
|
||||
# config items
|
||||
ytdl_url: http://localhost:8998
|
||||
ytdl_port: '17442'
|
||||
ytdl_use_encryption: 'false'
|
||||
ytdl_cert_file_path: /etc/letsencrypt/live/example.com/fullchain.pem
|
||||
ytdl_key_file_path: /etc/letsencrypt/live/example.com/privkey.pem
|
||||
ytdl_audio_folder_path: audio/
|
||||
ytdl_video_folder_path: video/
|
||||
ytdl_custom_args: ''
|
||||
ytdl_title_top: Youtube Downloader
|
||||
ytdl_file_manager_enabled: 'true'
|
||||
ytdl_allow_quality_select: 'true'
|
||||
ytdl_download_only_mode: 'false'
|
||||
ytdl_allow_multi_download_mode: 'true'
|
||||
ytdl_use_youtube_api: 'false'
|
||||
ytdl_youtube_api_key: 'false'
|
||||
ytdl_default_theme: default
|
||||
ytdl_allow_theme_change: 'true'
|
||||
ytdl_allow_subscriptions: 'true'
|
||||
ytdl_subscriptions_base_path: subscriptions/
|
||||
ytdl_subscriptions_check_interval: '300'
|
||||
ytdl_subscriptions_use_youtubedl_archive: 'true'
|
||||
ytdl_use_default_downloading_agent: 'true'
|
||||
ytdl_custom_downloading_agent: 'false'
|
||||
ytdl_allow_advanced_download: 'false'
|
||||
# do not touch this
|
||||
write_ytdl_config: 'true'
|
||||
ALLOW_CONFIG_MUTATIONS: 'true'
|
||||
restart: always
|
||||
volumes:
|
||||
- ./appdata:/app/config
|
||||
ports:
|
||||
- "8998:17442"
|
||||
image: tzahi12345/youtubedl-material:3.4
|
||||
image: tzahi12345/youtubedl-material:experimental
|
||||
Reference in New Issue
Block a user