Skip to content

Commit

Permalink
merge main, resolve conflicts
Browse files Browse the repository at this point in the history
  • Loading branch information
whyboris committed Feb 19, 2023
2 parents 8cf4a1a + b1d6e26 commit 96b86a6
Show file tree
Hide file tree
Showing 115 changed files with 14,560 additions and 13,713 deletions.
23 changes: 23 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"root": true,
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint"],
"env": {
"node": true
},
"extends": [
"eslint:recommended",
"plugin:@angular-eslint/recommended",
"plugin:@typescript-eslint/recommended"
],
"rules": {
"@typescript-eslint/consistent-type-imports": "error",
"@typescript-eslint/no-unused-vars": [
"error",
{
"argsIgnorePattern": "_"
}
],
"@typescript-eslint/array-type": "error"
}
}
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
v18.12.1
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2021 Boris Yakubchik
Copyright (c) 2022 Boris Yakubchik

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,20 +42,20 @@ See [issues](https://github.com/whyboris/Video-Hub-App/issues) for what is in pr

How to start:

- `npm install` to install
- `npm install` to install (you may need to run `npm install --legacy-peer-deps` if install fails)
- `npm start` to develop
- `npm run electron` to build

Main dependencies in use:

| Library | Version | Date | Comment |
| ---------------- | --------- | --------------- | ------------------------------------------------- |
| Angular | v13.2.2 | Feb 2022 | |
| Angular-CLI | v13.2.2 | Feb 2022 | |
| Electron | v17.0.0 | Feb 2022 | (internally uses Node `v16.13.0` and Chromium 98) |
| Electron Builder | v22.14.13 | Feb 2022 | |
| Library | Version | Date | Comment |
| ---------------- | --------- | -------------- | ------- |
| Angular | v15.1.5 | Feb 2023 | |
| Angular-CLI | v15.1.6 | Feb 2023 | |
| Electron | v23.1.0 | Feb 2023 | (internally uses Node `v18.12.1` and Chromium 110) |
| Electron Builder | v23.6.0 | Feb 2023 | |

- **Node**: I recommend using the same version as _Electron_ uses internally, but any version 14 or above should work.
- **Node**: It may be best to use the same version as _Electron_ uses internally, but consider `v18.12.1`.

- **Angular CLI**: not required but may be useful: [Angular CLI](https://cli.angular.io).

Expand All @@ -78,8 +78,8 @@ This software would not be possible without the tremendous work by other people:
- [FFmpeg](https://www.ffmpeg.org/)
- [angular-electron](https://github.com/maximegris/angular-electron)
- [ngx-virtual-scroller](https://github.com/rintoj/ngx-virtual-scroller)
- [@ffmpeg-installer/ffmpeg](https://www.npmjs.com/package/@ffmpeg-installer/ffmpeg)
- [@ffprobe-installer/ffprobe](https://www.npmjs.com/package/@ffprobe-installer/ffprobe)
- [ffmpeg-static](https://github.com/eugeneware/ffmpeg-static)
- [@ffprobe-installer/ffprobe](https://github.com/SavageCore/node-ffprobe-installer)
- [ngx-translate](https://github.com/ngx-translate/core)
- [fdir](https://github.com/thecodrr/fdir)
- [async](https://github.com/caolan/async)
Expand Down
5 changes: 2 additions & 3 deletions angular.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"projectType": "application",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"builder": "@angular-devkit/build-angular:browser-esbuild",
"options": {
"outputPath": "dist",
"index": "src/index.html",
Expand Down Expand Up @@ -82,7 +82,7 @@
"lint": {
"builder": "@angular-eslint/builder:lint",
"options": {
"eslintConfig": ".eslintrc.js",
"eslintConfig": ".eslintrc.json",
"lintFilePatterns": [
"**/*.ts"
]
Expand All @@ -91,7 +91,6 @@
}
}
},
"defaultProject": "video-hub-app",
"schematics": {
"@schematics/angular:component": {
"prefix": "app",
Expand Down
3 changes: 3 additions & 0 deletions i18n/cs.json
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,9 @@
"showVideoNotesDescription": "Zobrazit poznámky videa",
"showVideoNotesHint": "Zobrazit poznámky videa",
"showVideoNotesMoreInfo": "Přidejte k libovolnému videu jakékoli textové poznámky. Zobrazí se v podrobném zobrazení",
"sortAutoTagsDescription": "Seřadit automaticky generované štítky",
"sortAutoTagsHint": "Seřadit automaticky generované štítky",
"sortAutoTagsMoreInfo": "Seřadit automatické štítky v abecedním pořadí, když je tlačítko přepnuto. Pokud ne, zobrazí se ve výchozím pořadí.",
"shuffleGalleryNowDescription": "Zamíchat videa",
"shuffleGalleryNowHint": "Náhodné přehrávání videí",
"sizeFilterDescription": "Velikost",
Expand Down
7 changes: 7 additions & 0 deletions i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@
"flatIconsDescription": "Show flat button style",
"flatIconsHint": "Flat icons",
"folderDescription": "Folders with each",
"folderExclusionDescription": "Folder names without",
"folderExclusionHint": "Folder exclude filter",
"folderExclusionMoreInfo": "Filter to exclude any folders that contain the filter word",
"folderHint": "Folder search",
"folderMoreInfo": "Filter for folders containing each of the search words",
"folderUnionDescription": "Folders with any",
Expand Down Expand Up @@ -143,6 +146,9 @@
"showVideoNotesDescription": "Video notes",
"showVideoNotesHint": "Video notes",
"showVideoNotesMoreInfo": "Add any text notes to any video. Appears in the Details view. Searchable with the Notes search",
"sortAutoTagsDescription": "Sort auto-generated tags",
"sortAutoTagsHint": "Sort auto-generated tags",
"sortAutoTagsMoreInfo": "Sort auto-generated tags in alphabetical order, when the button is toggled. If not, they are displayed in the default order",
"shuffleGalleryNowDescription": "Shuffle videos",
"shuffleGalleryNowHint": "Shuffle videos",
"sizeFilterDescription": "Size",
Expand Down Expand Up @@ -329,6 +335,7 @@
"file": "video name has",
"fileUnion": "video has any",
"folder": "folder name has",
"folderExclusion": "folders do not have",
"folderUnion": "folder has any",
"found": "found",
"fuzzy": "fuzzy search",
Expand Down
52 changes: 26 additions & 26 deletions i18n/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"autoplayClipsDescription": "Reproducción automática de todos los clips",
"autoplayClipsHint": "Reproducción automática de todos los clips",
"clearHistoryDescription": "Borrar el historial abierto recientemente",
"clearHistoryHint": "Claro historial",
"clearHistoryHint": "Borrar historial",
"clipsThumbnailDescription": "Use miniaturas predeterminadas en lugar de la miniatura del clip de vista previa",
"clipsThumbnailHint": "Use miniaturas predeterminadas en lugar de la miniatura del clip de vista previa",
"clipsThumbnailMoreInfo": "Hace uso de la misma miniatura de las otras vistas",
Expand Down Expand Up @@ -86,7 +86,7 @@
"openAtTimestampDescription": "Comience a reproducir el video desde el momento de hacer clic en la captura de pantalla",
"openAtTimestampHint": "Reproducir video desde la ubicación en la que se hizo clic",
"openAtTimestampMoreInfo": "Solo afecta la vista de Miniaturas. Requiere que configure manualmente el reproductor de video a continuación. Funciona en Windows solo con reproductores MPC, VLC, MPV y POT; en Mac solo con VLC",
"playlistButton": "Jugar todo",
"playlistButton": "Reproducir todo",
"playlistButtonDescription": "Abre todos los videos de la galería actual como una lista de reproducción",
"playlistButtonMoreInfo": "Esto crea un archivo .pls y lo abre con su reproductor de video predeterminado. La lista de reproducción no incluirá archivos dentro de las carpetas si se selecciona \"Mostrar carpetas\".",
"randFolderScreen": "Carpeta de capturas de pantalla aleatorias",
Expand Down Expand Up @@ -132,7 +132,7 @@
"showMoreInfoHint": "Mostrar nombre de archivo",
"showRecentDescription": "Mostrar el historial del centro de video recientemente abierto",
"showRecentHint": "Mostrar centros abiertos recientemente",
"showRecentPlayed": "Recientemente jugado",
"showRecentPlayed": "Reproducidos recientemente",
"showTagsDescription": "Mostrar etiquetas autogeneradas",
"showTagsHint": "Mostrar etiquetas autogeneradas",
"showTagsMoreInfo": "Estas etiquetas se generan automáticamente a partir de los nombres de archivo. Al hacer clic en cualquier etiqueta, encontrará todos los archivos que contienen la palabra en el nombre del archivo",
Expand All @@ -143,7 +143,7 @@
"showVideoNotesMoreInfo": "Agrega notas de texto a cualquier video. Aparece en la vista de detalles",
"shuffleGalleryNowDescription": "Mezclar videos",
"shuffleGalleryNowHint": "Mezclar videos",
"sizeFilterDescription": "Talla",
"sizeFilterDescription": "Tamaño",
"sizeFilterHint": "Filtro de tamaño",
"sizeFilterMoreInfo": "Mostrar el filtro de tamaño",
"sortOptionAlphabeticalDescription": "Alfabético",
Expand All @@ -159,16 +159,16 @@
"sortOptionModifiedDescription": "Fecha modificada",
"sortOptionModifiedMoreInfo": "Mostrar la opción de orden de tiempo modificado en el menú desplegable de clasificación",
"sortOptionsHeading": "Opciones de clasificación en el menú desplegable",
"sortOptionSizeDescription": "Talla",
"sortOptionSizeDescription": "Tamaño",
"sortOptionSizeMoreInfo": "Mostrar la opción de orden de tamaño en el menú desplegable de clasificación",
"sortOptionStarDescription": "Estrella",
"sortOptionStarMoreInfo": "Mostrar la opción de orden de estrellas en el menú desplegable de clasificación",
"sortOptionTagsDescription": "Etiquetas",
"sortOptionTagsMoreInfo": "Muestre la opción de orden de las etiquetas en el menú desplegable de clasificación. Ordenar por número de etiquetas",
"sortOptionTimeDescription": "Duración",
"sortOptionTimeMoreInfo": "Mostrar la opción de orden de duración en el menú desplegable de clasificación",
"sortOptionTimesPlayedDescription": "Tiempos jugados",
"sortOptionTimesPlayedMoreInfo": "Mostrar la opción de orden de tiempos jugados en el menú desplegable de clasificación",
"sortOptionTimesPlayedDescription": "Número de reproducciones",
"sortOptionTimesPlayedMoreInfo": "Mostrar la opción de orden de número de reproducciones en el menú desplegable de clasificación",
"sortOptionYearDescription": "Año",
"sortOptionYearMoreInfo": "Mostrar la opción de orden del año en el menú desplegable de clasificación. Solo se ve afectado por el año que configuró manualmente en la vista de detalles",
"sortOrderDescription": "Orden de clasificación",
Expand Down Expand Up @@ -213,22 +213,22 @@
"errorMustNotBeEmpty": "nuevo nombre de archivo puede no estar vacío",
"errorSomeError": "Se produjo un error",
"openFolder": "Carpeta abierta",
"renameButton": "REBAUTIZAR",
"renameButton": "Renombrar",
"renameFile": "Renombrar archivo",
"renameFrom": "de:",
"renameTitle": "Rebautizar",
"renameTitle": "Renombrar",
"renameTo": "a:",
"sheetModal": "Detalles",
"showSimilar": "Mostrar similar",
"shuffle": "Resultados aleatorios",
"viewFolder": "Ver folder"
"viewFolder": "Ver carpeta"
},
"SETTINGS": {
"additionalExtensions": "Admite extensiones adicionales",
"applyAdditionalExtensions": "aplicar",
"buttonStyle": "Estilo de botón",
"cancelExtensionsEdit": "cancelar",
"changeAppZoom": "Cambiar el nivel de zoom de la aplicación",
"changeAppZoom": "Cambiar el nivel de enfoque de la aplicación",
"changeLanguage": "Cambiar idioma",
"checkNewVersion": "comprobar si hay nueva versión",
"chooseVideoPlayer": "cambio",
Expand Down Expand Up @@ -257,7 +257,7 @@
"playerArgs": "Argumentos de lanzamiento del jugador:",
"preferredPlayer": "Reproductor de video preferido:",
"recentlyPlayed": "Reciente",
"resetZoom": "restablecer zoom",
"resetZoom": "restablecer enfoque",
"restorePlayer": "usar el sistema por defecto",
"rootFolderNotLive": "Carpeta de video no conectada",
"searchAndFilter": "Configuración de búsqueda y filtro",
Expand Down Expand Up @@ -318,7 +318,7 @@
"dupeByHash": "probablemente idéntico",
"dupeByLength": "longitud similar",
"dupeBySize": "tamaño similar",
"duplicate": "Posibilita duplicados:",
"duplicate": "Posibles duplicados:",
"exclude": "el video no tiene",
"file": "el nombre del video tiene",
"fileUnion": "el video tiene alguna",
Expand All @@ -342,11 +342,11 @@
"sortFolderSize": "Cantidad de videos",
"sortModified": "Fecha modificada",
"sortRandom": "Aleatorio",
"sortSize": "Talla",
"sortSize": "Tamaño",
"sortStar": "Estrella",
"sortTags": "Etiquetas",
"sortTime": "Duración",
"sortTimesPlayed": "Tiempos jugados",
"sortTimesPlayed": "Número de reproducciones",
"sortYear": "Año",
"tagExclusion": "las etiquetas no tienen",
"tagIntersection": "las etiquetas incluyen",
Expand All @@ -358,11 +358,11 @@
"sortFps": "FPS"
},
"STATISTICS": {
"addFolderToHub": "Agregar carpeta al hub",
"addFolderToHub": "Agregar carpeta al centro",
"addMissingThumbnails": "Agregar miniaturas que faltan",
"average": "promedio",
"cleanScreenshots": "Eliminar miniaturas antiguas",
"cleanScreenshotsHint": "Eliminar miniaturas de videos que ya no están en el hub",
"cleanScreenshotsHint": "Eliminar miniaturas de videos que ya no están en el centro",
"clickToConnect": "Haga clic para seleccionar dónde se encuentra ahora la carpeta",
"clickToRescan": "Haga clic para actualizar el concentrador con nuevos archivos de esta carpeta",
"clipHeight": "Altura del clip",
Expand Down Expand Up @@ -412,12 +412,12 @@
"doesNotExist": "no existe",
"error": "Error",
"fileRenameError": "No se cambió el nombre del archivo. Ocurrió algún error.",
"hubAlreadyExists": "Hub ya existe con este nombre",
"hubAlreadyExists": "Un Centro ya existe con este nombre",
"noSuchFileFound": "No se encontró tal archivo:",
"pleaseChangeName": "Por favor, cambie el nombre del concentrador arriba",
"pressEscToStopRenaming": "Renombrar archivo. Presione 'enter' para cambiar el nombre, 'esc' para cancelar",
"selectDefaultPlayer": "Por favor seleccione su reproductor de video preferido",
"selectPreviousHub": "Seleccione un archivo Video Hub previamente guardado",
"selectPreviousHub": "Seleccione un archivo centro previamente guardado",
"selectRootFolder": "Seleccione la carpeta de video de origen"
},
"TAGS": {
Expand All @@ -441,10 +441,10 @@
"sortAlphabetical": "Ordenar alfabéticamente",
"sortByFrequency": "Ordenar por frecuencia",
"starRating": "Calificación de estrellas",
"timesPlayed": "Tiempos jugados",
"timesPlayed": "Número de reproducciones",
"detailsBottomTray": "Esto mostrará los detalles de cualquier video en el que haga clic",
"notes": "notas",
"pleaseEnable": "Habilite al menos un tipo de etiqueta para ver la nube de Word"
"pleaseEnable": "Habilite al menos un tipo de etiqueta para ver la nube de palabras"
},
"WELCOME": {
"explore": "Explore otras configuraciones. Hay muchas funciones que no están habilitadas de forma predeterminada.",
Expand All @@ -457,7 +457,7 @@
"clearRecent": "borrar toda la historia reciente ",
"clipSnippets": "fragmentos",
"closeButton": "Cerrar asistente",
"createVideoHub": "Crea el Video Hub",
"createVideoHub": "Crea el centro de video",
"demoVersion": "versión demo limitada a 50 archivos de video",
"eachSnippet": "Cada fragmento",
"expected": "Esperado:",
Expand All @@ -470,10 +470,10 @@
"importNew": "Importar nuevo centro",
"loadFromFile": "Carga del archivo",
"minutes": "minutos",
"nameYourHub": "Nombra tu hub",
"nameYourHub": "Nombra tu centro",
"oneScreenshotEvery": "1 captura de pantalla cada",
"openPrevious": "Abrir centro anterior",
"openPreviouslySaved": "Abra un Video Hub previamente guardado",
"openPreviouslySaved": "Abra un centro previamente guardado",
"recentlyOpened": "Centros recientemente abiertos:",
"removeFromHistory": "Eliminar este elemento del historial reciente",
"savingTo": "Guardar el centro de video y las capturas de pantalla para:",
Expand All @@ -482,8 +482,8 @@
"secondsLong": "segundos de duración",
"select": "Seleccionar",
"selectFolderWithVideo": "Seleccione la carpeta con sus archivos de video",
"selectWhereFilesStored": "Seleccione la carpeta donde se almacenará su Video Hub",
"size": "Talla",
"selectWhereFilesStored": "Seleccione la carpeta donde se almacenará su centro",
"size": "Tamaño",
"sizeOfClips": "Altura de clips",
"sizeOfScreenshots": "Altura de capturas de pantalla",
"sizeToImport": "mb de espacio en disco",
Expand Down
10 changes: 5 additions & 5 deletions interfaces/settings-object.interface.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { AppStateInterface } from '../src/app/common/app-state';
import { CustomShortcutAction } from '../src/app/components/shortcuts/shortcuts.service';
import { SettingsButtonKey } from '../src/app/common/settings-buttons';
import { HistoryItem } from './shared-interfaces';
import { WizardOptions } from './wizard-options.interface';
import type { AppStateInterface } from '../src/app/common/app-state';
import type { CustomShortcutAction } from '../src/app/components/shortcuts/shortcuts.service';
import type { SettingsButtonKey } from '../src/app/common/settings-buttons';
import type { HistoryItem } from './shared-interfaces';
import type { WizardOptions } from './wizard-options.interface';

export interface SettingsButtonSavedProperties {
hidden: boolean;
Expand Down
2 changes: 1 addition & 1 deletion interfaces/shared-interfaces.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ImageElement } from './final-object.interface';
import type { ImageElement } from './final-object.interface';

// Identical to settings buttons
export type SupportedView = 'showThumbnails'
Expand Down
2 changes: 1 addition & 1 deletion interfaces/wizard-options.interface.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { AllowedScreenshotHeight, InputSources } from './final-object.interface';
import type { AllowedScreenshotHeight, InputSources } from './final-object.interface';

// meant to keep the full state of the Wizard settings chosen
export interface WizardOptions {
Expand Down
4 changes: 3 additions & 1 deletion main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,9 @@ function createWindow() {
electron: require(`${__dirname}/node_modules/electron`)
});
win.loadURL('http://localhost:4200');
win.webContents.openDevTools();
setTimeout(() => {
win.webContents.openDevTools();
}, 1000);
} else {
const url = require('url').format({
pathname: path.join(__dirname, 'dist/index.html'),
Expand Down
6 changes: 3 additions & 3 deletions node/main-extract-async.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ const { powerSaveBlocker } = require('electron');
const async = require('async');
const chokidar = require('chokidar');
import * as path from 'path';
import { FSWatcher } from 'chokidar'; // probably the correct type for chokidar.watch() object
import type { FSWatcher } from 'chokidar'; // probably the correct type for chokidar.watch() object
const fs = require('fs');
import { fdir } from 'fdir';

import { GLOBALS } from './main-globals';

import { ImageElement, ImageElementPlus } from '../interfaces/final-object.interface';
import type { ImageElement, ImageElementPlus } from '../interfaces/final-object.interface';
import { acceptableFiles } from './main-filenames';
import { extractAll } from './main-extract';
import { sendCurrentProgress, insertTemporaryFieldsSingle, extractMetadataAsync, cleanUpFileName } from './main-support';
Expand Down Expand Up @@ -41,7 +41,7 @@ let thumbExtractionStartTime = 0;

// delete queue
let deleteThumbQueue; // QueueObject
let numberOfThumbsDeleted: number = 0;
let numberOfThumbsDeleted = 0;

// =====================================================================================================================

Expand Down
2 changes: 1 addition & 1 deletion node/main-extract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ const ffmpegPath = require('ffmpeg-static').replace('app.asar', 'app.asar.unpack

import { GLOBALS } from './main-globals';

import { ImageElement, ScreenshotSettings } from '../interfaces/final-object.interface';
import type { ImageElement, ScreenshotSettings } from '../interfaces/final-object.interface';


// ========================================================================================
Expand Down
Loading

0 comments on commit 96b86a6

Please sign in to comment.