From 4c7449d2add412e2cef4d55b357d58abaa0ae83b Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 8 Apr 2021 14:29:03 +0200 Subject: [PATCH 1/6] Fix subtitles import --- server/helpers/youtube-dl.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/helpers/youtube-dl.ts b/server/helpers/youtube-dl.ts index 8537a5772..5b46f704a 100644 --- a/server/helpers/youtube-dl.ts +++ b/server/helpers/youtube-dl.ts @@ -76,7 +76,7 @@ function getYoutubeDLSubs (url: string, opts?: object): Promise { logger.debug('Get subtitles from youtube dl.', { url, files }) const subtitles = files.reduce((acc, filename) => { - const matched = filename.match(/\.([a-z]{2})\.(vtt|ttml)/i) + const matched = filename.match(/\.([a-z]{2})(-[a-z]+)?\.(vtt|ttml)/i) if (!matched || !matched[1]) return acc return [ From b06f1ead3b599a0315053572a6cf5811e533fc49 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 8 Apr 2021 14:41:15 +0200 Subject: [PATCH 2/6] Fix updating transcoding profiles --- .../edit-live-configuration.component.html | 2 +- .../edit-live-configuration.component.ts | 14 +++++++++++--- .../edit-vod-transcoding.component.html | 2 +- .../edit-vod-transcoding.component.ts | 13 ++++++++++--- .../shared-main/date/date-toggle.component.ts | 8 ++------ 5 files changed, 25 insertions(+), 14 deletions(-) diff --git a/client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.html b/client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.html index 5d826fbe9..10d5278c1 100644 --- a/client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.html +++ b/client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.html @@ -153,7 +153,7 @@ diff --git a/client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.ts b/client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.ts index 3328d28a9..72372ffac 100644 --- a/client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.ts +++ b/client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.ts @@ -1,6 +1,6 @@ import { SelectOptionsItem } from 'src/types/select-options-item.model' -import { Component, Input, OnInit } from '@angular/core' +import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core' import { FormGroup } from '@angular/forms' import { ServerConfig } from '@shared/models' import { ConfigService } from '../shared/config.service' @@ -11,12 +11,14 @@ import { EditConfigurationService, ResolutionOption } from './edit-configuration templateUrl: './edit-live-configuration.component.html', styleUrls: [ './edit-custom-config.component.scss' ] }) -export class EditLiveConfigurationComponent implements OnInit { +export class EditLiveConfigurationComponent implements OnInit, OnChanges { @Input() form: FormGroup @Input() formErrors: any @Input() serverConfig: ServerConfig transcodingThreadOptions: SelectOptionsItem[] = [] + transcodingProfiles: SelectOptionsItem[] = [] + liveMaxDurationOptions: SelectOptionsItem[] = [] liveResolutions: ResolutionOption[] = [] @@ -39,7 +41,13 @@ export class EditLiveConfigurationComponent implements OnInit { this.liveResolutions = this.editConfigurationService.getLiveResolutions() } - getAvailableTranscodingProfile () { + ngOnChanges (changes: SimpleChanges) { + if (changes['serverConfig']) { + this.transcodingProfiles = this.buildAvailableTranscodingProfile() + } + } + + buildAvailableTranscodingProfile () { const profiles = this.serverConfig.live.transcoding.availableProfiles return profiles.map(p => { diff --git a/client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.html b/client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.html index cf13b27bb..1c5d6a9b4 100644 --- a/client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.html +++ b/client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.html @@ -181,7 +181,7 @@ diff --git a/client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.ts b/client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.ts index b864f1bc4..a2dc3e52a 100644 --- a/client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.ts +++ b/client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.ts @@ -1,6 +1,6 @@ import { SelectOptionsItem } from 'src/types/select-options-item.model' -import { Component, Input, OnInit } from '@angular/core' +import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core' import { FormGroup } from '@angular/forms' import { ServerConfig } from '@shared/models' import { ConfigService } from '../shared/config.service' @@ -11,12 +11,13 @@ import { EditConfigurationService, ResolutionOption } from './edit-configuration templateUrl: './edit-vod-transcoding.component.html', styleUrls: [ './edit-custom-config.component.scss' ] }) -export class EditVODTranscodingComponent implements OnInit { +export class EditVODTranscodingComponent implements OnInit, OnChanges { @Input() form: FormGroup @Input() formErrors: any @Input() serverConfig: ServerConfig transcodingThreadOptions: SelectOptionsItem[] = [] + transcodingProfiles: SelectOptionsItem[] = [] resolutions: ResolutionOption[] = [] constructor ( @@ -31,7 +32,13 @@ export class EditVODTranscodingComponent implements OnInit { this.checkTranscodingFields() } - getAvailableTranscodingProfile () { + ngOnChanges (changes: SimpleChanges) { + if (changes['serverConfig']) { + this.transcodingProfiles = this.buildAvailableTranscodingProfile() + } + } + + buildAvailableTranscodingProfile () { const profiles = this.serverConfig.transcoding.availableProfiles return profiles.map(p => { diff --git a/client/src/app/shared/shared-main/date/date-toggle.component.ts b/client/src/app/shared/shared-main/date/date-toggle.component.ts index 53f25f0ad..0c3949f11 100644 --- a/client/src/app/shared/shared-main/date/date-toggle.component.ts +++ b/client/src/app/shared/shared-main/date/date-toggle.component.ts @@ -1,5 +1,4 @@ -import { DatePipe } from '@angular/common' -import { Component, Input, OnChanges, OnInit } from '@angular/core' +import { Component, Input, OnChanges } from '@angular/core' import { FromNowPipe } from '../angular/from-now.pipe' @Component({ @@ -14,10 +13,7 @@ export class DateToggleComponent implements OnChanges { dateRelative: string dateAbsolute: string - constructor ( - private datePipe: DatePipe, - private fromNowPipe: FromNowPipe - ) { } + constructor (private fromNowPipe: FromNowPipe) { } ngOnChanges () { this.updateDates() From 083328eb27ec2b08a22a390363b11ae66869eba3 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 8 Apr 2021 14:45:40 +0200 Subject: [PATCH 3/6] Remove duplicate captions --- server/initializers/constants.ts | 2 +- .../migrations/0612-captions-unique.ts | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 server/initializers/migrations/0612-captions-unique.ts diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index 1623e6f42..50467f408 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -24,7 +24,7 @@ import { CONFIG, registerConfigChangedHandler } from './config' // --------------------------------------------------------------------------- -const LAST_MIGRATION_VERSION = 610 +const LAST_MIGRATION_VERSION = 612 // --------------------------------------------------------------------------- diff --git a/server/initializers/migrations/0612-captions-unique.ts b/server/initializers/migrations/0612-captions-unique.ts new file mode 100644 index 000000000..368838a2a --- /dev/null +++ b/server/initializers/migrations/0612-captions-unique.ts @@ -0,0 +1,23 @@ +import * as Sequelize from 'sequelize' + +async function up (utils: { + transaction: Sequelize.Transaction + queryInterface: Sequelize.QueryInterface + sequelize: Sequelize.Sequelize + db: any +}): Promise { + + await utils.sequelize.query( + 'DELETE FROM "videoCaption" v1 USING (SELECT MIN(id) as id, "filename" FROM "videoCaption" ' + + 'GROUP BY "filename" HAVING COUNT(*) > 1) v2 WHERE v1."filename" = v2."filename" AND v1.id <> v2.id' + ) +} + +function down (options) { + throw new Error('Not implemented.') +} + +export { + up, + down +} From 8004469c0a14f8b19f91f87a9455713422146baa Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 8 Apr 2021 14:53:03 +0200 Subject: [PATCH 4/6] Fix video channel list api --- support/doc/api/openapi.yaml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index bf99cb45c..a47654f69 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -2526,9 +2526,14 @@ paths: content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/VideoChannel' + properties: + total: + type: integer + example: 1 + data: + type: array + items: + $ref: '#/components/schemas/VideoChannel' '/accounts/{name}/ratings': get: summary: List ratings of an account From 1afb3c474ae1194748a6fba901058c720e01be0c Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 8 Apr 2021 15:04:14 +0200 Subject: [PATCH 5/6] Fix outbox fetch with subtitled videos --- server/models/video/video.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/models/video/video.ts b/server/models/video/video.ts index 9d89efa5b..3c4f3d3df 100644 --- a/server/models/video/video.ts +++ b/server/models/video/video.ts @@ -916,7 +916,7 @@ export class VideoModel extends Model { }, include: [ { - attributes: [ 'language', 'fileUrl' ], + attributes: [ 'filename', 'language', 'fileUrl' ], model: VideoCaptionModel.unscoped(), required: false }, From b9244002fcc48dda7f3a588980d910a40429238f Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 8 Apr 2021 15:11:22 +0200 Subject: [PATCH 6/6] Fix embed playlist menu background on focus --- client/src/sass/player/playlist.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/sass/player/playlist.scss b/client/src/sass/player/playlist.scss index cf125a562..ebbed02d9 100644 --- a/client/src/sass/player/playlist.scss +++ b/client/src/sass/player/playlist.scss @@ -5,7 +5,8 @@ $playlist-menu-width: 350px; right: 0; height: 100%; width: $playlist-menu-width; - background: rgba(0, 0, 0, 0.8); + // !important to prevent none background set on focus + background: rgba(0, 0, 0, 0.8) !important; z-index: 101; transition: right 0.2s; overflow-y: scroll;