59 Commits

Author SHA1 Message Date
Chocobozzz
034e1bf328
Migrate eslint to v9 2025-05-07 15:49:23 +02:00
Chocobozzz
52a4813fbb
Fix tests 2025-05-06 11:26:33 +02:00
Chocobozzz
dd4027a10f
Improve NSFW system
* Add NSFW flags to videos so the publisher can add more NSFW context
 * Add NSFW summary to videos, similar to content warning system so the
   publisher has a free text to describe NSFW aspect of its video
 * Add additional "warn" NSFW policy: the video thumbnail is not blurred
   and we display a tag below the video miniature, the video player
   includes the NSFW warning (with context if available) and it also
   prevent autoplay
 * "blur" NSFW settings inherits "warn" policy and also blur the video
   thumbnail
 * Add NSFW flag settings to users so they can have more granular
   control about what content they want to hide, warn or display
2025-04-30 15:54:11 +02:00
Chocobozzz
97b846b806
Fix tests 2025-04-16 15:58:14 +02:00
Chocobozzz
b7a974e448
Support query params in runner custom upload 2025-04-16 15:00:59 +02:00
kontrollanten
a7be820abc
add user agent video stats (#6871)
* add user agent video stats

closes #6832

* Disable indexes, support start/end dates

* move ua parsing to client

* Openapi, inline body request, update tests

---------

Co-authored-by: Chocobozzz <me@florianbigard.com>
2025-04-07 10:29:59 +02:00
Chocobozzz
b295dd5820
Redesign manage my videos
* Use a table to list my videos for a clearer overview and so it's
   easier to add bulk actions in the future
 * Use a "Manage" video page with a proper URL navigation
 * Add "Stats" and "Studio" in this "Manage" page
2025-04-02 10:49:25 +02:00
Chocobozzz
56a28cb95e
Fix flaky tests 2025-03-19 16:23:55 +01:00
Chocobozzz
df2d584b1b
Put db dump in artifacts directory 2025-03-18 10:51:32 +01:00
Chocobozzz
772a41e9ea
Save DB of tests too 2025-03-18 09:23:03 +01:00
Chocobozzz
cb91056514
Support <podcast:txt purpose="p20url"> element 2025-03-04 13:49:25 +01:00
Chocobozzz
0bf17d869c
Add typeOneOf filter to list notifications 2025-02-20 11:48:15 +01:00
Chocobozzz
cb5f0b8959
Fix tests 2025-02-12 10:33:34 +01:00
Chocobozzz
260447942a
Add ability to put captions in object storage
Deprecate:
 * `path` and `url` of `ActorImage` (used to represent account/channel
   avatars/banners) in favour of `fileUrl`
 * `path` of `AvatarInfo` (used in notifications) in favour of `fileUrl`
 * `captionPath` of `VideoCaption` in favour of `fileUrl`
 * `storyboardPath` of `Storyboard` in favour of `fileUrl`
2025-02-07 09:35:39 +01:00
Chocobozzz
94a7879d7d
Add host to common video filters 2025-01-31 16:08:09 +01:00
Chocobozzz
23cd92430f
Don't publish video before audio stream 2025-01-31 07:04:34 +01:00
kontrollanten
a51fb3f35e
feat(API): permissive email check in login, reset & verification (#6648)
* feat(API): permissive email check in reset & verification

In order to not force users to be case sensitive when asking for
password reset or resend email verification. When there's multiple
emails where the only difference in the local is the capitalized
letters, in those cases the users has to be case sensitive.

closes #6570

* feat(API/login): permissive email handling

Allow case insensitive email when there's no other candidate.

closes #6570

* code review changes

* Fix tests

* Add more duplicate email checks

---------

Co-authored-by: Chocobozzz <me@florianbigard.com>
2025-01-28 14:16:43 +01:00
Chocobozzz
6ef092f0da
Fix transcoding of audio only videos 2025-01-17 10:30:14 +01:00
Chocobozzz
5b4c7fc20d
Add custom upload ability for runners 2025-01-09 10:29:16 +01:00
Chocobozzz
3842a527f6
Remove deprecated server code 2024-11-04 10:23:01 +01:00
Chocobozzz
a91bd80087
Add ability to filter requested runner jobs 2024-10-31 10:22:35 +01:00
kontrollanten
41c70a6b35
Sitemap: Hide empty accounts/channels and add video tags (#6633)
* feat(sitemap): remove empty accounts/channels

closes #6607

* feat(sitemap): add more video tags

https://developers.google.com/search/docs/crawling-indexing/sitemaps/video-sitemaps

closes #6606

* Chunk videos SQL query

* Optimize SQL query

---------

Co-authored-by: Chocobozzz <me@florianbigard.com>
2024-10-23 07:17:02 +02:00
Chocobozzz
c255ea92cf
Update server dependencies 2024-08-16 14:27:49 +02:00
Chocobozzz
7d52f17a35
Fix tests 2024-08-14 11:07:13 +02:00
Chocobozzz
5439a591e0
Add ability to set proxies to youtube-dl 2024-08-13 10:49:31 +02:00
Chocobozzz
bbaf96d60d
Support max FPS configuration 2024-08-13 09:38:36 +02:00
Chocobozzz
0a87497a11
Merge branch 'release/6.2.0' into develop 2024-08-05 16:34:58 +02:00
Chocobozzz
e7b9311e92
Don't send m3u8 containing non existing chunks 2024-08-05 16:32:55 +02:00
Chocobozzz
816f346a60 Separate HLS audio and video streams
Allows:
  * The HLS player to propose an "Audio only" resolution
  * The live to output an "Audio only" resolution
  * The live to ingest and output an "Audio only" stream

 This feature is under a config for VOD videos and is enabled by default for lives

 In the future we can imagine:
  * To propose multiple audio streams for a specific video
  * To ingest an audio only VOD and just output an audio only "video"
    (the player would play the audio file and PeerTube would not
    generate additional resolutions)

This commit introduce a new way to download videos:
 * Add "/download/videos/generate/:videoId" endpoint where PeerTube can
   mux an audio only and a video only file to a mp4 container
 * The download client modal introduces a new default panel where the
   user can choose resolutions it wants to download
2024-08-05 08:31:59 +02:00
Chocobozzz
1bfb791e05
Integrate transcription in PeerTube 2024-06-28 08:44:58 +02:00
lutangar
ef14cf4a5c
feat(transcription): groundwork
chore: fiddling around some more

chore: add ctranslate2 and timestamped

chore: add performance markers

chore: refactor test

chore: change worflow name

chore: ensure Python3

chore(duration): convert to chai/mocha syntahx

chore(transcription): add individual tests for others transcribers

chore(transcription): implement formats test of all implementations

Also compare result of other implementation to the reference implementation

chore(transcription): add more test case with other language and models size and local model

chore(test): wip ctranslate 2 adapat

chore(transcription): wip transcript file and benchmark

chore(test): clean a bit

chore(test): clean a bit

chore(test): refacto timestamed spec

chore(test): update workflow

chore(test): fix glob expansion with sh

chore(test): extract some hw info

chore(test): fix async tests

chore(benchmark): add model info

feat(transcription): allow use of a local mode in timestamped-whisper

feat(transcription): extract run and profiling info in own value object

feat(transcription): extract run concept in own class an run more bench

chore(transcription): somplify run object only a uuid is now needed and add more benchmark scenario

docs(transcription): creates own package readme

docs(transcription): add local model usage

docs(transcription): update README

fix(transcription): use fr video for better comparison

chore(transcription): make openai comparison passed

docs(timestamped): clea

chore(transcription): change transcribers transcribe method signature

Introduce whisper builtin model.

fix(transcription): activate language detection

Forbid transcript creation without a language.
Add `languageDetection` flag to an engine and some assertions.

Fix an issue in `whisper-ctranslate2` :
https://github.com/Softcatala/whisper-ctranslate2/pull/93

chore(transcription): use PeerTube time helpers instead of custom ones

Update existing time function to output an integer number of seconds and add a ms human-readable time formatter with hints of tests.

chore(transcription): use PeerTube UUID helpers

chore(transcription): enable CER evaluation

Thanks to this recent fix in Jiwer <3
https://github.com/jitsi/jiwer/issues/873

chore(jiwer): creates JiWer package

I'm not very happy with the TranscriptFileEvaluator constructor... suggestions ?

chore(JiWer): add usage in README

docs(jiwer): update JiWer readme

chore(transcription): use FunMOOC video in fixtures

chore(transcription): add proper english video fixture

chore(transcription): use os tmp directory where relevant

chore(transcription): fix jiwer cli test reference.txt

chore(transcription): move benchmark out of tests

chore(transcription): remove transcription workflow

docs(transcription): add benchmark info

fix(transcription): use ms precision in other transcribers

chore(transcription): simplify most of the tests

chore(transcription): remove slashes when building path with join

chore(transcription): make fromPath method async

chore(transcription): assert path to model is a directory for CTranslate2 transcriber

chore(transcription): ctranslate2 assertion

chore(transcription): ctranslate2 assertion

chore(transcription): add preinstall script for Python dependencies

chore(transcription): add download and unzip utils functions

chore(transcription): add download and unzip utils functions

chore(transcription): download & unzip models fixtures

chore(transcription): zip

chore(transcription): raise download file test timeout

chore(transcription): simplify download file test

chore(transcription): add transcriptions test to CI

chore(transcription): raise test preconditions timeout

chore(transcription): run preinstall scripts before running ci

chore(transcription): create dedicated tmp folder for transcriber tests

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): use short video for local model test

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): raise timeout some more

chore(transcription): setup verbosity based on NODE_ENV value
2024-06-28 08:43:40 +02:00
Chocobozzz
2b189131fa
Add house-keeping script 2024-06-05 15:35:58 +02:00
Chocobozzz
96b9748585
Support CLI move of original video file 2024-06-04 09:08:24 +02:00
Chocobozzz
29329d6c45 Implement auto tag on comments and videos
* Comments and videos can be automatically tagged using core rules or
   watched word lists
 * These tags can be used to automatically filter videos and comments
 * Introduce a new video comment policy where comments must be approved
   first
 * Comments may have to be approved if the user auto block them using
   core rules or watched word lists
 * Implement FEP-5624 to federate reply control policies
2024-05-29 15:03:14 +02:00
Chocobozzz
5cb3e6a0b8
Use sessionId instead of IP to identify viewer
Breaking: YAML config `ip_view_expiration` is renamed `view_expiration`
Breaking: Views are taken into account after 10 seconds instead of 30
seconds (can be changed in YAML config)

Purpose of this commit is to get closer to other video platforms where
some platforms count views on play (mux, vimeo) or others use a very low
delay (instagram, tiktok)

We also want to improve the viewer identification, where we no longer
use the IP but the `sessionId` generated by the web browser. Multiple
viewers behind a NAT can now be able to be identified as independent
viewers (this method is also used by vimeo or mux)
2024-04-04 16:27:40 +02:00
Chocobozzz
817f754c22
Remove difficult to maintain config update method 2024-03-28 09:10:36 +01:00
Chocobozzz
a159b8b517
Add ability to list and delete original file
In admin
2024-03-26 14:10:02 +01:00
chagai95
e57c3024f4
Add config option to keep original video file (basic first version) (#6157)
* testing not removing old file and adding columb to db

* implement feature

* remove unnecessary config changes

* use only keptOriginalFileName, change keptOriginalFileName to keptOriginalFilename for consistency with with videoFile table, slight refactor with basename()

* save original video files to dedicated directory original-video-files

* begin implementing object storage (bucket) support

---------

Co-authored-by: chagai.friedlander <chagai.friedlander@fairkom.eu>
Co-authored-by: Ian <ian.kraft@hotmail.com>
Co-authored-by: Chocobozzz <me@florianbigard.com>
2024-03-15 15:47:18 +01:00
Chocobozzz
10e78bb778
Remove twitter whitelisted option
It doesn't seem to be required
2024-03-08 10:54:29 +01:00
Chocobozzz
7be401ac76
Fix playlist elements merge on import 2024-02-28 15:55:37 +01:00
Chocobozzz
68d006b6fc
Add config to disable storing lives in s3 2024-02-26 16:14:40 +01:00
Chocobozzz
109e93c139
Generate 600x600 and 1500x1500 avatars 2024-02-26 15:00:22 +01:00
Chocobozzz
bb7cb0d2fd
Add ability to set avatar to instance 2024-02-23 14:27:11 +01:00
Chocobozzz
db06d13c67
Fix typescript tests 2024-02-23 08:33:01 +01:00
Chocobozzz
9e2700b89d
Fix lint 2024-02-22 10:32:28 +01:00
Chocobozzz
3cac8a756f Fix lint, tests and styling 2024-02-21 13:49:08 +01:00
Chocobozzz
f6af3f701c Add user import/export tests 2024-02-21 13:49:08 +01:00
Chocobozzz
7ee0efb57a
Add ability to set a banner to the instance 2024-02-20 11:33:10 +01:00
Chocobozzz
5f09fde24e
Fix tests 2024-02-15 14:14:50 +01:00
Chocobozzz
a012d6c2a9
Add notification on subscription live stream 2024-02-15 14:06:25 +01:00