Commit Graph

3924 Commits

Author SHA1 Message Date
Chocobozzz 5ef3378534
Log piscina errors 2023-11-21 17:35:36 +01:00
Chocobozzz aeea2d864f
Limit max piscina threads bases on CPUs 2023-11-21 17:25:44 +01:00
Chocobozzz d4f21493e1
Respect "transcode original resolution" for runner 2023-11-17 16:25:11 +01:00
Chocobozzz 1682b0bab0
Increase generate-video-storyboard job ttl
See https://github.com/Chocobozzz/PeerTube/issues/6029
2023-11-17 16:24:55 +01:00
Chocobozzz 3da9fbbe39
Adapt storyboard sprite ratio 2023-11-09 09:03:32 +01:00
Chocobozzz 2bc4d26b94
Add ability to customize frames to analyze 2023-11-08 10:18:39 +01:00
Chocobozzz 2d4274769e
Fix production.yaml.new config generation 2023-11-07 10:25:15 +01:00
Chocobozzz d3c9a2e5b9
Add script to move videos to file system 2023-11-02 09:21:49 +01:00
Chocobozzz 443358ccce
Reduce video comment sql query size 2023-10-31 10:02:19 +01:00
Chocobozzz 2e556debca
Fix log error 2023-10-30 14:14:19 +01:00
Chocobozzz 543fbd1ffe
Correctly display broken muxing session
Can happen when we stream an audio stream only
2023-10-30 11:57:39 +01:00
Chocobozzz 880f8b924d
Add worker thread completed OTEL metric 2023-10-27 14:40:53 +02:00
Chocobozzz a2d5c2d44f
Add worker thread queue metrics 2023-10-26 16:34:54 +02:00
Chocobozzz 606c044dc8
Fix uploading empty master playlist on s3 2023-10-26 15:14:14 +02:00
Chocobozzz 40a6dcb632
Optimize video views redis calls
Try to avoid them if we can
2023-10-26 14:08:19 +02:00
Chocobozzz de862fd0e7
Optimize video viewer stats
Many Redis (and so network) calls can be expensive
Avoid them if we can by using in memory cache
2023-10-26 11:35:55 +02:00
Chocobozzz 8ecf95471d
Also remove video session on muxing error 2023-10-26 09:07:26 +02:00
Chocobozzz dd7de7e32d
Don't add a LIMIT 1 to prevent seq scan 2023-10-26 08:36:53 +02:00
Chocobozzz d3dd952cc5
Try to optimize tagsOneOf/tagsAllOf SQL queries
Using a CTE because the query will probably return a few results
I tried a IN clause but PG doesn't seem to be more efficient with it
The CTE seems to be the only choice
2023-10-25 16:15:41 +02:00
Chocobozzz a290fbf821
Add isLive DB index 2023-10-25 15:07:36 +02:00
Chocobozzz 82813e9739
Optimize infohash SQL query
We need to use the array operator to use GIN index
2023-10-25 15:04:00 +02:00
Chocobozzz 360439088d
Skip counting for recommended videos 2023-10-25 14:55:06 +02:00
Chocobozzz cb38deb288
Process unicast job in a worker too
Signing the request can take a long time
2023-10-25 09:43:57 +02:00
Chocobozzz 90db2b3aed
Add ability to disable HTTP logs 2023-10-24 10:57:41 +02:00
Chocobozzz edc3ff6085
Sign JSON objects in worker threads 2023-10-24 10:45:17 +02:00
Chocobozzz 521face89e
Add embed info jsonld in embeds too 2023-10-20 16:15:45 +02:00
Chocobozzz 53fdb2e83e
Fix server build 2023-10-20 16:05:38 +02:00
Chocobozzz f90db24233
Fix SEO and refactor HTML pages generation
* Split methods in multiple classes
 * Add JSONLD tags in embed too
 * Index embeds but use a canonical URL tag (targeting the watch page)
 * Remote objects don't include a canonical URL tag anymore. Instead we
   forbid indexation
 * Canonical URLs now use the official short URL (/w/, /w/p, /a, /c
   etc.)
2023-10-20 16:00:36 +02:00
Chocobozzz e731f4b724
Fix sitemap URL for accounts and channels 2023-10-20 16:00:36 +02:00
Chocobozzz 58daa2d97b
More flexible way to forbid indexation 2023-10-20 16:00:36 +02:00
Chocobozzz 272a902b2a
Optimize video thumbnail generation
Process images in worker threads
Reduce ffmpeg calls
2023-10-20 16:00:36 +02:00
Wicklow ea6c2b064f
Allow to change the default channel name (#6000)
* Allow to change the default channel name

* Fix tests

* Fix tests

* Fix tests
2023-10-19 15:22:00 +02:00
Chocobozzz 3546128f95
Workaround to bullmq undefined jobs 2023-10-18 15:46:18 +02:00
Chocobozzz 75d5a23dbc
Prevent error when removing a streaming playlist 2023-10-13 09:59:18 +02:00
Chocobozzz 58fda6d416
Fix upload with chapters having non int timecode 2023-10-12 15:32:01 +02:00
Chocobozzz 44e12dc809
Update bullmq dependency 2023-10-12 09:29:45 +02:00
Chocobozzz 7243393272
Fix signup and import 2023-10-11 15:58:16 +02:00
Chocobozzz 678ae8abbd
Breaking: only support node 18
Node 16 is not supported anymore

See https://nodejs.org/fr/blog/announcements/nodejs16-eol
2023-10-11 13:59:24 +02:00
Chocobozzz 2db1f3238d
Update server dependencies 2023-10-11 11:06:34 +02:00
Chocobozzz e049e3ec73
Remove unused file 2023-10-06 09:59:18 +02:00
Chocobozzz 516479f113
Try to use atomic move for runner live 2023-10-05 11:09:11 +02:00
Chocobozzz d970837922
Fix test paths 2023-10-04 15:40:33 +02:00
Chocobozzz 5a3d0650c9
server/server -> server/core 2023-10-04 15:13:25 +02:00
Chocobozzz d0f8a0e677
Fix mime type handling from remote instances 2023-10-04 09:59:27 +02:00
Chocobozzz 1611721c9b
Fix feed audio file mimetype 2023-10-03 12:20:11 +02:00
Chocobozzz 3601872153
Support empty value returned by video get filter 2023-10-03 09:36:00 +02:00
Wicklow 9864a0cae1
Add brazilian option for video/captions languages (#5971)
* Add brazilian option for video/captions languages

* Respect default local region
2023-10-02 11:54:13 +02:00
Johnny Jazeix 86731e752a
Add Valencian option for video/captions languages (#5975) 2023-10-02 11:53:32 +02:00
Chocobozzz 1022e27309
Fix live replay privacy change 2023-09-01 16:47:25 +02:00
Chocobozzz a1d9318066
Stop live before removing files 2023-09-01 13:16:27 +02:00
Julien Rabier 0216c3485d Fix path to Peertube installation in upgrade.sh 2023-09-01 11:07:37 +02:00
Chocobozzz d2640682f6
Fix atom feed with science and technology category 2023-09-01 10:09:10 +02:00
Chocobozzz 0cc1a69881
Avoid federation error logs with likes on notes 2023-09-01 09:58:13 +02:00
Chocobozzz c4799cd1b9
Avoid illegal characters in torrent filename 2023-09-01 09:55:08 +02:00
Chocobozzz ca8a00d0e7
Fix ERR_HTTP_HEADERS_SENT crash 2023-09-01 09:27:57 +02:00
Chocobozzz 9f4bdf3915
Add Guadeloupean language support 2023-08-28 17:11:27 +02:00
Chocobozzz fe1e3535fd
Ping runners on job abort/error 2023-08-28 16:59:45 +02:00
Chocobozzz 77b70702d2
Add video chapters support 2023-08-28 16:17:31 +02:00
Chocobozzz 0d87602a20
Optimize update host script 2023-08-18 14:21:04 +02:00
Chocobozzz 64cb55fcb1
Correctly handle optional replay setting 2023-08-18 11:52:12 +02:00
Chocobozzz 7ace48819e
Add ability to reset originallyPublishedAt 2023-08-18 11:40:54 +02:00
Chocobozzz 90b84bd4bb
Fix live replay setting breaking change 2023-08-18 10:49:33 +02:00
Chocobozzz 822872aacd
Don't display admin email in security.txt 2023-08-18 10:35:45 +02:00
Chocobozzz 3ff44b67ea
Fix plugin global path error log 2023-08-18 10:19:43 +02:00
Chocobozzz 9c63644b2d
Fix peertube helpers tsx tests 2023-08-18 10:18:56 +02:00
Seth Falco 2055962c84 fix: handle git installation of ffmpeg 2023-08-18 10:17:16 +02:00
Chocobozzz 3a4992633e
Migrate server to ESM
Sorry for the very big commit that may lead to git log issues and merge
conflicts, but it's a major step forward:

 * Server can be faster at startup because imports() are async and we can
   easily lazy import big modules
 * Angular doesn't seem to support ES import (with .js extension), so we
   had to correctly organize peertube into a monorepo:
    * Use yarn workspace feature
    * Use typescript reference projects for dependencies
    * Shared projects have been moved into "packages", each one is now a
      node module (with a dedicated package.json/tsconfig.json)
    * server/tools have been moved into apps/ and is now a dedicated app
      bundled and published on NPM so users don't have to build peertube
      cli tools manually
    * server/tests have been moved into packages/ so we don't compile
      them every time we want to run the server
 * Use isolatedModule option:
   * Had to move from const enum to const
     (https://www.typescriptlang.org/docs/handbook/enums.html#objects-vs-enums)
   * Had to explictely specify "type" imports when used in decorators
 * Prefer tsx (that uses esbuild under the hood) instead of ts-node to
   load typescript files (tests with mocha or scripts):
     * To reduce test complexity as esbuild doesn't support decorator
       metadata, we only test server files that do not import server
       models
     * We still build tests files into js files for a faster CI
 * Remove unmaintained peertube CLI import script
 * Removed some barrels to speed up execution (less imports)
2023-08-11 15:02:33 +02:00
Chocobozzz 3229fcf704
More robust logs tests 2023-07-31 09:35:48 +02:00
Chocobozzz 5e1ced7067
Fix live tests 2023-07-31 09:31:28 +02:00
Chocobozzz 257df4cb56
Remove deprecated "views" from live video event 2023-07-28 16:35:57 +02:00
Chocobozzz 982edf32ae
Remove deprecated video query filter 2023-07-28 16:33:12 +02:00
Chocobozzz ce8d0b5aae
Remove deprecated scheduler 2023-07-28 16:22:27 +02:00
Chocobozzz b203a25e1f
Keep s3 commands simple
As s3 implementation between s3 providers can be different
2023-07-28 16:21:15 +02:00
Chocobozzz eeb838faf2
currentTime is now required 2023-07-28 16:17:37 +02:00
Chocobozzz 74c8d5bf2d
Refactor enableTranscoding command helpers 2023-07-28 16:06:49 +02:00
Chocobozzz f932957b2e
Remove banner/avatar fields from channel/account
Deprecated since 4.2
2023-07-28 11:41:14 +02:00
Chocobozzz 89aa333110
Add ability to force transcoding 2023-07-28 11:09:03 +02:00
mira.bat f862be2749
Add an option to sign federated fetches for mastodon compatibility (#5898)
* Fix player error modal

Not hidden when we change the video

* Correctly dispose player components

* Sign cross-server fetch requests for mastodon AUTHORIZED_FETCH compatibilty

* Add a remote fetch sign configuration knob

* Federated fetches refactoring

---------

Co-authored-by: Chocobozzz <me@florianbigard.com>
Co-authored-by: ira <ira@foxgirl.space>
2023-07-27 17:01:15 +02:00
Chocobozzz 787d822cd4
Rephrase emailer conflict error messages 2023-07-27 16:41:35 +02:00
Chocobozzz f18003d0ac
Improve runner management
* Add ability to remove runner jobs
 * Add runner job state quick filter
 * Merge registration tokens and runners tables in the same page
 * Add copy button to copy registration token
2023-07-27 14:17:12 +02:00
Chocobozzz 17522af1e0
Use typed pick 2023-07-26 10:49:32 +02:00
Chocobozzz 69e3f2049f
Fix invalid short uuid conversion
Avoid "TypeError: Expected a string but received a null" error
2023-07-26 10:48:30 +02:00
Chocobozzz 3ffff82e87
Truncate html/og/card HTML description tags 2023-07-26 10:19:51 +02:00
Chocobozzz d7c3670945
Fix lint 2023-07-26 10:08:24 +02:00
Chocobozzz 22e7ffc781
Fix check params tests 2023-07-26 09:42:44 +02:00
Chocobozzz 93fd6f3b18
Fix fk error when generating storyboard 2023-07-26 09:25:21 +02:00
Chocobozzz 89b9eab5a7
Add more logs to debug oauth-client error 2023-07-26 09:25:10 +02:00
Chocobozzz 97583d0023
Add more rate limits 2023-07-26 08:37:50 +02:00
Chocobozzz 9901c8d690
Add video file update hook tests 2023-07-25 15:17:58 +02:00
Chocobozzz 3b46eec8ae
Remove unused param 2023-07-25 14:26:12 +02:00
Chocobozzz f42dd5524b
Add more context to request error 2023-07-25 14:21:01 +02:00
Chocobozzz f42fcb4b58
Implement video file replacement in client 2023-07-25 11:53:08 +02:00
Chocobozzz 12dc3a942a
Implement replace file in server side 2023-07-21 17:38:13 +02:00
Chocobozzz c6867725fb
Add p2p info to metrics 2023-07-21 11:42:52 +02:00
Chocobozzz 305facdfab
Add peers number and p2p enabled label to metrics 2023-07-20 12:06:39 +02:00
Chocobozzz 15c2303489
More robust runner socket test 2023-07-19 10:43:12 +02:00
Chocobozzz 6b745df087
Try to fix CI test 2023-07-17 14:34:44 +02:00
Chocobozzz 28dd2f14f5
Some player fixes on Android, Safari and iOS 2023-07-17 11:31:46 +02:00
Chocobozzz 5c34189aa9
Fix prune storage test 2023-07-12 11:32:12 +02:00
Chocobozzz d874522774
Avoid update remote runner error 2023-07-12 11:14:59 +02:00
Chocobozzz d959b763f0
Avoid duplicate runner names 2023-07-12 10:56:07 +02:00
Chocobozzz 88cde4392a
Merge branch 'release/5.2.0' into develop 2023-07-12 10:37:59 +02:00
Chocobozzz d98909f690
Fix fps transcoding on remote runners 2023-07-12 10:07:21 +02:00
Chocobozzz 34555bebf8
Migrate from webseed to web-videos 2023-07-11 11:39:59 +02:00
Chocobozzz d732ec7b46
Rename "videos" config to "web-videos" 2023-07-11 11:23:51 +02:00
Chocobozzz c57ad141a9
Rename webtorrent config to web_videos 2023-07-11 09:52:14 +02:00
Chocobozzz 784e2ad5c3
Prefer web videos in favour of webtorrent 2023-07-11 09:21:13 +02:00
Chocobozzz a1bd2b77d9
Remove webtorrent support from client 2023-07-10 16:08:28 +02:00
Chocobozzz 9cd06903f4
Fix HLS playlist generation with 0 duration length 2023-06-29 14:20:03 +02:00
Chocobozzz a287136427
Fix migration conflict 2023-06-29 13:52:24 +02:00
Chocobozzz 6bd160a68d
Fix 400 error on resumable re-upload 2023-06-29 11:35:25 +02:00
q_h 926c3f2b37
Fix the cleanup after a failed upload (#5840)
* Fix the cleanup after a failed upload

* Update tests

* Update tests
2023-06-29 10:38:37 +02:00
Chocobozzz d961735d5d
Fix prune storage tests 2023-06-29 10:19:55 +02:00
Chocobozzz 17ad0e8428
Fix regenerate thumbnail test 2023-06-29 10:19:55 +02:00
Chocobozzz cf069671f4
Use promise cache to load remote thumbnails 2023-06-29 10:19:55 +02:00
Chocobozzz 2b5dfa2fe0
Fix adding element in playlists 2023-06-29 10:19:55 +02:00
Chocobozzz 7a30349748
Fix migration conflict 2023-06-29 10:19:55 +02:00
Chocobozzz 53d4db2a8a
Fix playlist thumbnail generation 2023-06-29 10:19:54 +02:00
Chocobozzz 109d4a7f01
Add thumbnail disk database migration 2023-06-29 10:19:33 +02:00
Chocobozzz bafaba0bcd
Support lazy download of remote video miniatures 2023-06-29 10:19:33 +02:00
Chocobozzz f162d32da0
Support lazy download thumbnails 2023-06-29 10:19:33 +02:00
Chocobozzz ff75ba7160
Also replace base url of pre signed s3 url 2023-06-29 10:19:07 +02:00
Chocobozzz c37e305342
Fix CI tests 2023-06-29 10:19:05 +02:00
Chocobozzz 881958d179
Correctly download files from S3
Use pre signed URLs to inject content disposition header
2023-06-29 10:18:21 +02:00
Chocobozzz 1c9dc98c27
Lock video files when generating storyboard 2023-06-29 10:18:21 +02:00
Chocobozzz 7f7e9d4e90
Handle correctly formatted AP attributedTo 2023-06-29 10:18:00 +02:00
Chocobozzz cefe22cf7c
Fetch remote AP objects if only id is specified 2023-06-29 10:18:00 +02:00
Chocobozzz f987425bd1
Fix thumbnails tests 2023-06-29 10:18:00 +02:00
Chocobozzz d896fef7e2
Refactor video formatter 2023-06-29 10:18:00 +02:00
Chocobozzz b7f946892b
Simpler thumbnail generation 2023-06-29 10:16:57 +02:00
Chocobozzz 318aa9c422
Delete storyboard file on video deletion 2023-06-29 10:16:57 +02:00
Chocobozzz 9c5cc50133
Add script to generate storyboards 2023-06-29 10:16:57 +02:00
Chocobozzz d8f39b126d
Add storyboard support 2023-06-29 10:16:55 +02:00
Chocobozzz 1fb7d09422
Don't cache upload after video deletion 2023-06-29 09:49:06 +02:00
Wicklow 40346ead2b
Feature/password protected videos (#5836)
* Add server endpoints

* Refactoring test suites

* Update server and add openapi documentation

* fix compliation and tests

* upload/import password protected video on client

* add server error code

* Add video password to update resolver

* add custom message when sharing pw protected video

* improve confirm component

* Add new alert in component

* Add ability to watch protected video on client

* Cannot have password protected replay privacy

* Add migration

* Add tests

* update after review

* Update check params tests

* Add live videos test

* Add more filter test

* Update static file privacy test

* Update object storage tests

* Add test on feeds

* Add missing word

* Fix tests

* Fix tests on live videos

* add embed support on password protected videos

* fix style

* Correcting data leaks

* Unable to add password protected privacy on replay

* Updated code based on review comments

* fix validator and command

* Updated code based on review comments
2023-06-29 09:48:55 +02:00
Chocobozzz ae22c59f14
Fix broken replay with long live video name 2023-06-29 09:08:13 +02:00
Chocobozzz ba278fa51d
Fix build 2023-06-21 10:54:48 +02:00
Chocobozzz 2c16f5ad5e
Fix undefined actor image 2023-06-21 10:44:40 +02:00
Chocobozzz e915cde30e
Fix runner api rate limit bypass 2023-06-20 14:17:34 +02:00
Chocobozzz 31b9518a86
Fix log 2023-06-19 14:29:50 +02:00
Chocobozzz 7aacaa76ec
Fix registration notification error in client 2023-06-19 10:52:40 +02:00
Chocobozzz 07880c3642
Correctly unload plugin paths 2023-06-06 11:59:27 +02:00
Chocobozzz ed14d1ebd7
Invalidate cache feed even after server restart 2023-06-05 10:05:49 +02:00
Chocobozzz 8715c76356
More specific message when signup is not allowed 2023-06-05 09:00:47 +02:00
Alecks Gates 1ed1994fff
Use largest avatar in RSS feeds, unique guid for liveItems (#5817)
* Attempt to get largest avatar size

* WIP live guid changes

* Use largest avatar version in feeds

* Misc variable names/import changes

* Update podcast feed tests for guid changes

* More <guid> testing

* Lint fix

* Styling

---------

Co-authored-by: Chocobozzz <me@florianbigard.com>
2023-06-05 09:00:30 +02:00
Chocobozzz 29c7319c8a
Fix transcoding error
When transcoding.always_transcode_original_resolution is false
2023-05-30 09:35:21 +02:00
Chocobozzz 89eda2aab0
Fix runner vod transcoding error test 2023-05-26 16:09:28 +02:00
Chocobozzz c56dd2807f
Fix peertube subtitles import 2023-05-26 16:05:08 +02:00
Chocobozzz 64aa66c4a6
Don't fail remote transcoding on retry 2023-05-26 09:28:44 +02:00
Chocobozzz f474a519dc
Specify runner name when unregistering the runner 2023-05-26 09:04:22 +02:00
Chocobozzz a60b100601
Add more logs when storing master playlist in s3 2023-05-25 09:58:08 +02:00
Chocobozzz d0fbc9fd0a
Fix lint 2023-05-24 15:27:15 +02:00
Chocobozzz cffef25313
Fix s3 mock cleanup 2023-05-23 11:27:27 +02:00
Chocobozzz f89189907b
Prevent object storage mock conflicts
When running tests in parallel
2023-05-23 10:49:45 +02:00
Chocobozzz d8fe90dde2
Wait for segments generation 2023-05-23 08:28:25 +02:00
Chocobozzz 83002a8234
Update server dependencies 2023-05-22 17:11:31 +02:00
Chocobozzz 57c318653e
Fix live quota tests 2023-05-22 16:23:28 +02:00
Alecks Gates cb0eda5602
Add Podcast RSS feeds (#5487)
* Initial test implementation of Podcast RSS

This is a pretty simple implementation to add support for The Podcast Namespace in RSS -- instead of affecting the existing RSS implementation, this adds a new UI option.

I attempted to retain compatibility with the rest of the RSS feed implementation as much as possible and have created a temporary fork of the "pfeed" library to support this effort.

* Update to pfeed-podcast 1.2.2

* Initial test implementation of Podcast RSS

This is a pretty simple implementation to add support for The Podcast Namespace in RSS -- instead of affecting the existing RSS implementation, this adds a new UI option.

I attempted to retain compatibility with the rest of the RSS feed implementation as much as possible and have created a temporary fork of the "pfeed" library to support this effort.

* Update to pfeed-podcast 1.2.2

* Initial test implementation of Podcast RSS

This is a pretty simple implementation to add support for The Podcast Namespace in RSS -- instead of affecting the existing RSS implementation, this adds a new UI option.

I attempted to retain compatibility with the rest of the RSS feed implementation as much as possible and have created a temporary fork of the "pfeed" library to support this effort.

* Update to pfeed-podcast 1.2.2

* Add correct feed image to RSS channel

* Prefer HLS videos for podcast RSS

Remove video/stream titles, add optional height attribute to podcast RSS

* Prefix podcast RSS images with root server URL

* Add optional video query support to include captions

* Add transcripts & person images to podcast RSS feed

* Prefer webseed/webtorrent files over HLS fragmented mp4s

* Experimentally adding podcast fields to basic config page

* Add validation for new basic config fields

* Don't include "content" in podcast feed, use full description for "description"

* Initial test implementation of Podcast RSS

This is a pretty simple implementation to add support for The Podcast Namespace in RSS -- instead of affecting the existing RSS implementation, this adds a new UI option.

I attempted to retain compatibility with the rest of the RSS feed implementation as much as possible and have created a temporary fork of the "pfeed" library to support this effort.

* Update to pfeed-podcast 1.2.2

* Add correct feed image to RSS channel

* Prefer HLS videos for podcast RSS

Remove video/stream titles, add optional height attribute to podcast RSS

* Prefix podcast RSS images with root server URL

* Add optional video query support to include captions

* Add transcripts & person images to podcast RSS feed

* Prefer webseed/webtorrent files over HLS fragmented mp4s

* Experimentally adding podcast fields to basic config page

* Add validation for new basic config fields

* Don't include "content" in podcast feed, use full description for "description"

* Add medium/socialInteract to podcast RSS feeds. Use HTML for description

* Change base production image to bullseye, install prosody in image

* Add liveItem and trackers to Podcast RSS feeds

Remove height from alternateEnclosure, replaced with title.

* Clear Podcast RSS feed cache when live streams start/end

* Upgrade to Node 16

* Refactor clearCacheRoute to use ApiCache

* Remove unnecessary type hint

* Update dockerfile to node 16, install python-is-python2

* Use new file paths for captions/playlists

* Fix legacy videos in RSS after migration to object storage

* Improve method of identifying non-fragmented mp4s in podcast RSS feeds

* Don't include fragmented MP4s in podcast RSS feeds

* Add experimental support for podcast:categories on the podcast RSS item

* Fix undefined category when no videos exist

Allows for empty feeds to exist (important for feeds that might only go live)

* Add support for podcast:locked -- user has to opt in to show their email

* Use comma for podcast:categories delimiter

* Make cache clearing async

* Fix merge, temporarily test with pfeed-podcast

* Syntax changes

* Add EXT_MIMETYPE constants for captions

* Update & fix tests, fix enclosure mimetypes, remove admin email

* Add test for podacst:socialInteract

* Add filters hooks for podcast customTags

* Remove showdown, updated to pfeed-podcast 6.1.2

* Add 'action:api.live-video.state.updated' hook

* Avoid assigning undefined category to podcast feeds

* Remove nvmrc

* Remove comment

* Remove unused podcast config

* Remove more unused podcast config

* Fix MChannelAccountDefault type hint missed in merge

* Remove extra line

* Re-add newline in config

* Fix lint errors for isEmailPublic

* Fix thumbnails in podcast feeds

* Requested changes based on review

* Provide podcast rss 2.0 only on video channels

* Misc cleanup for a less messy PR

* Lint fixes

* Remove pfeed-podcast

* Add peertube version to new hooks

* Don't use query include, remove TODO

* Remove film medium hack

* Clear podcast rss cache before video/channel update hooks

* Clear podcast rss cache before video uploaded/deleted hooks

* Refactor podcast feed cache clearing

* Set correct person name from video channel

* Styling

* Fix tests

---------

Co-authored-by: Chocobozzz <me@florianbigard.com>
2023-05-22 16:00:05 +02:00
Chocobozzz 3f0ceab06e
More robust quota check
Avoid concurrency issues with permanent lives
2023-05-22 15:52:59 +02:00
Chocobozzz 6a9b315182
Fix tests 2023-05-22 15:03:14 +02:00
Chocobozzz 8762b1c7ff
Include err type in res 2023-05-22 14:10:59 +02:00
Chocobozzz 17ecdf61ce
Force stop remote live transcoding 2023-05-22 13:54:46 +02:00
Chocobozzz b9393464a8
Lock when removing video files 2023-05-22 11:06:04 +02:00
Chocobozzz 33b91e53d2
Remove low timeouts
Default timeout is 30s
2023-05-22 09:22:08 +02:00
Chocobozzz 8527f4b163
Fix menu dropdowns
Better responsive
Avoid menu scrollbar displayed in notification popove
2023-05-22 08:22:57 +02:00
Chocobozzz 9ba1faa2ee
Fix lowest email port 2023-05-19 15:33:26 +02:00
Chocobozzz c0b5a5eb4b
Use saveInTransactionWithRetries helper 2023-05-19 15:20:12 +02:00
Chocobozzz d1c64fd970
Fix missing wait jobs 2023-05-19 15:05:32 +02:00
Chocobozzz 26818a73ba
Add expect message to ease debug 2023-05-19 14:49:00 +02:00
Chocobozzz 3733175b6b
Remove wait before publishing master playlist
It doesn't seem necessary
2023-05-19 14:44:57 +02:00
Chocobozzz ec720affe9
Correctly fix s3 live sync 2023-05-19 14:44:25 +02:00
Chocobozzz cfa6176381
Fix runner cleanup test 2023-05-19 14:35:03 +02:00
Chocobozzz 01283e2066
Improve remote runner config UX 2023-05-19 14:11:22 +02:00
Chocobozzz def4ea4f38
More robust chunk handler 2023-05-19 13:52:38 +02:00
Chocobozzz 6403a6bd01
peertube runner tests in parallel 2023-05-19 13:33:27 +02:00
Chocobozzz 30453cb5ba
Wait master playlist generation 2023-05-19 12:01:36 +02:00
Chocobozzz 72d606dc07
Avoid uploading empty master file 2023-05-19 11:03:47 +02:00
Chocobozzz 472170b4f9
Avoid aborting completing jobs 2023-05-19 10:10:41 +02:00
Chocobozzz a5cf9c9867
Don't run ffmpeg twice for lives 2023-05-19 09:40:30 +02:00
Chocobozzz fe7019b232
Fix peertube runner concurrency 2023-05-19 09:23:20 +02:00
Chocobozzz ef2e6aabf7
Force ffmpeg to exit on abort 2023-05-17 16:52:56 +02:00
Chocobozzz e901579b00
Fix tests 2023-05-17 16:43:05 +02:00
Chocobozzz f86ff3a026
Prevent uninstall error on install error 2023-05-17 16:19:30 +02:00
Chocobozzz d3fcf1c57a
Fix pending subscription deletion 2023-05-17 15:08:40 +02:00
Chocobozzz f530dde244
Prevent notification from pending subscriptions 2023-05-17 15:02:23 +02:00
Chocobozzz f383c7c881
Increase last runner contact update 2023-05-17 14:50:12 +02:00
Chocobozzz d38541fd59
More robust accept job controller 2023-05-17 14:47:17 +02:00
Chocobozzz cc518fdbcb
Fix test 2023-05-16 10:10:58 +02:00
Chocobozzz 49b80bd9e1
Use atomic rename 2023-05-16 10:06:07 +02:00
Chocobozzz 2870570505
Provide public RTMP URL to runners 2023-05-16 09:12:50 +02:00
Chocobozzz aa54733149
Add retries to all webtorrent tests 2023-05-15 16:16:41 +02:00
Chocobozzz 261dac403a
More robust test 2023-05-15 15:42:16 +02:00
Chocobozzz 5a05c14573
Force live stream termination 2023-05-15 15:06:14 +02:00
Chocobozzz 8eb6a9eb2b
Fix test 2023-05-15 13:56:08 +02:00
Chocobozzz c08a7f16e7
Don't save the session twice 2023-05-15 13:56:00 +02:00
Chocobozzz 339d3fba83
Allow to retry some tests that may fail 2023-05-15 11:41:55 +02:00
Chocobozzz be3ec61a66
Atomic live segment file write 2023-05-15 11:09:16 +02:00
Chocobozzz 65b2ec673d
Fix SQL query 2023-05-12 09:06:16 +02:00
Chocobozzz 5752683ea5
Increase test timeouts 2023-05-11 16:33:30 +02:00
Chocobozzz 85c20aaeb9
Set actor preferred name case insensitive 2023-05-11 16:16:27 +02:00
Chocobozzz 823c34c07f
Fix reset sequelize instance 2023-05-11 15:03:47 +02:00
Chocobozzz 81f14b9112
Correctly wait for live segment generation 2023-05-11 11:41:43 +02:00
Chocobozzz c106db1413
Fix tests 2023-05-10 16:23:55 +02:00
Chocobozzz 7815dc450e
Prevent invalid end watch section warnings 2023-05-10 14:23:59 +02:00
Chocobozzz 644391bee6
Fix test cleanup 2023-05-10 13:57:06 +02:00
Chocobozzz 7590f7a868
Add more tests on registration request conflict 2023-05-10 11:53:04 +02:00
Chocobozzz 34023e1253
Fix S3 live sync
Ensure TS chunks referenced in M3U8 playlist are already uploaded on S3
2023-05-10 11:16:05 +02:00
John Livingston f9eee54f2a
Fix #5744: Missing plugins-global.css + missing async (#5746)
* Fix #5744: Missing plugins-global.css + missing async

* Modifications required by Chocobozzz.

* Styling

---------

Co-authored-by: Chocobozzz <me@florianbigard.com>
2023-05-10 09:54:44 +02:00
kontrollanten 674f8ddd41
feat(server): add redis sentinel support (#5593)
* feat(server): add redis sentinel support

closes #5141

* Styling

---------

Co-authored-by: Chocobozzz <me@florianbigard.com>
2023-05-10 09:52:50 +02:00
Chocobozzz 5170f492b9
Try to have more robust live tests 2023-05-10 09:30:33 +02:00
Chocobozzz 9d1e41e8bb
Increase timeouts 2023-05-10 09:02:42 +02:00
Chocobozzz ce1b5ba78c
Correctly cleanup sql command 2023-05-10 08:43:16 +02:00
Chocobozzz 2f63f629ad
Fix subscribe button responsive 2023-05-09 13:53:33 +02:00
Chocobozzz 1c7fbce4fa
Increase timeout 2023-05-09 08:58:15 +02:00
Chocobozzz 21609258de Increase timeouts 2023-05-09 08:57:34 +02:00
Chocobozzz a687879e94 Reload the video after waiting for the files lock 2023-05-09 08:57:34 +02:00
Chocobozzz e7d8e2b245 Fix audio transcoding copy 2023-05-09 08:57:34 +02:00
Chocobozzz dd3f99434c Fix studio tests 2023-05-09 08:57:34 +02:00
Chocobozzz ab14f0e0dc Prefer video studio instead of video edition
Clearer and easier to find in the project
2023-05-09 08:57:34 +02:00
Chocobozzz 5e47f6ab98 Support studio transcoding in peertube runner 2023-05-09 08:57:34 +02:00
Chocobozzz 6a49056026 Add TMP persistent directory
To store files that must be preserved between peertube restarts
2023-05-09 08:57:34 +02:00
Chocobozzz 3a0c2a77b1 Enable external plugins to test the PR 2023-05-09 08:57:34 +02:00
Chocobozzz 9a3db678f5 Fix import video file lock 2023-05-09 08:57:34 +02:00
Chocobozzz cc2abbc320 Fix next video state after optimize/audio merge 2023-05-09 08:57:34 +02:00
Chocobozzz d102de1b38 Add runner server tests 2023-05-09 08:57:34 +02:00
Chocobozzz 0c9668f779 Implement remote runner jobs in server
Move ffmpeg functions to @shared
2023-05-09 08:57:34 +02:00
Chocobozzz 6bcb854cde
Fix unregister default value 2023-05-05 14:47:24 +02:00
Chocobozzz 841ddf8886
Don't call plugin register/unregister methods 2023-05-05 14:24:27 +02:00
Chocobozzz 82d1653d79
Prevent crash on plugin ws error 2023-04-17 09:51:18 +02:00
Chocobozzz e7c89cc3f3
Allow to update a live with untouched privacy 2023-04-14 10:14:40 +02:00
Chocobozzz 848347f193
Prevent exception when headers are already sent 2023-04-14 09:34:53 +02:00
Wicklow 2a4c0d8bbe
Feature/filter already watched videos (#5739)
* filter already watched videos

* Updated code based on review comments
2023-04-12 09:32:20 +02:00
Chocobozzz 0cda019c1d
Remove invalid jsonld property 2023-04-11 14:06:46 +02:00
Wicklow b302c80dc0
feature/ability to disable video history by default (#5728)
* draft: ability to disable video history by default

* Update configuration and add tests

* Updated code based on review comments

* Add tests on registration and video quota

* Remove required video quotas in query

* Fix tests
2023-04-07 10:09:54 +02:00
Chocobozzz bb7e5605d1
Use hook inside the transaction
To prevent serialization issue
2023-03-31 13:28:41 +02:00
Wicklow 05a60d8599
Feature/Add replay privacy (#5692)
* Add replay settings feature

* Fix replay settings behaviour

* Fix tests

* Fix tests

* Fix tests

* Update openapi doc and fix tests

* Add tests and fix code

* Models correction

* Add migration and update controller and middleware

* Add check params tests

* Fix video live middleware

* Updated code based on review comments
2023-03-31 09:12:21 +02:00
Chocobozzz 1e3e64a679
Fix tests 2023-03-27 08:43:50 +02:00
Chocobozzz d91ce83d39
Add filter:html.client.json-ld.result hook 2023-03-24 18:37:55 +01:00
Chocobozzz b926a23c62
Stop testing broken youtube-dl 2023-03-22 11:25:30 +01:00
kontrollanten 6f640ccb48 fix(object-storage-proxy): set content-range 2023-03-22 07:35:36 +01:00
Chocobozzz 951414fc62
Merge branch 'release/5.1.0' into develop 2023-03-21 09:17:25 +01:00
Chocobozzz 1c41b5c1ac
Add infohash test for VOD 2023-03-20 08:57:01 +01:00
Chocobozzz 8b197aca90
Fix flaky tests 2023-03-17 10:05:40 +01:00
Chocobozzz 47d883de2e
Merge branch 'release/5.1.0' into develop 2023-03-16 14:24:50 +01:00
Chocobozzz c3441b0320
Add video AP hooks 2023-03-16 10:36:33 +01:00
kontrollanten e72ace5a50
Handle redis disconnection gracefully (#5599)
* feat(server/api/contact): handle redis disconnection

* feat(server/api/metrics): handle metrics disabled
2023-03-14 08:50:44 +01:00
Chocobozzz 2b02a9b98c
Fix tests 2023-03-10 15:45:52 +01:00
Chocobozzz 58e735dd77
Add test on AP hooks 2023-03-10 15:45:52 +01:00
Chocobozzz 3b504f6ed4
Add ability for plugins to alter video jsonld 2023-03-10 15:45:52 +01:00
Chocobozzz 2dbcc3741b
Fix tests 2023-03-10 15:45:31 +01:00
Chocobozzz 96d00a997b
Add test on AP hooks 2023-03-10 15:19:33 +01:00
Chocobozzz 866b5d3f52
Add ability for plugins to alter video jsonld 2023-03-10 14:42:18 +01:00
Chocobozzz 09f3d81e0c
Merge branch 'release/5.1.0' into develop 2023-03-07 11:17:12 +01:00
Wicklow 73fb3dc535 Fix file token reinjection on fragments 2023-03-07 11:16:56 +01:00
Chocobozzz d9dbf27a7d
Merge branch 'release/5.1.0' into develop 2023-03-07 10:42:31 +01:00
Chocobozzz b52f504848
Add test to ensure files are deleted 2023-03-07 10:18:32 +01:00
Chocobozzz f2dbbf6a96
Don't take db lives into account for video quota 2023-03-07 10:18:32 +01:00
Wicklow 692ae8c31c
Hotfix/filter subscription videos (#5665)
* Fix filters on subscription videos

* Add tests to common video filters

* Improve reliability when skipping subscrition path

* Better parameters for skipping subscription videos
2023-03-02 14:50:55 +01:00
Chocobozzz c0a4982ebe
Fix 404 when having ;threadId param 2023-03-02 10:35:59 +01:00
Chocobozzz 8d1f78044c
Add ability to disable http duration OTEL metrics 2023-02-27 13:53:54 +01:00
Chocobozzz 5b94394a1a
Fix E2E with firefox 2023-02-27 11:58:35 +01:00
Chocobozzz d7ce9dca61
Add additional check for playlistName 2023-02-27 09:44:03 +01:00
Chocobozzz 4765348107
Add x-powered-by header 2023-02-27 09:22:59 +01:00
Wicklow c0687c91b9 Add server hooks for listing subscription 2023-02-25 15:47:48 +01:00
Chocobozzz d41f4a6dc6
Improve image test comparison 2023-02-24 15:10:13 +01:00
Wicklow 16ccb43767 Fix filters on playlists 2023-02-23 16:07:44 +01:00
Chocobozzz f44cd95c01
Update doc anchor links 2023-02-23 09:46:43 +01:00
Chocobozzz c6ae14ee3f
Fix typo 2023-02-23 08:25:03 +01:00
Chocobozzz c5c95361e6
Move to new documentation links 2023-02-22 16:15:14 +01:00
John Livingston 5471449f99 Fix #5614: do not log bearerToken. 2023-02-17 15:10:47 +01:00
Chocobozzz efaf379789
Fix dev instance following test instances 2023-02-17 10:28:33 +01:00
Chocobozzz 82e3ae1523
Fix CI 2023-02-17 09:21:11 +01:00
Chocobozzz 182082f52d
Update bullmq
Requires redis >= 6.2
2023-02-16 14:10:11 +01:00
Chocobozzz e65ef81cf5
Update server dependencies 2023-02-16 11:56:58 +01:00
Chocobozzz 5bfe684e76
Move webfinger controller in well known router 2023-02-15 16:36:04 +01:00
Chocobozzz 1a73a7dcd0
Move cli.ts in a private shared directory
It's only used by cli scripts of this directory
2023-02-15 16:30:33 +01:00
Chocobozzz fd7581b036
Fix "unique viewers" inconsistency with countries 2023-02-15 09:02:34 +01:00
Chocobozzz 20321f2049
Reencode the video on cut
Unfortunately copying audio/video is not precise enough and could lead
to inconsistencies
2023-02-14 14:06:34 +01:00
Chocobozzz 4ea827076d
Fix audio out of synced on studio cut 2023-02-14 11:00:24 +01:00
Chocobozzz 9625be3857
Fix CI timeout 2023-02-14 09:04:49 +01:00
Chocobozzz 4565774669
Fix retrying update on sql serialization conflict 2023-02-14 09:03:22 +01:00
Chocobozzz afb371d940
Refactor playlist creation for lives 2023-01-27 09:04:02 +01:00
Chocobozzz a2be43f570
Merge branch 'release/5.0.0' into develop 2023-01-27 08:34:16 +01:00
Chocobozzz 8059e050ef
Fix live with base url object storage 2023-01-27 08:30:56 +01:00
Chocobozzz 2a720a0fac
Try to debug test timeout 2023-01-24 11:57:37 +01:00
Chocobozzz ff71e06ad1
Add user registration policy info 2023-01-23 14:49:29 +01:00
Chocobozzz 4115f20084
Add ability to not send an email for registration 2023-01-20 15:34:01 +01:00
Chocobozzz 9436936cf6
Add more signup limit tests 2023-01-19 15:27:04 +01:00
Chocobozzz 4e4c23c5b8
Merge branch 'release/5.0.0' into develop 2023-01-19 15:25:52 +01:00
Chocobozzz 823e411fa6
Fix signup limit 2023-01-19 15:23:06 +01:00
Chocobozzz a68ccaead6
(breaking): Always list nsfw videos in playlists
Keep the same behaviour as unlisted videos
The frontend is in charge to blur the video element if the nsfw setting
is "hide" or "blur"
2023-01-19 15:04:10 +01:00
Chocobozzz 32fde390f4
Use unknown when category is not set
Unstead of Misc, that could be a real category
2023-01-19 14:09:57 +01:00
Chocobozzz 1f6dd00844
Warn on too big max upload part 2023-01-19 14:08:05 +01:00
Chocobozzz f959b51824
Fix broken merge 2023-01-19 14:00:37 +01:00
Chocobozzz 6e06694fd6
Fix semver comparison 2023-01-19 13:54:53 +01:00
Chocobozzz f008e9f3f3
Add missing url unique index in local video viewer 2023-01-19 13:54:52 +01:00
Chocobozzz b379759f55 Add signup approval API tests 2023-01-19 13:53:40 +01:00
Chocobozzz e364e31e25 Implement signup approval in server 2023-01-19 13:53:40 +01:00
Chocobozzz eba2a7a834
Don't need a special comment sort function 2023-01-12 11:19:42 +01:00
Chocobozzz 0b96a0fb77
Optimize again comments list sql query 2023-01-12 11:11:41 +01:00