mirror of
https://github.com/Tzahi12345/YoutubeDL-Material.git
synced 2026-04-08 09:11:30 +03:00
Compare commits
15 Commits
ffmpeg-for
...
archive-co
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7447ca038a | ||
|
|
80b41af620 | ||
|
|
ab5d8dc5ca | ||
|
|
4b55c39f39 | ||
|
|
3ca296f195 | ||
|
|
d4fa640f0f | ||
|
|
427eecf214 | ||
|
|
4f54e408a5 | ||
|
|
9e481bbd5f | ||
|
|
78b29a76b8 | ||
|
|
0342d18f76 | ||
|
|
70754c580c | ||
|
|
df8f8070ca | ||
|
|
0b8ca31594 | ||
|
|
26988bd607 |
@@ -2742,7 +2742,7 @@ components:
|
||||
error:
|
||||
type: string
|
||||
schedule:
|
||||
type: object
|
||||
$ref: '#/components/schemas/Schedule'
|
||||
options:
|
||||
type: object
|
||||
Schedule:
|
||||
@@ -2877,6 +2877,7 @@ components:
|
||||
- sharing
|
||||
- advanced_download
|
||||
- downloads_manager
|
||||
- tasks_manager
|
||||
YesNo:
|
||||
type: string
|
||||
enum:
|
||||
|
||||
@@ -68,15 +68,7 @@ exports.initialize = function () {
|
||||
const setupRoles = async () => {
|
||||
const required_roles = {
|
||||
admin: {
|
||||
permissions: [
|
||||
'filemanager',
|
||||
'settings',
|
||||
'subscriptions',
|
||||
'sharing',
|
||||
'advanced_download',
|
||||
'downloads_manager',
|
||||
'tasks_manager'
|
||||
]
|
||||
permissions: consts.AVAILABLE_PERMISSIONS
|
||||
},
|
||||
user: {
|
||||
permissions: [
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
CMD="npm start"
|
||||
CMD="npm start && pm2 start"
|
||||
|
||||
# if the first arg starts with "-" pass it to program
|
||||
if [ "${1#-}" != "$1" ]; then
|
||||
|
||||
5
backend/package-lock.json
generated
5
backend/package-lock.json
generated
@@ -769,6 +769,11 @@
|
||||
"delayed-stream": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"command-exists": {
|
||||
"version": "1.2.9",
|
||||
"resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
|
||||
"integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w=="
|
||||
},
|
||||
"compress-commons": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz",
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
"async-mutex": "^0.4.0",
|
||||
"axios": "^0.21.2",
|
||||
"bcryptjs": "^2.4.0",
|
||||
"command-exists": "^1.2.9",
|
||||
"compression": "^1.7.4",
|
||||
"config": "^3.2.3",
|
||||
"express": "^4.18.2",
|
||||
|
||||
@@ -371,10 +371,13 @@ async function generateArgsForSubscription(sub, user_uid, redownload = false, de
|
||||
|
||||
// skip videos that are in the archive. otherwise sub download can be permanently slow (vs. just the first time)
|
||||
const archive_text = await archive_api.generateArchive(sub.type, sub.user_uid, sub.id);
|
||||
logger.verbose(`Generating temporary archive file for subscription ${sub.name} with ${archive_text.split('\n').length - 1} entries.`)
|
||||
const archive_path = path.join(appendedBasePath, 'archive.txt');
|
||||
await fs.writeFile(archive_path, archive_text);
|
||||
downloadConfig.push('--download-archive', archive_path);
|
||||
const archive_count = archive_text.split('\n').length - 1;
|
||||
if (archive_count > 0) {
|
||||
logger.verbose(`Generating temporary archive file for subscription ${sub.name} with ${archive_count} entries.`)
|
||||
const archive_path = path.join(appendedBasePath, 'archive.txt');
|
||||
await fs.writeFile(archive_path, archive_text);
|
||||
downloadConfig.push('--download-archive', archive_path);
|
||||
}
|
||||
|
||||
if (sub.custom_args) {
|
||||
const customArgsArray = sub.custom_args.split(',,');
|
||||
|
||||
@@ -6,6 +6,7 @@ const fs = require('fs-extra')
|
||||
const path = require('path');
|
||||
const { promisify } = require('util');
|
||||
const child_process = require('child_process');
|
||||
const commandExistsSync = require('command-exists').sync;
|
||||
|
||||
async function getCommentsForVOD(vodId) {
|
||||
const exec = promisify(child_process.exec);
|
||||
@@ -20,7 +21,7 @@ async function getCommentsForVOD(vodId) {
|
||||
const cliExt = is_windows ? '.exe' : ''
|
||||
const cliPath = `TwitchDownloaderCLI${cliExt}`
|
||||
|
||||
if (!fs.existsSync(cliPath)) {
|
||||
if (!commandExistsSync(cliPath)) {
|
||||
logger.error(`${cliPath} does not exist. Twitch chat download failed! Get it here: https://github.com/lay295/TwitchDownloader`);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
/* eslint-disable */
|
||||
|
||||
export type Config = {
|
||||
YoutubeDLMaterial: any;
|
||||
YoutubeDLMaterial: Record<string, any>;
|
||||
};
|
||||
@@ -26,5 +26,5 @@ export type Download = {
|
||||
user_uid?: string;
|
||||
sub_id?: string;
|
||||
sub_name?: string;
|
||||
prefetched_info?: any;
|
||||
prefetched_info?: Record<string, any>;
|
||||
};
|
||||
@@ -5,6 +5,6 @@
|
||||
export type GetFileFormatsResponse = {
|
||||
success: boolean;
|
||||
result: {
|
||||
formats?: Array<any>;
|
||||
formats?: Array<Record<string, any>>;
|
||||
};
|
||||
};
|
||||
@@ -6,5 +6,5 @@ import type { Subscription } from './Subscription';
|
||||
|
||||
export type GetSubscriptionResponse = {
|
||||
subscription: Subscription;
|
||||
files: Array<any>;
|
||||
files: Array<Record<string, any>>;
|
||||
};
|
||||
@@ -11,6 +11,6 @@ export type Notification = {
|
||||
user_uid?: string;
|
||||
action?: Array<NotificationAction>;
|
||||
read: boolean;
|
||||
data?: any;
|
||||
data?: Record<string, any>;
|
||||
timestamp: number;
|
||||
};
|
||||
@@ -15,5 +15,5 @@ export type Subscription = {
|
||||
timerange?: string;
|
||||
custom_args?: string;
|
||||
custom_output?: string;
|
||||
videos: Array<any>;
|
||||
videos: Array<Record<string, any>>;
|
||||
};
|
||||
@@ -2,6 +2,8 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
|
||||
import type { Schedule } from './Schedule';
|
||||
|
||||
export type Task = {
|
||||
key: string;
|
||||
title?: string;
|
||||
@@ -9,8 +11,8 @@ export type Task = {
|
||||
last_confirmed: number;
|
||||
running: boolean;
|
||||
confirming: boolean;
|
||||
data: any;
|
||||
data: Record<string, any>;
|
||||
error: string;
|
||||
schedule: any;
|
||||
options?: any;
|
||||
schedule: Schedule;
|
||||
options?: Record<string, any>;
|
||||
};
|
||||
@@ -10,5 +10,5 @@ export type UpdateFileRequest = {
|
||||
/**
|
||||
* Object with fields to update as keys and their new values
|
||||
*/
|
||||
change_obj: any;
|
||||
change_obj: Record<string, any>;
|
||||
};
|
||||
@@ -4,5 +4,5 @@
|
||||
|
||||
export type UpdateTaskDataRequest = {
|
||||
task_key: string;
|
||||
new_data: any;
|
||||
new_data: Record<string, any>;
|
||||
};
|
||||
@@ -4,5 +4,5 @@
|
||||
|
||||
export type UpdateTaskOptionsRequest = {
|
||||
task_key: string;
|
||||
new_options: any;
|
||||
new_options: Record<string, any>;
|
||||
};
|
||||
@@ -9,4 +9,5 @@ export enum UserPermission {
|
||||
SHARING = 'sharing',
|
||||
ADVANCED_DOWNLOAD = 'advanced_download',
|
||||
DOWNLOADS_MANAGER = 'downloads_manager',
|
||||
TASKS_MANAGER = 'tasks_manager',
|
||||
}
|
||||
@@ -84,8 +84,8 @@ export class AppComponent implements OnInit, AfterViewInit {
|
||||
this.postsService.open_create_default_admin_dialog.subscribe(open => {
|
||||
if (open) {
|
||||
const dialogRef = this.dialog.open(SetDefaultAdminDialogComponent);
|
||||
dialogRef.afterClosed().subscribe(success => {
|
||||
if (success) {
|
||||
dialogRef.afterClosed().subscribe(res => {
|
||||
if (!res || !res['user']) {
|
||||
if (this.router.url !== '/login') { this.router.navigate(['/login']); }
|
||||
} else {
|
||||
console.error('Failed to create default admin account. See logs for details.');
|
||||
|
||||
@@ -734,7 +734,7 @@ export class PostsService implements CanActivate {
|
||||
this.afterLogin(res['user'], res['token'], res['permissions'], res['available_permissions']);
|
||||
}
|
||||
}, err => {
|
||||
if (err.status === 401) {
|
||||
if (err === 'Unauthorized') {
|
||||
this.sendToLogin();
|
||||
this.token = null;
|
||||
this.resetHttpParams();
|
||||
|
||||
@@ -3916,6 +3916,24 @@
|
||||
<context context-type="linenumber">183</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="7cedb649779673568447b994463b2882c4e0436a" datatype="html">
|
||||
<source>Slack Webhook URL</source>
|
||||
<target state="translated">URL del webhook de Slack</target>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/settings/settings.component.html</context>
|
||||
<context context-type="linenumber">397</context>
|
||||
</context-group>
|
||||
<note priority="1" from="description">Slack Webhook URL</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="3264d82792954815be755b3da01e2625458711dc" datatype="html">
|
||||
<source>Discord Webhook URL</source>
|
||||
<target state="translated">URL del webhook de Discord</target>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/settings/settings.component.html</context>
|
||||
<context context-type="linenumber">390</context>
|
||||
</context-group>
|
||||
<note priority="1" from="description">Discord Webhook URL</note>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
@@ -3757,6 +3757,33 @@
|
||||
</context-group>
|
||||
<note priority="1" from="description">Select a version</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="2361a4f76caaa4574803fbcdca8b0a47c91cc7ed" datatype="html">
|
||||
<source>Task finished</source>
|
||||
<target state="translated">Zadanie zakończone</target>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/settings/settings.component.html</context>
|
||||
<context context-type="linenumber">377</context>
|
||||
</context-group>
|
||||
<note priority="1" from="description">Task finished</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="c5dc5fbcce45e9b1530e2a5c2baa8ebe722aef4c" datatype="html">
|
||||
<source>Download complete</source>
|
||||
<target state="translated">Pobieranie zakończone</target>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/settings/settings.component.html</context>
|
||||
<context context-type="linenumber">375</context>
|
||||
</context-group>
|
||||
<note priority="1" from="description">Download complete</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="3ffd9490f3a4c0b24021d25e1dc71fcfe5d39cd6" datatype="html">
|
||||
<source>Download error</source>
|
||||
<target state="translated">Błąd pobierania</target>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/settings/settings.component.html</context>
|
||||
<context context-type="linenumber">376</context>
|
||||
</context-group>
|
||||
<note priority="1" from="description">Download error</note>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
||||
Reference in New Issue
Block a user