Commit Graph

3754 Commits

Author SHA1 Message Date
Chocobozzz b6b50bf0b4
Use new plugin index sort and recommended tags 2023-12-20 10:55:47 +01:00
Chocobozzz fe37e5232b
Add ability to customize views/playback interval 2023-12-20 10:55:47 +01:00
Chocobozzz 49a4b8cb7d
Add stats to logger 2023-12-20 10:55:47 +01:00
Chocobozzz b4f4432459
Viewers federation protocol v2
More efficient than the current one where instance is not fast enough to
send all viewers if a video becomes popular

The new protocol can be enabled by setting env
USE_VIEWERS_FEDERATION_V2='true'

Introduce a result field in View activity that contains the number of
viewers. This field is used by the origin instance to send the total
viewers on the video to remote instances. The difference with the
current protocol is that we don't have to send viewers individually to
remote instances.

There are 4 cases:
 * View activity from federation on Remote Video -> instance replaces
   all current viewers by a new viewer that contains the result counter
 * View activity from federation on Local Video -> instance adds the
   viewer without considering the result counter
 * Local view on Remote Video -> instance adds the viewer and send it to
   the origin instance
 * Local view on Local Video -> instance adds the viewer

Periodically PeerTube cleanups expired viewers. On local videos, the
instance sends to remote instances a View activity with the result
counter so they can update their viewers counter for that particular
video
2023-12-20 10:55:47 +01:00
Chocobozzz a73f476c8a
We don't need cookies for REST API 2023-12-20 10:55:47 +01:00
Chocobozzz dbdc20e673
Optimize views endpoint
Lazy write data in redis
2023-12-20 10:55:47 +01:00
Chocobozzz eba9528391
Optimize async middleware
Avoid using bluebird, a simple for/await is enought
2023-12-20 10:55:47 +01:00
Chocobozzz c93b7088c2
Fix downloading video files from object storage
With title that contains non ISO 8859 characters
2023-12-19 07:26:09 +01:00
Chocobozzz 1e121c9898
Fix invalid state change notif of remote live 2023-12-15 15:58:07 +01:00
Chocobozzz 4662badde7
Fix privacy error on live update without privacy 2023-12-15 15:51:59 +01:00
Chocobozzz af8a47125f
Better isNewVideo variable/functions name 2023-12-15 14:52:12 +01:00
Chocobozzz 675f219639
Fix webtorrent crash
See https://github.com/Chocobozzz/PeerTube/issues/6109
2023-12-15 10:18:20 +01:00
Chocobozzz edc695263f
Escape quotes for html attributes 2023-12-14 11:33:08 +01:00
Chocobozzz 63c4a02ce0
Fix views events with lives 2023-12-14 11:12:18 +01:00
Chocobozzz ff338f7dda
Fix embed when waiting for a live 2023-12-08 10:13:08 +01:00
Chocobozzz e06e2da187
Fix cpu count when cpu info not available 2023-12-08 09:13:16 +01:00
Chocobozzz 8a22cfd628
Fix client URLs for channels and accounts 2023-12-08 08:57:14 +01:00
Chocobozzz 2fde12d7e1
Fix profile page JSONLD 2023-12-08 08:41:14 +01:00
Chocobozzz 4fd8d34175
Ensure user is owned by plugin before updating it 2023-12-06 08:43:19 +01:00
Chocobozzz c6047e1573
Add missing logger tags 2023-11-29 16:31:29 +01:00
Chocobozzz f9e710e7d4
Fix chapters import 2023-11-29 14:12:13 +01:00
Chocobozzz ba56aadb63
Regenerate storyboard after studio 2023-11-29 09:58:20 +01:00
Chocobozzz bda1d751a5
Add warning for web_videos directory name 2023-11-29 09:28:12 +01:00
Chocobozzz c900788e59
Remove async-lru cache for jsonld
jsonld library has already a cache
2023-11-29 06:51:29 +01:00
Chocobozzz a5bdce80f6
Keep increasing storyboard generation ttl 2023-11-28 15:42:48 +01:00
Chocobozzz 17f1920658
Fix CPU going to 100% on odd cpu count
See https://github.com/piscinajs/piscina/pull/457
2023-11-28 13:32:51 +01:00
Chocobozzz a0606360a7
Return 400 if filter query is still there 2023-11-28 08:08:57 +01:00
Chocobozzz 11f40299c5
Workaround to fix bug where CPU at 100%
Commit b017d4d02f does not seem to work
2023-11-24 18:11:11 +01:00
Chocobozzz b017d4d02f
Fix weird bug where CPU jumps and stays to 100%
Seems related to lazy import of custom-jsonld-signature
So we refactored jsonld function calls a little bit
2023-11-24 14:44:18 +01:00
Chocobozzz f93bc6a8be
Retry runner job db saving if needed 2023-11-24 14:44:04 +01:00
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