Compare commits

..

1558 Commits

Author SHA1 Message Date
Joshua M. Boniface
3b73e74ce5 Bump version to 10.6.1 2020-07-27 18:59:16 -04:00
Anthony Lavado
8bb03e8f91 Merge pull request #3711 from yrjyrj123/fix_hw_decoder_for_macos
Fix the problem that hardware decoding cannot be used on macOS.

(cherry picked from commit ea0489a98e)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
Anthony Lavado
3e742e99a5 Merge pull request #3704 from oddstr13/pr-dotdir-sample-1
Don't ignore dot directories or movies/episodes with sample in their name.

(cherry picked from commit 6eb3e736c6)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
dkanada
ad3a96267e Merge pull request #3703 from oddstr13/pr-username-space-1
Allow space in username

(cherry picked from commit 8ab800508b)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
Anthony Lavado
8b42ef451c Merge pull request #3699 from oddstr13/pr-embedded-subs-1
Fix embedded subtitles

(cherry picked from commit bfecfab538)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
Joshua M. Boniface
4ce16489a4 Merge pull request #3675 from ferferga/fix-typo
Fix typo in debian config file

(cherry picked from commit 1a9adf283a)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
Bond-009
809651ceaf Merge pull request #3663 from crobibero/efcore-leak
Add missing usings to UserManager

(cherry picked from commit 6b11cccb7f)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
Anthony Lavado
6547ae46ce Merge pull request #3660 from crobibero/plugin-config-location
Force plugin config location

(cherry picked from commit 468a7fea4c)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
Bond-009
cbf6ef4dbd Merge pull request #3649 from thornbill/fix-epg-update-maybe
Skip image processing for live tv sources

(cherry picked from commit e9758bde2a)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
Bond-009
e4ce72e7bb Merge pull request #3642 from crobibero/plugin-repo-x2
Try adding plugin repository again

(cherry picked from commit a86d8d1757)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
Anthony Lavado
3b758c3a66 Merge pull request #3634 from crobibero/plugin-config
fix built in plugin js

(cherry picked from commit f23e119a68)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
Bond-009
dadd42e574 Merge pull request #3620 from BaronGreenback/IPFix
Fix for #3607 and #3515

(cherry picked from commit 0750357916)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
dkanada
349b789492 Merge pull request #3616 from crobibero/migration-new-install
Allow migration to optionally run on fresh install

(cherry picked from commit 107cf21f26)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
Bond-009
0ee0aa8941 Merge pull request #3615 from jellyfin/qsv-comet-lake
Fix QSV device creation on Comet Lake

(cherry picked from commit 6de6583cbd)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
Bond-009
94dbdd9f98 Merge pull request #3604 from joshuaboniface/fix-bad-deps
Fix bad Debuntu dependencies

(cherry picked from commit 41c4cfe0af)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
Bond-009
9875f30836 Merge pull request #3602 from crobibero/user-change-case
Fix username case change

(cherry picked from commit 8f11e057a2)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
Anthony Lavado
a717a531bc Merge pull request #3576 from HelloWorld017/fix/sami-utf16
Fix SAMI UTF-16 Encoding Bug

(cherry picked from commit 0cb2cd9456)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
Bond-009
d04e255a79 Merge pull request #3552 from BaronGreenback/NotificationFix
Fixes #3551 (Notifications Serialization error)

(cherry picked from commit 944fdb4c62)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
Bond-009
2fd902f1b2 Merge pull request #3521 from sachk/master
Fix support for mixed-protocol subtitles

(cherry picked from commit 323fc576a5)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-07-27 18:53:09 -04:00
Bond-009
c8539709ac Merge pull request #3596 from joshuaboniface/fix-typo
Fix typo in CI configuration
2020-07-19 23:57:46 +02:00
Joshua M. Boniface
2f2fe3552d Fix typo in CI configuration 2020-07-19 17:54:46 -04:00
Joshua M. Boniface
677ec1b27a Merge pull request #3575 from jellyfin/ffmpeg-depends
Bump the minimun required jellyfin-ffmpeg version
2020-07-19 17:16:08 -04:00
Joshua M. Boniface
a5b673d542 Revert "bump the minimum required jellyfin-ffmpeg ver to 4.3.1-1"
This reverts commit d3fa6b428a.

Don't change this, since 4.3.1 won't build on Stretch but we still want
to support it.
2020-07-19 17:06:58 -04:00
Joshua M. Boniface
0b73f3d646 Merge pull request #3569 from nyanmisaka/textsub-fix
Fix QSV subtitle burn-in on windows and P010 detect
2020-07-19 16:59:58 -04:00
Joshua M. Boniface
050c6cdaa4 Merge pull request #3593 from joshuaboniface/nuget-publish
Add NuGet publish step to tag CI
2020-07-19 14:17:11 -04:00
Joshua M. Boniface
dfd00c7b24 Add NuGet publish step to tag CI 2020-07-19 14:01:32 -04:00
Anthony Lavado
6ab4493ecb Merge pull request #3591 from crobibero/clear-existing-image
Remove profile image before setting new
2020-07-19 11:21:08 -04:00
Bond-009
7ad08953c0 Merge pull request #3590 from crobibero/tvdb-actors
Fix tvdb actors url
2020-07-19 17:16:49 +02:00
Bond-009
ce07e45897 Merge pull request #3585 from Ken-g6/2354-soft-link-sizes
2354 fix soft link sizes
2020-07-19 17:16:13 +02:00
crobibero
59365150d8 Remove profile image before setting new 2020-07-19 08:31:35 -06:00
crobibero
8a778c08d2 Fix tvdb actors url 2020-07-19 08:21:26 -06:00
Anthony Lavado
8ac08499bc Merge pull request #3587 from crobibero/user-update-policy
fix UserManager UpdatePolicy
2020-07-18 23:04:14 -04:00
crobibero
2f38d9700c fix UserManager UpdatePolicy 2020-07-18 20:29:27 -06:00
Ken
eea142cad1 FullName property instead of ToString in Emby.Server.Implementations/IO/ManagedFileSystem.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-07-18 19:40:28 -06:00
Ken
d719ca78b4 Spacing standard on Emby.Server.Implementations/IO/ManagedFileSystem.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-07-18 19:39:31 -06:00
Anthony Lavado
6e1735d311 Merge pull request #3586 from barronpm/remove-networkpath
Remove obsolete network path code
2020-07-18 20:40:37 -04:00
Anthony Lavado
8782c19068 Merge pull request #3582 from barronpm/update-dotnet
Update .NET Core to 3.1.6
2020-07-18 19:40:46 -04:00
Anthony Lavado
f9d4b0a2d7 Merge pull request #3579 from crobibero/activity-log-userid
Add UserId filter to ActivityLog Entries endpoint
2020-07-18 19:40:30 -04:00
Patrick Barron
b53bf2cd16 Remove obsolete network path code 2020-07-18 16:21:01 -04:00
Ken Brazier
6a39b1a4ca Merge 'master' updates into 2354-soft-link-sizes 2020-07-18 11:39:53 -06:00
Patrick Barron
4742ddbb71 Update .NET Core to 3.1.6 2020-07-17 19:48:11 -04:00
Anthony Lavado
09c05ff9fa Merge pull request #3581 from crobibero/delete-logging
Increase delete logging
2020-07-17 18:21:29 -04:00
crobibero
e152a6c82f Increase delete logging 2020-07-17 15:53:10 -06:00
crobibero
4dd91f3667 Add UserId filter to ActivityLog Entries endpoint 2020-07-17 12:17:11 -06:00
David
0140262e2f Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2020-07-17 10:03:36 -04:00
Nyanmisaka
77f9417d84 enhance platform check and 10bit detect 2020-07-17 19:32:15 +08:00
Akachai Bunsorn
7e53bc5ec5 Translated using Weblate (Thai)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/th/
2020-07-17 05:39:16 -04:00
nyanmisaka
cd714a724d utilize jellyfin-ffmpeg for portable x64 2020-07-17 14:40:27 +08:00
nyanmisaka
d3fa6b428a bump the minimum required jellyfin-ffmpeg ver to 4.3.1-1 2020-07-17 14:37:29 +08:00
dkanada
10d396d56d Merge pull request #3573 from crobibero/plugin-request-exception
Catch HttpRequestException when requesting plugins
2020-07-17 06:44:15 +09:00
Joshua M. Boniface
55dafd4149 Merge pull request #3563 from cvium/fix_next_up
Only fetch Next Up for episodes that have been fully matched
2020-07-16 16:30:55 -04:00
Nyanmisaka
e1ba1fcebe fix indent 2020-07-17 01:41:24 +08:00
Nyanmisaka
c1c1a2f751 Match the size of subtitle stream and video stream 2020-07-17 01:30:35 +08:00
ADRI IDZWAN MANSOR
0c64ad9b16 Translated using Weblate (Malay)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ms/
2020-07-16 12:18:51 -04:00
crobibero
b541d9f6ff Merge remote-tracking branch 'upstream/master' into plugin-request-exception 2020-07-16 09:54:21 -06:00
Anthony Lavado
edae7b954b Merge pull request #3570 from crobibero/async-cancellation
Add EnumeratorCancellation attribute
2020-07-16 11:53:21 -04:00
crobibero
f40bcff113 Catch HttpRequestException when requesting plugins 2020-07-16 08:28:31 -06:00
crobibero
0095cb1947 Add EnumeratorCancellation attribute 2020-07-16 07:32:58 -06:00
Nyanmisaka
32fb34a4cc Fix QSV subtitle burn-in on windows and P010 detect 2020-07-16 21:09:04 +08:00
Nyanmisaka
83a344b627 Merge pull request from jellyfin/master 2020-07-16 21:03:49 +08:00
Anthony Lavado
a9ce8a804f Merge pull request #3566 from cvium/fix_tvdb_a_little
TVDB: Fetch image keytypes before querying images
2020-07-15 19:04:02 -04:00
Anthony Lavado
c934d9e43a Merge pull request #3562 from rotvel/feature/fix-audio-transcoding
Fix audio file transcoding.
2020-07-15 18:42:18 -04:00
Claus Vium
90fa1149fa Fix warnings 2020-07-15 19:04:36 +02:00
Claus Vium
6d37a5fe52 Change to IAsyncEnumerable 2020-07-15 17:14:39 +02:00
Claus Vium
8c0168ef72 Fetch image keytypes before querying images 2020-07-15 16:45:14 +02:00
Claus Vium
a23920e2ad Only fetch Next Up for episodes that have been fully matched 2020-07-15 13:18:02 +02:00
Max Git
b356ff6c89 Simplify name of IsCopyDoc 2020-07-15 06:58:36 +02:00
Max Git
87f5a6bdb3 Move videostream null check to start of GetHardwareAcceleratedVideoDecoder 2020-07-15 05:56:05 +02:00
dkanada
2307052efc Merge pull request #3549 from neilsb/master
Prevent failure to bind to Auto Discover port being a fatal error
2020-07-15 08:16:21 +09:00
Anthony Lavado
175e7b45e5 Merge pull request #3557 from crobibero/fix-update-user
Fix update user
2020-07-14 11:23:35 -04:00
crobibero
e143387cbd Fix update user 2020-07-14 06:47:46 -06:00
Raif Coonjah
eddce72c52 Translated using Weblate (Afrikaans)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/af/
2020-07-14 08:26:12 -04:00
dkanada
87d7c4a62e Merge pull request #3500 from nyanmisaka/vpp-qsv
Add FFmpeg 4.3 detection and solve the green line on QSV HWA
2020-07-14 20:31:13 +09:00
dkanada
50dcc11430 Merge pull request #3555 from cvium/fix_disposed_context
Fix disposed database context
2020-07-14 20:29:21 +09:00
Claus Vium
340b585234 Use ToList instead of AsEnumerable due to delayed execution 2020-07-14 12:38:56 +02:00
dkanada
203825f772 Merge pull request #3541 from jellyfin/pause
Keep playstate during syncplay group creation
2020-07-14 09:25:46 +09:00
dkanada
bf09bbeacd update comment
Co-authored-by: Patrick Barron <18354464+barronpm@users.noreply.github.com>
2020-07-14 08:25:02 +09:00
Joshua M. Boniface
f8e8626898 Merge pull request #3539 from barronpm/fix-memoryleak
Fix EF Core Memory Leak
2020-07-13 14:54:15 -04:00
Bond-009
f1a7b0586b Merge pull request #3553 from joshuaboniface/fix-azure-fuckery
Explicitly add what Azure used to do implicitly
2020-07-13 20:44:07 +02:00
Joshua M. Boniface
b4212cc210 Explicitly add what Azure used to do implicitly
... before they changed it on us out of nowhere.
2020-07-13 14:36:35 -04:00
Patrick Barron
b468ae2aea Use AsEnumerable for UserManager.Users 2020-07-13 14:09:20 -04:00
dkanada
8a28b55760 Merge pull request #3545 from jellyfin/dependabot/nuget/AutoFixture-4.13.0
Bump AutoFixture from 4.12.0 to 4.13.0
2020-07-14 03:04:53 +09:00
Patrick Barron
18c03fa9c8 Merge branch 'master' into fix-memoryleak 2020-07-13 17:45:54 +00:00
Patrick Barron
befd0c7a00 Remove EF Core Proxies 2020-07-13 12:49:20 -04:00
Neil Burrows
da8eb1f15b using System.Net.Sockets 2020-07-13 16:33:39 +01:00
Neil Burrows
25e3827488 Update Emby.Server.Implementations/EntryPoints/UdpServerEntryPoint.cs
Update log format message and log exception

Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-07-13 15:39:14 +01:00
Neil Burrows
359b0044b8 Prevent failure to bind to Auto Discover port being a fatal error 2020-07-13 15:12:51 +01:00
dependabot[bot]
aefe011d7d Bump AutoFixture from 4.12.0 to 4.13.0
Bumps [AutoFixture](https://github.com/AutoFixture/AutoFixture) from 4.12.0 to 4.13.0.
- [Release notes](https://github.com/AutoFixture/AutoFixture/releases)
- [Commits](https://github.com/AutoFixture/AutoFixture/compare/v4.12.0...v4.13.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-13 12:04:07 +00:00
kanenses
52290380aa Translated using Weblate (Portuguese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt/
2020-07-13 03:34:16 -04:00
Joshua M. Boniface
29a386ee2d Merge pull request #3533 from barronpm/user-login-casing
Make User Authentication Case-insensitive and remove EF Core Log spam
2020-07-12 19:32:51 -04:00
dkanada
5e706ba7ce keep playstate during syncplay group creation 2020-07-13 06:55:03 +09:00
Patrick Barron
0ee55bc1f9 Use AsEnumerable instead of ToList 2020-07-12 15:08:55 -04:00
Patrick Barron
8959621da7 Fix EF Core memory leak 2020-07-12 14:45:52 -04:00
dkanada
04648c7e98 Merge pull request #3535 from crobibero/syncplay-v10
Fix syncplay function name
2020-07-12 01:39:48 +09:00
crobibero
2c231e84e6 Fix syncplay function name 2020-07-11 10:26:01 -06:00
Patrick Barron
c0bd10879a Ignore casing when authenticating users 2020-07-09 21:55:07 -04:00
rhythm493
172203b5cc Translated using Weblate (Marathi)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/mr/
2020-07-08 14:04:34 -04:00
Anthony Lavado
7884a85e62 Merge pull request #3519 from jellyfin/azure-ci
Add conditionals to root YAML definition
2020-07-08 06:41:44 -07:00
dkanada
405bfdf13f Merge pull request #3522 from crobibero/syncplay-endpoints
Clean syncplay endpoint names
2020-07-08 18:16:27 +09:00
Patrick Barron
3cca8db905 Fix log spam from EF Core 2020-07-07 18:20:17 -04:00
crobibero
33c465a5d3 Clean syncplay endpoint names 2020-07-07 07:25:46 -06:00
Joshua M. Boniface
6d0a3a110b Explicitly exit from inline script 2020-07-06 23:03:42 -04:00
Joshua M. Boniface
8bef24f331 Use weird other formating that AZP wants 2020-07-06 22:32:30 -04:00
Joshua M. Boniface
9d9c9a5945 Remove unneeded conditions that are now in parent 2020-07-06 22:14:25 -04:00
Joshua M. Boniface
aab79ef346 Add conditionals to root YAML definition
Prevents running builds (that get skipped) in PR CI, and prevents
running tests (which are irrelevant) in Merge CI.
2020-07-06 22:12:39 -04:00
dkanada
3e53eb1cde Merge pull request #3516 from jellyfin/dependabot/nuget/Moq-4.14.5
Bump Moq from 4.14.4 to 4.14.5
2020-07-06 23:40:52 +09:00
dependabot[bot]
88d06aa156 Bump Moq from 4.14.4 to 4.14.5
Bumps [Moq](https://github.com/moq/moq4) from 4.14.4 to 4.14.5.
- [Release notes](https://github.com/moq/moq4/releases)
- [Changelog](https://github.com/moq/moq4/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moq/moq4/compare/v4.14.4...v4.14.5)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-06 12:02:46 +00:00
Anthony Lavado
3d3e66c5d1 Merge pull request #3513 from barronpm/plugin-exception-fix
Fix TypeLoadException during plugin load
2020-07-05 13:55:24 -07:00
Patrick Barron
942c733d4f Fix TypeLoadException during plugin load 2020-07-05 15:38:35 -04:00
Joshua M. Boniface
f3151e7dc7 Merge pull request #3505 from Bond-009/minor3
Minor fixes
2020-07-05 00:30:35 -04:00
Bond-009
fb91e4fc23 Merge pull request #3502 from barronpm/array-empty
Use Array.Empty
2020-07-04 23:10:45 +02:00
Bond-009
1448df1684 Update MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieProvider.cs
Co-authored-by: Patrick Barron <18354464+barronpm@users.noreply.github.com>
2020-07-04 22:36:02 +02:00
Bond_009
ae6eaa7f02 Minor fixes 2020-07-04 22:06:27 +02:00
Patrick Barron
6d1b00da64 Use Array.Empty 2020-07-04 11:54:25 -04:00
nyanmisaka
d0098f1b95 update ffmpeg 4.3 from zeranoe builds 2020-07-04 19:54:40 +08:00
nyanmisaka
ce85cea9fa solve the green line issue on QSV 2020-07-04 19:21:16 +08:00
nyanmisaka
f5c5352861 add FFmpeg 4.3 detection and tests 2020-07-04 19:14:49 +08:00
Joshua M. Boniface
46f67c9ea4 Merge pull request #3423 from crobibero/easypassword
Remove EasyPassword from Authentication providers
2020-07-04 00:25:00 -04:00
dkanada
176f25fb98 Merge pull request #3495 from anthonylavado/xmltv-upd
Use newer Jellyfin.XmlTv for Guide Fixes
2020-07-04 03:50:48 +09:00
Anthony Lavado
af334f96d6 Use newer Jellyfin.XmlTv for Guide Fixes 2020-07-03 14:11:38 -04:00
Joshua M. Boniface
5caddb242b Merge pull request #3431 from BaronGreenback/3404
Fix for #3404
2020-07-01 16:34:34 -04:00
Zyzto
1140bcc669 Translated using Weblate (Arabic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ar/
2020-06-30 20:44:32 -04:00
Anthony Lavado
72aa0bb1ad Merge pull request #3480 from neilsb/ffmpeg-env-var
Respect FFMpeg path passed via Environment Variable
2020-06-30 11:21:17 -07:00
dkanada
92e7cc8f77 Merge pull request #3473 from jellyfin/dependabot/nuget/Moq-4.14.4
Bump Moq from 4.14.3 to 4.14.4
2020-06-30 11:42:05 +09:00
dependabot[bot]
248a2d61dd Bump Moq from 4.14.3 to 4.14.4
Bumps [Moq](https://github.com/moq/moq4) from 4.14.3 to 4.14.4.
- [Release notes](https://github.com/moq/moq4/releases)
- [Changelog](https://github.com/moq/moq4/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moq/moq4/compare/v4.14.3...v4.14.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-30 02:20:44 +00:00
dkanada
49777f8ee3 Merge pull request #3478 from crobibero/bump-auto-test
bump autofixture
2020-06-30 11:19:55 +09:00
Neil Burrows
6b532b3da5 User string.Empty instead of ""
Co-authored-by: Patrick Barron <18354464+barronpm@users.noreply.github.com>
2020-06-29 20:52:20 +01:00
Neil Burrows
4748df26b6 Remove un-needed comment 2020-06-29 17:25:12 +01:00
Neil Burrows
4389773508 Respect FFMpeg path passed via Environment Variable 2020-06-29 17:17:28 +01:00
crobibero
80b43fb805 bump autofixture 2020-06-29 07:27:15 -06:00
dkanada
c39ad25e4c Merge pull request #3477 from jellyfin/dependabot/nuget/Swashbuckle.AspNetCore-5.5.1
Bump Swashbuckle.AspNetCore from 5.5.0 to 5.5.1
2020-06-29 22:25:19 +09:00
dkanada
9590a1d542 Merge pull request #3475 from jellyfin/dependabot/nuget/AutoFixture-4.12.0
Bump AutoFixture from 4.11.0 to 4.12.0
2020-06-29 22:23:30 +09:00
dependabot[bot]
84e74dbc50 Bump Swashbuckle.AspNetCore from 5.5.0 to 5.5.1
Bumps [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) from 5.5.0 to 5.5.1.
- [Release notes](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/releases)
- [Commits](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/compare/v5.5.0...v5.5.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-29 12:25:06 +00:00
dependabot[bot]
4e2115cd83 Bump AutoFixture from 4.11.0 to 4.12.0
Bumps [AutoFixture](https://github.com/AutoFixture/AutoFixture) from 4.11.0 to 4.12.0.
- [Release notes](https://github.com/AutoFixture/AutoFixture/releases)
- [Commits](https://github.com/AutoFixture/AutoFixture/compare/v4.11.0...v4.12.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-29 12:24:58 +00:00
Gonzalo Seguel
332527cf8c Translated using Weblate (Spanish (Mexico))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_MX/
2020-06-28 02:23:57 -04:00
dkanada
c521ce412c Merge pull request #3461 from Bond-009/readonlyspan
Add support for ReadOnlySpan<char> in IgnorePatterns
2020-06-28 04:32:23 +09:00
Bond-009
dc2fc4ea16 Merge pull request #3378 from crobibero/syncplay-sessionid
[SyncPlay] Remove (unused) SessionId route parameter
2020-06-27 20:53:13 +02:00
Bond-009
89ef8d79d6 Merge pull request #3465 from BaronGreenback/BugFix2
10.6.0.0 Null Pointer fix
2020-06-27 20:43:37 +02:00
BaronGreenback
2f4860741c _config.Configuration.PluginRespositories not instantiated causing InstallationManager.cs to crash with a null pointer. 2020-06-27 15:41:57 +01:00
Bond-009
cb193b6afd Add support for ReadOnlySpan<char> in IgnorePatterns 2020-06-27 11:34:33 +02:00
Bond-009
71cbd51663 Merge pull request #3456 from crobibero/ignore-patterns
Add more ignorepatterns and tests
2020-06-27 11:18:56 +02:00
dkanada
9a44e2912e Merge pull request #3455 from jellyfin/values
Use constructor to set optimal config values
2020-06-27 05:58:07 +09:00
Bond-009
73da8df4bf Merge pull request #3137 from mark-monteiro/external-id-type
Correctly Support Translating External Ids
2020-06-26 21:49:53 +02:00
crobibero
ef49e2b21c Fix nullable string usage. 2020-06-26 13:20:49 -06:00
crobibero
9772749d8f Add more ignorepatterns and tests 2020-06-26 11:04:35 -06:00
dkanada
83ae4d074d use constructor to set optimal config values 2020-06-27 00:22:27 +09:00
Cody Robibero
5f1b1dc3cc fix nullability 2020-06-26 08:41:21 -06:00
BaronGreenback
2272363197 Update SsdpCommunicationsServer.cs 2020-06-26 15:24:46 +01:00
BaronGreenback
27f6e1ddc8 Update SsdpCommunicationsServer.cs 2020-06-26 15:22:39 +01:00
Mark Monteiro
0e9164351b Merge remote-tracking branch 'upstream/master' into external-id-type 2020-06-26 10:12:22 -04:00
dkanada
57caa9fdba Merge pull request #3435 from crobibero/revert-missing-fields
revert missing session fields
2020-06-26 06:21:00 +09:00
dkanada
d0bc93e947 Merge pull request #3437 from barronpm/fix-user-delete
Fix User Deletion
2020-06-26 06:17:23 +09:00
dkanada
bb7444db07 Merge pull request #3439 from cvium/ignore_application_folders
Never ignore application folders
2020-06-26 06:14:19 +09:00
dkanada
fc722a612e Merge pull request #3445 from crobibero/invalid-image
catch skia errors when getting image dimensions
2020-06-26 06:11:42 +09:00
crobibero
9eba11379a catch skia errors when getting image dimensions 2020-06-25 12:10:33 -06:00
dkanada
9a43dce6d0 Merge pull request #3444 from jellyfin/badge
Fix azure badge
2020-06-26 03:00:40 +09:00
dkanada
cc18aa38fa update badge to match azure link 2020-06-26 01:29:28 +09:00
dkanada
0714bde9ce fix azure badge 2020-06-26 01:25:14 +09:00
Claus Vium
0f07b19ca5 Remove AllowIgnorePath 2020-06-25 11:33:10 +02:00
Claus Vium
9dee1eef83 Never ignore application folders 2020-06-25 11:31:43 +02:00
Nyanmisaka
912946a427 Merge pull request from jellyfin/master 2020-06-25 16:37:40 +08:00
Franco Castillo
91c51ae675 Translated using Weblate (Spanish (Argentina))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_AR/
2020-06-25 00:48:29 -04:00
peberis
d0162bbe5a Translated using Weblate (Nepali)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ne/
2020-06-24 22:19:12 -04:00
Patrick Barron
5ee419ebe4 Fix typo 2020-06-24 21:07:39 -04:00
Patrick Barron
2967dd6afd Change to ResourceNotFoundException 2020-06-24 20:36:58 -04:00
Patrick Barron
9a01cd8590 Fix user deletion. 2020-06-24 20:19:47 -04:00
Pedro Nave
7da49d57b1 Translated using Weblate (Portuguese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt/
2020-06-24 19:39:44 -04:00
crobibero
ef8bec23c4 revert missing session fields 2020-06-24 15:09:15 -06:00
Sasa
d5dad64e61 Translated using Weblate (Croatian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hr/
2020-06-24 16:21:09 -04:00
BaronGreenback
f01baad05e Sending multicasts out of Sockets without setting the broadcast to true - causes the error "Bad value for ai_flags" on some systems (#3404)
The underlying cause looks to be https://github.com/dotnet/runtime/issues/28630.

Basically, it's an access denied bug.
It looks like multicasts need the same access rights as broadcasts on some systems.
2020-06-24 17:23:16 +01:00
BaronGreenback
c07d8abfd5 Removed debugging info 2020-06-24 17:11:02 +01:00
crobibero
44a8ea6bee implement ChangeEasyPassword from legacy provider 2020-06-24 09:45:11 -06:00
BaronGreenback
5b0c182908 Added logging and broadcast = true
Not intended for merge into the fork.
2020-06-24 14:31:17 +01:00
BaronGreenback
2486e48097 Merge pull request #30 from jellyfin/master
Updating master
2020-06-24 14:16:02 +01:00
Anthony Lavado
92091f13d3 Merge pull request #2904 from Bond-009/buffer
Use System.Buffers in RangeRequestWriter
2020-06-23 12:50:24 -04:00
Joshua M. Boniface
fe1c80668c Merge pull request #3386 from jellyfin/azure-ci
Add Azure DevOps package builds
2020-06-23 12:12:31 -04:00
Bond-009
7481c3500a Merge pull request #3425 from crobibero/revert-baseitem-logger
Revert ILoggerFactory usage in BaseItem.cs
2020-06-23 16:01:00 +02:00
crobibero
1398c2117c Revert ILoggerFactory usage in BaseItem.cs 2020-06-23 07:31:59 -06:00
dkanada
ec017be16b Merge pull request #3407 from telans/vscode
.gitignore: ignore jellyfin-web symlink & .vscode: dotnet telemetry optout
2020-06-23 21:17:35 +09:00
telans
712d581e01 remove vscode launch.json comments 2020-06-23 20:35:10 +12:00
telans
6bf4e1b28c gitignore: catch jellyfin-web as symlink 2020-06-23 20:35:10 +12:00
telans
ae20776db3 vscode: dotnet telemetry optout 2020-06-23 20:35:08 +12:00
dkanada
4e08876028 Merge pull request #3418 from Bond-009/minor3
Minor changes
2020-06-23 16:56:44 +09:00
crobibero
3169b0af89 fix merge 2020-06-22 20:24:59 -06:00
crobibero
f4d8e0e20c Merge remote-tracking branch 'upstream/master' into easypassword 2020-06-22 20:23:06 -06:00
dkanada
0be10db5a5 Merge pull request #3416 from jellyfin/dependabot/nuget/prometheus-net.AspNetCore-3.6.0
Bump prometheus-net.AspNetCore from 3.5.0 to 3.6.0
2020-06-23 01:43:23 +09:00
Anthony Lavado
649cccfc05 Merge pull request #3409 from Bond-009/scanerror
Fix scan crashed
2020-06-22 10:38:32 -04:00
Bond-009
3d42f37538 Minor changes 2020-06-22 15:35:53 +02:00
Bond-009
464066f362 Merge pull request #3411 from neilsb/system-plugin-removal
Prevent system plugins from being uninstalled
2020-06-22 15:23:35 +02:00
dependabot[bot]
35d80392ec Bump prometheus-net.AspNetCore from 3.5.0 to 3.6.0
Bumps [prometheus-net.AspNetCore](https://github.com/prometheus-net/prometheus-net) from 3.5.0 to 3.6.0.
- [Release notes](https://github.com/prometheus-net/prometheus-net/releases)
- [Changelog](https://github.com/prometheus-net/prometheus-net/blob/master/History)
- [Commits](https://github.com/prometheus-net/prometheus-net/compare/v3.5.0...v3.6.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-22 13:16:21 +00:00
dkanada
a3bc82727a Merge pull request #3414 from jellyfin/dependabot/nuget/prometheus-net-3.6.0
Bump prometheus-net from 3.5.0 to 3.6.0
2020-06-22 22:11:08 +09:00
dkanada
8320ed685a Merge pull request #3415 from jellyfin/dependabot/nuget/Swashbuckle.AspNetCore-5.5.0
Bump Swashbuckle.AspNetCore from 5.4.1 to 5.5.0
2020-06-22 22:10:48 +09:00
dkanada
2498c5f0ab Merge pull request #3417 from jellyfin/dependabot/nuget/Moq-4.14.3
Bump Moq from 4.14.1 to 4.14.3
2020-06-22 22:10:29 +09:00
dkanada
552a358c9c Merge pull request #3244 from jellyfin/custom-repos
Initial implementation for custom plugin repositories
2020-06-22 22:08:43 +09:00
dkanada
3d65cbdf07 apply suggestions from code review
Co-authored-by: Vasily <JustAMan@users.noreply.github.com>
2020-06-22 21:59:56 +09:00
dependabot[bot]
3e57898d6b Bump Moq from 4.14.1 to 4.14.3
Bumps [Moq](https://github.com/moq/moq4) from 4.14.1 to 4.14.3.
- [Release notes](https://github.com/moq/moq4/releases)
- [Changelog](https://github.com/moq/moq4/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moq/moq4/compare/v4.14.1...v4.14.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-22 12:01:53 +00:00
dependabot[bot]
12f700fb2a Bump Swashbuckle.AspNetCore from 5.4.1 to 5.5.0
Bumps [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) from 5.4.1 to 5.5.0.
- [Release notes](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/releases)
- [Commits](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/compare/v5.4.1...v5.5.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-22 12:01:34 +00:00
dependabot[bot]
be4fdd2394 Bump prometheus-net from 3.5.0 to 3.6.0
Bumps [prometheus-net](https://github.com/prometheus-net/prometheus-net) from 3.5.0 to 3.6.0.
- [Release notes](https://github.com/prometheus-net/prometheus-net/releases)
- [Changelog](https://github.com/prometheus-net/prometheus-net/blob/master/History)
- [Commits](https://github.com/prometheus-net/prometheus-net/compare/v3.5.0...v3.6.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-22 12:01:32 +00:00
Neil Burrows
0bab57ebbc Wrapping long line on function parameters (take 2) 2020-06-22 11:56:18 +01:00
Neil Burrows
966ebfaf68 Wrapping long line on function parameters 2020-06-22 11:53:15 +01:00
Neil Burrows
a20fd34161 Update Emby.Server.Implementations/Updates/InstallationManager.cs
Co-authored-by: Vasily <JustAMan@users.noreply.github.com>
2020-06-22 11:04:20 +01:00
Neil Burrows
c20400fa40 Prevent system plugins from being uninstalled 2020-06-22 10:13:28 +01:00
Bond-009
f75024fade Fix scan crashed 2020-06-22 10:06:35 +02:00
Nitish Raj Uprety
c3349038c4 Translated using Weblate (Nepali)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ne/
2020-06-21 15:37:41 -04:00
andyguerra
18602b4724 Translated using Weblate (Spanish (Latin America))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_419/
2020-06-21 12:54:20 -04:00
Nitish Raj Uprety
1c371812aa Added translation using Weblate (Nepali) 2020-06-21 10:23:49 -04:00
Joshua M. Boniface
680dd95292 Merge pull request #3394 from Ullmie02/fix-startupwizzard
Fix startup wizard in 10.6
2020-06-21 03:12:12 -04:00
Anthony Lavado
3a5df3d060 Merge pull request #3007 from BaronGreenback/SSDP
Fix for #2986
2020-06-20 17:39:00 -04:00
Cody Robibero
43221fc26b Merge branch 'master' into SSDP 2020-06-20 15:33:13 -06:00
Joshua M. Boniface
2506feb544 Update branch checks from azure-ci to master 2020-06-20 15:03:25 -04:00
BaronGreenback
b5586e64f5 Merge pull request #25 from jellyfin/master
Update my master
2020-06-20 19:23:56 +01:00
David
82c1da34be Fix tests 2020-06-20 18:29:29 +02:00
Anthony Lavado
bb947718ea Merge pull request #3380 from Bond-009/warn20
Enable TreatWarningsAsErrors in Release for MediaBrowser.Providers
2020-06-20 12:26:02 -04:00
David
1c78482b48 Use authorization code from api-migration to fix startup wizard 2020-06-20 18:02:03 +02:00
Bond-009
beb3896d7f Merge pull request #3390 from telans/fixes
Multiple warning fixes
2020-06-20 16:48:48 +02:00
telans
6556bec646 brace multiline if statements (cont.) 2020-06-20 21:19:16 +12:00
telans
5bb639a59a newlines after braces 2020-06-20 21:13:48 +12:00
telans
7f307f9082 brace multiline if statements 2020-06-20 21:12:36 +12:00
telans
98db8f72e0 fix SA1503 for one line if statements 2020-06-20 20:35:29 +12:00
telans
8e3d874802 remove regions 2020-06-20 18:20:33 +12:00
telans
8de6452967 fix some documentation periods 2020-06-20 18:13:11 +12:00
telans
afe09612e8 fix SA1119 2020-06-20 18:13:11 +12:00
Joshua M. Boniface
4bfb4c9095 Remove as builder element as well 2020-06-19 17:46:58 -04:00
Joshua M. Boniface
d8428b0a0a Move ARGs for directories to after import 2020-06-19 17:44:04 -04:00
Joshua M. Boniface
ddc7b399a6 Add mkdir of the SOURCE_DIR before setting WORKDIR 2020-06-19 17:41:20 -04:00
Joshua M. Boniface
b778bcdb37 Update strategy names for Docker 2020-06-19 17:33:07 -04:00
BaronGreenback
46006a1aff Re-ordered code for the match 2020-06-19 22:32:07 +01:00
Joshua M. Boniface
7b1190cb28 Build builder docker images in Azure 2020-06-19 17:20:48 -04:00
Joshua M. Boniface
5a1971c280 Add builder docker images 2020-06-19 17:17:44 -04:00
BaronGreenback
6c2139a4c1 Merge branch 'SSDP' of https://github.com/BaronGreenback/jellyfin into SSDP 2020-06-19 22:07:43 +01:00
BaronGreenback
02f6ced07a Merged 2020-06-19 22:07:25 +01:00
Joshua M. Boniface
a418c24806 Modify build scripts to build Unstable versions 2020-06-19 16:31:59 -04:00
Joshua M. Boniface
3599ae7186 Add Azure pipelines configuration for server 2020-06-19 16:25:11 -04:00
Bond_009
eba488a0f8 Enable TreatWarningsAsErrors in Release for MediaBrowser.Providers 2020-06-19 20:24:13 +02:00
dkanada
e8e5208fbd Merge pull request #3360 from Bond-009/fix-3359
Fix Task that ignores cancellation request
2020-06-20 03:04:24 +09:00
wky
62d86293eb Translated using Weblate (Chinese (Hong Kong))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant_HK/
2020-06-19 12:17:39 -04:00
crobibero
7a9113adff Remove (unused) SessionId route parameter 2020-06-19 09:09:31 -06:00
Bond-009
cae3ed8aeb Merge pull request #3316 from aled/check-stored-password-exists
Fix server error when user enters a password, but none is set.
2020-06-19 16:59:35 +02:00
Bond-009
a3c0b8a826 Merge branch 'master' into buffer 2020-06-18 17:01:15 +02:00
Bond_009
46276acc22 Fix Task that ignores cancellation request 2020-06-17 19:20:43 +02:00
Bond-009
fbefddbb81 Merge pull request #3334 from crobibero/warning-local-metadata
Remove warnings from MediaBrowser.LocalMetadata
2020-06-17 18:07:59 +02:00
Cody Robibero
8604b712bd Update MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs
Co-authored-by: Vasily <JustAMan@users.noreply.github.com>
2020-06-17 09:53:02 -06:00
BaronGreenback
b2e1d70191 Merge pull request #24 from jellyfin/master
Updating my master
2020-06-17 11:43:38 +01:00
Anthony Lavado
fde63e16cb Merge pull request #3358 from crobibero/people-blurhash
Enable BlurHash for People
2020-06-16 21:23:20 -04:00
crobibero
a639663aa7 Merge remote-tracking branch 'upstream/master' into warning-local-metadata 2020-06-16 18:30:10 -06:00
crobibero
0651d7512b Enable BlurHash for People 2020-06-16 15:12:48 -06:00
aled
991b6fb739 Merge remote-tracking branch 'upstream/master' into check-stored-password-exists 2020-06-16 19:30:54 +01:00
aled
05f736defb Merge branch 'master' into check-stored-password-exists
# Conflicts:
#	Jellyfin.Server.Implementations/Users/DefaultAuthenticationProvider.cs
2020-06-16 19:30:23 +01:00
dkanada
e77f6194f2 add missing comma in array 2020-06-17 02:16:17 +09:00
dkanada
f5d82441a4 Merge branch 'master' into custom-repos 2020-06-17 02:09:32 +09:00
dkanada
215ab39e00 Merge pull request #3342 from BaronGreenback/BugFix2
Fix for [DLNA] Many log messages from Media Renderers trying to see old events
2020-06-16 19:02:16 +09:00
dkanada
2bdea29e25 Merge pull request #3353 from Bond-009/args
Remove code for handling single hyphen arguments
2020-06-16 18:59:11 +09:00
Bond-009
9af6eda0b4 Merge pull request #3343 from telans/comment-stops
Add full stop at end of comments (SA1629)
2020-06-16 11:54:58 +02:00
Bond-009
4d91060c25 Merge pull request #3341 from telans/brace-spacing
Add newlines after closing braces (SA1513/SA1516)
2020-06-16 11:49:42 +02:00
Prokash Sarkar
ebfd1e7c47 Translated using Weblate (Bengali)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bn/
2020-06-16 03:11:10 -04:00
telans
ab3dece9f1 fix brace spacing for do while loops 2020-06-16 16:11:32 +12:00
telans
247f9c61e6 fix SA1513/SA1516 2020-06-16 16:11:30 +12:00
Anthony Lavado
25f8e596cb Merge pull request #2809 from nyanmisaka/hwaccel
Add more separate hardware decoding toggles, support videotoolbox
2020-06-16 00:07:55 -04:00
telans
9018f8d8be Add full stop at end of comments (SA1629) 2020-06-16 10:37:52 +12:00
Joe DF
741db0287a Translated using Weblate (French (Canada))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr_CA/
2020-06-15 15:01:30 -04:00
Bond-009
73481c3ba4 Merge pull request #3344 from jellyfin/dependabot/nuget/PlaylistsNET-1.0.6
Bump PlaylistsNET from 1.0.4 to 1.0.6
2020-06-15 19:07:47 +02:00
Bond_009
b30ae1a949 Remove code for handling single hyphen arguments
and return exit code 1 when argument parsing fails
2020-06-15 17:06:57 +02:00
crobibero
24f54837e1 Switch to M3uContent 2020-06-15 08:34:24 -06:00
Bond-009
75b7fea024 Merge pull request #3350 from jellyfin/dependabot/nuget/sharpcompress-0.25.1
Bump sharpcompress from 0.25.0 to 0.25.1
2020-06-15 16:17:04 +02:00
Bond-009
0426f3d93d Merge pull request #3349 from jellyfin/dependabot/nuget/Serilog.Sinks.Graylog-2.1.3
Bump Serilog.Sinks.Graylog from 2.1.2 to 2.1.3
2020-06-15 16:16:43 +02:00
Bond-009
20bd5474df Merge pull request #3348 from jellyfin/dependabot/nuget/CommandLineParser-2.8.0
Bump CommandLineParser from 2.7.82 to 2.8.0
2020-06-15 16:16:07 +02:00
Bond-009
d0cef71dfa Merge pull request #3347 from jellyfin/dependabot/nuget/Swashbuckle.AspNetCore-5.4.1
Bump Swashbuckle.AspNetCore from 5.0.0 to 5.4.1
2020-06-15 16:12:49 +02:00
Bond-009
0fff5b92c2 Merge pull request #3346 from jellyfin/dependabot/nuget/coverlet.collector-1.3.0
Bump coverlet.collector from 1.2.1 to 1.3.0
2020-06-15 16:12:21 +02:00
Bond-009
4837c19bff Merge pull request #3351 from jellyfin/dependabot/nuget/IPNetwork2-2.5.211
Bump IPNetwork2 from 2.4.0.126 to 2.5.211
2020-06-15 16:11:41 +02:00
dependabot[bot]
58118aca0c Bump IPNetwork2 from 2.4.0.126 to 2.5.211
Bumps [IPNetwork2](https://github.com/lduchosal/ipnetwork) from 2.4.0.126 to 2.5.211.
- [Release notes](https://github.com/lduchosal/ipnetwork/releases)
- [Commits](https://github.com/lduchosal/ipnetwork/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-15 12:01:38 +00:00
dependabot[bot]
6d99d55fd6 Bump sharpcompress from 0.25.0 to 0.25.1
Bumps [sharpcompress](https://github.com/adamhathcock/sharpcompress) from 0.25.0 to 0.25.1.
- [Release notes](https://github.com/adamhathcock/sharpcompress/releases)
- [Commits](https://github.com/adamhathcock/sharpcompress/compare/0.25...0.25.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-15 12:01:36 +00:00
dependabot[bot]
685458b40d Bump Serilog.Sinks.Graylog from 2.1.2 to 2.1.3
Bumps [Serilog.Sinks.Graylog](https://github.com/whir1/serilog-sinks-graylog) from 2.1.2 to 2.1.3.
- [Release notes](https://github.com/whir1/serilog-sinks-graylog/releases)
- [Commits](https://github.com/whir1/serilog-sinks-graylog/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-15 12:01:35 +00:00
dependabot[bot]
b0093fbce4 Bump CommandLineParser from 2.7.82 to 2.8.0
Bumps [CommandLineParser](https://github.com/commandlineparser/commandline) from 2.7.82 to 2.8.0.
- [Release notes](https://github.com/commandlineparser/commandline/releases)
- [Changelog](https://github.com/commandlineparser/commandline/blob/master/CHANGELOG.md)
- [Commits](https://github.com/commandlineparser/commandline/commits/2.8.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-15 12:01:32 +00:00
dependabot[bot]
95884752de Bump Swashbuckle.AspNetCore from 5.0.0 to 5.4.1
Bumps [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) from 5.0.0 to 5.4.1.
- [Release notes](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/releases)
- [Commits](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/compare/v5.0.0...v5.4.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-15 12:01:29 +00:00
dependabot[bot]
979137f567 Bump coverlet.collector from 1.2.1 to 1.3.0
Bumps [coverlet.collector](https://github.com/coverlet-coverage/coverlet) from 1.2.1 to 1.3.0.
- [Release notes](https://github.com/coverlet-coverage/coverlet/releases)
- [Commits](https://github.com/coverlet-coverage/coverlet/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-15 12:01:24 +00:00
dependabot[bot]
c243ec7ce9 Bump PlaylistsNET from 1.0.4 to 1.0.6
Bumps [PlaylistsNET](https://github.com/tmk907/PlaylistsNET) from 1.0.4 to 1.0.6.
- [Release notes](https://github.com/tmk907/PlaylistsNET/releases)
- [Commits](https://github.com/tmk907/PlaylistsNET/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-15 12:01:17 +00:00
dkanada
dabb869a6b Merge branch 'master' into hwaccel 2020-06-15 20:21:25 +09:00
BaronGreenback
6d6793151a Null pointer check added for subscription as 2nd param is false. 2020-06-15 10:10:52 +01:00
BaronGreenback
862bcdba67 Merge pull request #23 from jellyfin/master
updating
2020-06-15 10:01:55 +01:00
Anthony Lavado
100e9d586d Merge pull request #3336 from telans/specific-fixes
Fix trivial SA1005, SA1111, SA1508, SA1510 warnings
2020-06-14 22:51:29 -04:00
dkanada
f026a1d721 Merge pull request #3267 from pusta/Contributors-Update
CONTRIBUTORS.md - Updated jellyfin-server-windows to compile against .Net Core 3.1
2020-06-15 10:57:13 +09:00
dkanada
6db1878011 Merge pull request #3315 from crobibero/dashboard-update
Add MessageId to websocket message, fix ws exception
2020-06-15 10:55:33 +09:00
dkanada
155ee5ee9d Merge pull request #3329 from telans/code-analyzer-tests
Enable code analyzers for tests
2020-06-15 10:50:08 +09:00
dkanada
4f2ae5c9e1 Merge pull request #3158 from Artiume/patch-5
Update Library Service
2020-06-15 10:46:54 +09:00
telans
8620dfc18b remove symlink 2020-06-15 10:46:44 +12:00
telans
afc9224ede fix SA1111 2020-06-15 10:46:43 +12:00
telans
9b528aabc2 misc 2020-06-15 10:45:59 +12:00
telans
3d9049ef08 fix SA1508 2020-06-15 10:45:55 +12:00
telans
acd4389653 fix SA1005 2020-06-15 10:41:00 +12:00
telans
726e116d5b fix SA1510 2020-06-15 10:40:57 +12:00
Anthony Lavado
15aea76523 Merge pull request #3148 from barronpm/userdb-efcore
Migrate User DB to EF Core
2020-06-14 18:31:27 -04:00
telans
4cb8fbfbbf fix StyleCop warning in Jellyfin.MediaEncoding.Tests 2020-06-14 18:56:47 +12:00
crobibero
7b54a43cc1 Fix docs typo 2020-06-13 20:15:19 -06:00
crobibero
14f32b4927 Remove warnings from MediaBrowser.LocalMetadata 2020-06-13 20:04:53 -06:00
Patrick Barron
42b4f0aa2e Merge branch 'master' into userdb-efcore
# Conflicts:
#	Emby.Server.Implementations/Library/UserManager.cs
#	Jellyfin.Data/Jellyfin.Data.csproj
2020-06-13 19:41:05 -04:00
Patrick Barron
e8f8307521 Add comment 2020-06-13 19:30:45 -04:00
Patrick Barron
6f325fea61 Add missing properties to UserDto 2020-06-13 18:26:46 -04:00
Patrick Barron
8405ae9b1f Actually set BlockUnratedItems 2020-06-13 18:23:13 -04:00
Patrick Barron
aa4ac5902e Fix concurrency exception 2020-06-13 18:08:17 -04:00
Patrick Barron
3278015444 Actually fix profile images 2020-06-13 16:38:17 -04:00
Chris Kapusta
b8d80bf09c Update CONTRIBUTORS.md
Co-authored-by: Bond-009 <bond.009@outlook.com>
2020-06-13 14:32:42 -05:00
BaronGreenback
4d50941d44 Merge pull request #22 from jellyfin/master
another
2020-06-13 17:56:10 +01:00
Patrick Barron
1e1386bbc6 Fix build issues 2020-06-13 11:59:19 -04:00
Patrick Barron
84f0cf6cc6 Regenerate migrations 2020-06-13 11:56:18 -04:00
Patrick Barron
103c9b7162 Actually fix deleting profile images (hopefully) 2020-06-13 08:28:42 -04:00
telans
bf5b21e67b enable code analyzers for tests 2020-06-13 23:37:41 +12:00
dkanada
403cd3205f Merge pull request #3254 from crobibero/ilogger
Use typed logger where possible
2020-06-13 00:29:43 +09:00
crobibero
5b6e8fb22c Remove whitespace 2020-06-12 06:53:47 -06:00
dkanada
91fcd56380 Merge pull request #3071 from rigtorp/tvdb-normalize
Make tvdb name normalizer unicode aware
2020-06-12 13:38:09 +09:00
dkanada
72a688aa7a Merge pull request #3298 from jellyfin/dependabot/nuget/SQLitePCLRaw.bundle_e_sqlite3-2.0.3
Bump SQLitePCLRaw.bundle_e_sqlite3 from 2.0.2 to 2.0.3
2020-06-12 13:34:57 +09:00
dkanada
6033058f51 Merge pull request #3313 from crobibero/update-dotnet-core
Update to .NET Core 3.1.5
2020-06-12 13:34:42 +09:00
Anthony Lavado
5d3ff25e26 Merge pull request #3291 from cvium/fix_authenticationexception
Use the "legacy" AuthenticationException in AuthService
2020-06-11 23:14:33 -04:00
Erik Rigtorp
82e8865147 Make tvdb name normalizer unicode aware 2020-06-11 17:26:38 -07:00
Patrick Barron
d0e2027b05 (Hopefully) fix concurrency exceptions. 2020-06-11 19:45:31 -04:00
Patrick Barron
fc02157b42 Fix build errors 2020-06-11 18:28:49 -04:00
Patrick Barron
7a115024aa Merge branch 'master' into userdb-efcore
# Conflicts:
#	MediaBrowser.Controller/Library/ILibraryManager.cs
#	MediaBrowser.Providers/Users/UserMetadataService.cs
2020-06-11 18:23:12 -04:00
Cody Robibero
4c0dd10fb3 Update MediaBrowser.Common/Json/Converters/JsonNonStringKeyDictionaryConverter.cs
Co-authored-by: aled <aled@wibblr.com>
2020-06-11 16:21:53 -06:00
BaronGreenback
306f7b3c30 Update INetworkManager.cs 2020-06-11 23:10:13 +01:00
BaronGreenback
2cecde658b Update INetworkManager.cs
Editting comments - adding periods
2020-06-11 22:58:29 +01:00
Patrick Barron
7fba0b778e Properly remove profile images 2020-06-11 17:51:02 -04:00
BaronGreenback
4d9171f691 Update DlnaEntryPoint.cs
Left a _config behind.
2020-06-11 22:40:43 +01:00
aled
c722ad22ec Handle the case when the stored password is null, but the user tried to login with a password. 2020-06-11 20:33:46 +01:00
Bond-009
762e0c8d17 Merge pull request #3289 from rigtorp/tmdb-comment-fix
Clarify comment and log actual search string in TMDB search provider
2020-06-11 19:12:30 +02:00
crobibero
30609c848b Add MessageId to websocket message, add JsonNonStringKeyDictionaryConverter 2020-06-11 10:51:47 -06:00
dkanada
157d8f6145 Merge pull request #3309 from jellyfin/dependabot/nuget/ServiceStack.Text.Core-5.9.0
Bump ServiceStack.Text.Core from 5.8.0 to 5.9.0
2020-06-11 23:30:22 +09:00
dkanada
ce9e7d47b7 Merge pull request #3293 from jellyfin/dependabot/nuget/System.Text.Encoding.CodePages-4.7.1
Bump System.Text.Encoding.CodePages from 4.7.0 to 4.7.1
2020-06-11 23:29:46 +09:00
dkanada
ea7e8ced57 Merge pull request #3292 from jellyfin/dependabot/nuget/SkiaSharp.NativeAssets.Linux-1.68.3
Bump SkiaSharp.NativeAssets.Linux from 1.68.1 to 1.68.3
2020-06-11 23:29:27 +09:00
Cody Robibero
17ffb689e0 Merge branch 'master' into update-dotnet-core 2020-06-11 07:16:45 -06:00
crobibero
a6815018dc Update to .NET Core 3.1.5 2020-06-11 07:13:56 -06:00
dependabot[bot]
00b340557f Bump SkiaSharp.NativeAssets.Linux from 1.68.1 to 1.68.3
Bumps SkiaSharp.NativeAssets.Linux from 1.68.1 to 1.68.3.

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-11 12:18:07 +00:00
dkanada
55610f8359 Merge pull request #3295 from jellyfin/dependabot/nuget/SkiaSharp-1.68.3
Bump SkiaSharp from 1.68.1 to 1.68.3
2020-06-11 21:17:26 +09:00
dkanada
4ef459033f Merge pull request #3294 from jellyfin/dependabot/nuget/Microsoft.NET.Test.Sdk-16.6.1
Bump Microsoft.NET.Test.Sdk from 16.5.0 to 16.6.1
2020-06-11 21:17:03 +09:00
dkanada
bdc249c000 Merge pull request #3301 from jellyfin/dependabot/nuget/Moq-4.14.1
Bump Moq from 4.13.1 to 4.14.1
2020-06-11 21:16:26 +09:00
dependabot[bot]
09e0abebf9 Bump ServiceStack.Text.Core from 5.8.0 to 5.9.0
Bumps [ServiceStack.Text.Core](https://github.com/ServiceStack/ServiceStack.Text) from 5.8.0 to 5.9.0.
- [Release notes](https://github.com/ServiceStack/ServiceStack.Text/releases)
- [Commits](https://github.com/ServiceStack/ServiceStack.Text/compare/v5.8...v5.9)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-11 10:30:27 +00:00
dependabot[bot]
98a0bfc505 Bump Moq from 4.13.1 to 4.14.1
Bumps [Moq](https://github.com/moq/moq4) from 4.13.1 to 4.14.1.
- [Release notes](https://github.com/moq/moq4/releases)
- [Changelog](https://github.com/moq/moq4/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moq/moq4/compare/v4.13.1...v4.14.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-11 10:30:20 +00:00
dependabot[bot]
ef9a8c5414 Bump SQLitePCLRaw.bundle_e_sqlite3 from 2.0.2 to 2.0.3
Bumps [SQLitePCLRaw.bundle_e_sqlite3](https://github.com/ericsink/SQLitePCL.raw) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/ericsink/SQLitePCL.raw/releases)
- [Commits](https://github.com/ericsink/SQLitePCL.raw/commits/v2.0.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-11 10:30:15 +00:00
dependabot[bot]
81b1803153 Bump SkiaSharp from 1.68.1 to 1.68.3
Bumps SkiaSharp from 1.68.1 to 1.68.3.

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-11 10:30:13 +00:00
dependabot[bot]
a4de0bb373 Bump Microsoft.NET.Test.Sdk from 16.5.0 to 16.6.1
Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.5.0 to 16.6.1.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Commits](https://github.com/microsoft/vstest/compare/v16.5.0...v16.6.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-11 10:30:13 +00:00
dependabot[bot]
33f70bd5f0 Bump System.Text.Encoding.CodePages from 4.7.0 to 4.7.1
Bumps [System.Text.Encoding.CodePages](https://github.com/dotnet/corefx) from 4.7.0 to 4.7.1.
- [Release notes](https://github.com/dotnet/corefx/releases)
- [Commits](https://github.com/dotnet/corefx/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-11 10:30:11 +00:00
dkanada
a181c9cc01 Merge pull request #3248 from crobibero/dependabot2
Add dependabot
2020-06-11 19:29:38 +09:00
dkanada
5cdf951643 Merge pull request #3222 from barronpm/activitylog-migration-fix
Fix Activity Log Migrations for Very Old Databases
2020-06-11 19:27:42 +09:00
Claus Vium
5bb630ea7c Use the "legacy" AuthenticationException 2020-06-11 10:59:57 +02:00
Patrick Barron
a194895e7a Add missing default permission 2020-06-10 20:53:33 -04:00
Patrick Barron
4d559b4ec4 Fix bugs for fresh installs. 2020-06-10 20:14:24 -04:00
Erik Rigtorp
095afe6359 Clarify comment and log actual search string 2020-06-10 10:58:43 -07:00
Bond-009
9f755dc422 Merge pull request #3284 from EraYaN/abi-compat-nuget
Install compatibility tool from nuget instead of pulling a github release
2020-06-10 14:30:20 +02:00
Erwin de Haan
427632611a Remove extract task. 2020-06-10 14:09:34 +02:00
Erwin de Haan
4c9216012b Install compatibility tool from nuget instead of pulling a github release. 2020-06-10 14:01:37 +02:00
Bond-009
19e00dcd2f Merge pull request #3282 from aled/2149-fix-a-small-number-of-compile-warnings-2
Fix a small number of compile warnings
2020-06-10 11:59:21 +02:00
aled
299e49f39d Fix a small number of compile warnings 2020-06-09 23:12:53 +01:00
BaronGreenback
5cf44e7736 Removed spaces 2020-06-09 22:11:23 +01:00
BaronGreenback
6d8ab50be9 No changes my end 2020-06-09 22:09:34 +01:00
BaronGreenback
93568be3e7 Updates 2020-06-09 22:05:22 +01:00
Bond-009
ad5c41b542 Merge pull request #3258 from aled/2149-fix-a-small-number-of-compile-warnings-1
Fix a small number of compile warnings
2020-06-09 22:22:36 +02:00
Patrick Barron
d105bc728d Fix startup wizard. 2020-06-09 14:04:25 -04:00
Patrick Barron
ce737c31ec Enable nullable annotations 2020-06-09 13:35:29 -04:00
dkanada
998d5674a2 Merge pull request #3259 from crobibero/omdb-plugin-config
Add omdb config as embedded resource
2020-06-09 14:23:06 +09:00
dkanada
19edd11292 Merge pull request #3185 from Ullmie02/api-exception-handling
Don't Send Exception Messages (Old API)
2020-06-09 14:22:45 +09:00
dkanada
dcc131740d Merge pull request #3268 from crobibero/ignore-path
Force configuration paths to not be ignored.
2020-06-08 22:06:28 +09:00
artiume
b79957d07e Split HEVC VP9 10bit 2020-06-08 14:45:27 +03:00
artiume
0476acf5d5 Update EncoderValidator.cs 2020-06-08 14:45:26 +03:00
artiume
d650440492 fix opencl10bit 2020-06-08 14:45:26 +03:00
artiume
347689e4e2 Split VP9 HEVC 10bit button. MacOS Decoder fixed to opencl 2020-06-08 14:45:26 +03:00
Vasily
4999831604 Merge remote-tracking branch 'upstream/master' into hwaccel 2020-06-08 14:44:21 +03:00
Bond-009
616d24f91c Merge pull request #3270 from KristupasSavickas/reduce-blurhash-logspam
reduce log spam when generating blurhashes
2020-06-08 13:41:54 +02:00
Kristupas Savickas
18e06e53b4 reduce log spam when generating blurhashes 2020-06-08 10:27:03 +03:00
Patrick Barron
d85308b474 Add another missing property 2020-06-07 23:11:51 -04:00
crobibero
7ed5cf3dca Force configuration paths to not be ignored. 2020-06-07 20:32:06 -06:00
Patrick Barron
824cd87b75 Add missing property 2020-06-07 20:16:51 -04:00
Patrick Barron
75af0a4e57 Implement more review suggestions 2020-06-07 19:37:47 -04:00
crobibero
3d87c4c1b6 Fix EasyPassword setting 2020-06-07 14:55:37 -06:00
crobibero
68e1ecaaf9 Remove EasyPassword from Authentication providers 2020-06-07 14:47:08 -06:00
Chris Kapusta
3b0cdd4716 Update CONTRIBUTORS.md 2020-06-07 15:43:39 -05:00
Mahabub Islam Prio
99c9d99db7 Translated using Weblate (Bengali)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bn/
2020-06-07 15:35:54 -04:00
Patrick Barron
98142613e8 Apply review suggestions and fix bug 2020-06-07 13:36:43 -04:00
dkanada
3f58bd7c58 disable nullable errors for new model 2020-06-07 21:26:50 +09:00
dkanada
52cd955a8f merge branch master into custom-repos 2020-06-07 21:23:15 +09:00
dkanada
91f60c2139 add missing line from using block 2020-06-07 21:23:11 +09:00
Anthony Lavado
883e92fc96 Merge pull request #3262 from jellyfin/azure
Disable sonarcloud until secrets are working
2020-06-07 08:18:32 -04:00
dkanada
686066b134 Merge pull request #3250 from shayaantx/master
Ignore languages with null ids when fetching images from tvdb
2020-06-07 14:50:46 +09:00
dkanada
3d7f236038 Merge pull request #3255 from itegulov/books-resume
Make books resumable
2020-06-07 14:49:15 +09:00
dkanada
c99ad51c65 use single quotes in the main pipeline 2020-06-07 14:38:46 +09:00
dkanada
65765bda7e rename abi pipeline 2020-06-07 14:37:08 +09:00
dkanada
e7a49f73cd disable sonarcloud until secrets are working 2020-06-07 14:33:10 +09:00
Cody Robibero
a6999422ea remove extra spacing 2020-06-06 20:36:07 -06:00
crobibero
826ed9d9c7 Add omdb config as embedded resource 2020-06-06 16:30:18 -06:00
aled
22a860a806 Fix a small number of compile warnings 2020-06-06 20:17:49 +01:00
dkanada
7161a30af7 improve error handling when a single repository has issues
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-06-07 02:08:05 +09:00
crobibero
0982b73c11 Merge remote-tracking branch 'upstream/master' into ilogger 2020-06-06 08:26:34 -06:00
dkanada
8ac2f1bb8b simplify the custom repository feature for now 2020-06-06 22:02:30 +09:00
dkanada
d6184dbadd remove unnecessary property for repository object 2020-06-06 18:57:00 +09:00
dkanada
1a67a34bd6 save configuration when updating repository list
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-06-06 18:37:45 +09:00
Daniyar Itegulov
613748b45d Make books resumable and have duration of 1 second 2020-06-06 18:50:28 +10:00
dkanada
6d4f3c42a2 Merge pull request #3208 from jellyfin/plugins
More work for core plugins
2020-06-06 12:27:45 +09:00
Patrick Barron
fa80f84f26 Merge branch 'userdb-efcore' of https://github.com/barronpm/jellyfin into userdb-efcore 2020-06-05 22:33:34 -04:00
Patrick Barron
bb23ce3466 Merge branch 'master' into userdb-efcore 2020-06-05 22:31:13 -04:00
crobibero
57d1dbfe7b undo erroneous changes 2020-06-05 18:29:58 -06:00
crobibero
44957c5a9a Use typed logger where possible 2020-06-05 18:15:56 -06:00
crobibero
3faea5aa21 Merge remote-tracking branch 'upstream/master' into dependabot2 2020-06-05 16:55:36 -06:00
shayaantx
42bbfa772f Update TvdbSeasonImageProvider.cs 2020-06-05 18:14:47 -04:00
crobibero
340624c54b Move default repo addition to migration 2020-06-05 13:23:38 -06:00
Bond-009
5e056beaae Merge pull request #3252 from YouKnowBlom/fix-safari-hls
Fix incorrect HLS master playlist fields
2020-06-05 21:09:52 +02:00
Andreas B
d92b32a4c6 Fix incorrect HLS master playlist fields
Resolves: #3224
2020-06-05 22:05:33 +02:00
Bond-009
258f2ff686 Merge pull request #3245 from jellyfin/fix-azure
Fix some issues with the CI
2020-06-05 19:25:57 +02:00
shayaantx
4623cb8385 Ignore languages with null ids 2020-06-04 21:30:02 -04:00
SaddFox
0b0184de2e Translated using Weblate (Slovenian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sl/
2020-06-04 17:31:54 -04:00
Marius Lindvall
16e190c49d Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2020-06-04 17:31:54 -04:00
Patrick Barron
06f9cde22f Merge branch 'master' into userdb-efcore
# Conflicts:
#	Emby.Server.Implementations/EntryPoints/ServerEventNotifier.cs
#	Emby.Server.Implementations/Library/UserManager.cs
#	Emby.Server.Implementations/Sorting/IsFavoriteOrLikeComparer.cs
#	Emby.Server.Implementations/Sorting/IsPlayedComparer.cs
#	Emby.Server.Implementations/Sorting/IsUnplayedComparer.cs
#	Emby.Server.Implementations/TV/TVSeriesManager.cs
#	Jellyfin.Server.Implementations/Users/DefaultAuthenticationProvider.cs
2020-06-04 16:52:23 -04:00
Cody Robibero
1730b0ae83 Update dependabot.yml 2020-06-04 13:22:39 -06:00
Patrick Barron
ef7bbb3b84 Use data binding instead of raw SQL 2020-06-04 14:54:43 -04:00
crobibero
4bcd7cffd1 Add dependabot 2020-06-04 11:14:01 -06:00
dkanada
2e7d7abe8e disable rule that requires comments in two image providers for now 2020-06-05 00:17:36 +09:00
dkanada
feda2947b7 add missing comments for a few image providers 2020-06-05 00:13:06 +09:00
dkanada
8ce7a0e6be small modification to data project 2020-06-05 00:03:01 +09:00
dkanada
b7f4b8e2b5 initial implementation for custom plugin repositories 2020-06-04 23:57:57 +09:00
dkanada
836741f2aa Merge pull request #2154 from dkanada/artist-collage
Add image provider for artists
2020-06-04 22:28:51 +09:00
dkanada
6022f9f1da disable specific rule for playlist image provider 2020-06-04 21:35:06 +09:00
dkanada
17031fb38d disable artist image provider until configurable 2020-06-04 21:32:25 +09:00
dkanada
3f3bb668a3 fix namespace for providers that were moved 2020-06-04 21:32:25 +09:00
dkanada
c9c6fe02ab move most of the image providers to a single directory 2020-06-04 21:32:20 +09:00
dkanada
aa66444264 add image provider for artists 2020-06-04 21:30:23 +09:00
dkanada
8d7e9ab515 minor refactoring 2020-06-04 21:30:09 +09:00
Vasily
21505377d5 Merge pull request #3236 from Bond-009/common
Enable StyleCop for MediaBrowser.Common
2020-06-04 11:56:41 +03:00
dkanada
2252772944 Merge pull request #3237 from Bond-009/erroronwarn
Enable TreatWarningsAsErrors for more projects
2020-06-04 14:48:19 +09:00
dkanada
44eebd7754 Merge pull request #3164 from dkanada/install-plugin
Fix a few issues with the plugin manifest
2020-06-04 14:46:55 +09:00
crobibero
2ac111dedb add missing ConfigureAwait 2020-06-03 13:54:55 -06:00
crobibero
9661135b5b fix build 2020-06-03 13:48:33 -06:00
Lluís Forns
fc79833931 Translated using Weblate (Catalan)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ca/
2020-06-03 14:36:23 -04:00
dkanada
fe16c3fad4 Merge branch 'master' into install-plugin 2020-06-04 03:20:48 +09:00
dkanada
7176a9a30a fix build issues
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-06-04 03:18:55 +09:00
Bond-009
f0d182b8fe Merge pull request #3046 from puschie286/add-clean-name-tag
allow bd tag in file names
2020-06-03 15:50:32 +02:00
Bond-009
98582b90a3 Merge branch 'master' into erroronwarn 2020-06-03 14:34:21 +02:00
Bond-009
af7edfc220 Merge branch 'master' into common 2020-06-03 14:33:54 +02:00
Vasily
73cc214bf2 Merge pull request #3235 from Bond-009/build
Fix build
2020-06-03 15:21:38 +03:00
Bond-009
af93ec750c Enable TreatWarningsAsErrors for more projects 2020-06-03 13:22:40 +02:00
Bond-009
f404e915ee Enable StyleCop for MediaBrowser.Common 2020-06-03 13:04:45 +02:00
Bond-009
2dbb9d4895 Fix build 2020-06-03 11:54:01 +02:00
Vasily
40502a33e0 Merge pull request #3203 from Bond-009/warn18
Enable TreatWarningsAsErrors for Jellyfin.Server.Implementations in Release mode
2020-06-03 12:27:59 +03:00
Vasily
668e10ceb7 Merge pull request #2767 from Bond-009/nullable3
Enable nullabe reference types for MediaBrowser.Model
2020-06-03 12:26:54 +03:00
Vasily
959a9655c8 Update MediaBrowser.Model/Services/IHasRequestFilter.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-06-03 12:26:40 +03:00
Anthony Lavado
c31b2798a5 Merge pull request #3180 from xumix/master
Refactor copy codec checks
2020-06-03 02:47:15 -04:00
Anthony Lavado
91b089c0fa Merge pull request #3179 from Bond-009/bugs
Fix some 'bugs' flagged by sonarcloud
2020-06-03 02:45:22 -04:00
dkanada
6a7cb21b7e apply code suggestions
Co-authored-by: Vasily <JustAMan@users.noreply.github.com>
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-06-03 15:24:17 +09:00
Patrick Barron
bb828d54c5 Remove unused methods 2020-06-02 14:40:48 -04:00
Vasily
b9618c8c01 Merge pull request #2676 from GranPC/public-pr/blurhash
Implement Blurhash generation for images
2020-06-02 17:25:45 +03:00
David
37a4cc599b Remove duplicate code
Co-authored-by: Vasily <JustAMan@users.noreply.github.com>
2020-06-02 15:05:57 +02:00
Patrick Barron
b0281b79fd Fix a bug where very old Emby databases didn't use proper Guid's 2020-06-01 20:12:34 -04:00
Aswin Kumar
d38adb95a7 Translated using Weblate (Tamil)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ta/
2020-06-01 11:38:22 -04:00
Vasily
26eef1bbf8 Move logic of computing Blurhash components to ImageProcessor
Also rename last few instances of GetImageHash to GetImageBlurHash for clarity
2020-06-01 18:12:49 +03:00
Aswin Kumar
f8e8bfc399 Added translation using Weblate (Tamil) 2020-06-01 07:00:09 -04:00
BaronGreenback
1d86084653 Update Emby.Server.Implementations/Networking/NetworkManager.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-06-01 10:14:38 +01:00
BaronGreenback
adb789a802 Update Emby.Server.Implementations/Networking/NetworkManager.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-06-01 09:58:16 +01:00
BaronGreenback
fbd02a493b Update Emby.Server.Implementations/Networking/NetworkManager.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-06-01 09:57:48 +01:00
BaronGreenback
455e464445 Update Emby.Server.Implementations/Networking/NetworkManager.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-06-01 09:57:17 +01:00
Ken Brazier
36312c92f5 2354 open soft-links to read size 2020-05-31 16:40:02 -06:00
Patrick Barron
585fdbad39 Apply review suggestion and fix entity concurrency tokens. 2020-05-31 17:00:57 -04:00
Bond-009
b89565110d Merge pull request #3214 from danieladov/master
Order ids to merge to avoid stack overflow
2020-05-31 21:57:57 +02:00
danieladov
be5ce32bb6 refactor MediaBrowser.Api/VideosService.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-05-31 20:42:22 +02:00
danieladov
8e0b1109bc refactor
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-05-31 20:35:09 +02:00
Mister Rajoy
1b90798b90 Order ids to merge to avoid stack overflow
As said in https://github.com/jellyfin/jellyfin/issues/3176, merging 1 with 2 and then 2 with 1 cause an stack overflow. sorting ids first fix the problem
2020-05-31 20:23:23 +02:00
dkanada
855a2b2892 fix some easy warnings for tmdb 2020-05-31 15:28:01 +09:00
dkanada
685f8ad1f0 move tmdb to plugin folder 2020-05-31 15:23:09 +09:00
dkanada
d72bb8358e minor changes to server configuration file 2020-05-31 15:20:17 +09:00
dkanada
24f7f84828 add plugin configurations for tvdb and omdb 2020-05-31 15:15:34 +09:00
Patrick Barron
edbb1482e8 Remove unused compile remove statements. 2020-05-31 00:15:41 -04:00
Patrick Barron
63344ec5fd Remove unused portions of the user schema 2020-05-30 22:11:53 -04:00
Patrick Barron
e72fd88913 Document and fix warnings in Group.cs 2020-05-30 21:53:56 -04:00
Patrick Barron
e8b6da3cd7 Expand and document IHasPermissions 2020-05-30 20:49:31 -04:00
Patrick Barron
4cff9b8512 Clea up IsParentalScheduleAllowed 2020-05-30 20:37:46 -04:00
Patrick Barron
acce726ed9 Clean up DayOfWeekHelper.cs and remove unnecessary function 2020-05-30 20:02:55 -04:00
WontTell
730395886d Translated using Weblate (Spanish (Latin America))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_419/
2020-05-30 16:09:06 -04:00
Patrick Barron
1b297eae78 Reset invalid login attempt count properly 2020-05-30 00:20:59 -04:00
Patrick Barron
c8fef9dd2e Reimplement password resetting 2020-05-30 00:19:36 -04:00
WontTell
f73c5d3f56 Added translation using Weblate (Spanish (Latin America)) 2020-05-29 22:27:20 -04:00
Patrick Barron
4857b7d620 Make UserManager.IsValidUsername static 2020-05-29 15:32:31 -04:00
Patrick Barron
7f8f3e09e5 Ignore documentation warnings in new migration files 2020-05-29 15:19:41 -04:00
Patrick Barron
12a900b8f6 Update schema and migration to allow LastLoginDate and LastActivityDate to be null 2020-05-29 15:16:17 -04:00
Bond_009
4748105dce Enable TreatWarningsAsErrors for Jellyfin.Server.Implementations in Release mode 2020-05-29 11:28:19 +02:00
Bond-009
02624c9df8 Merge pull request #2966 from jellyfin/serve-web
Remove several deprecated utilities in the web package
2020-05-29 10:13:43 +02:00
Lumenol
65461894d4 Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-05-28 17:09:21 -04:00
Patrick Barron
8ca78f33e9 Fix bug when migrating user db with users that have never logged in. 2020-05-28 14:21:26 -04:00
Vasily
58f099c0e2 Fix naming per code review 2020-05-28 19:12:08 +03:00
Vasily
9208acd5ae Convert non-local image to local before computing blurhash 2020-05-28 17:55:29 +03:00
Vasily
ed791dee46 Do not compute dimensions or blurhash for remote images 2020-05-28 17:30:11 +03:00
Vasily
a76cee7a95 Update BlurHashSharp to 1.0.1, remove workaround 2020-05-28 17:23:16 +03:00
Patrick Barron
d116497912 Optimize number of created DbContexts and fix default values for some fields 2020-05-28 01:08:37 -04:00
Patrick Barron
82b0786cc6 Remove unnecessary logging statement 2020-05-28 00:59:31 -04:00
Elouan MAILLY
0ebad893a7 Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-05-27 17:54:33 -04:00
Bond_009
7439e095e2 Merge branch 'master' into nullable3 2020-05-27 20:49:18 +02:00
Vasily
f30b07130f Workaround a bug in BlurHashSharp 2020-05-27 19:29:57 +03:00
Patrick Barron
9a853ca089 Add another null check 2020-05-27 11:30:53 -04:00
Patrick Barron
caf6833447 Add myself to CONTRIBUTORS.md 2020-05-27 10:08:36 -04:00
Vasily
edcfcadcd3 Make sure blurhash is recomputed if image changed or metadata refresh toggled 2020-05-27 17:00:59 +03:00
Vasily
2482bcb3b1 Add blurhashes to ImageBlurHashes for all images 2020-05-27 16:27:27 +03:00
Vasily
6c9dc04189 Handle errors during blurhash generation so it does not fail the scan 2020-05-27 15:01:03 +03:00
dkanada
ecadde1e18 Merge pull request #3192 from jellyfin/audio
Fix issue with audio transcoding
2020-05-27 20:20:50 +09:00
dkanada
73d123fe36 fix issue with audio transcoding 2020-05-27 13:55:45 +09:00
Patrick Barron
31f725fdbf Fix a bug in Emby.Notifications and clean up 2020-05-26 23:08:27 -04:00
Patrick Barron
eef7cfd912 Make SonarCloud less angry 2020-05-26 22:43:03 -04:00
Patrick Barron
fefb282137 Fixed issue when LastLoginDate or LastActivityDate were null 2020-05-26 22:30:23 -04:00
Patrick Barron
46a0a2a601 Update migrations and fix a few bugs 2020-05-26 21:20:55 -04:00
Patrick Barron
7c823464bc Fix merge conflicts with SyncPlay 2020-05-26 20:52:05 -04:00
Patrick Barron
01ce56016a Merge branch 'master' into userdb-efcore
# Conflicts:
#	Emby.Server.Implementations/Library/UserManager.cs
#	Jellyfin.Data/Jellyfin.Data.csproj
#	MediaBrowser.Api/UserService.cs
#	MediaBrowser.Controller/Library/IUserManager.cs
2020-05-26 20:29:11 -04:00
Joshua M. Boniface
7c72f69189 Merge pull request #2733 from OancaAndrei/syncplay
Add syncplay feature
2020-05-26 20:00:01 -04:00
Joshua M. Boniface
b33fa06efa Merge pull request #3187 from jellyfin/revert-2492-fix-api-private-data-leak
Revert "Fix emby/user/public API leaking sensitive data"
2020-05-26 19:57:24 -04:00
Bond-009
b61ee09a36 Update WebSocketSharpRequest.cs 2020-05-26 20:00:37 +02:00
Bond-009
0676d1c2f4 Update WebSocketSharpRequest.cs 2020-05-26 19:33:20 +02:00
Anthony Lavado
9c00226f11 Merge pull request #3033 from neilsb/autodiscover-url-override
Allow override of address published by auto discovery
2020-05-26 12:20:42 -04:00
Vasily
8be13b63d4 More cleanup 2020-05-26 19:19:49 +03:00
Joshua M. Boniface
0be3dfe7c5 Revert "Fix emby/user/public API leaking sensitive data" 2020-05-26 12:14:40 -04:00
Vasily
92008baf85 Some simple cleanup 2020-05-26 19:13:11 +03:00
Vasily
aa17a53e83 Skip only line saying "Hardware acceleration methods:" instead of some random one 2020-05-26 19:05:44 +03:00
Vasily
3e381cfd5e Clean GetHwaccelType Windows handling a tiny bit 2020-05-26 19:02:22 +03:00
Vasily
628734931c Fix missing commas and merge defects 2020-05-26 18:49:15 +03:00
artiume
3c82379759 Update EncoderValidator.cs 2020-05-26 18:29:58 +03:00
artiume
abc7558f51 Update EncodingHelper.cs 2020-05-26 18:29:58 +03:00
artiume
f056704c78 add videotoolbox 2020-05-26 18:29:58 +03:00
artiume
407de0209e Update MediaEncoder.cs 2020-05-26 18:29:58 +03:00
artiume
1ff95289ef Update EncoderValidator.cs 2020-05-26 18:29:58 +03:00
artiume
62e47d056d Update IMediaEncoder.cs 2020-05-26 18:29:58 +03:00
artiume
0eb5791c70 Comments 2020-05-26 18:29:58 +03:00
Nyanmisaka
22ef0e3574 drop 'force_original_aspect_ratio'
graphical subtitles can be off-center in some cases
2020-05-26 18:21:31 +03:00
Nyanmisaka
5fd3ea8b21 minor changes 2020-05-26 18:21:31 +03:00
Nyanmisaka
695f20b303 probe Main/High 10 more specifically 2020-05-26 18:21:31 +03:00
Nyanmisaka
161b2a2da9 minor changes 2020-05-26 18:19:14 +03:00
nyanmisaka
c4ba71d96a resolve conflicts 2020-05-26 18:13:20 +03:00
nyanmisaka
b4b93995f7 add more separate hw decoding toggles 2020-05-26 18:06:49 +03:00
David
e9ebe07ecc Don't send Exception message in Production Environment 2020-05-26 16:36:54 +02:00
gion
e42bfc92f3 Fix code issues 2020-05-26 11:37:52 +02:00
gion
e4838b0faa Merge remote-tracking branch 'upstream/master' into syncplay 2020-05-26 10:23:09 +02:00
Anthony Lavado
976ae36bea Merge pull request #3173 from joshuaboniface/fix-arm-docker
Add -k to keyserver curl command
2020-05-26 00:41:58 -04:00
Anthony Lavado
b93145c2f1 Merge pull request #3174 from jellyfin/checkbox
Remove uses of fnchecked from plugins
2020-05-25 19:50:39 -04:00
Vasily
f575415e0b Pick blurhash sizes depending on image aspect ratio 2020-05-26 02:33:52 +03:00
Vasily
0f32b0ffad Change image blurhash mapping to "image type to blurhash" 2020-05-26 01:04:40 +03:00
xumix
46420dfd68 Refactor copy codec checks 2020-05-26 00:58:19 +03:00
Bond_009
10e381f66f Fix some 'bugs' flagged by sonarcloud 2020-05-25 23:52:51 +02:00
Vasily
279f0da980 Rename ImageInfo.Hash to ImageInfo.BlurHash 2020-05-26 00:52:13 +03:00
Vasily
29443e3681 Apply suggestions from code review
Co-authored-by: dkanada <dkanada@users.noreply.github.com>
2020-05-26 00:50:29 +03:00
dkanada
f75a09838e remove uses of fnchecked from plugins 2020-05-25 18:25:45 +09:00
Joshua M. Boniface
35da965cd3 Add -k to keyserver curl command
This command seems to inexplicably fail in Docker builds, despite
working on the CLI, similar to what happened with the command directly
above it in c257d6071c. Fix it in the same
way by adding `-k`.
2020-05-25 01:30:55 -04:00
Neil Burrows
09915363c2 Update Emby.Server.Implementations/Udp/UdpServer.cs
Co-authored-by: Mark Monteiro <marknr.monteiro@protonmail.com>
2020-05-24 09:22:13 +01:00
dkanada
deafe59b7e add the timestamp property back to the version info 2020-05-24 16:59:05 +09:00
dkanada
6d3e5d8662 update error log for plugin download 2020-05-24 15:53:17 +09:00
dkanada
7972daaba4 fix a few issues with the plugin manifest 2020-05-24 15:40:27 +09:00
Mark Monteiro
4f6e5591ec Remove 'General' as an ExternalIdMediaType, and instead use 'null' to represent a general external id type 2020-05-23 16:08:51 -04:00
Patrick Barron
e052128c52 Cleanup and fix more bugs 2020-05-23 16:07:42 -04:00
Mark Monteiro
07897ec7af Specify enum values for ExternalIdMediaType explicitly 2020-05-23 15:49:02 -04:00
Patrick Barron
e8173df9dc Cleanup 2020-05-23 15:33:14 -04:00
Patrick Barron
99511b3be8 Fix a couple bugs 2020-05-23 14:53:24 -04:00
Anthony Lavado
777c9c7bc9 Merge pull request #3056 from rigtorp/tmdbsearch2
Reduce number of TMDB lookups if filenames have punctuation chars
2020-05-22 23:46:45 -04:00
Patrick Barron
e3f9aaa9c6 Fix bugs relating to users not being properly locked out. 2020-05-22 21:45:31 -04:00
Patrick Barron
56212e8101 Warnings cleanup 2020-05-22 20:20:18 -04:00
artiume
a661b37c12 Update LibraryService.cs 2020-05-22 14:40:41 -04:00
WontTell
e98600a76f Translated using Weblate (Spanish (Mexico))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_MX/
2020-05-21 22:41:56 -04:00
Óskar Freyr
3c86489d28 Translated using Weblate (Icelandic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/is/
2020-05-21 19:41:58 -04:00
fonfire
367da81ae9 Translated using Weblate (Thai)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/th/
2020-05-21 07:57:21 -04:00
fatbill27
74c1e002d2 Translated using Weblate (Chinese (Hong Kong))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant_HK/
2020-05-21 05:52:34 -04:00
fonfire
e0d8a474ec Added translation using Weblate (Thai) 2020-05-21 05:52:34 -04:00
Anthony Lavado
50fc547616 Merge pull request #3149 from Artiume/patch-4
Add .edl Mimetype
2020-05-21 00:55:22 -04:00
Anthony Lavado
a31549c6e7 Merge pull request #3144 from Artiume/patch-3
Add lost+found to ignore list
2020-05-21 00:54:41 -04:00
Patrick Barron
42177d1739 Replace Weekday with DayOfWeek 2020-05-21 00:22:43 -04:00
Vitorvlv
6bf444feae Translated using Weblate (Portuguese (Brazil))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_BR/
2020-05-21 00:09:46 -04:00
abdulaziz
7e2bd3018a Translated using Weblate (Arabic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ar/
2020-05-21 00:09:46 -04:00
Patrick Barron
d72ea70995 Document user class and fix a few minor issues 2020-05-20 19:47:41 -04:00
Vasily
1f83a21288 Rename Hash to BlurHash in all properties and methods for clarity 2020-05-21 01:43:19 +03:00
Vasily
8b517e9bef Fix nullref for imageProcessor in LibraryManager 2020-05-21 00:03:22 +03:00
Vasily
3fb4c1356c Make blurhash be computed during regular scans if it was not already computed 2020-05-20 23:50:17 +03:00
artiume
ae4c407b6d Add .edl Mimetype 2020-05-20 16:46:33 -04:00
Patrick Barron
0ccf7320b0 Fix a few issues in User 2020-05-20 14:17:59 -04:00
Patrick Barron
becfe018f0 Add internal id for new users 2020-05-20 13:49:44 -04:00
Patrick Barron
c464f700db Remove redundant qualifiers 2020-05-20 13:07:53 -04:00
Patrick Barron
7d9d54d2ec Fix profile images. 2020-05-20 12:09:52 -04:00
Patrick Barron
623dcde65c Manually specify enum values 2020-05-20 10:04:00 -04:00
Patrick Barron
64c14beb27 Fix default permissions and HasPassword property 2020-05-20 10:04:00 -04:00
Patrick Barron
1d1a145ad4 Fix issues and add profile image support 2020-05-20 10:04:00 -04:00
Patrick Barron
292993d8ef Document various classes. 2020-05-20 10:04:00 -04:00
Patrick Barron
d35a7ba8bd Fix more issues 2020-05-20 10:04:00 -04:00
Patrick Barron
d27b2481a0 Fix an issue causing multiple permissions/preferences objects to be created. 2020-05-20 10:04:00 -04:00
Patrick Barron
e7b297c67b Add some missing properties 2020-05-20 10:04:00 -04:00
Patrick Barron
3eeb6576d8 Migrate User DB to EF Core 2020-05-20 10:04:00 -04:00
Neil Burrows
a646a91e15 Update Emby.Server.Implementations/IStartupOptions.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-05-20 14:29:18 +01:00
Neil Burrows
d7b2c2a176 Renaming variable and refactoring IF statement 2020-05-20 09:11:26 +01:00
artiume
0efb81b21e Add lost+found to ignore list
https://forum.jellyfin.org/t/library-not-loading/2086
2020-05-19 21:45:48 -04:00
Vasily
2b1ae7ac58 Fix code smells 2020-05-19 15:42:50 +03:00
Vasily
186b7f303c More small optimizations 2020-05-19 15:08:43 +03:00
Vasily
a226a4ee03 Compute hash only when one is not computed in DB, small optimizations here and there 2020-05-19 14:50:14 +03:00
Vasily
f18293bf76 Switch to BlurHashSharp lib which should be faster 2020-05-19 13:46:00 +03:00
Vasily
bfb644d5f5 Fix nullref exception 2020-05-19 13:45:39 +03:00
Vasily
d9e2f56bd2 Merge pull request #3037 from ConfusedPolarBear/access-control
Fix CORS header not being added to exceptions
2020-05-19 13:05:45 +03:00
NaorManna
585e9e6220 Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2020-05-19 03:15:02 -04:00
Lukáš Kucharczyk
4395644efc Translated using Weblate (Czech)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/cs/
2020-05-19 00:09:47 -04:00
ConfusedPolarBear
949e4d3e64 Apply suggestions from code review 2020-05-18 16:58:14 -05:00
Vasily
02da312f8a Fix compilation after rebase 2020-05-19 00:22:52 +03:00
Jesús Higueras
fe480caf54 Add endpoint to update all items in library 2020-05-18 23:21:38 +03:00
Jesús Higueras
b9fc0d2628 Add BlurHash support to backend 2020-05-18 23:21:37 +03:00
ConfusedPolarBear
85f04af04c Reuse existing CORS function 2020-05-18 14:31:47 -05:00
ConfusedPolarBear
3a61c9a878 Merge remote-tracking branch 'upstream/master' into access-control 2020-05-18 14:27:51 -05:00
Vasily
2d2c1d9473 Merge pull request #3099 from rigtorp/ignore-patterns
Use glob patterns to ignore files
2020-05-18 22:23:40 +03:00
Bond-009
e14c85555c Merge pull request #3138 from mark-monteiro/reduce-development-exception-page-logging
Reduce Excessive Logging From DeveloperExceptionPageMiddleware
2020-05-18 17:21:45 +02:00
Mark Monteiro
5eec3a1342 Remove extra whitespace
Co-authored-by: dkanada <dkanada@users.noreply.github.com>
2020-05-18 10:47:01 -04:00
dkanada
668a7b97c7 Merge pull request #3072 from JustAMan/fix-dead-livetv
Re-raise the exception that caused LiveTV stream to not open
2020-05-18 23:23:47 +09:00
Vasily
c70e38288c Apply suggestions from code review
Co-authored-by: dkanada <dkanada@users.noreply.github.com>
2020-05-18 17:01:29 +03:00
Vasily
5d46697481 Merge pull request #3020 from rigtorp/patch-1
Fix container image build by installing python
2020-05-18 16:52:49 +03:00
erikasne6152
989ddbcafd Translated using Weblate (Lithuanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/lt/
2020-05-18 09:44:33 -04:00
dkanada
8de7c5ee36 Merge pull request #3134 from mark-monteiro/update-dotnet-core
Update to .NET Core 3.1.4
2020-05-18 19:33:12 +09:00
dkanada
7b75cc7fea Merge pull request #3133 from kesslern/fix-setup-wizard
Fix 500 error causing first-time setup wizard to hang
2020-05-18 19:31:51 +09:00
Mark Monteiro
634bc73c9a DO not use developer exception page when exception stack trace should be ignored 2020-05-17 18:07:37 -04:00
Mark Monteiro
d06fee75b6 Rename Name to ProviderName 2020-05-17 17:36:36 -04:00
Mark Monteiro
c82f7eeca1 Clean up some doc comments 2020-05-17 17:26:40 -04:00
Mark Monteiro
67edf1b7f5 Do not convert 'Type' value to string unnecessarily, and do not replace 'General' type with null 2020-05-17 15:59:13 -04:00
Mark Monteiro
422d5b2b68 Move ExternalIdMediaType enum to MediaBrowser.Model 2020-05-17 15:57:24 -04:00
BaronGreenback
3a5333228f Update Emby.Server.Implementations/Networking/NetworkManager.cs
Co-authored-by: Patrick Barron <18354464+barronpm@users.noreply.github.com>
2020-05-17 20:44:44 +01:00
BaronGreenback
d5a924772b Update MediaBrowser.Common/Net/INetworkManager.cs
Co-authored-by: Patrick Barron <18354464+barronpm@users.noreply.github.com>
2020-05-17 20:44:35 +01:00
BaronGreenback
5e1be0d4f0 Update MediaBrowser.Common/Net/INetworkManager.cs
Co-authored-by: Patrick Barron <18354464+barronpm@users.noreply.github.com>
2020-05-17 20:44:19 +01:00
BaronGreenback
61e65d032e Update MediaBrowser.Common/Net/INetworkManager.cs
Co-authored-by: Patrick Barron <18354464+barronpm@users.noreply.github.com>
2020-05-17 20:43:54 +01:00
Mark Monteiro
e5c857ac36 Rename external id type 'None' to 'General' 2020-05-17 15:29:53 -04:00
Mark Monteiro
526e47c362 Clean up documentation 2020-05-17 15:27:43 -04:00
Mark Monteiro
96acd6481e Merge branch 'master' into externalid-type 2020-05-17 13:50:44 -04:00
Mark Monteiro
3ed76d7e08 Update to .NET Core 3.1.4 2020-05-17 13:33:38 -04:00
dkanada
4b4b50f3ee Merge pull request #3115 from MrTimscampi/ffprobe
Parse color transfer and color primaries from ffprobe, and fix video range
2020-05-18 00:06:07 +09:00
Nathan Kessler
3bc07e7c56 Fix 500 error causing first-time setup wizard to hang 2020-05-17 10:48:30 -04:00
Samuel Gagnon
e75b2cd335 Translated using Weblate (French (Canada))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr_CA/
2020-05-17 08:03:42 -04:00
Franco Castillo
a33a589dba Translated using Weblate (Spanish (Argentina))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_AR/
2020-05-17 08:03:42 -04:00
MrTimscampi
9314434bbf Fix suggestions 2020-05-16 17:35:34 +02:00
dkanada
8921c7a5bf Merge pull request #3113 from Artiume/patch-1
Fix Progressive and Interlaced Stream capitalization
2020-05-16 21:56:25 +09:00
dkanada
7f39d898b8 Merge pull request #3105 from aled/2149-fix-warnings-in-jellyfin.naming.tests
Fix compile warnings in Jellyfin.Naming.Tests
2020-05-16 16:08:01 +09:00
dkanada
ddebc9301e Merge pull request #3116 from Artiume/patch-2
Update Books Resolver File Types and add .opf Mime Type
2020-05-16 16:01:59 +09:00
Erik Rigtorp
f144acdc96 Use glob patterns to ignore files 2020-05-15 18:33:18 -07:00
Erik Rigtorp
9cad598059 Fix container image build by installing python 2020-05-15 18:25:43 -07:00
Patrick Barron
aca7e221d8 Merge branch 'master' into userdb-efcore
# Conflicts:
#	Emby.Server.Implementations/Activity/ActivityLogEntryPoint.cs
#	Emby.Server.Implementations/ApplicationHost.cs
#	Emby.Server.Implementations/Devices/DeviceManager.cs
#	Jellyfin.Server/Jellyfin.Server.csproj
#	Jellyfin.Server/Migrations/MigrationRunner.cs
#	MediaBrowser.Controller/Devices/IDeviceManager.cs
2020-05-15 17:20:07 -04:00
Vasily
652e9702fc Merge pull request #3117 from JustAMan/no-more-doppelgangers
Fixes collections (and probably some extras support, too)
2020-05-16 00:01:49 +03:00
Mark Monteiro
757643e326 Merge remote-tracking branch 'upstream/master' into no-more-doppelgangers 2020-05-15 15:23:44 -04:00
Mark Monteiro
6e68702799 Do not run DELETE command if no extras are detected
Also log a message if no extras were detected 
Also log the path used for the database backup
Also add some comments to explain the migration
2020-05-15 15:12:26 -04:00
Vasily
d21feb2b18 Merge pull request #2970 from barronpm/activitydb-efcore
Migrate Activity Database to Entity Framework Core
2020-05-15 22:04:23 +03:00
Vasily
43dc604e87 Fixed compilation, added backing db before removing extras 2020-05-15 21:49:45 +03:00
Patrick Barron
79dee27299 Fixed indentation 2020-05-15 14:33:36 -04:00
Vasily
034fe97eeb Apply suggestions from code review
Co-authored-by: Mark Monteiro <marknr.monteiro@protonmail.com>
2020-05-15 21:32:56 +03:00
Patrick Barron
a7c2e524a9 Apply more review suggestions 2020-05-15 14:09:15 -04:00
gion
8c04049a59 Fix some code smells 2020-05-15 20:06:41 +02:00
gion
029bb80910 Merge remote-tracking branch 'upstream/master' into syncplay 2020-05-15 18:59:35 +02:00
Patrick Barron
a5dee36808 Apply more review suggestions 2020-05-15 12:51:18 -04:00
gion
e8f45248aa Fix code issues 2020-05-15 18:47:16 +02:00
artiume
a765272c17 Update MimeTypes.cs 2020-05-15 09:38:26 -04:00
artiume
527029af92 Update MediaStream.cs 2020-05-15 09:36:30 -04:00
artiume
d41cdb3b7a Update Interlace 2020-05-15 09:36:30 -04:00
artiume
eb3ce3fb87 Fix Progressive Stream 'P' capitalization 2020-05-15 09:36:30 -04:00
artiume
9ed8c6cb11 Add opf mimetype 2020-05-15 07:59:46 -04:00
dkanada
18953d95e6 Merge pull request #3085 from MrTimscampi/vtt-position
Add positionning cues to WebVTT writer
2020-05-15 16:43:31 +09:00
dkanada
cb249cc171 Merge pull request #3118 from barronpm/fix-regressions
Fix regressions introduced by #3098
2020-05-15 16:43:06 +09:00
Odd Stråbø
ef533015ae Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2020-05-14 23:26:47 -04:00
Vasily
ed751aa054 Merge pull request #3084 from fhriley/fix_allow_origin
Fix #3083: Set the Access-Control-Allow-Origin header to the request …
2020-05-15 03:18:16 +03:00
Patrick Barron
dcaffd3812 Fix regressions introduced by #3098 2020-05-14 20:11:34 -04:00
Erik Rigtorp
e02e041b23 If second cleaning results in same name skip lookup 2020-05-14 16:55:55 -07:00
Vasily
7c57134535 Implement a cleanup migration 2020-05-15 02:30:28 +03:00
Frank Riley
9ee10d22c8 Rename function 2020-05-14 16:15:09 -07:00
Frank Riley
6990af811a Use simpler dictionary iterator. 2020-05-14 16:15:09 -07:00
Frank Riley
c70c589236 Update Emby.Server.Implementations/HttpServer/HttpListenerHost.cs from review
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-05-14 16:15:09 -07:00
Frank Riley
3cb6fd8a27 Fix #3083: Set the Access-Control-Allow-Origin header to the request origin/host header if possible 2020-05-14 16:15:03 -07:00
Vasily
ce16651dbd Fix a check broken by https://github.com/jellyfin/jellyfin/pull/2105 2020-05-15 01:55:53 +03:00
Patrick Barron
953777f1ba Removed unnecessary usings 2020-05-14 18:12:51 -04:00
Patrick Barron
87c63e668c Merge branch 'master' into activitydb-efcore 2020-05-14 21:16:43 +00:00
Patrick Barron
b94afc597c Address review comments 2020-05-14 17:13:45 -04:00
artiume
4eb4ad3be7 Update Books Resolver File Types 2020-05-14 17:03:53 -04:00
Erik Rigtorp
de35183903 Update MediaBrowser.Providers/Tmdb/Movies/TmdbSearch.cs
Co-authored-by: Vasily <JustAMan@users.noreply.github.com>
2020-05-14 11:56:31 -07:00
Erik Rigtorp
fa1fef1099 Update MediaBrowser.Providers/Tmdb/Movies/TmdbSearch.cs
Co-authored-by: Vasily <JustAMan@users.noreply.github.com>
2020-05-14 11:56:25 -07:00
aled
3ff6e3ff65 Add code analyzers to Jellyfin.Naming.Tests and fix resulting warnings 2020-05-14 18:59:10 +01:00
MrTimscampi
2e18142bb3 Add color primaries to ffprobe output 2020-05-14 18:52:42 +02:00
MrTimscampi
234292453f Add HLG to the video range detection 2020-05-14 18:44:51 +02:00
MrTimscampi
428e1b04fc Add color transfer to ffprobe results 2020-05-14 18:11:32 +02:00
Vasily
5ce008e02f Merge pull request #2162 from Bond-009/websocket
Rewrite WebSocket handling code
2020-05-14 18:49:44 +03:00
Mark Monteiro
2e09311a93 Merge branch 'master' into websocket 2020-05-14 11:08:08 -04:00
dkanada
11dd96f6c7 Merge pull request #3089 from MrTimscampi/tmdb-original-title
Add more information to TmdbSeriesProvider
2020-05-14 13:43:00 +09:00
aled
2849d2b134 Fix compile warnings in Jellyfin.Naming.Tests 2020-05-13 23:59:19 +01:00
Patrick Barron
9925742918 Implement more review suggestions 2020-05-13 17:55:31 -04:00
Patrick Barron
1fecd55ac0 Merge branch 'activitydb-efcore' of https://github.com/barronpm/jellyfin into activitydb-efcore 2020-05-13 15:35:44 -04:00
Patrick Barron
1e9b2613c6 Remove more unused code 2020-05-13 15:35:14 -04:00
Patrick Barron
a8f0d0aa0d Merge branch 'master' into activitydb-efcore 2020-05-13 19:06:04 +00:00
Patrick Barron
511d20a100 Apply review suggestions 2020-05-13 15:03:35 -04:00
Vasily
f08830ea00 Merge pull request #2774 from mark-monteiro/simplify-https-config
Simplify HTTPS Properties
2020-05-13 20:36:54 +03:00
Vasily
69676373ca Merge pull request #3098 from barronpm/remove-ilogger
Remove Support for Injecting ILogger Directly
2020-05-13 20:35:32 +03:00
MrTimscampi
512725a7d1 Fix style issue in TmdbSeriesProvider 2020-05-13 18:02:54 +02:00
Mark Monteiro
51cdb30741 Apply documentation suggestions from code review
Co-authored-by: Vasily <JustAMan@users.noreply.github.com>
2020-05-13 09:46:29 -04:00
Patrick Barron
b7621d762c 2nd half of changes 2020-05-13 00:00:57 -04:00
Patrick Barron
c1360a1dc3 Merge branch 'master' into userdb-efcore
# Conflicts:
#	Emby.Server.Implementations/Data/SqliteUserDataRepository.cs
#	Emby.Server.Implementations/Library/UserManager.cs
#	Jellyfin.Data/Entities/User.cs
#	Jellyfin.Data/ISavingChanges.cs
#	Jellyfin.Server.Implementations/Jellyfin.Server.Implementations.csproj
#	Jellyfin.Server.Implementations/JellyfinDb.cs
#	Jellyfin.Server/Migrations/MigrationRunner.cs
#	MediaBrowser.Model/Notifications/NotificationOptions.cs
#	MediaBrowser.sln
2020-05-12 22:22:20 -04:00
Patrick Barron
9ad839c776 Initial migration code 2020-05-12 22:10:35 -04:00
tanvir-ahmed-siddique
92299be64c Translated using Weblate (Bengali)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bn/
2020-05-12 19:34:59 -04:00
D Z
e69ba3531e Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2020-05-12 17:30:00 -04:00
Patrick Barron
62420a6eb1 Remove support for injecting ILogger directly 2020-05-12 16:03:15 -04:00
Patrick Barron
bac4bf96a0 Fix build errors 2020-05-12 12:50:17 -04:00
Patrick Barron
6379391f87 Merge branch 'master' into activitydb-efcore 2020-05-12 16:08:28 +00:00
rapmue
32c1182226 Translated using Weblate (German (Swiss))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/gsw/
2020-05-12 11:52:45 -04:00
MrTimscampi
b961c3c9ae Address suggestions 2020-05-12 15:05:58 +02:00
Bond-009
94a96c93a8 Merge pull request #3038 from barronpm/generated-code-cleanup
Clean up generated code
2020-05-12 10:38:45 +02:00
millallo
6c855e5f81 Translated using Weblate (Italian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/it/
2020-05-11 16:55:55 -04:00
Federico Antoniazzi
5b2973b01a Translated using Weblate (Italian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/it/
2020-05-11 09:02:52 -04:00
Bond-009
dabd67d127 Merge pull request #2900 from mark-monteiro/migration-dependency-injection
Use dependency injection to construct migration routines
2020-05-11 10:15:35 +02:00
Mark Monteiro
a10aec6956 Fix merge 2020-05-10 18:17:12 -04:00
Mark Monteiro
3abf870c1e Do not include a double slash in URLs when a base URL is not set 2020-05-10 18:07:56 -04:00
Mark Monteiro
dc5165b97f Merge branch 'master' into simplify-https-config 2020-05-10 14:43:57 -04:00
Mark Monteiro
43c22a5822 Add GetLoopbackHttpApiUrl() helper method to replace forceHttps functionality
Also refactor to use return a Uri instead of a string and use UriBuilder under the hood
2020-05-10 14:36:11 -04:00
Patrick Barron
0549d59a5f Merge branch 'master' into generated-code-cleanup 2020-05-10 15:00:52 +00:00
Patrick Barron
55cfa96b9f Apply review suggestions 2020-05-10 10:54:41 -04:00
MrTimscampi
d5ad53e4bb Add Director to role mapper for TMDb 2020-05-10 15:51:30 +02:00
MrTimscampi
9137069f6d Add more information to TmdbSeriesProvider 2020-05-10 14:36:46 +02:00
MrTimscampi
a262ecd9c7 Add positionning cues to WebVTT writer 2020-05-09 20:47:05 +02:00
timothyc824
f33876e7e3 Translated using Weblate (Chinese (Hong Kong))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant_HK/
2020-05-09 12:22:38 -04:00
gion
5c8cbd4087 Fix code issues 2020-05-09 14:34:07 +02:00
gion
8a6ec2fb71 Rename Syncplay to SyncPlay 2020-05-09 12:37:39 +02:00
gion
6e22e9222b Fix code issues 2020-05-09 12:37:23 +02:00
andra5
58122cc067 Translated using Weblate (German (Swiss))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/gsw/
2020-05-08 19:12:07 -04:00
newton181
0e8505fb96 Translated using Weblate (Spanish (Mexico))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_MX/
2020-05-08 19:12:07 -04:00
Vasily
3401d55f41 Fixed yet another case of hanging on a bad stream 2020-05-08 23:11:43 +03:00
Vasily
a517bd2e52 Re-raise the exception that caused LiveTV stream to not open 2020-05-08 14:32:41 +03:00
Erik Rigtorp
f7c44565fc Rename member variables to conform to coding standard 2020-05-07 15:47:59 -07:00
Erik Rigtorp
8bd356ab20 Reduce number of TMDB lookups if filenames have punctuation chars
Previosly TMDB would be queried with the raw name and always fail,
then retry with the cleaned name. Now non-word chars are always
cleaned out first.

If first query fails, retry with more aggressive cleaning.
2020-05-07 15:47:59 -07:00
Bond-009
d016a9772f Merge pull request #3066 from Artiume/patch-1
Remove ogg video mimetype
2020-05-07 22:09:30 +02:00
artiume
3e14b1b50f Remove ogg video mimetype 2020-05-07 15:58:20 -04:00
Bond-009
62da4d0e5c Merge pull request #2492 from Polpetta/fix-api-private-data-leak
Fix emby/user/public API leaking sensitive data
2020-05-07 14:52:10 +02:00
Davide Polonio
5c6339d8fd Fix typo in PublicUserDto
Co-authored-by: Vasily <JustAMan@users.noreply.github.com>
2020-05-07 09:14:00 +02:00
Stefan Petrushevski
41b667c137 Translated using Weblate (Macedonian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/mk/
2020-05-06 17:11:45 -04:00
dkanada
176159d0a8 Merge pull request #2969 from BaronGreenback/my-feature
http in development mode crashed -
2020-05-07 02:24:42 +09:00
Oliver Moolman
1c210d930c Translated using Weblate (Afrikaans)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/af/
2020-05-06 13:09:15 -04:00
Davide Polonio
57cf19f058 Fix variable declaration and follow sonarcloud suggestions 2020-05-06 17:25:41 +02:00
BaronGreenback
ba2134de13 Made changes to message and exception class 2020-05-06 16:04:07 +01:00
dkanada
cd07bc23f8 Merge pull request #3050 from Artiume/patch-1
Update MimeTypes.cs
2020-05-06 21:56:45 +09:00
artiume
1388464329 Update MimeTypes.cs 2020-05-06 08:23:56 -04:00
miguel marsa canals
d34b7f801b Translated using Weblate (Spanish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es/
2020-05-06 08:10:00 -04:00
artiume
1058c80a41 Update MediaBrowser.Model/Net/MimeTypes.cs 2020-05-06 07:45:40 -04:00
dkanada
822c14af4d Merge pull request #2949 from Bond-009/dvdlib2
Enable TreatWarningsAsErrors for DvdLib
2020-05-06 20:38:45 +09:00
artiume
0aff46631f Update MediaBrowser.Model/Net/MimeTypes.cs
Co-authored-by: dkanada <dkanada@users.noreply.github.com>
2020-05-06 07:38:19 -04:00
dkanada
c15463fa12 Merge pull request #2837 from Bond-009/async2
Minor IAsyncDisposable improvements
2020-05-06 20:30:03 +09:00
dkanada
c9d0b07ab0 Merge pull request #3024 from Bond-009/listhelper
Remove ListHelper extensions
2020-05-06 20:25:03 +09:00
Nazar Bulavko
0334b54ae7 Translated using Weblate (Ukrainian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/uk/
2020-05-05 14:52:38 -04:00
Brandon L
dcdafa4859 Translated using Weblate (French (Canada))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr_CA/
2020-05-05 14:52:37 -04:00
Mark Monteiro
432aae0fcc Add missing comma 2020-05-05 11:17:03 -04:00
artiume
183514ebe2 add azw3 2020-05-05 07:25:32 -04:00
Nazar Bulavko
661b0e9489 Added translation using Weblate (Ukrainian) 2020-05-04 19:09:37 -04:00
Patrick Barron
a78184ef44 Add the user data to the schema 2020-05-04 16:00:41 -04:00
Patrick Barron
75e0d58c2d Merge branch 'activitydb-efcore' into userdb-efcore 2020-05-04 15:18:11 -04:00
Bond-009
ca2f9c7341 Merge pull request #2945 from mark-monteiro/integration-tests
Add Integration Tests For BrandingService
2020-05-04 19:01:02 +02:00
artiume
25651362bf Update MimeTypes.cs 2020-05-04 12:13:50 -04:00
SaddFox
64ab8f8e7a Translated using Weblate (Slovenian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sl/
2020-05-04 10:14:24 -04:00
x7aN
27328118a0 Translated using Weblate (Dutch)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/
2020-05-04 10:14:24 -04:00
Tin Pavelic
6aca248532 Translated using Weblate (Croatian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hr/
2020-05-04 10:14:24 -04:00
Anthony Lavado
0e11646107 Merge pull request #2950 from Bond-009/videoresolver
Fix VideoResolver and tests
2020-05-04 04:21:30 -04:00
artiume
675cbd8a16 Update MimeTypes.cs 2020-05-03 18:23:25 -04:00
Bond-009
491f59cad4 Merge pull request #3049 from mark-monteiro/fix-editorconfig
Fix editorconfig Settings
2020-05-03 23:45:30 +02:00
Mark Monteiro
8322d412f0 Move ruleset up one directory so it can be shared by all test projects 2020-05-03 16:51:39 -04:00
Mark Monteiro
151182b9a9 Fix settings in editorconfig file 2020-05-03 16:30:39 -04:00
Mark Monteiro
927e7a24ed Add main ruleset as a solution item so it appears in Visual Studio 2020-05-03 16:29:13 -04:00
Mark Monteiro
e66b000183 Enable StyleCop and FxCop analyzers for integration tests project
Use a custom ruleset that derives from the base solution ruleset, overriding rules where necessary
2020-05-03 16:23:42 -04:00
Mark Monteiro
ea82e2158c Make sure logger factories are disposed during integration tests 2020-05-03 15:31:17 -04:00
Patrick Barron
74f9ddc419 Delete DbContext class 2020-05-03 13:06:08 -04:00
Christoph Potas
7d3eaea3fa + add bd tag to clean string regex
Signed-off-by: Christoph Potas <christoph286@googlemail.com>
2020-05-03 18:17:55 +02:00
Bond-009
18075dd3e8 Merge pull request #3043 from puschie286/fix-startup-project
Jellyfin.Server as startup project
2020-05-03 17:26:31 +02:00
Christoph Potas
a7bc1d4341 ~ set Jellyfin.Server as startup project
Signed-off-by: Christoph Potas <christoph286@googlemail.com>
2020-05-03 16:13:05 +02:00
Mark Monteiro
519d65b9c8 Remove unnecessary gitignore entry
Visual Studio no longer generates this file when opening the solution since the project SDK has been set to the correct value
2020-05-03 01:10:51 -04:00
Mark Monteiro
1c06111497 Merge remote-tracking branch 'upstream/master' into integration-tests 2020-05-03 01:04:19 -04:00
dkanada
2bf3dee4c4 Merge pull request #3035 from mark-monteiro/fix-repo-double-dispose
Do not double dispose item repository resources
2020-05-03 13:28:26 +09:00
Patrick Barron
37dcbfbc39 Update code to only add implemented parts of the schema 2020-05-02 19:26:24 -04:00
Patrick Barron
032de931b1 Migrate activity db to EF Core 2020-05-02 18:32:22 -04:00
Patrick Barron
2b41f8ab63 Clean up generated code 2020-05-02 17:56:05 -04:00
ConfusedPolarBear
df65e3ab0d Add Access-Control-Allow-Origin header to exceptions
Fixes #1794
2020-05-02 15:33:45 -05:00
Mark Monteiro
daf79b8aeb Do not double dispose write lock and connection in user data repository 2020-05-02 15:45:03 -04:00
Neil Burrows
b737301c70 Auto discover published URL override 2020-05-02 17:56:09 +01:00
Davide Polonio
472efeeec4 Remove extra line in UserManager
Co-authored-by: Bond-009 <bond.009@outlook.com>
2020-05-02 13:09:57 +02:00
Bond_009
3623aafcb6 Make SonarCloud happy 2020-05-02 01:30:04 +02:00
Bond_009
04f826e50c Fix merge errors 2020-05-02 01:09:35 +02:00
Bond_009
15634a1913 Merge branch 'master' into websocket 2020-05-02 00:54:04 +02:00
Heikki Jetsonen
62e251663f Translated using Weblate (Finnish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fi/
2020-05-01 16:39:46 -04:00
Bond_009
7659a2ab32 Remove ListHelper extensions 2020-05-01 16:48:33 +02:00
Aragon
9265b422f7 Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2020-05-01 05:32:30 -04:00
Bond-009
7f7a686ea6 Merge pull request #2573 from YouKnowBlom/add-hls-fields
Add codecs, resolution and frame-rate fields to HLS master playlist
2020-05-01 11:20:56 +02:00
Heikki Jetsonen
8b6bec60d3 Translated using Weblate (Finnish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fi/
2020-04-30 23:32:56 -04:00
fesken
c342c6b582 Translated using Weblate (Swedish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sv/
2020-04-30 23:32:56 -04:00
Vasily
1927d0e23c Merge pull request #2293 from EraYaN/new-data-model
Add new EF Core data model (v2)
2020-04-30 12:18:51 +03:00
Erwin de Haan
bbd74f811f Spaces -> Tab in solution file 2020-04-30 10:06:02 +02:00
Erwin de Haan
a370c5c007 Restore the versioning extension settings. 2020-04-30 10:03:49 +02:00
Vasily
655a3ac54b Merge pull request #2656 from joshuaboniface/improve-builds
Improve builds
2020-04-30 00:55:38 +03:00
Joshua M. Boniface
8c9604afba Add Web integration option in default service conf 2020-04-29 16:06:42 -04:00
BaronGreenback
8a69300bf5 Changes styles as suggested by @barronpm
Added addtional comments & source type as per intellisense suggestion
change code as per sonacloud
2020-04-29 12:24:01 +01:00
Bond-009
690fb65cd8 Merge pull request #2985 from sparky8251/prometheus
Add Prometheus exporters
2020-04-29 11:36:05 +02:00
Vasily
aff65adca9 Merge pull request #2917 from Bond-009/tests
Improved tests
2020-04-29 12:17:39 +03:00
Vasily
5922c35d69 Merge pull request #2920 from Bond-009/tests2
Add some simple tests
2020-04-29 12:17:01 +03:00
Vasily
8607b6a997 Merge pull request #2817 from ferferga/master
Remove unnecessary space in hardware decoders argument for ffmpeg
2020-04-29 02:37:24 +03:00
BaronGreenback
ebd589aa86 Whilst fixing issues with SSDP on devices with multiple interfaces, i came across a design issue in the current code - namely interfaces without a gateway were ignored.
Fixing this required the removal of the code that attempted to detect virtual interfaces. Not wanting to remove functionality, but not able to keep the code in place, I implemented a work around solution (see 4 below).

Whilst in the area, I also fixed a few minor bugs i encountered (1, 5, 6 below) and stopped SSDP messages from going out on non-LAN interfaces (3)

All these changes are related.

Changes

1 IsInPrivateAddressSpace - improved subnet code checking
2 interfaces with no gateway were being excluded from SSDP blasts
3 filtered SSDP blasts from not LAN addresses as defined on the network page.
4 removed #986 mod - as this was part of the issue of #2986. Interfaces can be excluded from the LAN by putting the LAN address in brackets. eg. [10.1.1.1] will exclude an interface with ip address 10.1.1.1 from SSDP
5 fixed a problem where an invalid LAN address causing the SSDP to crash
6 corrected local link filter (FilterIPAddress) to filter on 169.254. addresses
2020-04-28 21:57:39 +01:00
BaronGreenback
a3140f83c6 Revert "Whilst fixing issues with SSDP on devices with multiple interfaces, i came across a design issue in the current code - namely interfaces without a gateway were ignored."
This reverts commit 2aaecb8e14.
2020-04-28 21:51:49 +01:00
BaronGreenback
2aaecb8e14 Whilst fixing issues with SSDP on devices with multiple interfaces, i came across a design issue in the current code - namely interfaces without a gateway were ignored.
Fixing this required the removal of the code that attempted to detect virtual interfaces. Not wanting to remove functionality, but not able to keep the code in place, I implemented a work around solution (see 4 below).

Whilst in the area, I also fixed a few minor bugs i encountered (1, 5, 6 below) and stopped SSDP messages from going out on non-LAN interfaces (3)

All these changes are related.

Changes

1 IsInPrivateAddressSpace - improved subnet code checking
2 interfaces with no gateway were being excluded from SSDP blasts
3 filtered SSDP blasts from not LAN addresses as defined on the network page.
4 removed #986 mod - as this was part of the issue of #2986. Interfaces can be excluded from the LAN by putting the LAN address in brackets. eg. [10.1.1.1] will exclude an interface with ip address 10.1.1.1 from SSDP
5 fixed a problem where an invalid LAN address causing the SSDP to crash
6 corrected local link filter (FilterIPAddress) to filter on 169.254. addresses
2020-04-28 21:45:46 +01:00
gion
0b974d09ca Synchronize access to data 2020-04-28 14:12:06 +02:00
Vasily
fa46a61ee3 Merge pull request #2995 from JustAMan/fix-cache-for-real
Now parse date in header correctly as being in UTC
2020-04-28 01:56:39 +03:00
gion
73fcbe90c0 Send error messages to clients 2020-04-27 22:39:37 +02:00
gion
083d3272d0 Refactor and other minor changes 2020-04-27 22:39:37 +02:00
gion
aad5058d25 Implement KeepAlive for WebSockets 2020-04-27 22:39:37 +02:00
gion
40889702d0 Update session ping 2020-04-27 22:39:37 +02:00
gion
6519eebabb Implement NTP like time sync 2020-04-27 22:39:37 +02:00
gion
84d92ba9ce Check that client is playing the right item
Send date when playback command is emitted
Rename some classes
2020-04-27 22:39:20 +02:00
gion
73c19bd281 Filter groups by parental rating 2020-04-27 22:09:36 +02:00
gion
e74832d139 Filter groups by library access 2020-04-27 22:09:36 +02:00
gion
459297211e Implement syncplay permissions for a user 2020-04-27 22:09:02 +02:00
gion
f273995f5b Refactor: rename user to session 2020-04-27 22:07:33 +02:00
gion
b3354ec637 Ignore unrelated events 2020-04-27 22:07:33 +02:00
gion
10c2c62f07 Implement syncplay backend 2020-04-27 22:07:33 +02:00
Łukasz Nowak
ab8a5595f6 Translated using Weblate (Polish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pl/
2020-04-27 13:25:22 -04:00
Vasily
655208d375 Now parse date in header correctly as being in UTC 2020-04-27 19:03:42 +03:00
sparky8251
e3a42a8fe9 Address reviews 2020-04-27 08:42:46 -04:00
Bond-009
cf75fc0684 Merge pull request #2992 from rotvel/feature/ffmpeg
Try harder to find ffmpeg in app directory.
2020-04-27 10:09:26 +02:00
Max Git
cee587d6e3 Try harder to find ffmpeg in app directory. While here do some cleanup 2020-04-27 03:25:57 +02:00
Shillos
820cd7e644 Translated using Weblate (Greek)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/el/
2020-04-26 18:50:35 -04:00
Shillos
c38e414178 Translated using Weblate (Greek)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/el/
2020-04-26 18:07:40 -04:00
Mark Monteiro
15fd4812f0 Remove unnecessary foreach loop 2020-04-26 18:04:34 -04:00
Mark Monteiro
679f97d5e9 Merge remote-tracking branch 'upstream/master' into simplify-https-config
Also reverts conflicting changes made in https://github.com/jellyfin/jellyfin/pull/2798
2020-04-26 17:37:30 -04:00
Mark Monteiro
cabdec87e8 Fix merge with master 2020-04-26 16:55:00 -04:00
oytal
241dea6706 Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2020-04-26 16:14:03 -04:00
Joshua M. Boniface
00d8983d7c Merge pull request #2990 from mark-monteiro/create-missing-folders
Create Missing Data Folders
2020-04-26 16:02:09 -04:00
Mark Monteiro
7615cdc963 Ensure metadata path is created on app startup, and also each time it is updated 2020-04-26 15:51:41 -04:00
Joshua M. Boniface
4fa6d1ccee Merge pull request #2940 from balu92/master
Fix missing colons
2020-04-26 15:22:38 -04:00
Joshua M. Boniface
f502c89331 Merge pull request #2798 from JustAMan/fix-livetv-again
Make localhost LiveTV restreams always use plain HTTP port
2020-04-26 15:13:27 -04:00
Mark Monteiro
cbd62e00a4 Ensure transcoding path is created when it is retrieved 2020-04-26 15:07:37 -04:00
Joshua M. Boniface
ca4b6836c1 Merge pull request #2906 from randrey/dlna-nullref-fix
Fix InvalidOperationException while browsing via DLNA client.
2020-04-26 15:02:34 -04:00
Joshua M. Boniface
cbeeeced75 Apply style change
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-04-26 14:58:43 -04:00
Joshua M. Boniface
6ac723706c Apply style change
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-04-26 14:58:34 -04:00
Joshua M. Boniface
23c8ecff37 Apply style change
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-04-26 14:58:24 -04:00
Joshua M. Boniface
0157326354 Apply style change
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-04-26 14:58:00 -04:00
Joshua M. Boniface
d92a3552b7 Apply style change
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-04-26 14:57:45 -04:00
Joshua M. Boniface
7a550d2c4e Apply style change
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-04-26 14:57:31 -04:00
BaronGreenback
a0a5512069 2969 - re-issed code to address when developer doesn't have certificate installed. 2020-04-26 19:35:36 +01:00
Erwin de Haan
b8d1419d9a Add basic new data model.
Added maxlength to SourceId text field in Metadata entity.

Added extra fields to Person entity and adjusted SourceId length to 255.

Added Extra Nuget deps for Relational databases and added Default Sqlite connection string.

Made LibraryItem and Metadata abstract.

Added artwork, changed DbSet names, added Seasons, added Genres, removed Language enum

Add MediaFIleKind, add CustomVideos, add Books.

Add AdditionalStream

Updated GUIDs.

Remove merge artifacts.

Updated Language to use ISO-639-3 3 letter language codes.

Added collections and concurrency tokens.

Added chapters.

Added Photos and renamed CustomVideo to CustomItem.

Started adding fields.

Added extra fields and Company entities.

Implement a first pass of user permissions for the new database schema

Upgrade to v2 of the addon. Commit generated files.

Update comment, rename namespace and remove superflous field.

Un-ignore any generated code.

Clean up the model files and other left overs.
2020-04-26 19:14:45 +02:00
Mark Monteiro
57b5ec1d51 Remove unnecessary properties from SystemInfo response object
These properties do not provide any useful information to the client. The client would already have to have all this information in order to connect to the endpoint to retrieve it
2020-04-26 12:07:54 -04:00
sparky8251
997b71bbef Metrics endpoint now respects baseurl 2020-04-26 11:52:01 -04:00
Mark Monteiro
93649ad77b Merge remote-tracking branch 'upstream/master' into simplify-https-config 2020-04-26 11:44:42 -04:00
sparky8251
68c7a914c3 Added option to disable metrics collection and defaulted it to off 2020-04-26 11:28:17 -04:00
Joshua M. Boniface
a327e4ccac Update fedora/jellyfin.spec
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2020-04-25 22:13:21 -04:00
Joshua M. Boniface
c689bf457c Correct dpkg conditional logic
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2020-04-25 22:12:19 -04:00
sparky8251
233337256f Add prometheus exporters 2020-04-25 21:36:03 -04:00
Mark Monteiro
7e467f9faa Use the correct method to synchronously wait for tasks to complete 2020-04-25 18:36:09 -04:00
Bond_009
99fe8dbe62 Remove BaseVideoTest 2020-04-25 18:55:54 +02:00
Bond-009
f81833693d Merge pull request #2874 from barronpm/warnings-cleanup1
Emby.Server.Implementations code cleanup and warning fixes (Part 1)
2020-04-25 16:02:39 +02:00
Bond-009
3c366954ae Merge pull request #2960 from ZadenRB/content-type-annotation
Adds annotation for content-type of ASP.NET Web API endpoints
2020-04-25 15:55:36 +02:00
Bond_009
da17a1201f Please roslyn 2020-04-25 15:49:53 +02:00
Bond_009
a273ed9a57 Address comments 2020-04-25 15:29:59 +02:00
Andreas B
153ea9f027 Fix error in HLS codecs field when level is null 2020-04-25 15:22:09 +02:00
Aragon
01f49137fc Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2020-04-24 18:03:04 -04:00
Mark Monteiro
713f8b2f4b Merge pull request #34 from crobibero/api-tests
Do not use the "Microsoft.NET.Sdk.Web" SDK in the test project
2020-04-23 20:06:03 -04:00
Mark Monteiro
cd98938190 Merge remote-tracking branch 'upstream/master' into integration-tests 2020-04-23 19:32:40 -04:00
ZadenRB
2066b0f68f Use builtin JSON Mime type constant 2020-04-23 16:15:59 -06:00
crobibero
6f20e2482f Fix build 2020-04-23 12:43:05 -06:00
Admin
d1684b1053 http in development mode crashed - 2020-04-23 18:30:48 +01:00
dkanada
534b372b81 remove several deprecated utilities in the web package 2020-04-23 22:56:32 +09:00
dkanada
aa6d52277d Merge pull request #2771 from Bond-009/nullable4
Enable nullabe reference types for Emby.Drawing and Jellyfin.Drawing.Skia
2020-04-23 18:43:37 +09:00
Bond_009
118f30059c Merge branch 'master' into nullable4 2020-04-23 11:29:19 +02:00
Miko Dela Cruz
97e383d108 Translated using Weblate (Japanese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ja/
2020-04-23 01:44:09 -04:00
tyaprak
964e277932 Translated using Weblate (Turkish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/tr/
2020-04-23 01:44:09 -04:00
Unlimitediq
7d22a3c394 Translated using Weblate (Dutch)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/
2020-04-23 01:44:09 -04:00
dkanada
97d7ffc458 Merge pull request #2861 from mark-monteiro/fix-auth-response-codes
Fix Auth Response Codes
2020-04-23 14:10:22 +09:00
Bond-009
07c4dfd8fe Merge pull request #2765 from mark-monteiro/register-services-correctly
Register And Construct Services Correctly Using DI Framework
2020-04-22 20:39:03 +02:00
Mark Monteiro
8f02fb9a4f Remove unused usings
This addresses the new issues identified in SonarCloud analysis
2020-04-22 13:09:59 -04:00
Bond-009
d744d7d234 Merge branch 'master' into register-services-correctly 2020-04-22 13:05:03 -04:00
ZadenRB
eee02a355a Adds produces annotation to the base controller to indicate application/json as the response type for endpoints 2020-04-22 10:06:37 -06:00
Patrick Barron
f5f9901544 Fixed build 2020-04-22 09:55:35 -04:00
Patrick Barron
7586c60224 Merge branch 'master' into warnings-cleanup1 2020-04-22 13:44:20 +00:00
Bond-009
07326c1d9b Merge branch 'master' into fix-auth-response-codes 2020-04-22 13:16:08 +02:00
Bond-009
a85b1dcba6 Merge pull request #2943 from mark-monteiro/fix-browser-autolaunch
Respect AutoRunWebApp and NoAutoRunWebApp settings when HostWebClient is false
2020-04-22 13:02:45 +02:00
Michael Ong
de328a46cd Translated using Weblate (Chinese (Traditional))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2020-04-22 04:54:42 -04:00
Wouter Kayser
e943facebb Translated using Weblate (Dutch)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/
2020-04-22 04:54:42 -04:00
Bond-009
c0b3c11b2e Merge pull request #2846 from jellyfin/azure
Remove requirement to build web during server builds
2020-04-22 00:17:44 +02:00
Vasily
587edde37a Merge pull request #2955 from mark-monteiro/sonarcloud
Add SonarCloud to the Azure Pipeline CI process
2020-04-22 01:11:15 +03:00
Mark Monteiro
9a401c3728 Only run SonarCloud analysis for ubuntu tests 2020-04-21 17:55:19 -04:00
Mark Monteiro
c5f163293f Add <ProjectGuid> properties to all project files
This is required for SonarCloud analysis to run
2020-04-21 16:21:09 -04:00
Mark Monteiro
66364eba92 Add tasks required for SonarCloud integration 2020-04-21 15:53:22 -04:00
Chen-Tai,Peng
a2f19eadf7 Translated using Weblate (Chinese (Traditional))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2020-04-21 13:36:28 -04:00
André Silva
b88a94116b Translated using Weblate (Portuguese (Portugal))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_PT/
2020-04-21 13:36:28 -04:00
Mehdi Khosravi
166a4e8129 Translated using Weblate (Persian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fa/
2020-04-21 13:36:28 -04:00
Bond_009
851dda097e Minor improvement 2020-04-21 12:54:04 +02:00
Bond_009
735e7c3f7d Fix VideoResolver and tests 2020-04-21 12:11:55 +02:00
Bond_009
974a4e79f6 Enable TreatWarningsAsErrors for DvdLib 2020-04-21 10:33:41 +02:00
Bond_009
e21d6160c1 Address comments 2020-04-21 10:21:20 +02:00
Bond_009
c430a7ed8f Address comments 2020-04-21 10:18:26 +02:00
Mark Monteiro
bc4e72b29b Create ApplicationHost logger correctly 2020-04-20 20:48:39 -04:00
Mark Monteiro
f815059698 Merge remote-tracking branch 'upstream/master' into register-services-correctly 2020-04-20 20:11:33 -04:00
Vasily
07143bcb68 Merge pull request #2466 from dkanada/plugin
Update plugin classes for nightly builds
2020-04-21 01:45:52 +03:00
Mark Monteiro
24ed639725 Fix NuGet dependencies 2020-04-20 16:23:57 -04:00
Mark Monteiro
6612d9555f Ignore lauchSettings.json in test projects
This file is generated every time the solution is opened with Visual Studio but it is not a required file for an integration tests project
2020-04-20 16:01:33 -04:00
Mark Monteiro
2bcc553dda Commit missing changes to solution file 2020-04-20 15:54:54 -04:00
Mark Monteiro
e43e6af405 Create integration tests for the endpoints in BrandingService 2020-04-20 15:47:36 -04:00
Mark Monteiro
307754a0e0 Create a derived version of WebApplicationFactory<> that works with the Jellyfin server 2020-04-20 15:39:55 -04:00
Mark Monteiro
51b610b999 Expose some methods in Program.cs so they can be used to initialize the application for integration tests 2020-04-20 14:58:00 -04:00
Mark Monteiro
bd81825d2d Respect AutoRunWebApp and NoAutoRunWebApp settings when HostWebClient is false 2020-04-20 14:54:05 -04:00
Mark Monteiro
3cf2fce983 Handle null values for RemoteIpAddress and LocalIpAddress in websocket requests
These values are null when creating fake web requests as part of integration tests
2020-04-20 13:59:02 -04:00
ejalal
32ccab32bf Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-04-20 09:02:07 -04:00
Unknown
80f5dd1e59 Fixed missing colons
some colons were missing from the default ProtocolInfo string
2020-04-20 13:52:50 +01:00
dkanada
d0716ef5b3 Merge pull request #2620 from mark-monteiro/development-documentation
Add Development Documentation To README
2020-04-20 20:52:32 +09:00
dkanada
1cc5d6745a Merge pull request #2903 from randrey/dlna-albumart-fix
Fix DLNA clients displaying wrong album art.
2020-04-20 20:51:14 +09:00
dkanada
2f6dd258e6 Merge pull request #2936 from anthonylavado/fix-etags-right
Remove JsonIgnore from the DateLastSaved property of BaseItem
2020-04-20 20:44:17 +09:00
Bond_009
958681cdff Cover more branches 2020-04-20 10:18:12 +02:00
Bond_009
7f4a229cd2 Add some simple tests 2020-04-20 10:18:12 +02:00
Bond_009
a8b59c5d21 Rename test 2020-04-20 09:53:36 +02:00
Anthony Lavado
ed1dc5c922 Remove JsonIgnore from the DateLastSaved property of BaseItem 2020-04-20 02:35:47 -04:00
dkanada
e6ef680775 add code suggestions 2020-04-20 14:27:46 +09:00
dkanada
3142c9b990 Merge pull request #2916 from Bond-009/minor2
Minor improvements
2020-04-20 13:52:27 +09:00
Andrew Rabert
1d4763a246 Merge pull request #2813 from nyanmisaka/docker
Switch to jellyfin-ffmpeg with integrated driver in docker build
2020-04-19 21:10:32 -04:00
Jay-Jay
42781c4d4b Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2020-04-19 20:11:01 -04:00
Mark Monteiro
6039c6200f Update instructions for running with the dotnet cli 2020-04-19 18:18:53 -04:00
Bond-009
6f866a7fdc Merge pull request #2915 from randrey/imdbid-length-fix
Fix imdbid regex
2020-04-20 00:09:18 +02:00
randrey
d30fd3b3d2 Changed '\d' to '[0-9]'. 2020-04-19 14:14:04 -07:00
Patrick Barron
f26f44acaf Apply code review suggestions 2020-04-19 13:39:12 -04:00
Joshua M. Boniface
5c669d7ad7 Merge pull request #2849 from lyonzy/patch-1
Handle null outputFileExtension in GetOutputFilePath
2020-04-19 12:45:08 -04:00
Bond_009
fc3e2baccc Address comments 2020-04-19 18:27:07 +02:00
Bond_009
d99536e99f Improved tests 2020-04-19 11:57:03 +02:00
Bond_009
a73e1f18b6 Minor improvements 2020-04-19 11:16:09 +02:00
tayhr
16401ec7ae Translated using Weblate (Portuguese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt/
2020-04-18 23:16:00 -04:00
dkanada
1f28d49fc7 Merge pull request #2864 from JustAMan/fix-caching
Make Last-Modified and If-Modified-Since headers follow the spec
2020-04-19 12:04:18 +09:00
dkanada
eda208e258 Merge pull request #2829 from Bond-009/warn19
Fix some warnings
2020-04-19 12:04:02 +09:00
dkanada
d62bd7fecd fix spelling error 2020-04-19 11:46:22 +09:00
dkanada
c35e6ac39a Merge pull request #2910 from randrey/dlna-extra-mime-types
Additional mime types for DLNA (VLC)
2020-04-19 11:38:25 +09:00
randrey
92f273cb0c Limit imdbid to 8 digits. 2020-04-18 18:18:48 -07:00
randrey
d7a71cee3c Fix imdbid regex 2020-04-18 17:26:22 -07:00
Klanc
e333e6765a Translated using Weblate (Catalan)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ca/
2020-04-18 12:35:23 -04:00
dkanada
167e96d212 Merge pull request #2848 from ZadenRB/startup-endpoint-parameters
Fix casing of JSON in Jellyfin API
2020-04-18 18:16:36 +09:00
randrey
2e10d385f0 Add mime type for .mpegts files. 2020-04-17 23:11:52 -07:00
Julien Machiels
25da2cb2d7 Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-04-18 01:52:55 -04:00
randrey
156998dd83 Add mime types for ape and wv files. 2020-04-17 22:25:54 -07:00
randrey
0bef4eef87 Fix InvalidOperationException while browsing via DLNA client. 2020-04-17 14:45:56 -07:00
Bond_009
6b959f40ac Fix build 2020-04-17 20:01:25 +02:00
Mark Monteiro
ecf49caf0d Add back warning message when Skia encoder cannot be used 2020-04-17 10:25:49 -04:00
Bond_009
f055995a1f Use System.Buffers in RangeRequestWriter 2020-04-17 14:21:15 +02:00
Bond-009
b76f570583 Merge pull request #2775 from mark-monteiro/upnp-cleanup
Port Forwarding Improvements
2020-04-17 14:19:49 +02:00
Andrey Sinitsyn
7529402cc9 Translated using Weblate (Russian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ru/
2020-04-17 07:40:20 -04:00
a1
eba781eac5 Fix DLNA clients displaying wrong album art. 2020-04-16 23:36:43 -07:00
Matt Lyons
e7fde6aaca Handle null outputFileExtension with null-conditional operator 2020-04-17 16:13:56 +10:00
Mark Monteiro
bcf1ef319a Update documentation for EnableUPnP 2020-04-17 00:27:18 -04:00
Mark Monteiro
1666f3ca14 Use dependency injection to construct migration routines 2020-04-16 23:40:32 -04:00
dkanada
ae7153b65b Merge pull request #2880 from Bond-009/deadcode2
Remove dead function
2020-04-17 12:10:19 +09:00
Mark Monteiro
8a81bcd742 Restart port forwarding when public https port changes 2020-04-16 22:49:23 -04:00
Mark Monteiro
78d9b9894c Respond to config changes correctly for external port forwarding 2020-04-16 22:41:19 -04:00
Mark Monteiro
26afb42a72 Cleanup port forwarding service
- Use a concurrent collection instead of manually locking
- Do not forward HTTPS port when it is not enabled
- Created multiple rules (HTTP/HTTPS) in parallel instead of in sync
2020-04-16 22:41:19 -04:00
Mark Monteiro
c78413cf7c Disable UPnP by default 2020-04-16 22:41:19 -04:00
Mark Monteiro
00a0e013c6 Update documentation for URL methods in ApplicationHost 2020-04-16 21:46:49 -04:00
Mark Monteiro
fee76097f4 Remove CanConnectWithHttps Property
It is only used in one place and only adds confusion by existing
2020-04-16 21:45:00 -04:00
WWWesten
1c38983ab4 Translated using Weblate (Russian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ru/
2020-04-16 14:52:40 -04:00
ZadenRB
bb288e16cc Document JSON options change 2020-04-15 17:02:43 -06:00
Vasily
95dc99fdbd Update Emby.Server.Implementations/HttpServer/HttpResultFactory.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-04-16 01:03:29 +03:00
Vasily
e1fb24c9ee Merge pull request #2830 from Bond-009/dvdlib
DvdLib: remove dependency on MediaBrowser.Model
2020-04-16 00:53:25 +03:00
Bond-009
31769bda28 Merge pull request #2745 from Artiume/patch-6
Force Audio Transcoding for LiveTV Transcoding
2020-04-15 23:23:56 +02:00
Bond-009
bcf53b3226 Merge pull request #2746 from dafo90/master
Authentication request log with IP
2020-04-15 23:22:50 +02:00
WWWesten
30b860fb82 Translated using Weblate (Russian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ru/
2020-04-15 16:44:09 -04:00
gnehs
f8a4525fd5 Translated using Weblate (Chinese (Traditional))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2020-04-15 15:33:50 -04:00
Patrick Barron
c4e6329e58 Clean up and document ChannelManager.cs and implement suggestions 2020-04-15 15:00:45 -04:00
dkanada
d7df890017 Merge pull request #2855 from Delgan/improve-movie-resolver
Improve movie resolver if space precedes the year
2020-04-15 23:51:32 +09:00
Mark Monteiro
daed41815f Add missing punctuation in xml comment
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-04-15 08:56:00 -04:00
Bond_009
72219795d1 Remove dead function 2020-04-15 14:29:12 +02:00
Mathias
ed1ffcb603 Translated using Weblate (Danish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/da/
2020-04-15 07:55:21 -04:00
Bond-009
ae3ee1eb16 Merge pull request #2862 from mark-monteiro/dependabot/nuget/Mono.Nat-2.0.1
Bump Mono.Nat from 2.0.0 to 2.0.1
2020-04-15 11:24:11 +02:00
Bond_009
27ce10d0c1 Fix release build 2020-04-15 11:18:13 +02:00
Bond_009
10afa4509d Log exception 2020-04-15 11:14:54 +02:00
Bond_009
d6daac5064 Fix build 2020-04-15 11:12:58 +02:00
Bond_009
fc049caba2 Merge branch 'master' into nullable3 2020-04-15 11:09:14 +02:00
Bond_009
38dae51ccf Minor IAsyncDisposable improvements 2020-04-15 11:05:32 +02:00
ZadenRB
72862d7b46 Lowercase actual parameters in code and remove whitespace to comply with StyleCopAnalyzers 2020-04-15 00:24:15 -06:00
Patrick Barron
a54dca09d8 Added the last missing documentation 2020-04-14 19:34:38 -04:00
Patrick Barron
fd750a9c79 Clean up and document CryptographyProvider.cs 2020-04-14 16:13:41 -04:00
Patrick Barron
ecaae2c8de Clean up and document ServerConfigurationManager.cs 2020-04-14 16:01:21 -04:00
Patrick Barron
ddd8120aab Clean up and document CollectionManager.cs 2020-04-14 15:57:05 -04:00
Miko Dela Cruz
2eb5775ee3 Translated using Weblate (Japanese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ja/
2020-04-14 15:52:23 -04:00
Patrick Barron
77df0c943b Clean up and document CollectionImageProvider.cs 2020-04-14 15:50:48 -04:00
Patrick Barron
f29e6badb3 Remove unused field and documented RefreshChannelsScheduledTask.cs 2020-04-14 15:48:06 -04:00
Patrick Barron
c8e26b6d46 Document ChannelPostScanTask.cs 2020-04-14 15:36:29 -04:00
Patrick Barron
2c920cff33 Document ChannelImageProvider.cs 2020-04-14 15:29:57 -04:00
Patrick Barron
543c76a8f1 Clean up and document ChannelDynamicMediaSourceProvider.cs 2020-04-14 15:28:02 -04:00
Patrick Barron
4c0547f90c Document BrandingConfigurationFactory.cs 2020-04-14 15:19:11 -04:00
Patrick Barron
90e2564169 Document and clean up ZipClient.cs 2020-04-14 15:16:04 -04:00
Patrick Barron
9cec01d8ce Switch to using declaration 2020-04-14 15:11:21 -04:00
Patrick Barron
0e8f30f64b Documented BaseApplicationPath constructor parameters 2020-04-14 15:08:20 -04:00
Patrick Barron
f6899de338 Clean up and document ActivityRepository.cs 2020-04-14 15:04:54 -04:00
Patrick Barron
af4d617df2 Clean up and document ActivityManager.cs 2020-04-14 14:50:19 -04:00
Patrick Barron
9c679b6570 Clean up and document ActivityLogEntryPoint.cs 2020-04-14 14:45:57 -04:00
Jeisson rojas
96795ca250 Translated using Weblate (Spanish (Argentina))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_AR/
2020-04-14 02:38:26 -04:00
Vasily
9df49cc796 Make Last-Modified and If-Modified-Since headers follow the spec 2020-04-14 01:52:43 +03:00
Mark Monteiro
9728aa8b0a Merge branch 'master' into register-services-correctly 2020-04-13 17:06:24 -04:00
Mark Monteiro
8b4b4b4127 Do not return the exception message to the client for AuthenticationExceptions 2020-04-13 16:10:55 -04:00
Mark Monteiro
a8c3951c17 Only show developer exception page for 500 server exceptions
Other response codes should be returned as normal
2020-04-13 15:26:49 -04:00
Mark Monteiro
9c7b3850f9 Throw AuthenticationException instead of ArgumentNullException when a user does not exist 2020-04-13 14:55:24 -04:00
Mark Monteiro
98044e7793 Document AuthenticationException correctly 2020-04-13 13:18:12 -04:00
Mark Monteiro
53380689ad Return correct status codes for authentication and authorization errors
- Use AuthenticatonException to return 401
- Use SecurityException to return 403
- Update existing throws to throw the correct exception for the circumstance
2020-04-13 13:17:46 -04:00
Mark Monteiro
6d35dd6b32 Clean up SecurityException
- Remove unused SecurityExceptionType
- Add missing constructor for InnerException
- Add missing documentation
2020-04-13 13:13:48 -04:00
Delgan
be6cc9644f Another iteration 2020-04-13 16:11:02 +02:00
Delgan
90d289f946 Fix failing tests? 2020-04-13 15:55:18 +02:00
Delgan
5c117734a5 Improve movie resolver if space precedes the year 2020-04-13 14:50:35 +02:00
dependabot-preview[bot]
4ecce9e085 Bump Mono.Nat from 2.0.0 to 2.0.1
Bumps [Mono.Nat](https://github.com/mono/Mono.Nat) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/mono/Mono.Nat/releases)
- [Commits](https://github.com/mono/Mono.Nat/compare/Mono.Nat-2.0.0...Mono.Nat-2.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 10:39:10 +00:00
dkanada
cb2523e2ef merge branch master into plugin 2020-04-13 14:38:19 +09:00
dkanada
b937eb0c11 change conditional for download task on ci
Co-Authored-By: Mark Monteiro <marknr.monteiro@protonmail.com>
2020-04-13 14:34:31 +09:00
Matt Lyons
b52199e9e2 Handle null outputFileExtension in GetOutputFilePath 2020-04-13 12:44:15 +10:00
Oscar Rosario
9a0a4575ad Translated using Weblate (Spanish (Dominican Republic))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_DO/
2020-04-12 22:22:00 -04:00
ZadenRB
16a66dc89c Remove unused import, fix casing of startup wizard POST parameters 2020-04-12 19:25:02 -06:00
ZadenRB
5a658cf260 Fix casing of JSON in Jellyfin API. Currently only affects startup wizard. 2020-04-12 19:17:46 -06:00
Joshua M. Boniface
bf92694f8b Merge pull request #2715 from nyanmisaka/libfdk-aac
Prefer to use libfdk_aac encoder for better audio quality when it is available
2020-04-12 19:17:11 -04:00
Maerik
d23f388c5f Translated using Weblate (Danish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/da/
2020-04-12 18:57:58 -04:00
Joshua M. Boniface
2be6550db4 Merge pull request #2783 from JustAMan/better-cancel-msg
Add logging of URL being processed when logging an error
2020-04-12 18:07:30 -04:00
Vasily
3bdb5e80a5 More consise error messages 2020-04-13 00:57:11 +03:00
Anthony Lavado
6d98c0b62a Merge pull request #2779 from KristupasSavickas/fix-docker-arm-ffmpeg-path
Fix ffmpeg path on ARM docker image
2020-04-12 16:49:43 -04:00
Vasily
058c35e739 Fix log highlithing 2020-04-12 23:40:34 +03:00
Vasily
6386b9b1b9 Merge pull request #2782 from JustAMan/fix-ssa-delivery
Fix support for attachments with baseURL set
2020-04-12 23:37:34 +03:00
Vasily
30f4392872 Fix condition flipped by https://github.com/jellyfin/jellyfin/pull/2635 2020-04-12 23:35:41 +03:00
Vasily
61d9c9df5b Addressing review feedback 2020-04-12 23:26:45 +03:00
Bond-009
df74c7722b Merge pull request #2804 from dtparr/extrasJunits
Add Unit Tests for the Extras Directories
2020-04-12 22:18:43 +02:00
dkanada
4758e75090 leave files in destination folder during extraction 2020-04-13 02:34:52 +09:00
dkanada
8c6e1ef27e fix pipeline references 2020-04-13 02:27:42 +09:00
dkanada
129e844252 use web artifacts for build step on ci 2020-04-13 02:20:37 +09:00
Bond-009
7731aba6f4 Merge pull request #2834 from mark-monteiro/add-nuget-config
Add nuget.config file
2020-04-12 15:35:39 +02:00
Adam Bokor
4dbb9dd201 Translated using Weblate (Hungarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hu/
2020-04-12 05:57:02 -04:00
TheGoose
768703e9e1 Translated using Weblate (English (United Kingdom))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/en_GB/
2020-04-12 05:57:02 -04:00
Bond-009
84dba64644 Merge pull request #2821 from nyanmisaka/mpeg4
Fix MPEG4 broken on VAAPI
2020-04-12 11:44:17 +02:00
Nyanmisaka
62d9a48833 update as per suggestions 2020-04-12 17:34:25 +08:00
Nyanmisaka
e6f65863e3 update as per suggestions 2020-04-12 17:32:03 +08:00
amirmasoud
75226c18ab Translated using Weblate (Persian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fa/
2020-04-11 20:44:00 -04:00
Abdul Khaliq
af089bd3cf Translated using Weblate (Urdu (Pakistan))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ur_PK/
2020-04-11 18:16:43 -04:00
tayhr
698e8420c0 Translated using Weblate (Portuguese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt/
2020-04-11 18:16:43 -04:00
Spiderfly
42b19256e6 Translated using Weblate (Finnish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fi/
2020-04-11 18:16:43 -04:00
Alexis BIZON
fa0cdef67d Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-04-11 18:16:43 -04:00
amirmasoud
3a4c97075f Translated using Weblate (Persian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fa/
2020-04-11 18:16:43 -04:00
Mark Monteiro
fe11fb0a63 Add NuGet config file 2020-04-11 15:34:00 -04:00
dtparr
41f6fa0ae8 Whitespace fix
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-04-11 13:33:16 -05:00
dtparr
e027f4645f Whitespace fix
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-04-11 13:33:06 -05:00
Bond-009
3d611743ed Merge pull request #2680 from mark-monteiro/remove-common-process
Remove CommonProcess and ProcessFactory
2020-04-11 20:30:20 +02:00
Mark Monteiro
4113288278 Fix style issues 2020-04-11 13:46:31 -04:00
Bond-009
14674d4469 Merge pull request #2772 from barronpm/codecleanup
MediaBrowser.Api code cleanup
2020-04-11 19:30:23 +02:00
Mark Monteiro
7152b55747 Use a separate line for each property initializer 2020-04-11 13:28:21 -04:00
Mark Monteiro
17e8813378 Use ActivatorUtilities to construct MediaEncoder and update constructor to inject EncodingHelper correctly 2020-04-11 10:53:13 -04:00
Mark Monteiro
1e1295bebf Merge remote-tracking branch 'upstream/master' into register-services-correctly 2020-04-11 10:00:39 -04:00
Bond_009
6b7517e506 Fix indentation 2020-04-11 15:37:24 +02:00
dkanada
ff065df986 update plugin manifest url 2020-04-11 20:11:41 +09:00
dkanada
bd55bdb4e3 merge branch master into plugin 2020-04-11 20:10:16 +09:00
dkanada
cbe1fe2c8f update description and overview for plugins 2020-04-11 20:00:32 +09:00
dkanada
2da5df6c25 add new property for version changelogs 2020-04-11 19:56:42 +09:00
dkanada
abb7ed9c35 rename target abi property 2020-04-11 19:54:33 +09:00
dkanada
78abbcc251 standardize plugin version and guid properties 2020-04-11 19:52:40 +09:00
dkanada
8e9aeb84b1 remove release channel from plugin classes 2020-04-11 19:33:36 +09:00
Bond_009
d8a7462205 DvdLib: remove dependency on MediaBrowser.Model 2020-04-11 12:33:23 +02:00
Bond_009
49fe5e0a21 Fix some warnings 2020-04-11 12:03:10 +02:00
Abdul Khaliq
299541f1b2 Added translation using Weblate (Urdu (Pakistan)) 2020-04-11 05:49:00 -04:00
dtparr
8e67cb541e Refactor the NamingOptions instantiations from both new and pre-existing facts/theories to be a readonly field to save instantiation costs 2020-04-10 23:00:30 +00:00
dtparr
8e42d0063d Fix tab/space issue causing github oddity 2020-04-10 21:21:22 +00:00
dtparr
ce86455747 Update to use the Theory/InlineData method to parameterize unit tests 2020-04-10 21:18:41 +00:00
Bond-009
c62c702ef9 Merge pull request #2825 from mark-monteiro/fix-xml-doc
Fix misformed xml doc comment
2020-04-10 23:00:47 +02:00
Mark Monteiro
64a255f090 Fix misformed xml doc comment 2020-04-10 15:02:54 -04:00
Nyanmisaka
6485c1eabc probe Main/High 10 more specifically 2020-04-11 01:19:28 +08:00
sabretou
79f39f7336 Translated using Weblate (Marathi)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/mr/
2020-04-10 10:47:55 -04:00
Nyanmisaka
dd3f3089ef minor changes 2020-04-10 22:41:27 +08:00
Nyanmisaka
e0ee61d114 fix mpeg4 failed on vaapi 2020-04-10 22:12:26 +08:00
Nyanmisaka
79e3de1568 Merge pull request #3 from jellyfin/master 2020-04-10 22:09:48 +08:00
Nyanmisaka
bfd87829e3 Merge pull request #2 from jellyfin/master
merge
2020-04-10 22:08:49 +08:00
sabretou
ec2e9d52ba Added translation using Weblate (Marathi) 2020-04-10 09:01:45 -04:00
hydracodone
799c71e2b4 Translated using Weblate (Filipino)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fil/
2020-04-10 07:24:35 -04:00
Vasily
53db9567d3 Merge pull request #2769 from mark-monteiro/configurable-repo-url
Make Plugin Repo URL Configurable
2020-04-10 12:52:46 +03:00
dtparr
1f33c51977 Add Unit Test for the Extras directories.
Parameterize the valid extras as well as the null conditions.
2020-04-10 03:50:17 +00:00
Lars Søndergaard Petersen
77445d9a5d Translated using Weblate (Danish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/da/
2020-04-09 20:30:10 -04:00
Vasily
06c5b73c15 Merge pull request #2755 from Bond-009/dbcleanup
Clean up SqliteItemRepository
2020-04-10 00:20:53 +03:00
Vasily
8196916354 Merge pull request #2816 from jellyfin/revert-2749-ffmpeg-dependency-version
Revert "Specify a minimum version for jellyfin-ffmpeg dependency in .deb dependencies"
2020-04-09 21:26:45 +03:00
Bond_009
c2b5fb78ce Address comments 2020-04-09 19:27:03 +02:00
Bond_009
9cca964b08 Address comments 2020-04-09 19:22:29 +02:00
ferferga
4e894b4b66 Remove unnecessary space in hardware decoders argument for ffmpeg 2020-04-09 18:23:21 +02:00
Joshua M. Boniface
e872a89b1c Revert "Specify a minimum version for jellyfin-ffmpeg dependency in .deb dependencies" 2020-04-09 12:10:22 -04:00
hauntingEcho
4d949cb38b Specify a version for jellyfin-ffmpeg dependency in .deb
Lower versions cause #2126 in Jellyfin >= 10.4.3
2020-04-09 12:09:40 -04:00
Joshua M. Boniface
7eac368486 Fix missing restart script 2020-04-09 11:55:44 -04:00
Joshua M. Boniface
762a46045e Update gitignore paths for debian/ 2020-04-09 11:55:44 -04:00
Joshua M. Boniface
fbad4f00b4 Remove old build infra (again) 2020-04-09 11:50:46 -04:00
Joshua M. Boniface
42813ef069 Preserve Unraid configuration 2020-04-09 11:50:32 -04:00
Joshua M. Boniface
ed735522cf Revert "Remove old stuff"
This reverts commit b9fdd96ece.
2020-04-09 11:49:14 -04:00
Joshua M. Boniface
406d087a46 Correct ARCH var in Ubuntu Dockerfiles 2020-04-09 11:46:16 -04:00
Joshua M. Boniface
b0e80b486b Use jellyfin.org everywhere 2020-04-09 11:40:04 -04:00
Joshua M. Boniface
529a9ae544 Don't remove already-moved files 2020-04-09 11:37:00 -04:00
Joshua M. Boniface
c10df2fe85 Improve dpkg handling in build.sh 2020-04-09 11:33:22 -04:00
Joshua M. Boniface
9eab678487 Improve Fedora spec and add metapackage 2020-04-09 11:25:42 -04:00
Nyanmisaka
8105494cb5 minor changes 2020-04-09 17:37:57 +08:00
Bart
838b20a2d7 Translated using Weblate (Dutch)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/
2020-04-09 05:07:41 -04:00
Nyanmisaka
7b2fca96e3 use pre-compiled deb to avoid non-free drivers 2020-04-09 15:43:47 +08:00
Vasily
be538d4277 Merge pull request #2799 from jellyfin/windows
Remove old windows job from pipeline
2020-04-08 19:08:09 +03:00
dafo90
dd128b5e30 Log message for each exception during login 2020-04-08 17:02:32 +02:00
Vasily
626d4dab10 Make sure Jellyfin listens on localhost no matter what
This is needed by LiveTV
2020-04-08 13:45:53 +03:00
Vasily
5b59cd2eb2 Merge pull request #2696 from mark-monteiro/fix-extras
Display Extras With Unknown Types
2020-04-07 23:39:31 +03:00
Bond-009
51991cd182 Merge pull request #2797 from mark-monteiro/ignore-jellyfin-web-dir
Add MediaBrowser.WebDashboard\jellyfin-web to .gitignore
2020-04-07 20:15:57 +02:00
Bond-009
b16b58bc57 Merge pull request #2785 from nyanmisaka/mpge4-profile15
Fix MPEG4 packback error regression on vaapi
2020-04-07 19:13:02 +02:00
Bond-009
3a98ad8255 Merge pull request #2721 from PrplHaz4/patch-2
Separate Channels permissions from All Libraries
2020-04-07 19:10:34 +02:00
dkanada
bfff9b7178 Merge pull request #2794 from mark-monteiro/dependabot/nuget/System.Text.Json-4.7.1
Bump System.Text.Json from 4.7.0 to 4.7.1
2020-04-08 02:05:09 +09:00
Peter
bee080cfff Translated using Weblate (Swedish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sv/
2020-04-07 12:43:49 -04:00
dkanada
f4cba0ed43 fix dependency for compat job 2020-04-08 01:42:45 +09:00
dkanada
0a6faefe3a minor changes to main build job 2020-04-08 01:36:36 +09:00
dkanada
ea00abcf4e remove old windows job from pipeline 2020-04-08 01:29:54 +09:00
dkanada
0a70c55021 Merge pull request #2793 from mark-monteiro/remove-interactive-extensions
Remove Ix.NET
2020-04-08 01:15:44 +09:00
dkanada
aeedd06f51 Merge pull request #2796 from JustAMan/fix-transcode-reasons
Make codec check in profile examine profile type first
2020-04-08 01:04:31 +09:00
Vasily
e85f9f5613 Make localhost LiveTV restreams always use plain HTTP port 2020-04-07 18:41:15 +03:00
Bond-009
5cff79ea38 Merge pull request #2791 from mark-monteiro/dependabot/nuget/coverlet.collector-1.2.1
Bump coverlet.collector from 1.2.0 to 1.2.1
2020-04-07 17:38:44 +02:00
Mark Monteiro
0a9b7c868e Specify the directory for jellyfin-web correctly 2020-04-07 10:42:16 -04:00
Mark Monteiro
c88e6daacf Ignore the jellyfin-web directory in MediaBrowser.WebDashboard 2020-04-07 10:36:44 -04:00
Vasily
8e514f8d63 Fix check for profile supporting a codec - it should first check if profile is talking about media type
For example, audio-only profiles have "VideoCodec" set to "null" which translates to "any codec", which breaks some logic later on
2020-04-07 14:23:53 +03:00
Ibrahim Alesayi
c6987df501 Translated using Weblate (Arabic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ar/
2020-04-07 06:57:40 -04:00
Bond-009
3773e37755 Merge pull request #2792 from mark-monteiro/dependabot/nuget/sharpcompress-0.25.0
Bump sharpcompress from 0.24.0 to 0.25.0
2020-04-07 11:50:58 +02:00
Patrick Barron
555651aae2 Fixed indentation and corrected typo 2020-04-06 23:17:49 -04:00
Mark Monteiro
1f765cdd93 Remove reference to System.Interactive.Async 2020-04-06 22:04:55 -04:00
Mark Monteiro
8e3b09a996 Do not use IAsyncEnumerable unnecessarily 2020-04-06 22:04:24 -04:00
dependabot-preview[bot]
25aa26a8fd Bump sharpcompress from 0.24.0 to 0.25.0
Bumps [sharpcompress](https://github.com/adamhathcock/sharpcompress) from 0.24.0 to 0.25.0.
- [Release notes](https://github.com/adamhathcock/sharpcompress/releases)
- [Commits](https://github.com/adamhathcock/sharpcompress/compare/0.24...0.25)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-07 00:48:03 +00:00
Mark Monteiro
644ddfad00 Apply code review changes 2020-04-06 19:37:19 -04:00
dafo90
62b0db59aa Fix Authentication request log 2020-04-06 22:23:53 +02:00
Nyanmisaka
0ecac47098 drop the unnecessary colorspace conversion
Since 'hwdownload, format = nv12' has completed the conversion of colorspace. 'format = p010le' is redundant and will reduce the speed by almost half under the premise of unchanged cpu usage.
2020-04-07 00:20:49 +08:00
Nyanmisaka
a5249730d7 mpeg4 profile 15 is not supported by vaapi device 2020-04-07 00:20:36 +08:00
Nyanmisaka
6453638103 Merge pull request #1 from jellyfin/master 2020-04-06 20:13:05 +08:00
Vasily
71d8e66d9f Add logging of URL being processed when logging an error
This might help diagnosing stuff like "Operation was cancelled"
2020-04-06 14:42:41 +03:00
Vasily
5be60782ed Fix support for attachments with baseURL set
* Revert "Add baseURL to attachments"
* This is properly handled by jellyfin-web#1020
2020-04-06 14:06:42 +03:00
Kristupas Savickas
9dda2ffc91 Fix ffmpeg path on ARM docker image 2020-04-06 13:21:20 +03:00
dkanada
0cd7cd611e Merge pull request #2758 from Bond-009/plugininstalled
Remove PluginInstalled
2020-04-06 19:01:15 +09:00
dkanada
0522c90109 Merge pull request #2635 from mark-monteiro/use-development-exception-page
Use ASP Development Exception Page
2020-04-06 18:59:58 +09:00
dkanada
cb634d27d8 Merge branch 'master' into use-development-exception-page 2020-04-06 18:59:45 +09:00
dkanada
19b6961c08 Merge pull request #2749 from hauntingEcho/ffmpeg-dependency-version
Specify a minimum version for jellyfin-ffmpeg dependency in .deb dependencies
2020-04-06 16:48:39 +09:00
Mark Monteiro
5bc6c08a0a Merge remote-tracking branch 'upstream/master' into simplify-https-config 2020-04-06 00:24:11 -04:00
Mark Monteiro
410a322fe2 Add CanConnectWithHttps to interface 2020-04-05 23:30:57 -04:00
Patrick Barron
c9da49ebaa Implemented more suggestions 2020-04-05 23:12:25 -04:00
Patrick Barron
47ba4a84cd Simplified more conditionals 2020-04-05 18:06:30 -04:00
Patrick Barron
81b4a4c54c Implement various suggestions 2020-04-05 17:58:39 -04:00
Patrick Barron
e1958e3902 Miscellaneous code cleanup 2020-04-05 15:56:08 -04:00
Bond_009
2fcbc2a5b8 Enable nullabe reference types for Emby.Drawing and Jellyfin.Drawing.Skia 2020-04-05 21:19:04 +02:00
Patrick Barron
add0a2088d Simplified Conditionals and returns 2020-04-05 14:44:14 -04:00
Mark Monteiro
ed88430429 Log error messages when the manifest URL is not valid 2020-04-05 14:34:41 -04:00
Mark Monteiro
15dd46c25a Add '--plugin-manifest-url' command line option and 'InstallationManager:PluginManifestUrl' config option 2020-04-05 13:46:36 -04:00
Patrick Barron
80cfcf5643 Remove unnecessary casts and explicit array types 2020-04-05 13:00:35 -04:00
Patrick Barron
86c06996b1 Remove redundant name qualifiers 2020-04-05 12:48:22 -04:00
Patrick Barron
961f48f5bc Use ? and ?? where applicable 2020-04-05 12:45:01 -04:00
Patrick Barron
6a3f9253db Convert using statements to using declarations where applicable 2020-04-05 12:26:11 -04:00
Bond_009
30ce346f34 Enable nullabe reference types for MediaBrowser.Model 2020-04-05 18:10:56 +02:00
Patrick Barron
5966ee6d87 Convert type checks and null checks into pattern matching 2020-04-05 12:07:43 -04:00
Medzhnun
92af81166d Translated using Weblate (Turkish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/tr/
2020-04-05 11:11:09 -04:00
Mark Monteiro
f91f2ef328 Merge remote-tracking branch 'upstream/master' into register-services-correctly 2020-04-05 10:07:17 -04:00
Mark Monteiro
f2760cb055 Register IImageEncoder in Jellyfin.Server instead of Emby.Server.Implementations 2020-04-05 10:03:53 -04:00
Mark Monteiro
7be4b57fe7 Fix documentation for ExtraRuleType enum values 2020-04-05 09:47:55 -04:00
Mark Monteiro
3d8501e462 Document exception 2020-04-05 09:25:23 -04:00
Mark Monteiro
658e963e93 replace 'try-finally' with 'using' where appropriate 2020-04-05 09:23:44 -04:00
Bond-009
29539174a3 Merge pull request #2636 from mark-monteiro/development-https
Use ASP.NET Core HTTPS Development Certificate
2020-04-05 15:09:27 +02:00
Mark Monteiro
bc91445b5d Use correct naming convention for _relevantEnvVarPrefixes 2020-04-05 09:05:23 -04:00
PrplHaz4
46453549b5 Start line with Boolean 2020-04-05 07:26:21 -04:00
PrplHaz4
b05e04c0cb Collapse IsInEnabledFolder to single expression
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2020-04-05 06:42:15 -04:00
Adam Bokor
a05cdf0b05 Translated using Weblate (Hungarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hu/
2020-04-05 05:18:52 -04:00
Adam Bokor
1cfc002764 Translated using Weblate (Hungarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hu/
2020-04-05 03:57:11 -04:00
Mark Monteiro
735d6c8ad5 Convert properties in ApplicationHost to private readonly fields, where possible 2020-04-04 23:18:47 -04:00
Mark Monteiro
241d0ae65c Inject IStartupOptions into StartupWizard 2020-04-04 23:14:35 -04:00
darcostan
33cb5c02b0 Translated using Weblate (Serbian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sr/
2020-04-04 22:28:03 -04:00
adrian gustavo martinez
837eacec04 Translated using Weblate (Spanish (Mexico))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_MX/
2020-04-04 22:28:03 -04:00
adrian gustavo martinez
3707437594 Translated using Weblate (Spanish (Argentina))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_AR/
2020-04-04 22:28:02 -04:00
Mark Monteiro
809cf3a0c2 Register IJsonSerializer correctly 2020-04-04 21:33:57 -04:00
Mark Monteiro
710767fbf2 Add deprecation warning message for injecting ILogger 2020-04-04 21:27:48 -04:00
Mark Monteiro
e16c16dd51 Register and construct IHttpClient correctly 2020-04-04 21:18:09 -04:00
Mark Monteiro
adf0e8d3fd Register and construct ITaskManager and IIsoManager correctly 2020-04-04 21:00:11 -04:00
Mark Monteiro
3f2f95d877 Register IProcessFactory, ICryptoProvider and ISocketFactory correctly 2020-04-04 20:42:11 -04:00
Mark Monteiro
aee6a1b476 Remove unnecessary async and parameter from ApplicationHost initialization method 2020-04-04 20:40:50 -04:00
Mark Monteiro
5d648bf54f Register and construct ILocalizationManager correctly 2020-04-04 20:21:48 -04:00
Mark Monteiro
cbc0224aaf Register IStreamHelper, IInstallationManager, IZipClient, IHttpResultFactory and IBlurayExaminer correctly 2020-04-04 20:00:55 -04:00
Mark Monteiro
615717e562 Register and construct IUserDataManager and IUserDataRepository correctly 2020-04-04 19:57:26 -04:00
Mark Monteiro
5827f0f5a9 Register IDisplayPreferencesRepository correctly 2020-04-04 19:40:53 -04:00
Mark Monteiro
a5234dfd88 Register and construct IAuthenticationRepository correctly 2020-04-04 19:36:27 -04:00
Mark Monteiro
4daa5436fc Register and construct IUserManager and IUserRepository correctly 2020-04-04 19:31:14 -04:00
Mark Monteiro
84b48eb69c Convert MediaEncoder property to field 2020-04-04 19:01:21 -04:00
Mark Monteiro
fe9f4e06d1 Register and construct LibraryManager correctly 2020-04-04 18:28:46 -04:00
Mark Monteiro
7fd25f94f3 Inject and construct ISearchEngine and IMusicManager correctly 2020-04-04 18:22:29 -04:00
Mark Monteiro
c2b21ce553 Register and construct ILibraryMonitor correctly 2020-04-04 17:33:00 -04:00
Mark Monteiro
d173358065 Move ApplicationHost certificate initialization to constructor 2020-04-04 17:19:16 -04:00
Mark Monteiro
07cebbeae2 Register and construct IImageProcessor, SqliteItemRepository and IImageEncoder correctly 2020-04-04 17:12:24 -04:00
Mark Monteiro
efe3ebaab8 Eliminate circular dependency between LibraryManager and ImageProcessor 2020-04-04 16:01:10 -04:00
Mark Monteiro
11693d6024 Register ITvManagerService correctly 2020-04-04 15:44:44 -04:00
Mark Monteiro
71c84905de Register IDeviceManager correctly 2020-04-04 15:40:06 -04:00
Mark Monteiro
7b31b0e322 Inject logger correctly into ActivityManager and ActivityRepository 2020-04-04 15:33:23 -04:00
Mark Monteiro
573da63d41 Register and construct IMediaSourceManager correctly 2020-04-04 15:28:21 -04:00
Mark Monteiro
dd5a55aeba Register ISubtitleManager correctly 2020-04-04 15:12:02 -04:00
Mark Monteiro
3d8b81039d Log refresh progress at Debug level 2020-04-04 15:08:04 -04:00
Mark Monteiro
0ce82ab332 Remove unnecessary fields in ApplicationHost 2020-04-04 15:05:50 -04:00
Mark Monteiro
51b9a6e94b Register IProviderManager correctly 2020-04-04 14:56:50 -04:00
Mark Monteiro
75b05ca1e6 Register and construct DtoService correctly 2020-04-04 14:41:03 -04:00
Mark Monteiro
cb2d99e831 Construct LiveTvDtoService and LiveTvManager correctly 2020-04-04 14:40:04 -04:00
Mark Monteiro
f78423bd49 Register IChannerManager correctly 2020-04-04 14:32:35 -04:00
Mark Monteiro
bb3db9e845 Register ISessionManager, IDlnaManager and ICollectionManager correctly; replace private properties with fields 2020-04-04 13:56:01 -04:00
Mark Monteiro
3d5b4f869c Register ILiveTvManager and IPlaylistManager correctly 2020-04-04 13:16:53 -04:00
Mark Monteiro
1456365411 Register IUserViewManager correctly 2020-04-04 13:10:39 -04:00
Abderrahmane TAHRI JOUTI
a79c5a00a3 Translated using Weblate (Arabic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ar/
2020-04-04 13:07:17 -04:00
Mark Monteiro
f1d0fb1edb Register INotificationManager correctly; resolve services correctly 2020-04-04 13:03:32 -04:00
Mark Monteiro
78370911c2 Register IDeviceDiscovery, IChapterManager, IAttachmentExtractor correctly 2020-04-04 12:56:36 -04:00
Mark Monteiro
7884c3813d Register IEncodingManager correctly; remove unnecessary properties in ApplicationHost 2020-04-04 12:51:56 -04:00
Mark Monteiro
4ba07b114d Register and initialize IActivityRepository correctly 2020-04-04 12:46:35 -04:00
Mark Monteiro
3dbbe54f6c Register IResourceFileManager correctly 2020-04-04 12:42:21 -04:00
Mark Monteiro
18c1823cea Register IAuthorizationContext correctly 2020-04-04 12:40:33 -04:00
Mark Monteiro
358deecf52 Register ISessionContext correctly 2020-04-04 12:38:59 -04:00
Mark Monteiro
3147111471 Register IAuthService correctly 2020-04-04 12:34:01 -04:00
Mark Monteiro
92b0d40ad4 Move service initializations into correct method 2020-04-04 12:33:25 -04:00
Mark Monteiro
e9e12b8eb9 Register ISubtitleEncoder correctly 2020-04-04 12:26:24 -04:00
Peter Cai
7cc53d3759 Translated using Weblate (Japanese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ja/
2020-04-04 05:31:50 -04:00
Peter Cai
2891a1438a Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2020-04-04 05:31:50 -04:00
K4DH3M
2294d28991 Translated using Weblate (Arabic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ar/
2020-04-04 05:31:50 -04:00
Bond_009
ae21c67537 Remove PluginInstalled
Doesn't do anything yet as all plugins (afaik) still require a restart
2020-04-04 11:28:37 +02:00
Andrew Rabert
1aba4506be Merge pull request #2708 from ox0spy/master
Dockerfile: support for non-ASCII characters
2020-04-04 01:35:17 -04:00
Peter Cai
8f8b5d2422 Translated using Weblate (Japanese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ja/
2020-04-03 21:09:38 -04:00
Mark Monteiro
4efdc63337 Add missing call to ConfigureAwait() 2020-04-03 20:51:30 -04:00
Mark Monteiro
e0f40f57d8 Merge remote-tracking branch 'upstream/master' into remove-common-process 2020-04-03 20:22:03 -04:00
Mark Monteiro
0e195d2e49 Add missing call to ConfigureAwait() 2020-04-03 20:20:55 -04:00
Mark Monteiro
7ced986e0b Remove section on serving over HTTPS
This functionality has not been merged yet
2020-04-03 20:07:11 -04:00
Mark Monteiro
499deb4fe5 Add section describing the repository with a link to contribution docs 2020-04-03 20:05:58 -04:00
Vasily
d5cc10d7e1 Merge pull request #2741 from Bond-009/dlnawarnings2
Fix some warnings
2020-04-04 01:38:09 +03:00
Bond-009
64692af1a2 Update Device.cs 2020-04-04 00:24:36 +02:00
Bond-009
0951dc632b Update MediaBrowser.Controller/Entities/InternalPeopleQuery.cs
Co-Authored-By: Mark Monteiro <marknr.monteiro@protonmail.com>
2020-04-04 00:21:54 +02:00
Bond-009
91b17e7289 Update Device.cs 2020-04-04 00:21:26 +02:00
Bond-009
4cacfd5997 Update DidlBuilder.cs 2020-04-03 23:20:04 +02:00
Bond-009
ad0e2e42e6 Update Device.cs 2020-04-03 23:13:45 +02:00
Bond-009
0b21494999 Update Emby.Server.Implementations/Data/SqliteItemRepository.cs
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2020-04-03 23:13:04 +02:00
Bond-009
d6224ddeda Update InternalPeopleQuery.cs 2020-04-03 22:44:18 +02:00
Bond-009
cbb6797043 Update SqliteItemRepository.cs 2020-04-03 22:41:14 +02:00
장건
cda0574c8d Translated using Weblate (Korean)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2020-04-03 16:22:04 -04:00
Bond_009
8e7b15285e Clean up SqliteItemRepository 2020-04-03 20:59:38 +02:00
Bond_009
3161e85f76 Address comments 2020-04-03 17:30:01 +02:00
Bond-009
f6c9a44703 Update Device.cs 2020-04-03 16:46:14 +02:00
Bond-009
231c1e519f Update Emby.Dlna.csproj 2020-04-03 16:44:40 +02:00
Vasily
a37b69a493 Merge pull request #2559 from whooo/295-fix
Add descriptive TV episode titles for DLNA browsing
2020-04-03 17:39:33 +03:00
Andrew Hunter
6510c4ed02 Translated using Weblate (French (Canada))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr_CA/
2020-04-03 10:05:46 -04:00
4d1m
9ba8b37b0b Translated using Weblate (Romanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ro/
2020-04-03 07:20:33 -04:00
dependabot-preview[bot]
b80c2a532e Bump coverlet.collector from 1.2.0 to 1.2.1
Bumps [coverlet.collector](https://github.com/tonerdo/coverlet) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/tonerdo/coverlet/releases)
- [Commits](https://github.com/tonerdo/coverlet/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-03 10:44:33 +00:00
Vasily
c85cb85eea Merge pull request #2742 from Bond-009/warn18
Enable Microsoft.CodeAnalysis.FxCopAnalyzers for Jellyfin.Common
2020-04-03 00:53:05 +03:00
Mark Monteiro
387fa474aa Document HTTPS configuration options 2020-04-02 17:45:33 -04:00
Mark Monteiro
ca71ac72ab Replace EnableHttps and SupportsHttps with ListenWithHttps and CanConnectWithHttps 2020-04-02 17:45:04 -04:00
Didier Dafond
2fb9e36493 Authentication request log with IP 2020-04-02 22:02:14 +02:00
Mednis
65542c7c98 Translated using Weblate (Latvian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/lv/
2020-04-02 15:59:42 -04:00
Arild Stølen
a01395739a Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2020-04-02 15:59:42 -04:00
Mark Monteiro
de634203d8 Put Boolean operators at beginning of lines instead of the end 2020-04-02 14:31:56 -04:00
artiume
d10ae74b38 Force Audio Transcoding for LiveTV Transcoding
Noticing some sync issues when transcoding livetv, the only thing I was able to do to fix it was to force the audio stream to be transcoded as well. This was how I originally wrote the code and we changed it during the review process. I am reverting it back to the original code.
2020-04-02 14:14:57 -04:00
Bond_009
2be394089e Enable Microsoft.CodeAnalysis.FxCopAnalyzers for Jellyfin.Common 2020-04-02 20:12:18 +02:00
Mark Monteiro
eadad73117 Merge branch 'master' into use-development-exception-page 2020-04-02 13:51:53 -04:00
dkanada
5a816f0b22 Merge pull request #2731 from Bond-009/minor2
Minor improvements
2020-04-03 01:41:05 +09:00
DJSweder
b07b499466 Translated using Weblate (Czech)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/cs/
2020-04-02 12:07:38 -04:00
Bond-009
b3283e37f2 Merge pull request #2740 from JustAMan/fix-livetv
Fix GetLocalApiUrl for cases with https enabled
2020-04-02 18:04:49 +02:00
Bond_009
8a566dfe73 Fix build 2020-04-02 17:07:37 +02:00
Bond_009
be8ba96183 Fix some warnings 2020-04-02 16:52:11 +02:00
Bond-009
108172c00f Merge pull request #2637 from mark-monteiro/do-not-instantiate-services-at-startup
Do not instantiate IService instances unecessarily at startup
2020-04-02 15:50:47 +02:00
Mark Monteiro
2a521b0f68 Rename 'log' to 'logger' 2020-04-02 09:32:43 -04:00
Vasily
89448ac055 Merge pull request #2634 from mark-monteiro/enable-http2
Enable HTTP/2 support
2020-04-02 13:54:05 +03:00
Vasily
bece62fd5c Fix GetLocalApiUrl for cases with https enabled
This should fix LiveTV and tuners
2020-04-02 13:40:48 +03:00
Mark Monteiro
0e57348cf4 Merge remote-tracking branch 'upstream/master' into development-https 2020-04-01 23:21:30 +02:00
Mark Monteiro
123bfbcf19 Merge remote-tracking branch 'upstream/master' into use-development-exception-page 2020-04-01 23:09:55 +02:00
Mark Monteiro
5b1091db27 Merge remote-tracking branch 'upstream/master' into do-not-instantiate-services-at-startup 2020-04-01 23:05:36 +02:00
Vasily
cc40f84f3c Merge pull request #2660 from Bond-009/usings
Minor style fixes
2020-04-01 23:56:00 +03:00
Bond-009
f31efce52d Merge branch 'master' into usings 2020-04-01 22:42:43 +02:00
Vasily
07ea120ba9 Merge pull request #2601 from mark-monteiro/support-running-without-web-content
Support Running Server Without Web Content
2020-04-01 23:38:43 +03:00
Vasily
10275a1f32 Merge pull request #2447 from Bond-009/minor
Add analyzers to MediaBrowser.Providers and minor improvements
2020-04-01 23:35:40 +03:00
dkanada
d8b4df6823 Merge pull request #2735 from mark-monteiro/dependabot/nuget/Microsoft.NET.Test.Sdk-16.5.0
Bump Microsoft.NET.Test.Sdk from 16.4.0 to 16.5.0
2020-04-02 05:11:43 +09:00
Vitorvlv
5804873d38 Translated using Weblate (Portuguese (Brazil))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_BR/
2020-04-01 15:44:35 -04:00
Mark Monteiro
4699ec6417 Use null-coalescing assignment
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-04-01 21:20:36 +02:00
MG
cd5289efcf Translated using Weblate (Italian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/it/
2020-04-01 13:49:20 -04:00
Louis Hermier
ab7771941a Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-04-01 13:49:20 -04:00
Medzhnun
3c666aed4c Translated using Weblate (Bulgarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bg/
2020-04-01 13:49:20 -04:00
Mark Monteiro
1a4d9d4c53 Code review suggestions 2020-04-01 19:41:52 +02:00
Anthony Lavado
c9919f4633 Merge pull request #2730 from Bond-009/plugincrash
Try to not crash on unsupported plugin load
2020-04-01 13:17:56 -04:00
Bond_009
3ab50f5a3f Address comments 2020-04-01 19:05:41 +02:00
Mark Monteiro
377f9896ce Small fixes 2020-04-01 19:04:00 +02:00
Mark Monteiro
4ff8d30e41 Document ExtraRule properly 2020-04-01 18:54:06 +02:00
Mark Monteiro
34204046dd Remove duplicate array of extras directory names 2020-04-01 18:53:53 +02:00
Bond_009
787049f35f Merge branch 'master' into minor 2020-04-01 18:53:22 +02:00
Mark Monteiro
2e1ec2858a Match using directory names in ExtraResolver 2020-04-01 18:53:19 +02:00
Bond-009
ddd5d3aaec Merge branch 'master' into usings 2020-04-01 18:51:44 +02:00
Bond-009
62a18af17a Update Emby.Dlna/Main/DlnaEntryPoint.cs
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2020-04-01 18:50:19 +02:00
Nyanmisaka
d9b78a1dc5 update as per suggestion
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-04-02 00:48:43 +08:00
Mark Monteiro
cc8294842a Add ExtraType.Unknown enum value and use it instead of null 2020-04-01 18:10:29 +02:00
Bond_009
4419587c2a Minor improvements 2020-04-01 15:30:53 +02:00
Bond_009
147e434634 Try to not crash on unsupported plugin load 2020-04-01 14:50:18 +02:00
Mark Monteiro
861bad1eda Apply suggestions from code review 2020-04-01 13:26:47 +02:00
dkanada
58900bb57e Merge pull request #2723 from jairbubbles/updateSkiaForArm
Update Jellyfin.SkiaSharp.NativeAssets.LinuxArm to version 1.68.1
2020-04-01 16:14:22 +09:00
hauntingEcho
d565d6e8f1 Specify a version for jellyfin-ffmpeg dependency in .deb
Lower versions cause #2126 in Jellyfin >= 10.4.3
2020-03-31 21:41:10 -05:00
Nyanmisaka
ebb7590350 update as per suggestion
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2020-04-01 07:48:29 +08:00
nextlooper42
aa96f4322e Translated using Weblate (Slovak)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sk/
2020-03-31 19:33:14 -04:00
KGT1
6e847b3f57 Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2020-03-31 19:33:14 -04:00
Vasily
9aefb41512 Merge pull request #2503 from nyanmisaka/vaapi
Fix various bugs in HWA subtitle burn-in
2020-03-31 23:19:44 +03:00
Nyanmisaka
cf98a1fbc7 update as per suggestion
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2020-04-01 00:22:10 +08:00
Exploding Dragon
314129c803 Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2020-03-31 07:31:05 -04:00
amirmasoud
6408174ccc Translated using Weblate (Persian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fa/
2020-03-31 07:31:05 -04:00
pucherot
6bfb7524f9 Translated using Weblate (Spanish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es/
2020-03-31 07:31:05 -04:00
Unknown
55ddda09c4 Update Jellyfin.SkiaSharp.NativeAssets.LinuxArm to version 1.68.1 2020-03-31 08:25:35 +02:00
dkanada
9e82e7c847 Merge pull request #2712 from joshuaboniface/fix-ldap-issues
Revert #2146 ordering change
2020-03-31 15:15:25 +09:00
Nyanmisaka
0aefc39469 Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2020-03-31 01:47:59 -04:00
abdulaziz
0a23abb84f Translated using Weblate (Arabic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ar/
2020-03-30 19:33:01 -04:00
Anthony Lavado
8c8a396cd6 Merge pull request #2720 from dkanada/music
Fix custom musicbrainz servers
2020-03-30 17:19:42 -04:00
PrplHaz4
025888204d Fix permission setting on Channels
Currently, permission settings on Channels are not taken into account prior to returning `{UserName} is not permitted to access Library {ItemName}.`.  Whether or not a user can see items within the Channel is solely dependent on `EnableAllFolders`, so you cannot view a plugin's Channels unless you can also see ALL libraries.

This PR enables does two things for Channel-providing Plugins:
1. Fixes functionality of "EnableAllChannels"
2. Allows users with Channel permissions to access all folders within that Channel

I'm not 100% sure on 2 but I wasn't able to see an obvious way to propagate permissions downward into specific Folders inside a Channel.

I tested on a fairly simple library with two channel-providing plugins (ServerWMC, LazyMan) and it seems to work, but this behavior should also be tested by someone with more content/collections.
2020-03-30 17:14:59 -04:00
dkanada
907f2bb2f4 fix custom musicbrainz servers 2020-03-31 05:16:32 +09:00
nyanmisaka
95c5c08610 minor improvements 2020-03-31 04:04:55 +08:00
Joshua M. Boniface
49da8766d8 Update bump_version script
1. Remove some cruft
2. Update the metapackage as well
3. Changelogs are automated, don't bother EDITOR-ing them
2020-03-30 15:24:38 -04:00
nyanmisaka
db23660660 prefer to use libfdk_aac for better audio quality 2020-03-30 15:53:49 +08:00
nyanmisaka
0af353404c fix the UTF-16 error while burning ass/ssa subtitles 2020-03-30 14:47:55 +08:00
Nyanmisaka
0e9d9a7897 fix the incorrect HLS time while using hw encoders 2020-03-30 14:48:57 +08:00
Nyanmisaka
0c6ac38454 fix graphical subtitle scaling for NVDEC 2020-03-30 14:48:44 +08:00
Nyanmisaka
111095c2b0 fix QSV HWA failed when burning text subtitles
ffmpeg 4.3+ is required for better transcoding speed(more than twice increase).
Using qsv on Linux also requires a fix in ffmpeg 4.3+.
See 74007dd86a
2020-03-30 14:47:55 +08:00
nyanmisaka
fac6831653 fix various bugs in VAAPI hardware acceleration 2020-03-30 14:47:55 +08:00
Joshua M. Boniface
8094687b9c Add Debian/Ubuntu metapackage equivs file 2020-03-30 02:40:06 -04:00
Vasily
5bda05304a Merge pull request #2678 from ferferga/master
Translate Scheduled Tasks
2020-03-30 02:51:41 +03:00
ferferga
a9759f6a80 Rename translation keys 2020-03-29 23:46:19 +02:00
Bond-009
5acd0521a2 Merge pull request #2639 from alset333/master
Change DeinterlaceMethod's "bobandweave" to "yadif" or "yadif_bob", and set default value
2020-03-29 23:03:01 +02:00
Joshua M. Boniface
c356266419 Revert #2146 ordering change 2020-03-29 16:57:13 -04:00
ox0spy
e0fdf6fa07 Dockerfile: support for non-ASCII characters 2020-03-29 14:05:22 +00:00
Mark Monteiro
e266ad51c5 Simplify logic; remove unnecessary methods 2020-03-28 14:17:33 +01:00
Mark Monteiro
ea306e8f6d Do not assign an invalid value of zero to ExtraType 2020-03-28 13:54:14 +01:00
Mark Monteiro
5fcbedc194 Display extras with an unknown type 2020-03-28 13:40:56 +01:00
dkanada
bd4269cb59 Merge pull request #2667 from crobibero/emby-naming-warnings
Fix warnings in Emby.Naming
2020-03-28 04:51:35 +09:00
ferferga
620135d8da Removed spanish string from english file 2020-03-27 17:06:06 +01:00
ferferga
aa98160d70 Add whitespaces 2020-03-27 16:49:01 +01:00
ferferga
797b2fbf1d Restore comments 2020-03-27 11:25:32 +01:00
Erik Larsson
b63ed35238 Add descriptive TV episode titles for DLNA browsing
When browsing TV episodes in Next Up, etc via DLNA a more descriptive
title should be used to easier identify the right episode.
2020-03-27 06:34:22 +01:00
Mark Monteiro
1f5caa46c5 Fix some more issues with disposing Process instances 2020-03-27 01:53:08 +01:00
Mark Monteiro
d705931e81 Dispose of process correctly in AttachmentExtractor 2020-03-27 01:42:28 +01:00
Mark Monteiro
1c13be085f Make HasExitedSafe() private 2020-03-27 01:28:24 +01:00
Mark Monteiro
48bbcbb426 Use WaitForExitAsync extension method in AttachmentExtractor 2020-03-27 01:09:25 +01:00
Mark Monteiro
97c36d11d4 Use a TimeSpan instead of ms and support providing a custom CancellationToken 2020-03-27 01:09:09 +01:00
Mark Monteiro
7447ea8960 Make sure Process objects are all disposed correctly 2020-03-27 00:49:22 +01:00
Mark Monteiro
b947d98266 Delete unnecessary ProcessFactory abstraction 2020-03-27 00:45:48 +01:00
Mark Monteiro
ee2f911a2b Remove unnecessary CommonProcess abstraction 2020-03-27 00:10:16 +01:00
ferferga
a2a53ec879 Same with SubtitleScheduledTasks 2020-03-26 22:49:54 +01:00
ferferga
07f4893ba6 Translated RefreshChannelScheduledTask as well 2020-03-26 22:36:11 +01:00
ferferga
28f07df657 Fix NullReferenceException at startup 2020-03-26 22:26:25 +01:00
Luke Foust
0fb78cf54b Add documentation around Name, Id, and Type. Changed ExternalIdType to ExternalIdMediaType 2020-03-26 14:26:12 -07:00
ferferga
105fc3dc29 Apply suggestions 2020-03-26 21:40:41 +01:00
Luke Foust
ae4e727b24 Merge branch 'master' of https://github.com/lfoust/jellyfin into externalid-type 2020-03-26 13:36:18 -07:00
ferferga
d0b3dc1485 Remove an unused string 2020-03-26 20:32:28 +01:00
ferferga
30c1170a55 Remove comments 2020-03-26 20:29:00 +01:00
ferferga
0778eb20aa Translate Scheduled Tasks (names and descriptions) 2020-03-26 20:28:30 +01:00
dependabot-preview[bot]
b10f268c43 Bump Microsoft.NET.Test.Sdk from 16.4.0 to 16.5.0
Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.4.0 to 16.5.0.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Commits](https://github.com/microsoft/vstest/compare/v16.4.0...v16.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-26 17:15:35 +00:00
dependabot-preview[bot]
798a765105 Bump System.Text.Json from 4.7.0 to 4.7.1
Bumps [System.Text.Json](https://github.com/dotnet/corefx) from 4.7.0 to 4.7.1.
- [Release notes](https://github.com/dotnet/corefx/releases)
- [Commits](https://github.com/dotnet/corefx/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-26 17:15:32 +00:00
Cody Robibero
ea49514723 Update Emby.Naming/Subtitles/SubtitleParser.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-03-26 09:31:23 -06:00
Bond-009
10050a55a5 Merge pull request #2674 from JustAMan/fix-attachments-scan
Make variables binding correspond with column names
2020-03-26 15:57:06 +01:00
Vasily
0d2a355c00 Make variables binding correspond with column names 2020-03-26 17:40:28 +03:00
dkanada
622106467e Merge pull request #2668 from mark-monteiro/fix-application-host-dispose
Fix ApplicationHost Dispose() method
2020-03-26 14:26:53 +09:00
crobibero
bd5c66b2a6 implement suggestions 2020-03-25 18:29:47 -06:00
dkanada
6c2cca57f4 Merge pull request #2669 from mark-monteiro/update-net-core
Update .NET Core to 3.1.3
2020-03-26 07:57:16 +09:00
crobibero
18906d0205 implement suggestions 2020-03-25 14:33:44 -06:00
crobibero
261a2e1989 revert xml docs indentation 2020-03-25 14:31:03 -06:00
Mark Monteiro
aa9737afb3 Update .NET Core to 3.1.3 2020-03-25 20:09:48 +01:00
Mark Monteiro
d1fe28fac6 Check for null before disposing 2020-03-25 19:16:12 +01:00
Mark Monteiro
ca85bef7c5 Move check for web client directory to application startup in Program.cs 2020-03-25 18:52:14 +01:00
crobibero
cb68fbeb0a Fix warnings in Emby.Naming 2020-03-25 10:53:03 -06:00
Mathis
37ff36226b Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2020-03-25 02:52:56 -04:00
Bond-009
306bc4008d Merge pull request #2657 from villagra/master
Add netstandard2.0 as TargetFramework
2020-03-24 22:36:51 +01:00
Bond-009
632323969f Merge pull request #2655 from lfoust/tvdbruntimefix
Fix FormatException when mapping TVDB series
2020-03-24 22:04:24 +01:00
Bond-009
1345e699fa Merge pull request #2653 from iwalton3/fix-embedded-subtitles
Fix embedded mkv subtitles.
2020-03-24 22:04:16 +01:00
Bond-009
eb09d47ed2 Update Jellyfin.Server/Program.cs
Co-Authored-By: Mark Monteiro <marknr.monteiro@protonmail.com>
2020-03-24 17:43:11 +01:00
Mark Monteiro
4bccaafb57 Use 'Length' instead of 'Any()' for an array 2020-03-24 16:27:54 +01:00
Joshua M. Boniface
cd616746b9 Use more specific mv source glob 2020-03-24 11:17:01 -04:00
Bond_009
7915c6ca73 Remove extra ; 2020-03-24 16:16:13 +01:00
Bond_009
e9d1eabd53 Remove unused usings 2020-03-24 16:12:06 +01:00
Jose
5a30d9ecfb Added support for netstandard2.0 besides netstandard2.1 (multi target framework) to allow usage from UWP (netstandard 2.1 not available in UWP until .net 5) 2020-03-24 09:58:04 +01:00
Joshua M. Boniface
b9fdd96ece Remove old stuff 2020-03-24 01:10:29 -04:00
Joshua M. Boniface
05aa28a377 Clean up redundant Makefile steps 2020-03-24 00:01:48 -04:00
Joshua M. Boniface
891aa7c255 Update info in Fedora spec 2020-03-23 23:00:35 -04:00
Joshua M. Boniface
fc5e932492 Fix makefile formatting 2020-03-23 22:55:37 -04:00
Joshua M. Boniface
be9eb0f19e Unify dep installation and update 2020-03-23 22:51:12 -04:00
Joshua M. Boniface
e87a10235b Go back to cp-based control archive but right 2020-03-23 21:52:35 -04:00
Joshua M. Boniface
c478a43fd5 Update package description for Debian 2020-03-23 21:44:33 -04:00
Joshua M. Boniface
a561d4ca41 Remove arch from macos 2020-03-23 18:44:32 -04:00
Joshua M. Boniface
b95bd0e678 Bump shared_version to 10.6.0 too 2020-03-23 18:42:09 -04:00
Joshua M. Boniface
de66ab4d83 Use git checkout instead of file copies to clean 2020-03-23 18:41:23 -04:00
Joshua M. Boniface
9169861baa Add CODEOWNERS for GitHub 2020-03-23 18:18:38 -04:00
Joshua M. Boniface
0242ce5fee Add Windows build 2020-03-23 18:18:32 -04:00
Joshua M. Boniface
ab8de37080 Add .tar.gz-based builds 2020-03-23 18:01:42 -04:00
Joshua M. Boniface
8e0a33c1aa Handle single- or triple-part platform names 2020-03-23 18:01:28 -04:00
Joshua M. Boniface
cf6dc609b7 Fix up single-segment platform names 2020-03-23 17:54:17 -04:00
Joshua M. Boniface
6028bc0f79 Port Fedora and CentOS builds and remove web build
Simplifies a number of aspects of the RPM build, including moving
.copr/Makefile into the "fedora/" folder (and leaving a symlink),
removing the jellyfin-web build components, and renaming it
jellyfin-server like Debian did.
2020-03-23 17:32:07 -04:00
Joshua M. Boniface
eb632e4a0d Back up and restore control file 2020-03-23 16:01:25 -04:00
Joshua M. Boniface
8b1a76a32e Mount the source volume rather than copy it
Now that the build script cleans up both before and after building, this
is a viable option and will significant reduce build times by promoting
container reuse (with `-k`).
2020-03-23 15:46:08 -04:00
Joshua M. Boniface
3e7a106a95 Add Ubuntu configurations 2020-03-23 15:40:59 -04:00
Joshua M. Boniface
9ce2af2a6c Don't limit to files (allow symlinks) 2020-03-23 15:40:51 -04:00
Joshua M. Boniface
f72c5b7a1d Fix version output 2020-03-23 15:40:19 -04:00
Joshua M. Boniface
c4a29e537c Remove NPM install from Dockerfiles 2020-03-23 15:28:57 -04:00
Joshua M. Boniface
0365adb823 Fix deps for armhf 2020-03-23 15:24:13 -04:00
Joshua M. Boniface
9c378866e4 Add arm64 and armhf builds 2020-03-23 15:02:54 -04:00
Joshua M. Boniface
163cf223aa Only support cross-building with Docker 2020-03-23 15:00:41 -04:00
Joshua M. Boniface
c61e95d117 Only support Docker builds on amd64 2020-03-23 14:49:55 -04:00
Joshua M. Boniface
93d1256a4c Remove web building, rename, bump version 2020-03-23 14:46:16 -04:00
Luke Foust
128b18750f Prevent FormatException when mapping TV series 2020-03-23 10:56:54 -07:00
Ian Walton
4836d1674b Don't return closed stream for subtitles. (jellyfin/jellyfin#2650) 2020-03-23 12:39:12 -04:00
Luke Foust
a7e7098da6 Merge pull request #3 from jellyfin/master
merge with upstream master
2020-03-23 08:00:32 -07:00
Dennis M. Pöpperl
da4855ce4f Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2020-03-23 10:18:02 -04:00
dkanada
84311fdb76 Merge pull request #2645 from sparky8251/rss-feed-add
Add RSS feed badges to README
2020-03-23 19:06:44 +09:00
dkanada
86f614b26b Merge pull request #2638 from mark-monteiro/update-asp
Update .NET Core to 3.1.2
2020-03-23 18:48:22 +09:00
sparky8251
83f4494b9e Clean up minor formatting issue 2020-03-22 19:17:57 -04:00
sparky8251
975fef9ebc Add RSS feed badges to README 2020-03-22 19:08:00 -04:00
Joshua M. Boniface
ba55ee4986 Add first proof-of-concept deployment setup 2020-03-22 16:03:14 -04:00
Joshua M. Boniface
3571afece1 Ignore web artifacts 2020-03-22 16:03:08 -04:00
Joshua M. Boniface
f9cecfc0fb Add new build.sh script and symlink 2020-03-22 16:02:02 -04:00
Joshua M. Boniface
8b620ed26a Move Debian folder to root of repo 2020-03-22 16:01:33 -04:00
Joshua M. Boniface
28f7df6520 Move all old deployment stuff to a new folder 2020-03-22 16:00:52 -04:00
Joshua M. Boniface
2afbbba3f8 Remove old build script 2020-03-22 16:00:20 -04:00
Luke Foust
9bdb99fe92 Add type to externalids to distinguish them in the UI 2020-03-22 12:58:53 -07:00
Frode F
a4ff27fbdc Translated using Weblate (Norwegian Nynorsk)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nn/
2020-03-22 15:55:26 -04:00
Luke Foust
f3213d3bef Merge pull request #2 from jellyfin/master
merge with upstream master
2020-03-22 12:28:59 -07:00
Joshua M. Boniface
425bd2b01b Merge pull request #2642 from mark-monteiro/fix-extras
Add missing null check when retrieving extras
2020-03-22 15:10:23 -04:00
dkanada
0d9787dfb4 Merge pull request #2478 from JustAMan/fix-search-order
Fix ordering of search results
2020-03-23 02:30:41 +09:00
dkanada
7270997e76 add code suggestions
Co-Authored-By: Mark Monteiro <marknr.monteiro@protonmail.com>
2020-03-23 00:59:22 +09:00
Mark Monteiro
6897a19051 Add missing null check when retrieving extras 2020-03-22 15:09:51 +01:00
Mark Monteiro
6183b83b18 Update benches project to correct target framework 2020-03-22 02:14:38 +01:00
Mark Monteiro
debab44870 Update all packages to .NET Core 3.1.2 2020-03-22 02:03:07 +01:00
Mark Monteiro
b8580e58aa Check for implementation of IService correctly 2020-03-21 23:28:27 +01:00
Mark Monteiro
6f8c81ff7e Register ServiceController with the DI framework 2020-03-21 23:28:07 +01:00
Mark Monteiro
dc2b8c4646 Log a warning if an attempt is made to register an invalid service type 2020-03-21 23:19:24 +01:00
Mark Monteiro
72c822513f Create ServiceController via DI instead of manual construction 2020-03-21 23:18:41 +01:00
Mark Monteiro
dc140429fe Do not create unnecessary instances of IService at server startup 2020-03-21 23:17:30 +01:00
Mark Monteiro
3fd245ba87 Add instructions for serving content over HTTPS 2020-03-21 23:03:00 +01:00
Mark Monteiro
c36e4ecc6c Log all 'DOTNET_' and 'ASPNETCORE_' environment variables at application startup 2020-03-21 22:45:57 +01:00
Mark Monteiro
0e3d319a3a Log 'ASPNETCORE_ENVIRONMENT' value at application startup 2020-03-21 22:30:38 +01:00
Mark Monteiro
54cbf9c4dc Bind HTTPS ports when running with development environment flag 2020-03-21 21:31:22 +01:00
Mark Monteiro
edc974e4c0 Set 'ASPNETCORE_ENVIRONMENT=Development' when running from visual studio 2020-03-21 21:28:34 +01:00
Mark Monteiro
41de0bd245 Run in development mode by default from Visual Studio 2020-03-21 21:06:30 +01:00
Mark Monteiro
842ec04828 Do not handle exceptions manually when in development mode 2020-03-21 21:06:01 +01:00
Mark Monteiro
92628c4033 Clean up HTTP listener exception handling 2020-03-21 21:04:16 +01:00
Mark Monteiro
1fb939b9b2 Enable HTTP/2 support 2020-03-21 20:21:07 +01:00
Mark Monteiro
aa546dd36a Rename command line option to --nowebclient and config setting to HostWebClient 2020-03-21 18:25:09 +01:00
dkanada
2184553d15 Merge pull request #2566 from mark-monteiro/feature-request-issue-template
Feature Request Issue Template
2020-03-21 16:58:44 +09:00
dkanada
84c23d6232 Merge pull request #2631 from mark-monteiro/fix-client-build-scripts
Fix Client Build Scripts
2020-03-21 16:39:15 +09:00
dkanada
ba4c5e7f04 Merge pull request #2606 from Artiume/patch-4
Update docker dependencies for Gulp
2020-03-21 16:32:21 +09:00
Mark Monteiro
589958d13f Add missing trailing slashes 2020-03-20 22:41:58 +01:00
Luke Foust
dcd0d93f44 Merge pull request #1 from jellyfin/master
merge with upstream master
2020-03-20 12:53:52 -07:00
Medzhnun
e028fb6fde Translated using Weblate (Bulgarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bg/
2020-03-20 08:18:36 -04:00
Mark Monteiro
1a63c3f364 Inject IConfiguration instead of resolving manually 2020-03-20 13:13:20 +01:00
Mark Monteiro
cd34115e99 Remove duplicate text
Co-Authored-By: artiume <siderite@gmail.com>
2020-03-20 12:35:01 +01:00
Mark Monteiro
48f33f9a96 Reword prerequisite section so that IDEs are listed as optional 2020-03-20 12:21:20 +01:00
Mark Monteiro
887e9c2020 Remove unnecessary execution of yarn build:production 2020-03-20 11:46:51 +01:00
Mark Monteiro
6894602dab Use 'yarn build:production' instead of 'yarn:build' everywhere 2020-03-20 11:36:21 +01:00
Mark Monteiro
1da9910673 Use a new 'feature-request' label instead of the existing 'feature' label 2020-03-20 11:18:54 +01:00
Mark Monteiro
4c24beccb4 Apply suggested changes from code review 2020-03-20 11:13:40 +01:00
Peter Maar
adbf375efe Merge pull request #1 from jellyfin/master
Pull latest to my fork
2020-03-19 22:02:08 -04:00
Andreas B
0a2d24aff3 Add RESOLUTION field to HLS master playlist 2020-03-19 23:39:33 +01:00
Andreas B
8a990d1d95 Add FRAME-RATE field to HLS master playlist 2020-03-19 23:39:33 +01:00
Andreas B
f2858878d1 Add CODECS field to HLS master playlist 2020-03-19 23:39:23 +01:00
dkanada
af5d3e8eae Merge pull request #2617 from Shawmon/wasm-mimetype
add wasm mimetype
2020-03-18 23:52:57 +09:00
dkanada
9649b986d8 Merge pull request #2621 from mark-monteiro/log-env-vars-at-startup
Log 'JELLYFIN_' environment variables at application start
2020-03-18 23:52:43 +09:00
dkanada
a96c0a72b8 Merge pull request #2549 from dkanada/refactor
Refactor some provider classes
2020-03-18 17:43:15 +09:00
Andreas Zeller
3e3470e503 Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2020-03-17 14:43:41 -04:00
abdulaziz
a19e4e2e30 Translated using Weblate (Arabic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ar/
2020-03-17 14:43:41 -04:00
Mark Monteiro
885bc11b67 Log 'JELLYFIN_' environment variables at application start 2020-03-17 14:30:08 +01:00
Mark Monteiro
751dff09dc Add development instructions to README with details on running from source 2020-03-17 14:21:24 +01:00
Mark Monteiro
681dd8d32f Add recommended extensions to VS Code configuration 2020-03-17 14:21:00 +01:00
Mark Monteiro
7dd2f3a8f2 Do not add command line flag to the config hierarchy unless it is explicitly set 2020-03-17 14:19:43 +01:00
Shawmon
8630d18372 add wasm mimetype 2020-03-17 11:49:32 +08:00
Joshua M. Boniface
ef4dfd4461 Merge pull request #2607 from joshuaboniface/fix-fedora
Correct BuildRequires and NodeJS for Fedora/CentOS
2020-03-15 23:03:06 -04:00
Mark Monteiro
48ea7dc604 Merge remote-tracking branch 'upstream/master' into support-running-without-web-content 2020-03-16 00:14:33 +01:00
artiume
d7faea0731 Update Dockerfile.arm64 2020-03-15 19:09:35 -04:00
artiume
7d14bdd6ff Update Dockerfile.arm 2020-03-15 19:09:15 -04:00
Anthony Lavado
bb8a1a38fb Merge pull request #2603 from mark-monteiro/fix-azure-pipeline
Fix Azure Pipelines Build
2020-03-15 18:46:15 -04:00
Joshua M. Boniface
f4c8b25698 Use NodeJS 10 on CentOS 2020-03-15 18:17:04 -04:00
Joshua M. Boniface
5c4e468035 Correct BuildRequires and NodeJS for Fedora/CentOS 2020-03-15 18:14:00 -04:00
artiume
dc2510d5e2 Update docker dependencies for Gulp 2020-03-15 17:56:53 -04:00
Mark Monteiro
ef7497e837 Merge remote-tracking branch 'upstream/master' into support-running-without-web-content 2020-03-15 19:50:00 +01:00
Mark Monteiro
f4b2cdfce9 Fix another pipleine 2020-03-15 19:32:14 +01:00
Mark Monteiro
876c4681d0 Build web client correctly 2020-03-15 19:24:27 +01:00
dkanada
7aec11d621 Merge pull request #2497 from mark-monteiro/1914-prevent-duplicates-in-playlists
Check for duplicates when adding items to a playlist
2020-03-16 02:49:57 +09:00
Mark Monteiro
e2685c51ec Merge remote-tracking branch 'upstream/master' into support-running-without-web-content 2020-03-15 18:07:02 +01:00
Mark Monteiro
923313bb1c Add debugging profile for running the server without web content 2020-03-15 17:49:13 +01:00
Mark Monteiro
5d48259046 Use the same key constant for command line config and all other config 2020-03-15 17:43:52 +01:00
Mark Monteiro
05ab61200a Do not call UseContentRoot() on the web host builder
This call has nothing to do with static web content and should not have ever been called with the web content path: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/?view=aspnetcore-3.1&tabs=windows#content-root
Since this call is removed, the ContentRoot property is also removed from ApplicationHost as it is no longer needed.
Finally, move validation of the static content path to the DashboardService where it is actually used.
2020-03-15 17:42:57 +01:00
Mark Monteiro
602112fba4 Return 404 for static web resources when the 'nowebcontent' flag is set 2020-03-15 16:24:04 +01:00
Mark Monteiro
2a01537371 Merge command line options into framework configuration 2020-03-15 15:34:09 +01:00
Mark Monteiro
0996ce2898 Add --nowebcontent command line flag
Added without any functionality
2020-03-15 15:31:43 +01:00
Mark Monteiro
7e3caec583 Make PackageCreator.ModifyHtml() static and clean up XML documentation
This eliminates the need to create a dummy instance to call this method
2020-03-15 15:29:39 +01:00
Mark Monteiro
6fbdf0d6a2 Construct ApplicationHost with DI framework instead of manually 2020-03-15 15:28:29 +01:00
Andreas B
85da15685f Refactor DynamicHlsService.AppendPlaylist to use StringBuilder 2020-03-15 15:06:38 +01:00
Mark Monteiro
6a6293afc7 Make startup config nullable when configuring app configuration 2020-03-15 13:15:47 +01:00
Mark Monteiro
a67e32f8ec Clean up and document BrowserLauncher correctly 2020-03-15 13:14:57 +01:00
Mark Monteiro
420e3619fb Use startup configuration to set the default redirect path 2020-03-15 13:01:05 +01:00
Mark Monteiro
a9c1ff9119 Remove unnecessary method in BrowserLauncher 2020-03-15 13:00:34 +01:00
Mark Monteiro
4102e3afd0 Rename IsNoWebContent to NoWebContent 2020-03-15 13:00:14 +01:00
Mark Monteiro
547f248a62 Update XML documentation for WebPath 2020-03-15 12:59:34 +01:00
SaddFox
6ab2b74c18 Translated using Weblate (Slovenian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sl/
2020-03-14 19:46:57 -04:00
dkanada
6960f0af67 Merge pull request #2582 from Bond-009/subs
Fix subtitles
2020-03-15 00:00:55 +09:00
Andy CHABALIER
d380684805 Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-03-14 09:19:46 -04:00
Shadowghost
f92543479f Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2020-03-13 20:42:37 -04:00
Mark Monteiro
9a7875b6f9 Do not check for duplicates if they are allowed in playlist configuration 2020-03-13 23:14:25 +01:00
Mark Monteiro
79413d9f33 Add a configuration flag to allow/disallow duplicates in playlists 2020-03-13 23:11:59 +01:00
Mark Monteiro
c594b1a4c3 Fix bad merge in contributors list 2020-03-13 22:46:11 +01:00
Bond-009
2c8592fe78 Fix subtitles 2020-03-12 17:18:49 +01:00
Vasily
ad440cd2f6 Merge pull request #2449 from Bond-009/warn17
Fix some warnings
2020-03-12 15:56:01 +03:00
Deniz
8d0d05107f Translated using Weblate (Turkish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/tr/
2020-03-12 07:21:28 -04:00
Z Yang
217b8a96ac Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2020-03-11 19:53:50 -04:00
Mark Monteiro
d276e0f8f4 Use Distinct() to filter out duplicates when adding items to playlist 2020-03-11 23:26:55 +01:00
Mark Monteiro
487aa376b4 Merge remote-tracking branch 'upstream/master' into 1914-prevent-duplicates-in-playlists 2020-03-11 23:21:30 +01:00
Mark Monteiro
99bf6edba2 Merge remote-tracking branch 'upstream/master' into support-running-without-web-content 2020-03-11 23:04:47 +01:00
Mark Monteiro
d437950ac3 Parse config value correctly 2020-03-11 22:55:10 +01:00
Mark Monteiro
29bad073eb Use config setting to decide if web content should be hosted
Also fail server startup if web content is expected but missing
2020-03-11 22:54:54 +01:00
Bond-009
94fe9b8f6d Merge branch 'master' into warn17 2020-03-11 20:26:43 +01:00
Bond_009
29cee00d2d Address comments 2020-03-11 16:36:55 +01:00
Bond_009
bbd4860b55 Another warning 2020-03-11 16:30:22 +01:00
Bond-009
008a76cf4d Merge pull request #2502 from JustAMan/baseitem-equals
Adds BaseItem.Equals method that compares items by their Id
2020-03-11 16:00:36 +01:00
Bond-009
0b51de3af5 Merge pull request #2480 from mark-monteiro/support-injecting-iconfiguration
Support Injecting IConfiguration
2020-03-11 15:43:39 +01:00
Mark Monteiro
6131599e88 Merge branch 'master' into support-injecting-iconfiguration 2020-03-10 22:45:17 +01:00
Mark Monteiro
6d27efe30a Small text update 2020-03-10 19:18:12 +01:00
Mark Monteiro
af8ad2d275 Add a template for feature request issues instructing user to not create them
Also provide direction for users who are willing to contribute code for new features themselves
2020-03-10 19:11:38 +01:00
zixaar
97bca5a900 Translated using Weblate (Arabic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ar/
2020-03-10 13:16:21 -04:00
zixaar
8999a5f6a2 Translated using Weblate (Arabic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ar/
2020-03-10 12:34:01 -04:00
Bond-009
a7e1a5c96a Merge pull request #2506 from mark-monteiro/inject-loggers-with-context
Inject loggers with context using ILogger<T>
2020-03-10 15:04:35 +01:00
Mednis
12f2baa3d8 Translated using Weblate (Latvian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/lv/
2020-03-09 19:15:04 -04:00
Mednis
f6cfdcf7d7 Translated using Weblate (Latvian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/lv/
2020-03-09 17:12:17 -04:00
Falke Carlsen
cc66a40ae3 Translated using Weblate (Danish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/da/
2020-03-09 14:58:04 -04:00
Nutjob
6ec1be219d Translated using Weblate (Italian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/it/
2020-03-09 11:27:17 -04:00
dkanada
4f195f289c remove useless interface 2020-03-10 00:10:02 +09:00
dkanada
d7c34b4611 start tvdb migration for plugin interface 2020-03-09 23:53:07 +09:00
dkanada
d16f68bb14 move omdb providers 2020-03-09 23:36:02 +09:00
dkanada
52fde64f10 remove unused files and fix some future warnings 2020-03-09 23:30:57 +09:00
dkanada
bf34105af3 Merge pull request #2541 from joshuaboniface/fix-docker-arm
Fix curl for Jellyfin GPG key
2020-03-09 22:41:23 +09:00
João Fonseca
ad93f3b146 Translated using Weblate (Portuguese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt/
2020-03-09 07:34:03 -04:00
Joshua M. Boniface
c257d6071c Fix curl for Jellyfin GPG key
This curl command seems to fail inexplicably with an "unable to get
local issuer" error. Use `-k` instead so it doesn't complain.
2020-03-08 20:53:11 -04:00
Mednis
3e3c47407b Translated using Weblate (Latvian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/lv/
2020-03-08 20:08:15 -04:00
Mednis
3741348fb9 Added translation using Weblate (Latvian) 2020-03-08 17:24:16 -04:00
Vasily
f4ccee5801 Add inheritdoc comment and squash simple method bodies 2020-03-05 15:03:17 +03:00
Vasily
456f571343 Follow code review suggestions 2020-03-05 14:25:50 +03:00
Davide Polonio
5099f6e4a2 Add FIXME in HasConfiguredPassword public user DTO method 2020-03-05 08:01:47 +01:00
Vasily
007c5b9f67 Implement BaseItem.GetHashCode override 2020-03-04 13:06:13 +03:00
Mark Monteiro
9aa259eb95 Revert unnecessary ordering changes in ApplicationHost 2020-03-03 23:56:47 +01:00
Mark Monteiro
6b06a9a919 Make Logger and LoggerFactory both protected in ApplicationHost 2020-03-03 23:53:48 +01:00
Mark Monteiro
c49a12dd73 Make LoggerFactory private in ApplicationHost and use it to construct loggers with context 2020-03-03 23:31:25 +01:00
Mark Monteiro
370c312e01 Make logger private in ApplicationHost 2020-03-03 23:08:42 +01:00
Mark Monteiro
b67e9cde8c Replace ILogger with ILogger<T> wherever possible
Log entries will contain additional class context when using this interface
2020-03-03 23:07:10 +01:00
Mark Monteiro
76957213e6 Merge remote-tracking branch 'upstream/master' into support-injecting-iconfiguration 2020-03-03 22:27:49 +01:00
Davide Polonio
cd471ed4df Fix emby/users/public not taking into account first run
The previous implementation was not taking in account the first seup
phase. Now the check has been added.

A little method refactor has been done in order to make the code more
elegant.
2020-03-03 20:20:35 +01:00
Davide Polonio
737d4d2b3f Fix conditional with a less verbose one
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2020-03-03 19:51:03 +01:00
Mark Monteiro
3cb98fba55 Use ToList() instead of ToArray() on sequences of unknown size 2020-03-03 18:18:00 +01:00
Mark Monteiro
6438771212 Exit method early if there are no unique playlist items to add 2020-03-03 17:48:11 +01:00
Mark Monteiro
4d32b59a0b Performance improvements
Use arrays instead of lists; use Array.CopyTo to concat playlist items; only count number of duplicates once
2020-03-03 17:47:16 +01:00
Vasily
f21cd30039 Lower log level for BaseItem.Equals to debug 2020-03-03 19:22:45 +03:00
Mark Monteiro
7f96fce15d Add SegiH as a contributor
This PR is based on a change originally proposed by this author
2020-03-03 14:40:49 +01:00
Mark Monteiro
77533fd433 Revert unnecessary style change 2020-03-03 14:40:07 +01:00
Mark Monteiro
dde0277050 Check for duplicates when adding items to a playlist 2020-03-02 21:12:35 +01:00
Vasily
11abe31e0d Speed up equality comparison of BaseItem 2020-03-02 12:31:31 +03:00
Davide Polonio
5d760b7ee8 Fix emby/user/public API leaking private data
This commit fixes the emby/user/public API that was returning more data
than necessary. Now only the following information are returned:
- the account name
- the primary image tag
- the field hasPassword
- the field hasConfiguredPassword, useful for the first wizard only
(see
https://github.com/jellyfin/jellyfin/issues/880#issuecomment-465370051)
- the primary image aspect ratio

A new DTO class, PrivateUserDTO has been created, and the route has been
modified in order to return that data object.
2020-03-01 21:46:01 +01:00
Mark Monteiro
7e3b6768f8 Add NuGet reference to config abstractions in MediaBrowser.Common project 2020-03-01 12:10:32 +01:00
Mark Monteiro
189f005846 Remove IConfiguration from service collection
This does not appear to be used anywhere and the web host already handles injecting this as a special case anyways
2020-02-28 23:35:53 +01:00
Mark Monteiro
48f8118072 Do not save a reference to the startup config in ApplicationHost 2020-02-28 23:28:15 +01:00
Mark Monteiro
a4e5a5ab31 Register configuration correctly with application using 'ConfigureAppConfiguration()' in WebHostBuilder
Without this, the correct instance of IConfiguration is not injected into services that rely on it
2020-02-28 23:18:22 +01:00
Mark Monteiro
3f4b9e9a81 Add new 'nowebcontent' configuration flag 2020-02-28 20:40:45 +01:00
Bond_009
be6ed3ec7b Add comment 2020-02-28 20:39:51 +01:00
Bond_009
e699e5d405 Fix possible race condition 2020-02-28 20:34:10 +01:00
Mark Monteiro
3043b7323b Use constants for settings keys 2020-02-28 17:57:38 +01:00
Bond_009
d1e1aef5f7 Fix possible race condition 2020-02-26 18:19:34 +01:00
Mark Monteiro
d95ccbacac Use IsHostingContent instead of explicitly checking ContentRoot 2020-02-26 16:11:09 +01:00
Vasily
a9f3b5dacb Fix ordering of search results 2020-02-26 10:54:29 +03:00
dkanada
974a04c129 update plugin classes for nightly builds 2020-02-26 01:58:39 +09:00
Mark Monteiro
192ec57b60 Remove log message executed before logger is initialized 2020-02-25 17:22:21 +01:00
Mark Monteiro
f3be93a4de Use the swagger API page as the default redirect path if not hosting the jellyfin-web content 2020-02-25 17:02:51 +01:00
Mark Monteiro
1b5999a1bc Open the Swagger API page on server start if not hosting the static web content 2020-02-25 17:01:57 +01:00
Mark Monteiro
26af5ea45a Do not set a static content root if the jellyfin-web directory does not exist or is empty 2020-02-25 16:51:36 +01:00
Peter Maar
818695a01e Improve controls for deinterlace method; matches with jellyfin-web changes 2020-02-23 21:40:53 -05:00
Bond_009
a2f955e2eb Fix formatting 2020-02-23 12:22:48 +01:00
Bond_009
07cc4be6a7 Fix some warnings
* Add analyzers to MediaBrowser.XbmcMetadata
* Enable TreatWarningsAsErrors for MediaBrowser.XbmcMetadata
* Add analyzers to MediaBrowser.WebDashboard
* Enable TreatWarningsAsErrors for MediaBrowser.WebDashboard
* Disable SA1600 in favor of CS1591
2020-02-23 12:11:43 +01:00
Bond_009
6d6fa13550 Fix release build 2020-02-23 10:58:45 +01:00
Bond_009
a07ee65365 Minor improvements 2020-02-23 10:53:51 +01:00
Peter Maar
7716deddf0 Add encoding option bobandweave, change back the EncodingHelper logic 2020-02-22 17:01:56 -05:00
Peter Maar
8531ed646d Temporary fix/change forcing yadif to "send_field" 2020-02-09 12:13:31 -05:00
Bond_009
407f54e776 Style fixes 2020-01-13 20:06:08 +01:00
Bond-009
ee964f8a58 Don't log message info 2020-01-13 20:06:08 +01:00
Bond-009
d01ba49be3 Fix space 2020-01-13 20:06:08 +01:00
Bond-009
f89e18ea26 Improve error handling 2020-01-13 20:06:08 +01:00
Bond-009
bdd823d22f Handle unexpected disconnect 2020-01-13 20:06:08 +01:00
Bond-009
8865b3ea3d Remove dead code and improve logging 2020-01-13 20:06:08 +01:00
Bond-009
4d311870d2 Fix websocket handling 2020-01-13 20:06:08 +01:00
Bond_009
5ca68f9623 Fix nullref exception and added logging 2020-01-13 20:06:08 +01:00
Bond_009
976459d3e8 Rewrite WebSocket handling code 2020-01-13 20:06:08 +01:00
1564 changed files with 34169 additions and 19351 deletions

View File

@@ -1,13 +1,13 @@
parameters:
- name: Packages
type: object
default: {}
- name: LinuxImage
type: string
default: "ubuntu-latest"
- name: DotNetSdkVersion
type: string
default: 3.1.100
- name: Packages
type: object
default: {}
- name: LinuxImage
type: string
default: "ubuntu-latest"
- name: DotNetSdkVersion
type: string
default: 3.1.100
jobs:
- job: CompatibilityCheck
@@ -23,7 +23,7 @@ jobs:
NugetPackageName: ${{ Package.value.NugetPackageName }}
AssemblyFileName: ${{ Package.value.AssemblyFileName }}
maxParallel: 2
dependsOn: MainBuild
dependsOn: Build
steps:
- checkout: none
@@ -33,6 +33,13 @@ jobs:
packageType: sdk
version: ${{ parameters.DotNetSdkVersion }}
- task: DotNetCoreCLI@2
displayName: 'Install ABI CompatibilityChecker tool'
inputs:
command: custom
custom: tool
arguments: 'update compatibilitychecker -g'
- task: DownloadPipelineArtifact@2
displayName: "Download New Assembly Build Artifact"
inputs:
@@ -72,25 +79,11 @@ jobs:
overWrite: true
flattenFolders: true
- task: DownloadGitHubRelease@0
displayName: "Download ABI Compatibility Check Tool"
inputs:
connection: Jellyfin Release Download
userRepository: EraYaN/dotnet-compatibility
defaultVersionType: "latest"
itemPattern: "**-ci.zip"
downloadPath: "$(System.ArtifactsDirectory)"
- task: ExtractFiles@1
displayName: "Extract ABI Compatibility Check Tool"
inputs:
archiveFilePatterns: "$(System.ArtifactsDirectory)/*-ci.zip"
destinationFolder: $(System.ArtifactsDirectory)/tools
cleanDestinationFolder: true
# The `--warnings-only` switch will swallow the return code and not emit any errors.
- task: CmdLine@2
displayName: "Execute ABI Compatibility Check Tool"
- task: DotNetCoreCLI@2
displayName: 'Execute ABI Compatibility Check Tool'
inputs:
script: "dotnet tools/CompatibilityCheckerCLI.dll current-release/$(AssemblyFileName) new-release/$(AssemblyFileName) --azure-pipelines --warnings-only"
command: custom
custom: compat
arguments: 'current-release/$(AssemblyFileName) new-release/$(AssemblyFileName) --azure-pipelines --warnings-only'
workingDirectory: $(System.ArtifactsDirectory)

View File

@@ -1,101 +1,93 @@
parameters:
LinuxImage: "ubuntu-latest"
RestoreBuildProjects: "Jellyfin.Server/Jellyfin.Server.csproj"
LinuxImage: 'ubuntu-latest'
RestoreBuildProjects: 'Jellyfin.Server/Jellyfin.Server.csproj'
DotNetSdkVersion: 3.1.100
jobs:
- job: MainBuild
displayName: Main Build
- job: Build
displayName: Build
strategy:
matrix:
Release:
BuildConfiguration: Release
Debug:
BuildConfiguration: Debug
maxParallel: 2
pool:
vmImage: "${{ parameters.LinuxImage }}"
vmImage: '${{ parameters.LinuxImage }}'
steps:
- checkout: self
clean: true
submodules: true
persistCredentials: true
- task: CmdLine@2
displayName: "Clone Web Client (Master, Release, or Tag)"
condition: and(succeeded(), or(contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), eq(variables['BuildConfiguration'], 'Release'), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
- task: DownloadPipelineArtifact@2
displayName: 'Download Web Branch'
condition: in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI', 'BuildCompletion')
inputs:
script: "git clone --single-branch --branch $(Build.SourceBranchName) --depth=1 https://github.com/jellyfin/jellyfin-web.git $(Agent.TempDirectory)/jellyfin-web"
path: '$(Agent.TempDirectory)'
artifact: 'jellyfin-web-production'
source: 'specific'
project: 'jellyfin'
pipeline: 'Jellyfin Web'
runBranch: variables['Build.SourceBranch']
- task: CmdLine@2
displayName: "Clone Web Client (PR)"
condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master')), eq(variables['BuildConfiguration'], 'Release'), in(variables['Build.Reason'], 'PullRequest'))
- task: DownloadPipelineArtifact@2
displayName: 'Download Web Target'
condition: eq(variables['Build.Reason'], 'PullRequest')
inputs:
script: "git clone --single-branch --branch $(System.PullRequest.TargetBranch) --depth 1 https://github.com/jellyfin/jellyfin-web.git $(Agent.TempDirectory)/jellyfin-web"
path: '$(Agent.TempDirectory)'
artifact: 'jellyfin-web-production'
source: 'specific'
project: 'jellyfin'
pipeline: 'Jellyfin Web'
runBranch: variables['System.PullRequest.TargetBranch']
- task: NodeTool@0
displayName: "Install Node"
condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master'), contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), eq(variables['BuildConfiguration'], 'Release'), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
- task: ExtractFiles@1
displayName: 'Extract Web Client'
inputs:
versionSpec: "10.x"
- task: CmdLine@2
displayName: "Build Web Client"
condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master'), contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), eq(variables['BuildConfiguration'], 'Release'), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
inputs:
script: yarn install
workingDirectory: $(Agent.TempDirectory)/jellyfin-web
- task: CopyFiles@2
displayName: "Copy Web Client"
condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master'), contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), eq(variables['BuildConfiguration'], 'Release'), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
inputs:
sourceFolder: $(Agent.TempDirectory)/jellyfin-web/dist
contents: "**"
targetFolder: $(Build.SourcesDirectory)/MediaBrowser.WebDashboard/jellyfin-web
cleanTargetFolder: true
overWrite: true
flattenFolders: false
archiveFilePatterns: '$(Agent.TempDirectory)/*.zip'
destinationFolder: '$(Build.SourcesDirectory)/MediaBrowser.WebDashboard'
cleanDestinationFolder: false
- task: UseDotNet@2
displayName: "Update DotNet"
displayName: 'Update DotNet'
inputs:
packageType: sdk
version: ${{ parameters.DotNetSdkVersion }}
- task: DotNetCoreCLI@2
displayName: "Publish Server"
displayName: 'Publish Server'
inputs:
command: publish
publishWebProjects: false
projects: "${{ parameters.RestoreBuildProjects }}"
arguments: "--configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)"
projects: '${{ parameters.RestoreBuildProjects }}'
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: false
- task: PublishPipelineArtifact@0
displayName: "Publish Artifact Naming"
displayName: 'Publish Artifact Naming'
condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
inputs:
targetPath: "$(build.artifactstagingdirectory)/Jellyfin.Server/Emby.Naming.dll"
artifactName: "Jellyfin.Naming"
targetPath: '$(build.ArtifactStagingDirectory)/Jellyfin.Server/Emby.Naming.dll'
artifactName: 'Jellyfin.Naming'
- task: PublishPipelineArtifact@0
displayName: "Publish Artifact Controller"
displayName: 'Publish Artifact Controller'
condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
inputs:
targetPath: "$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Controller.dll"
artifactName: "Jellyfin.Controller"
targetPath: '$(build.ArtifactStagingDirectory)/Jellyfin.Server/MediaBrowser.Controller.dll'
artifactName: 'Jellyfin.Controller'
- task: PublishPipelineArtifact@0
displayName: "Publish Artifact Model"
displayName: 'Publish Artifact Model'
condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
inputs:
targetPath: "$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Model.dll"
artifactName: "Jellyfin.Model"
targetPath: '$(build.ArtifactStagingDirectory)/Jellyfin.Server/MediaBrowser.Model.dll'
artifactName: 'Jellyfin.Model'
- task: PublishPipelineArtifact@0
displayName: "Publish Artifact Common"
displayName: 'Publish Artifact Common'
condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
inputs:
targetPath: "$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Common.dll"
artifactName: "Jellyfin.Common"
targetPath: '$(build.ArtifactStagingDirectory)/Jellyfin.Server/MediaBrowser.Common.dll'
artifactName: 'Jellyfin.Common'

View File

@@ -0,0 +1,163 @@
jobs:
- job: BuildPackage
displayName: 'Build Packages'
strategy:
matrix:
CentOS.amd64:
BuildConfiguration: centos.amd64
Fedora.amd64:
BuildConfiguration: fedora.amd64
Debian.amd64:
BuildConfiguration: debian.amd64
Debian.arm64:
BuildConfiguration: debian.arm64
Debian.armhf:
BuildConfiguration: debian.armhf
Ubuntu.amd64:
BuildConfiguration: ubuntu.amd64
Ubuntu.arm64:
BuildConfiguration: ubuntu.arm64
Ubuntu.armhf:
BuildConfiguration: ubuntu.armhf
Linux.amd64:
BuildConfiguration: linux.amd64
Windows.amd64:
BuildConfiguration: windows.amd64
MacOS:
BuildConfiguration: macos
Portable:
BuildConfiguration: portable
pool:
vmImage: 'ubuntu-latest'
steps:
- script: 'docker build -f deployment/Dockerfile.$(BuildConfiguration) -t jellyfin-server-$(BuildConfiguration) deployment'
displayName: 'Build Dockerfile'
- script: 'docker image ls -a && docker run -v $(pwd)/deployment/dist:/dist -v $(pwd):/jellyfin -e IS_UNSTABLE="yes" -e BUILD_ID=$(Build.BuildNumber) jellyfin-server-$(BuildConfiguration)'
displayName: 'Run Dockerfile (unstable)'
condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/master')
- script: 'docker image ls -a && docker run -v $(pwd)/deployment/dist:/dist -v $(pwd):/jellyfin -e IS_UNSTABLE="no" -e BUILD_ID=$(Build.BuildNumber) jellyfin-server-$(BuildConfiguration)'
displayName: 'Run Dockerfile (stable)'
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags')
- task: PublishPipelineArtifact@1
displayName: 'Publish Release'
inputs:
targetPath: '$(Build.SourcesDirectory)/deployment/dist'
artifactName: 'jellyfin-server-$(BuildConfiguration)'
- task: SSH@0
displayName: 'Create target directory on repository server'
inputs:
sshEndpoint: repository
runOptions: 'inline'
inline: 'mkdir -p /srv/repository/incoming/azure/$(Build.BuildNumber)/$(BuildConfiguration)'
- task: CopyFilesOverSSH@0
displayName: 'Upload artifacts to repository server'
inputs:
sshEndpoint: repository
sourceFolder: '$(Build.SourcesDirectory)/deployment/dist'
contents: '**'
targetFolder: '/srv/repository/incoming/azure/$(Build.BuildNumber)/$(BuildConfiguration)'
- job: BuildDocker
displayName: 'Build Docker'
strategy:
matrix:
amd64:
BuildConfiguration: amd64
arm64:
BuildConfiguration: arm64
armhf:
BuildConfiguration: armhf
pool:
vmImage: 'ubuntu-latest'
steps:
- task: Docker@2
displayName: 'Push Unstable Image'
condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/master')
inputs:
repository: 'jellyfin/jellyfin-server'
command: buildAndPush
buildContext: '.'
Dockerfile: 'deployment/Dockerfile.docker.$(BuildConfiguration)'
containerRegistry: Docker Hub
tags: |
unstable-$(Build.BuildNumber)-$(BuildConfiguration)
unstable-$(BuildConfiguration)
- task: Docker@2
displayName: 'Push Stable Image'
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags')
inputs:
repository: 'jellyfin/jellyfin-server'
command: buildAndPush
buildContext: '.'
Dockerfile: 'deployment/Dockerfile.docker.$(BuildConfiguration)'
containerRegistry: Docker Hub
tags: |
stable-$(Build.BuildNumber)-$(BuildConfiguration)
stable-$(BuildConfiguration)
- job: CollectArtifacts
displayName: 'Collect Artifacts'
dependsOn:
- BuildPackage
- BuildDocker
condition: and(succeeded('BuildPackage'), succeeded('BuildDocker'))
pool:
vmImage: 'ubuntu-latest'
steps:
- task: SSH@0
displayName: 'Update Unstable Repository'
condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/master')
inputs:
sshEndpoint: repository
runOptions: 'inline'
inline: |
sudo /srv/repository/collect-server.azure.sh /srv/repository/incoming/azure $(Build.BuildNumber) unstable
rm $0
exit
- task: SSH@0
displayName: 'Update Stable Repository'
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags')
inputs:
sshEndpoint: repository
runOptions: 'inline'
inline: |
sudo /srv/repository/collect-server.azure.sh /srv/repository/incoming/azure $(Build.BuildNumber)
rm $0
exit
- job: PublishNuget
displayName: 'Publish NuGet packages'
dependsOn:
- BuildPackage
condition: and(succeeded('BuildPackage'), startsWith(variables['Build.SourceBranch'], 'refs/tags'))
pool:
vmImage: 'ubuntu-latest'
steps:
- task: NuGetCommand@2
inputs:
command: 'pack'
packagesToPack: Jellyfin.Data/Jellyfin.Data.csproj;MediaBrowser.Common/MediaBrowser.Common.csproj;MediaBrowser.Controller/MediaBrowser.Controller.csproj;MediaBrowser.Model/MediaBrowser.Model.csproj;Emby.Naming/Emby.Naming.csproj
packDestination: '$(Build.ArtifactStagingDirectory)'
- task: NuGetCommand@2
inputs:
command: 'push'
packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg'
includeNugetOrg: 'true'

View File

@@ -1,26 +1,25 @@
parameters:
- name: ImageNames
type: object
default:
Linux: "ubuntu-latest"
Windows: "windows-latest"
macOS: "macos-latest"
- name: TestProjects
type: string
default: "tests/**/*Tests.csproj"
- name: DotNetSdkVersion
type: string
default: 3.1.100
- name: ImageNames
type: object
default:
Linux: "ubuntu-latest"
Windows: "windows-latest"
macOS: "macos-latest"
- name: TestProjects
type: string
default: "tests/**/*Tests.csproj"
- name: DotNetSdkVersion
type: string
default: 3.1.100
jobs:
- job: MainTest
displayName: Main Test
- job: Test
displayName: Test
strategy:
matrix:
${{ each imageName in parameters.ImageNames }}:
${{ imageName.key }}:
ImageName: ${{ imageName.value }}
maxParallel: 3
pool:
vmImage: "$(ImageName)"
steps:
@@ -29,14 +28,31 @@ jobs:
submodules: true
persistCredentials: false
# This is required for the SonarCloud analyzer
- task: UseDotNet@2
displayName: "Install .NET Core SDK 2.1"
condition: eq(variables['ImageName'], 'ubuntu-latest')
inputs:
packageType: sdk
version: '2.1.805'
- task: UseDotNet@2
displayName: "Update DotNet"
inputs:
packageType: sdk
version: ${{ parameters.DotNetSdkVersion }}
- task: SonarCloudPrepare@1
displayName: 'Prepare analysis on SonarCloud'
condition: eq(variables['ImageName'], 'ubuntu-latest')
enabled: false
inputs:
SonarCloud: 'Sonarcloud for Jellyfin'
organization: 'jellyfin'
projectKey: 'jellyfin_jellyfin'
- task: DotNetCoreCLI@2
displayName: Run .NET Core CLI tests
displayName: 'Run CLI Tests'
inputs:
command: "test"
projects: ${{ parameters.TestProjects }}
@@ -45,9 +61,20 @@ jobs:
testRunTitle: $(Agent.JobName)
workingDirectory: "$(Build.SourcesDirectory)"
- task: SonarCloudAnalyze@1
displayName: 'Run Code Analysis'
condition: eq(variables['ImageName'], 'ubuntu-latest')
enabled: false
- task: SonarCloudPublish@1
displayName: 'Publish Quality Gate Result'
condition: eq(variables['ImageName'], 'ubuntu-latest')
enabled: false
- task: Palmmedia.reportgenerator.reportgenerator-build-release-task.reportgenerator@4
condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux')) # !! THIS is for V1 only V2 will/should support merging
displayName: ReportGenerator (merge)
displayName: 'Run ReportGenerator'
enabled: false
inputs:
reports: "$(Agent.TempDirectory)/**/coverage.cobertura.xml"
targetdir: "$(Agent.TempDirectory)/merged/"
@@ -56,7 +83,8 @@ jobs:
## V2 is already in the repository but it does not work "wrong number of segments" YAML error.
- task: PublishCodeCoverageResults@1
condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux')) # !! THIS is for V1 only V2 will/should support merging
displayName: Publish Code Coverage
displayName: 'Publish Code Coverage'
enabled: false
inputs:
codeCoverageTool: "cobertura"
#summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml' # !!THIS IS FOR V2

View File

@@ -1,82 +0,0 @@
parameters:
WindowsImage: "windows-latest"
TestProjects: "tests/**/*Tests.csproj"
DotNetSdkVersion: 3.1.100
jobs:
- job: PublishWindows
displayName: Publish Windows
pool:
vmImage: ${{ parameters.WindowsImage }}
steps:
- checkout: self
clean: true
submodules: true
persistCredentials: true
- task: CmdLine@2
displayName: "Clone Web Client (Master, Release, or Tag)"
condition: and(succeeded(), or(contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master'), contains(variables['Build.SourceBranch'], 'tag')), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
inputs:
script: "git clone --single-branch --branch $(Build.SourceBranchName) --depth=1 https://github.com/jellyfin/jellyfin-web.git $(Agent.TempDirectory)/jellyfin-web"
- task: CmdLine@2
displayName: "Clone Web Client (PR)"
condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master')), in(variables['Build.Reason'], 'PullRequest'))
inputs:
script: "git clone --single-branch --branch $(System.PullRequest.TargetBranch) --depth 1 https://github.com/jellyfin/jellyfin-web.git $(Agent.TempDirectory)/jellyfin-web"
- task: NodeTool@0
displayName: "Install Node"
condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master'), contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
inputs:
versionSpec: "10.x"
- task: CmdLine@2
displayName: "Build Web Client"
condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master'), contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
inputs:
script: yarn install
workingDirectory: $(Agent.TempDirectory)/jellyfin-web
- task: CopyFiles@2
displayName: "Copy Web Client"
condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master'), contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
inputs:
sourceFolder: $(Agent.TempDirectory)/jellyfin-web/dist
contents: "**"
targetFolder: $(Build.SourcesDirectory)/MediaBrowser.WebDashboard/jellyfin-web
cleanTargetFolder: true
overWrite: true
flattenFolders: false
- task: CmdLine@2
displayName: "Clone UX Repository"
inputs:
script: git clone --depth=1 https://github.com/jellyfin/jellyfin-ux $(Agent.TempDirectory)\jellyfin-ux
- task: PowerShell@2
displayName: "Build NSIS Installer"
inputs:
targetType: "filePath"
filePath: ./deployment/windows/build-jellyfin.ps1
arguments: -InstallFFMPEG -InstallNSSM -MakeNSIS -InstallTrayApp -UXLocation $(Agent.TempDirectory)\jellyfin-ux -InstallLocation $(build.artifactstagingdirectory)
errorActionPreference: "stop"
workingDirectory: $(Build.SourcesDirectory)
- task: CopyFiles@2
displayName: "Copy NSIS Installer"
inputs:
sourceFolder: $(Build.SourcesDirectory)/deployment/windows/
contents: "jellyfin*.exe"
targetFolder: $(System.ArtifactsDirectory)/setup
cleanTargetFolder: true
overWrite: true
flattenFolders: true
- task: PublishPipelineArtifact@0
displayName: "Publish Artifact Setup"
condition: succeeded()
inputs:
targetPath: "$(build.artifactstagingdirectory)/setup"
artifactName: "Jellyfin Server Setup"

View File

@@ -1,12 +1,12 @@
name: $(Date:yyyyMMdd)$(Rev:.r)
variables:
- name: TestProjects
value: "tests/**/*Tests.csproj"
- name: RestoreBuildProjects
value: "Jellyfin.Server/Jellyfin.Server.csproj"
- name: DotNetSdkVersion
value: 3.1.100
- name: TestProjects
value: 'tests/**/*Tests.csproj'
- name: RestoreBuildProjects
value: 'Jellyfin.Server/Jellyfin.Server.csproj'
- name: DotNetSdkVersion
value: 3.1.100
pr:
autoCancel: true
@@ -15,24 +15,22 @@ trigger:
batch: true
jobs:
- ${{ if not(or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master'))) }}:
- template: azure-pipelines-main.yml
parameters:
LinuxImage: "ubuntu-latest"
LinuxImage: 'ubuntu-latest'
RestoreBuildProjects: $(RestoreBuildProjects)
- ${{ if not(or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master'))) }}:
- template: azure-pipelines-test.yml
parameters:
ImageNames:
Linux: "ubuntu-latest"
Windows: "windows-latest"
macOS: "macos-latest"
Linux: 'ubuntu-latest'
Windows: 'windows-latest'
macOS: 'macos-latest'
- template: azure-pipelines-windows.yml
parameters:
WindowsImage: "windows-latest"
TestProjects: $(TestProjects)
- template: azure-pipelines-compat.yml
- ${{ if not(or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master'))) }}:
- template: azure-pipelines-abi.yml
parameters:
Packages:
Naming:
@@ -47,4 +45,7 @@ jobs:
Common:
NugetPackageName: Jellyfin.Common
AssemblyFileName: MediaBrowser.Common.dll
LinuxImage: "ubuntu-latest"
LinuxImage: 'ubuntu-latest'
- ${{ if or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master')) }}:
- template: azure-pipelines-package.yml

View File

@@ -1,59 +0,0 @@
VERSION := $(shell sed -ne '/^Version:/s/.* *//p' \
deployment/fedora-package-x64/pkg-src/jellyfin.spec)
deployment/fedora-package-x64/pkg-src/jellyfin-web-$(VERSION).tar.gz:
curl -f -L -o deployment/fedora-package-x64/pkg-src/jellyfin-web-$(VERSION).tar.gz \
https://github.com/jellyfin/jellyfin-web/archive/v$(VERSION).tar.gz \
|| curl -f -L -o deployment/fedora-package-x64/pkg-src/jellyfin-web-$(VERSION).tar.gz \
https://github.com/jellyfin/jellyfin-web/archive/master.tar.gz \
srpm: deployment/fedora-package-x64/pkg-src/jellyfin-web-$(VERSION).tar.gz
cd deployment/fedora-package-x64; \
SOURCE_DIR=../.. \
WORKDIR="$${PWD}"; \
package_temporary_dir="$${WORKDIR}/pkg-dist-tmp"; \
pkg_src_dir="$${WORKDIR}/pkg-src"; \
GNU_TAR=1; \
tar \
--transform "s,^\.,jellyfin-$(VERSION)," \
--exclude='.git*' \
--exclude='**/.git' \
--exclude='**/.hg' \
--exclude='**/.vs' \
--exclude='**/.vscode' \
--exclude='deployment' \
--exclude='**/bin' \
--exclude='**/obj' \
--exclude='**/.nuget' \
--exclude='*.deb' \
--exclude='*.rpm' \
-czf "pkg-src/jellyfin-$(VERSION).tar.gz" \
-C $${SOURCE_DIR} ./ || GNU_TAR=0; \
if [ $${GNU_TAR} -eq 0 ]; then \
package_temporary_dir="$$(mktemp -d)"; \
mkdir -p "$${package_temporary_dir}/jellyfin"; \
tar \
--exclude='.git*' \
--exclude='**/.git' \
--exclude='**/.hg' \
--exclude='**/.vs' \
--exclude='**/.vscode' \
--exclude='deployment' \
--exclude='**/bin' \
--exclude='**/obj' \
--exclude='**/.nuget' \
--exclude='*.deb' \
--exclude='*.rpm' \
-czf "$${package_temporary_dir}/jellyfin/jellyfin-$(VERSION).tar.gz" \
-C $${SOURCE_DIR} ./; \
mkdir -p "$${package_temporary_dir}/jellyfin-$(VERSION)"; \
tar -xzf "$${package_temporary_dir}/jellyfin/jellyfin-$(VERSION).tar.gz" \
-C "$${package_temporary_dir}/jellyfin-$(VERSION); \
rm -f "$${package_temporary_dir}/jellyfin/jellyfin-$(VERSION).tar.gz"; \
tar -czf "$${SOURCE_DIR}/SOURCES/pkg-src/jellyfin-$(VERSION).tar.gz" \
-C "$${package_temporary_dir}" "jellyfin-$(VERSION); \
rm -rf $${package_temporary_dir}; \
fi; \
rpmbuild -bs pkg-src/jellyfin.spec \
--define "_sourcedir $$PWD/pkg-src/" \
--define "_srcrpmdir $(outdir)"

1
.copr/Makefile Symbolic link
View File

@@ -0,0 +1 @@
../fedora/Makefile

View File

@@ -13,7 +13,7 @@ charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
end_of_line = lf
max_line_length = null
max_line_length = off
# YAML indentation
[*.{yml,yaml}]
@@ -22,6 +22,7 @@ indent_size = 2
# XML indentation
[*.{csproj,xml}]
indent_size = 2
###############################
# .NET Coding Conventions #
###############################
@@ -51,11 +52,12 @@ dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:silent
dotnet_prefer_inferred_tuple_names = true:suggestion
dotnet_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_auto_properties = true:silent
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
dotnet_style_prefer_conditional_expression_over_return = true:silent
###############################
# Naming Conventions #
###############################
@@ -67,7 +69,7 @@ dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.symbols = non
dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.style = non_private_static_field_style
dotnet_naming_symbols.non_private_static_fields.applicable_kinds = field
dotnet_naming_symbols.non_private_static_fields.applicable_accessibilities = public, protected, internal, protected internal, private protected
dotnet_naming_symbols.non_private_static_fields.applicable_accessibilities = public, protected, internal, protected_internal, private_protected
dotnet_naming_symbols.non_private_static_fields.required_modifiers = static
dotnet_naming_style.non_private_static_field_style.capitalization = pascal_case
@@ -159,6 +161,7 @@ csharp_style_deconstructed_variable_declaration = true:suggestion
csharp_prefer_simple_default_expression = true:suggestion
csharp_style_pattern_local_over_anonymous_function = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion
###############################
# C# Formatting Rules #
###############################
@@ -189,9 +192,3 @@ csharp_space_between_method_call_empty_parameter_list_parentheses = false
# Wrapping preferences
csharp_preserve_single_line_statements = true
csharp_preserve_single_line_blocks = true
###############################
# VB Coding Conventions #
###############################
[*.vb]
# Modifier preferences
visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:suggestion

3
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1,3 @@
# Joshua must review all changes to deployment and build.sh
deployment/* @joshuaboniface
build.sh @joshuaboniface

View File

@@ -0,0 +1,13 @@
---
name: Feature Request
about: Request a new feature
title: ''
labels: feature-request
assignees: ''
---
**PLEASE DO NOT OPEN FEATURE REQUEST ISSUES ON GITHUB**
**Feature requests should be opened on our dedicated [feature request](https://features.jellyfin.org/) hub so they can be appropriately discussed and prioritized.**
However, if you are willing to contribute to the project by adding a new feature yourself, then please ensure that you first review our [documentation](https://docs.jellyfin.org/general/contributing/development.html) on contributing code. Once you have reviewed the documentation, feel free to come back here and open an issue here outlining your proposed approach so that it can be documented, tracked, and discussed by other team members.

9
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,9 @@
version: 2
updates:
- package-ecosystem: nuget
directory: "/"
schedule:
interval: weekly
time: '12:00'
open-pull-requests-limit: 10

19
.gitignore vendored
View File

@@ -244,14 +244,14 @@ pip-log.txt
#########################
# Artifacts for debian-x64
deployment/debian-package-x64/pkg-src/.debhelper/
deployment/debian-package-x64/pkg-src/*.debhelper
deployment/debian-package-x64/pkg-src/debhelper-build-stamp
deployment/debian-package-x64/pkg-src/files
deployment/debian-package-x64/pkg-src/jellyfin.substvars
deployment/debian-package-x64/pkg-src/jellyfin/
debian/.debhelper/
debian/*.debhelper
debian/debhelper-build-stamp
debian/files
debian/jellyfin.substvars
debian/jellyfin/
# Don't ignore the debian/bin folder
!deployment/debian-package-x64/pkg-src/bin/
!debian/bin/
deployment/**/dist/
deployment/**/pkg-dist/
@@ -271,3 +271,8 @@ dist
# BenchmarkDotNet artifacts
BenchmarkDotNet.Artifacts
# Ignore web artifacts from native builds
web/
web-src.*
MediaBrowser.WebDashboard/jellyfin-web

14
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,14 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
// Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
// List of extensions which should be recommended for users of this workspace.
"recommendations": [
"ms-dotnettools.csharp",
"editorconfig.editorconfig"
],
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
"unwantedRecommendations": [
]
}

12
.vscode/launch.json vendored
View File

@@ -1,9 +1,6 @@
{
// Use IntelliSense to find out which attributes exist for C# debugging
// Use hover for the description of the existing attributes
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
"version": "0.2.0",
"configurations": [
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (console)",
"type": "coreclr",
@@ -24,5 +21,8 @@
"request": "attach",
"processId": "${command:pickProcess}"
}
,]
],
"env": {
"DOTNET_CLI_TELEMETRY_OPTOUT": "1"
}
}

19
.vscode/tasks.json vendored
View File

@@ -10,6 +10,21 @@
"${workspaceFolder}/Jellyfin.Server/Jellyfin.Server.csproj"
],
"problemMatcher": "$msCompile"
},
{
"label": "api tests",
"command": "dotnet",
"type": "process",
"args": [
"test",
"${workspaceFolder}/tests/MediaBrowser.Api.Tests/MediaBrowser.Api.Tests.csproj"
],
"problemMatcher": "$msCompile"
}
]
}
],
"options": {
"env": {
"DOTNET_CLI_TELEMETRY_OPTOUT": "1"
}
}
}

View File

@@ -7,6 +7,7 @@
- [anthonylavado](https://github.com/anthonylavado)
- [Artiume](https://github.com/Artiume)
- [AThomsen](https://github.com/AThomsen)
- [barronpm](https://github.com/barronpm)
- [bilde2910](https://github.com/bilde2910)
- [bfayers](https://github.com/bfayers)
- [BnMcG](https://github.com/BnMcG)
@@ -22,6 +23,7 @@
- [cvium](https://github.com/cvium)
- [dannymichel](https://github.com/dannymichel)
- [DaveChild](https://github.com/DaveChild)
- [Delgan](https://github.com/Delgan)
- [dcrdev](https://github.com/dcrdev)
- [dhartung](https://github.com/dhartung)
- [dinki](https://github.com/dinki)
@@ -91,6 +93,7 @@
- [samuel9554](https://github.com/samuel9554)
- [scheidleon](https://github.com/scheidleon)
- [sebPomme](https://github.com/sebPomme)
- [SegiH](https://github.com/SegiH)
- [SenorSmartyPants](https://github.com/SenorSmartyPants)
- [shemanaev](https://github.com/shemanaev)
- [skaro13](https://github.com/skaro13)
@@ -127,6 +130,8 @@
- [xosdy](https://github.com/xosdy)
- [XVicarious](https://github.com/XVicarious)
- [YouKnowBlom](https://github.com/YouKnowBlom)
- [KristupasSavickas](https://github.com/KristupasSavickas)
- [Pusta](https://github.com/pusta)
# Emby Contributors

View File

@@ -1,13 +1,11 @@
ARG DOTNET_VERSION=3.1
ARG FFMPEG_VERSION=latest
FROM node:alpine as web-builder
ARG JELLYFIN_WEB_VERSION=10.5.2
RUN apk add curl git \
&& git clone --branch release-10.5.z --single-branch https://github.com/jellyfin/jellyfin-web.git \
&& cd jellyfin-web \
ARG JELLYFIN_WEB_VERSION=master
RUN apk add curl git zlib zlib-dev autoconf g++ make libpng-dev gifsicle alpine-sdk automake libtool make gcc musl-dev nasm python \
&& curl -L https://github.com/jellyfin/jellyfin-web/archive/${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
&& cd jellyfin-web-* \
&& yarn install \
&& yarn build \
&& mv dist /dist
FROM mcr.microsoft.com/dotnet/core/sdk:${DOTNET_VERSION}-buster as builder
@@ -18,7 +16,6 @@ ENV DOTNET_CLI_TELEMETRY_OPTOUT=1
# see https://success.docker.com/article/how-to-reserve-resource-temporarily-unavailable-errors-due-to-tasksmax-setting
RUN dotnet publish Jellyfin.Server --disable-parallel --configuration Release --output="/jellyfin" --self-contained --runtime linux-x64 "-p:GenerateDocumentationFile=false;DebugSymbols=false;DebugType=none"
FROM jellyfin/ffmpeg:${FFMPEG_VERSION} as ffmpeg
FROM debian:buster-slim
# https://askubuntu.com/questions/972516/debian-frontend-environment-variable
@@ -28,37 +25,36 @@ ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
# https://github.com/NVIDIA/nvidia-docker/wiki/Installation-(Native-GPU-Support)
ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility"
COPY --from=ffmpeg /opt/ffmpeg /opt/ffmpeg
COPY --from=builder /jellyfin /jellyfin
COPY --from=web-builder /dist /jellyfin/jellyfin-web
# Install dependencies:
# libfontconfig1: needed for Skia
# libgomp1: needed for ffmpeg
# libva-drm2: needed for ffmpeg
# mesa-va-drivers: needed for VAAPI
# mesa-va-drivers: needed for AMD VAAPI
RUN apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y ca-certificates gnupg wget apt-transport-https \
&& wget -O - https://repo.jellyfin.org/jellyfin_team.gpg.key | apt-key add - \
&& echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release ) $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release ) main" | tee /etc/apt/sources.list.d/jellyfin.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
libfontconfig1 \
libgomp1 \
libva-drm2 \
mesa-va-drivers \
jellyfin-ffmpeg \
openssl \
ca-certificates \
vainfo \
i965-va-driver \
&& apt-get clean autoclean -y\
&& apt-get autoremove -y\
locales \
&& apt-get remove gnupg wget apt-transport-https -y \
&& apt-get clean autoclean -y \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /cache /config /media \
&& chmod 777 /cache /config /media \
&& ln -s /opt/ffmpeg/bin/ffmpeg /usr/local/bin \
&& ln -s /opt/ffmpeg/bin/ffprobe /usr/local/bin
&& sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
EXPOSE 8096
VOLUME /cache /config /media
ENTRYPOINT ["./jellyfin/jellyfin", \
"--datadir", "/config", \
"--cachedir", "/cache", \
"--ffmpeg", "/usr/local/bin/ffmpeg"]
"--ffmpeg", "/usr/lib/jellyfin-ffmpeg/ffmpeg"]

View File

@@ -6,12 +6,11 @@ ARG DOTNET_VERSION=3.1
FROM node:alpine as web-builder
ARG JELLYFIN_WEB_VERSION=10.5.2
RUN apk add curl git \
&& git clone --branch release-10.5.z --single-branch https://github.com/jellyfin/jellyfin-web.git \
&& cd jellyfin-web \
ARG JELLYFIN_WEB_VERSION=master
RUN apk add curl git zlib zlib-dev autoconf g++ make libpng-dev gifsicle alpine-sdk automake libtool make gcc musl-dev nasm python \
&& curl -L https://github.com/jellyfin/jellyfin-web/archive/${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
&& cd jellyfin-web-* \
&& yarn install \
&& yarn build \
&& mv dist /dist
@@ -53,20 +52,26 @@ RUN apt-get update \
libraspberrypi0 \
vainfo \
libva2 \
locales \
&& apt-get remove curl gnupg -y \
&& apt-get clean autoclean -y \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /cache /config /media \
&& chmod 777 /cache /config /media
&& chmod 777 /cache /config /media \
&& sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen
COPY --from=builder /jellyfin /jellyfin
COPY --from=web-builder /dist /jellyfin/jellyfin-web
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
EXPOSE 8096
VOLUME /cache /config /media
ENTRYPOINT ["./jellyfin/jellyfin", \
"--datadir", "/config", \
"--cachedir", "/cache", \
"--ffmpeg", "/usr/lib/jellyfin-ffmpeg"]
"--ffmpeg", "/usr/lib/jellyfin-ffmpeg/ffmpeg"]

View File

@@ -6,12 +6,11 @@ ARG DOTNET_VERSION=3.1
FROM node:alpine as web-builder
ARG JELLYFIN_WEB_VERSION=10.5.2
RUN apk add curl git \
&& git clone --branch release-10.5.z --single-branch https://github.com/jellyfin/jellyfin-web.git \
&& cd jellyfin-web \
ARG JELLYFIN_WEB_VERSION=master
RUN apk add curl git zlib zlib-dev autoconf g++ make libpng-dev gifsicle alpine-sdk automake libtool make gcc musl-dev nasm python \
&& curl -L https://github.com/jellyfin/jellyfin-web/archive/${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
&& cd jellyfin-web-* \
&& yarn install \
&& yarn build \
&& mv dist /dist
@@ -35,7 +34,7 @@ ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility"
COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin
RUN apt-get update && apt-get install --no-install-recommends --no-install-suggests -y \
RUN apt-get update && apt-get install --no-install-recommends --no-install-suggests -y \
ffmpeg \
libssl-dev \
ca-certificates \
@@ -43,15 +42,21 @@ RUN apt-get update && apt-get install --no-install-recommends --no-install-sugge
libfreetype6 \
libomxil-bellagio0 \
libomxil-bellagio-bin \
locales \
&& apt-get clean autoclean -y \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /cache /config /media \
&& chmod 777 /cache /config /media
&& chmod 777 /cache /config /media \
&& sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen
COPY --from=builder /jellyfin /jellyfin
COPY --from=web-builder /dist /jellyfin/jellyfin-web
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
EXPOSE 8096
VOLUME /cache /config /media

View File

@@ -1,4 +1,6 @@
using System;
#pragma warning disable CS1591
using System.Buffers.Binary;
using System.IO;
namespace DvdLib
@@ -12,19 +14,12 @@ namespace DvdLib
public override ushort ReadUInt16()
{
return BitConverter.ToUInt16(ReadAndReverseBytes(2), 0);
return BinaryPrimitives.ReadUInt16BigEndian(base.ReadBytes(2));
}
public override uint ReadUInt32()
{
return BitConverter.ToUInt32(ReadAndReverseBytes(4), 0);
}
private byte[] ReadAndReverseBytes(int count)
{
byte[] val = base.ReadBytes(count);
Array.Reverse(val, 0, count);
return val;
return BinaryPrimitives.ReadUInt32BigEndian(base.ReadBytes(4));
}
}
}

View File

@@ -1,17 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">
<!-- ProjectGuid is only included as a requirement for SonarQube analysis -->
<PropertyGroup>
<ProjectGuid>{713F42B5-878E-499D-A878-E4C652B1D5E8}</ProjectGuid>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\SharedVersion.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj" />
</ItemGroup>
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
</Project>

View File

@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System.IO;
namespace DvdLib.Ifo
@@ -5,6 +7,7 @@ namespace DvdLib.Ifo
public class Cell
{
public CellPlaybackInfo PlaybackInfo { get; private set; }
public CellPositionInfo PositionInfo { get; private set; }
internal void ParsePlayback(BinaryReader br)

View File

@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System.IO;
namespace DvdLib.Ifo

View File

@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System.IO;
namespace DvdLib.Ifo

View File

@@ -1,9 +1,13 @@
#pragma warning disable CS1591
namespace DvdLib.Ifo
{
public class Chapter
{
public ushort ProgramChainNumber { get; private set; }
public ushort ProgramNumber { get; private set; }
public uint ChapterNumber { get; private set; }
public Chapter(ushort pgcNum, ushort programNum, uint chapterNum)

View File

@@ -1,8 +1,9 @@
#pragma warning disable CS1591
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using MediaBrowser.Model.IO;
namespace DvdLib.Ifo
{
@@ -13,13 +14,10 @@ namespace DvdLib.Ifo
private ushort _titleCount;
public readonly Dictionary<ushort, string> VTSPaths = new Dictionary<ushort, string>();
private readonly IFileSystem _fileSystem;
public Dvd(string path, IFileSystem fileSystem)
public Dvd(string path)
{
_fileSystem = fileSystem;
Titles = new List<Title>();
var allFiles = _fileSystem.GetFiles(path, true).ToList();
var allFiles = new DirectoryInfo(path).GetFiles(path, SearchOption.AllDirectories);
var vmgPath = allFiles.FirstOrDefault(i => string.Equals(i.Name, "VIDEO_TS.IFO", StringComparison.OrdinalIgnoreCase)) ??
allFiles.FirstOrDefault(i => string.Equals(i.Name, "VIDEO_TS.BUP", StringComparison.OrdinalIgnoreCase));
@@ -33,7 +31,7 @@ namespace DvdLib.Ifo
continue;
}
var nums = ifo.Name.Split(new [] { '_' }, StringSplitOptions.RemoveEmptyEntries);
var nums = ifo.Name.Split(new[] { '_' }, StringSplitOptions.RemoveEmptyEntries);
if (nums.Length >= 2 && ushort.TryParse(nums[1], out var ifoNumber))
{
ReadVTS(ifoNumber, ifo.FullName);
@@ -76,7 +74,7 @@ namespace DvdLib.Ifo
}
}
private void ReadVTS(ushort vtsNum, IEnumerable<FileSystemMetadata> allFiles)
private void ReadVTS(ushort vtsNum, IReadOnlyList<FileInfo> allFiles)
{
var filename = string.Format("VTS_{0:00}_0.IFO", vtsNum);
@@ -119,12 +117,19 @@ namespace DvdLib.Ifo
uint chapNum = 1;
vtsFs.Seek(baseAddr + offsets[titleNum], SeekOrigin.Begin);
var t = Titles.FirstOrDefault(vtst => vtst.IsVTSTitle(vtsNum, titleNum + 1));
if (t == null) continue;
if (t == null)
{
continue;
}
do
{
t.Chapters.Add(new Chapter(vtsRead.ReadUInt16(), vtsRead.ReadUInt16(), chapNum));
if (titleNum + 1 < numTitles && vtsFs.Position == (baseAddr + offsets[titleNum + 1])) break;
if (titleNum + 1 < numTitles && vtsFs.Position == (baseAddr + offsets[titleNum + 1]))
{
break;
}
chapNum++;
}
while (vtsFs.Position < (baseAddr + endaddr));
@@ -149,7 +154,10 @@ namespace DvdLib.Ifo
uint vtsPgcOffset = vtsRead.ReadUInt32();
var t = Titles.FirstOrDefault(vtst => vtst.IsVTSTitle(vtsNum, titleNum));
if (t != null) t.AddPgc(vtsRead, startByte + vtsPgcOffset, entryPgc, pgcNum);
if (t != null)
{
t.AddPgc(vtsRead, startByte + vtsPgcOffset, entryPgc, pgcNum);
}
}
}
}

View File

@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System;
namespace DvdLib.Ifo
@@ -13,8 +15,14 @@ namespace DvdLib.Ifo
Second = GetBCDValue(data[2]);
Frames = GetBCDValue((byte)(data[3] & 0x3F));
if ((data[3] & 0x80) != 0) FrameRate = 30;
else if ((data[3] & 0x40) != 0) FrameRate = 25;
if ((data[3] & 0x80) != 0)
{
FrameRate = 30;
}
else if ((data[3] & 0x40) != 0)
{
FrameRate = 25;
}
}
private static byte GetBCDValue(byte data)

View File

@@ -1,10 +1,12 @@
#pragma warning disable CS1591
using System.Collections.Generic;
namespace DvdLib.Ifo
{
public class Program
{
public readonly List<Cell> Cells;
public IReadOnlyList<Cell> Cells { get; }
public Program(List<Cell> cells)
{

View File

@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -20,7 +22,9 @@ namespace DvdLib.Ifo
public readonly List<Cell> Cells;
public DvdTime PlaybackTime { get; private set; }
public UserOperation ProhibitedUserOperations { get; private set; }
public byte[] AudioStreamControl { get; private set; } // 8*2 entries
public byte[] SubpictureStreamControl { get; private set; } // 32*4 entries
@@ -31,9 +35,11 @@ namespace DvdLib.Ifo
private ushort _goupProgramNumber;
public ProgramPlaybackMode PlaybackMode { get; private set; }
public uint ProgramCount { get; private set; }
public byte StillTime { get; private set; }
public byte[] Palette { get; private set; } // 16*4 entries
private ushort _commandTableOffset;
@@ -69,8 +75,15 @@ namespace DvdLib.Ifo
StillTime = br.ReadByte();
byte pbMode = br.ReadByte();
if (pbMode == 0) PlaybackMode = ProgramPlaybackMode.Sequential;
else PlaybackMode = ((pbMode & 0x80) == 0) ? ProgramPlaybackMode.Random : ProgramPlaybackMode.Shuffle;
if (pbMode == 0)
{
PlaybackMode = ProgramPlaybackMode.Sequential;
}
else
{
PlaybackMode = ((pbMode & 0x80) == 0) ? ProgramPlaybackMode.Random : ProgramPlaybackMode.Shuffle;
}
ProgramCount = (uint)(pbMode & 0x7F);
Palette = br.ReadBytes(64);

View File

@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System.Collections.Generic;
using System.IO;
@@ -6,8 +8,11 @@ namespace DvdLib.Ifo
public class Title
{
public uint TitleNumber { get; private set; }
public uint AngleCount { get; private set; }
public ushort ChapterCount { get; private set; }
public byte VideoTitleSetNumber { get; private set; }
private ushort _parentalManagementMask;
@@ -15,6 +20,7 @@ namespace DvdLib.Ifo
private uint _vtsStartSector; // relative to start of entire disk
public ProgramChain EntryProgramChain { get; private set; }
public readonly List<ProgramChain> ProgramChains;
public readonly List<Chapter> Chapters;
@@ -53,7 +59,10 @@ namespace DvdLib.Ifo
var pgc = new ProgramChain(pgcNum);
pgc.ParseHeader(br);
ProgramChains.Add(pgc);
if (entryPgc) EntryProgramChain = pgc;
if (entryPgc)
{
EntryProgramChain = pgc;
}
br.BaseStream.Seek(curPos, SeekOrigin.Begin);
}

View File

@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System;
namespace DvdLib.Ifo

View File

@@ -1,7 +1,7 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Text;
using System.Threading.Tasks;
@@ -152,6 +152,7 @@ namespace Emby.Dlna.Api
return _resultFactory.GetStaticResult(Request, cacheKey, null, cacheLength, XMLContentType, () => Task.FromResult<Stream>(new MemoryStream(bytes)));
}
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "request", Justification = "Required for ServiceStack")]
public object Get(GetContentDirectory request)
{
var xml = ContentDirectory.GetServiceXml();
@@ -159,6 +160,7 @@ namespace Emby.Dlna.Api
return _resultFactory.GetResult(Request, xml, XMLContentType);
}
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "request", Justification = "Required for ServiceStack")]
public object Get(GetMediaReceiverRegistrar request)
{
var xml = MediaReceiverRegistrar.GetServiceXml();
@@ -166,6 +168,7 @@ namespace Emby.Dlna.Api
return _resultFactory.GetResult(Request, xml, XMLContentType);
}
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "request", Justification = "Required for ServiceStack")]
public object Get(GetConnnectionManager request)
{
var xml = ConnectionManager.GetServiceXml();
@@ -314,31 +317,37 @@ namespace Emby.Dlna.Api
return _resultFactory.GetStaticResult(Request, cacheKey, null, cacheLength, contentType, () => Task.FromResult(_dlnaManager.GetIcon(request.Filename).Stream));
}
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "request", Justification = "Required for ServiceStack")]
public object Subscribe(ProcessContentDirectoryEventRequest request)
{
return ProcessEventRequest(ContentDirectory);
}
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "request", Justification = "Required for ServiceStack")]
public object Subscribe(ProcessConnectionManagerEventRequest request)
{
return ProcessEventRequest(ConnectionManager);
}
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "request", Justification = "Required for ServiceStack")]
public object Subscribe(ProcessMediaReceiverRegistrarEventRequest request)
{
return ProcessEventRequest(MediaReceiverRegistrar);
}
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "request", Justification = "Required for ServiceStack")]
public object Unsubscribe(ProcessContentDirectoryEventRequest request)
{
return ProcessEventRequest(ContentDirectory);
}
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "request", Justification = "Required for ServiceStack")]
public object Unsubscribe(ProcessConnectionManagerEventRequest request)
{
return ProcessEventRequest(ConnectionManager);
}
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "request", Justification = "Required for ServiceStack")]
public object Unsubscribe(ProcessMediaReceiverRegistrarEventRequest request)
{
return ProcessEventRequest(MediaReceiverRegistrar);

View File

@@ -1,6 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using MediaBrowser.Controller.Dlna;
using MediaBrowser.Controller.Net;
@@ -53,6 +53,7 @@ namespace Emby.Dlna.Api
_dlnaManager = dlnaManager;
}
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "request", Justification = "Required for ServiceStack")]
public object Get(GetProfileInfos request)
{
return _dlnaManager.GetProfileInfos().ToArray();
@@ -63,6 +64,7 @@ namespace Emby.Dlna.Api
return _dlnaManager.GetProfile(request.Id);
}
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "request", Justification = "Required for ServiceStack")]
public object Get(GetDefaultProfile request)
{
return _dlnaManager.GetDefaultProfile();

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
namespace Emby.Dlna.Common
{

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Globalization;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
namespace Emby.Dlna.Common
{

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
namespace Emby.Dlna.Configuration
{

View File

@@ -1,5 +1,5 @@
#nullable enable
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
using Emby.Dlna.Configuration;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Threading.Tasks;
using Emby.Dlna.Service;
@@ -16,7 +15,11 @@ namespace Emby.Dlna.ConnectionManager
private readonly ILogger _logger;
private readonly IServerConfigurationManager _config;
public ConnectionManager(IDlnaManager dlna, IServerConfigurationManager config, ILogger logger, IHttpClient httpClient)
public ConnectionManager(
IDlnaManager dlna,
IServerConfigurationManager config,
ILogger<ConnectionManager> logger,
IHttpClient httpClient)
: base(logger, httpClient)
{
_dlna = dlna;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
using Emby.Dlna.Common;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Generic;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
using Emby.Dlna.Common;

View File

@@ -1,14 +1,15 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Linq;
using System.Threading.Tasks;
using Emby.Dlna.Service;
using Jellyfin.Data.Entities;
using Jellyfin.Data.Enums;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Dlna;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Controller.TV;
@@ -32,13 +33,14 @@ namespace Emby.Dlna.ContentDirectory
private readonly IMediaEncoder _mediaEncoder;
private readonly ITVSeriesManager _tvSeriesManager;
public ContentDirectory(IDlnaManager dlna,
public ContentDirectory(
IDlnaManager dlna,
IUserDataManager userDataManager,
IImageProcessor imageProcessor,
ILibraryManager libraryManager,
IServerConfigurationManager config,
IUserManager userManager,
ILogger logger,
ILogger<ContentDirectory> logger,
IHttpClient httpClient,
ILocalizationManager localization,
IMediaSourceManager mediaSourceManager,
@@ -131,18 +133,13 @@ namespace Emby.Dlna.ContentDirectory
foreach (var user in _userManager.Users)
{
if (user.Policy.IsAdministrator)
if (user.HasPermission(PermissionKind.IsAdministrator))
{
return user;
}
}
foreach (var user in _userManager.Users)
{
return user;
}
return null;
return _userManager.Users.FirstOrDefault();
}
}
}

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
using Emby.Dlna.Common;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Generic;
@@ -11,6 +10,7 @@ using System.Threading;
using System.Xml;
using Emby.Dlna.Didl;
using Emby.Dlna.Service;
using Jellyfin.Data.Entities;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Drawing;
@@ -18,7 +18,6 @@ using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.MediaEncoding;
@@ -29,6 +28,12 @@ using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Globalization;
using MediaBrowser.Model.Querying;
using Microsoft.Extensions.Logging;
using Book = MediaBrowser.Controller.Entities.Book;
using Episode = MediaBrowser.Controller.Entities.TV.Episode;
using Genre = MediaBrowser.Controller.Entities.Genre;
using Movie = MediaBrowser.Controller.Entities.Movies.Movie;
using MusicAlbum = MediaBrowser.Controller.Entities.Audio.MusicAlbum;
using Series = MediaBrowser.Controller.Entities.TV.Series;
namespace Emby.Dlna.ContentDirectory
{
@@ -79,7 +84,18 @@ namespace Emby.Dlna.ContentDirectory
_profile = profile;
_config = config;
_didlBuilder = new DidlBuilder(profile, user, imageProcessor, serverAddress, accessToken, userDataManager, localization, mediaSourceManager, Logger, mediaEncoder);
_didlBuilder = new DidlBuilder(
profile,
user,
imageProcessor,
serverAddress,
accessToken,
userDataManager,
localization,
mediaSourceManager,
Logger,
mediaEncoder,
libraryManager);
}
/// <inheritdoc />
@@ -154,7 +170,7 @@ namespace Emby.Dlna.ContentDirectory
{
var id = sparams["ObjectID"];
var serverItem = GetItemFromObjectId(id, _user);
var serverItem = GetItemFromObjectId(id);
var item = serverItem.Item;
@@ -277,7 +293,7 @@ namespace Emby.Dlna.ContentDirectory
DidlBuilder.WriteXmlRootAttributes(_profile, writer);
var serverItem = GetItemFromObjectId(id, _user);
var serverItem = GetItemFromObjectId(id);
var item = serverItem.Item;
@@ -294,7 +310,7 @@ namespace Emby.Dlna.ContentDirectory
else
{
var dlnaOptions = _config.GetDlnaConfiguration();
_didlBuilder.WriteItemElement(dlnaOptions, writer, item, _user, null, null, deviceId, filter);
_didlBuilder.WriteItemElement(writer, item, _user, null, null, deviceId, filter);
}
provided++;
@@ -321,7 +337,7 @@ namespace Emby.Dlna.ContentDirectory
}
else
{
_didlBuilder.WriteItemElement(dlnaOptions, writer, childItem, _user, item, serverItem.StubType, deviceId, filter);
_didlBuilder.WriteItemElement(writer, childItem, _user, item, serverItem.StubType, deviceId, filter);
}
}
}
@@ -388,7 +404,7 @@ namespace Emby.Dlna.ContentDirectory
DidlBuilder.WriteXmlRootAttributes(_profile, writer);
var serverItem = GetItemFromObjectId(sparams["ContainerID"], _user);
var serverItem = GetItemFromObjectId(sparams["ContainerID"]);
var item = serverItem.Item;
@@ -407,7 +423,7 @@ namespace Emby.Dlna.ContentDirectory
}
else
{
_didlBuilder.WriteItemElement(dlnaOptions, writer, i, _user, item, serverItem.StubType, deviceId, filter);
_didlBuilder.WriteItemElement(writer, i, _user, item, serverItem.StubType, deviceId, filter);
}
}
@@ -450,12 +466,12 @@ namespace Emby.Dlna.ContentDirectory
}
else if (search.SearchType == SearchType.Playlist)
{
//items = items.OfType<Playlist>();
// items = items.OfType<Playlist>();
isFolder = true;
}
else if (search.SearchType == SearchType.MusicAlbum)
{
//items = items.OfType<MusicAlbum>();
// items = items.OfType<MusicAlbum>();
isFolder = true;
}
@@ -513,11 +529,11 @@ namespace Emby.Dlna.ContentDirectory
}
else if (string.Equals(CollectionType.Folders, collectionFolder.CollectionType, StringComparison.OrdinalIgnoreCase))
{
return GetFolders(item, user, stubType, sort, startIndex, limit);
return GetFolders(user, startIndex, limit);
}
else if (string.Equals(CollectionType.LiveTv, collectionFolder.CollectionType, StringComparison.OrdinalIgnoreCase))
{
return GetLiveTvChannels(item, user, stubType, sort, startIndex, limit);
return GetLiveTvChannels(user, sort, startIndex, limit);
}
}
@@ -548,7 +564,7 @@ namespace Emby.Dlna.ContentDirectory
return ToResult(queryResult);
}
private QueryResult<ServerItem> GetLiveTvChannels(BaseItem item, User user, StubType? stubType, SortCriteria sort, int? startIndex, int? limit)
private QueryResult<ServerItem> GetLiveTvChannels(User user, SortCriteria sort, int? startIndex, int? limit)
{
var query = new InternalItemsQuery(user)
{
@@ -580,7 +596,7 @@ namespace Emby.Dlna.ContentDirectory
if (stubType.HasValue && stubType.Value == StubType.Playlists)
{
return GetMusicPlaylists(item, user, query);
return GetMusicPlaylists(user, query);
}
if (stubType.HasValue && stubType.Value == StubType.Albums)
@@ -708,7 +724,7 @@ namespace Emby.Dlna.ContentDirectory
if (stubType.HasValue && stubType.Value == StubType.Collections)
{
return GetMovieCollections(item, user, query);
return GetMovieCollections(user, query);
}
if (stubType.HasValue && stubType.Value == StubType.Favorites)
@@ -721,46 +737,42 @@ namespace Emby.Dlna.ContentDirectory
return GetGenres(item, user, query);
}
var list = new List<ServerItem>();
list.Add(new ServerItem(item)
var array = new[]
{
StubType = StubType.ContinueWatching
});
list.Add(new ServerItem(item)
{
StubType = StubType.Latest
});
list.Add(new ServerItem(item)
{
StubType = StubType.Movies
});
list.Add(new ServerItem(item)
{
StubType = StubType.Collections
});
list.Add(new ServerItem(item)
{
StubType = StubType.Favorites
});
list.Add(new ServerItem(item)
{
StubType = StubType.Genres
});
new ServerItem(item)
{
StubType = StubType.ContinueWatching
},
new ServerItem(item)
{
StubType = StubType.Latest
},
new ServerItem(item)
{
StubType = StubType.Movies
},
new ServerItem(item)
{
StubType = StubType.Collections
},
new ServerItem(item)
{
StubType = StubType.Favorites
},
new ServerItem(item)
{
StubType = StubType.Genres
}
};
return new QueryResult<ServerItem>
{
Items = list,
TotalRecordCount = list.Count
Items = array,
TotalRecordCount = array.Length
};
}
private QueryResult<ServerItem> GetFolders(BaseItem item, User user, StubType? stubType, SortCriteria sort, int? startIndex, int? limit)
private QueryResult<ServerItem> GetFolders(User user, int? startIndex, int? limit)
{
var folders = _libraryManager.GetUserRootFolder().GetChildren(user, true)
.OrderBy(i => i.SortName)
@@ -793,7 +805,7 @@ namespace Emby.Dlna.ContentDirectory
if (stubType.HasValue && stubType.Value == StubType.NextUp)
{
return GetNextUp(item, user, query);
return GetNextUp(item, query);
}
if (stubType.HasValue && stubType.Value == StubType.Latest)
@@ -911,10 +923,10 @@ namespace Emby.Dlna.ContentDirectory
return ToResult(result);
}
private QueryResult<ServerItem> GetMovieCollections(BaseItem parent, User user, InternalItemsQuery query)
private QueryResult<ServerItem> GetMovieCollections(User user, InternalItemsQuery query)
{
query.Recursive = true;
//query.Parent = parent;
// query.Parent = parent;
query.SetUser(user);
query.IncludeItemTypes = new[] { typeof(BoxSet).Name };
@@ -1106,10 +1118,10 @@ namespace Emby.Dlna.ContentDirectory
return ToResult(result);
}
private QueryResult<ServerItem> GetMusicPlaylists(BaseItem parent, User user, InternalItemsQuery query)
private QueryResult<ServerItem> GetMusicPlaylists(User user, InternalItemsQuery query)
{
query.Parent = null;
query.IncludeItemTypes = new[] { typeof(Playlist).Name };
query.IncludeItemTypes = new[] { nameof(Playlist) };
query.SetUser(user);
query.Recursive = true;
@@ -1126,16 +1138,15 @@ namespace Emby.Dlna.ContentDirectory
{
UserId = user.Id,
Limit = 50,
IncludeItemTypes = new[] { typeof(Audio).Name },
ParentId = parent == null ? Guid.Empty : parent.Id,
IncludeItemTypes = new[] { nameof(Audio) },
ParentId = parent?.Id ?? Guid.Empty,
GroupItems = true
}, query.DtoOptions).Select(i => i.Item1 ?? i.Item2.FirstOrDefault()).Where(i => i != null).ToArray();
return ToResult(items);
}
private QueryResult<ServerItem> GetNextUp(BaseItem parent, User user, InternalItemsQuery query)
private QueryResult<ServerItem> GetNextUp(BaseItem parent, InternalItemsQuery query)
{
query.OrderBy = Array.Empty<(string, SortOrder)>();
@@ -1144,7 +1155,6 @@ namespace Emby.Dlna.ContentDirectory
Limit = query.Limit,
StartIndex = query.StartIndex,
UserId = query.User.Id
}, new[] { parent }, query.DtoOptions);
return ToResult(result);
@@ -1161,7 +1171,6 @@ namespace Emby.Dlna.ContentDirectory
IncludeItemTypes = new[] { typeof(Episode).Name },
ParentId = parent == null ? Guid.Empty : parent.Id,
GroupItems = false
}, query.DtoOptions).Select(i => i.Item1 ?? i.Item2.FirstOrDefault()).Where(i => i != null).ToArray();
return ToResult(items);
@@ -1171,14 +1180,14 @@ namespace Emby.Dlna.ContentDirectory
{
query.OrderBy = Array.Empty<(string, SortOrder)>();
var items = _userViewManager.GetLatestItems(new LatestItemsQuery
var items = _userViewManager.GetLatestItems(
new LatestItemsQuery
{
UserId = user.Id,
Limit = 50,
IncludeItemTypes = new[] { typeof(Movie).Name },
ParentId = parent == null ? Guid.Empty : parent.Id,
IncludeItemTypes = new[] { nameof(Movie) },
ParentId = parent?.Id ?? Guid.Empty,
GroupItems = true
}, query.DtoOptions).Select(i => i.Item1 ?? i.Item2.FirstOrDefault()).Where(i => i != null).ToArray();
return ToResult(items);
@@ -1211,7 +1220,11 @@ namespace Emby.Dlna.ContentDirectory
Recursive = true,
ParentId = parentId,
GenreIds = new[] { item.Id },
IncludeItemTypes = new[] { typeof(Movie).Name, typeof(Series).Name },
IncludeItemTypes = new[]
{
nameof(Movie),
nameof(Series)
},
Limit = limit,
StartIndex = startIndex,
DtoOptions = GetDtoOptions()
@@ -1290,15 +1303,15 @@ namespace Emby.Dlna.ContentDirectory
return result;
}
private ServerItem GetItemFromObjectId(string id, User user)
private ServerItem GetItemFromObjectId(string id)
{
return DidlBuilder.IsIdRoot(id)
? new ServerItem(_libraryManager.GetUserRootFolder())
: ParseItemId(id, user);
: ParseItemId(id);
}
private ServerItem ParseItemId(string id, User user)
private ServerItem ParseItemId(string id)
{
StubType? stubType = null;
@@ -1344,6 +1357,7 @@ namespace Emby.Dlna.ContentDirectory
internal class ServerItem
{
public BaseItem Item { get; set; }
public StubType? StubType { get; set; }
public ServerItem(BaseItem item)

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
using Emby.Dlna.Common;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.IO;
using Microsoft.AspNetCore.Http;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Globalization;
@@ -7,14 +6,13 @@ using System.IO;
using System.Linq;
using System.Text;
using System.Xml;
using Emby.Dlna.Configuration;
using Emby.Dlna.ContentDirectory;
using Jellyfin.Data.Entities;
using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Controller.Playlists;
@@ -24,6 +22,13 @@ using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Globalization;
using MediaBrowser.Model.Net;
using Microsoft.Extensions.Logging;
using Episode = MediaBrowser.Controller.Entities.TV.Episode;
using Genre = MediaBrowser.Controller.Entities.Genre;
using Movie = MediaBrowser.Controller.Entities.Movies.Movie;
using MusicAlbum = MediaBrowser.Controller.Entities.Audio.MusicAlbum;
using Season = MediaBrowser.Controller.Entities.TV.Season;
using Series = MediaBrowser.Controller.Entities.TV.Series;
using XmlAttribute = MediaBrowser.Model.Dlna.XmlAttribute;
namespace Emby.Dlna.Didl
{
@@ -46,6 +51,7 @@ namespace Emby.Dlna.Didl
private readonly IMediaSourceManager _mediaSourceManager;
private readonly ILogger _logger;
private readonly IMediaEncoder _mediaEncoder;
private readonly ILibraryManager _libraryManager;
public DidlBuilder(
DeviceProfile profile,
@@ -57,7 +63,8 @@ namespace Emby.Dlna.Didl
ILocalizationManager localization,
IMediaSourceManager mediaSourceManager,
ILogger logger,
IMediaEncoder mediaEncoder)
IMediaEncoder mediaEncoder,
ILibraryManager libraryManager)
{
_profile = profile;
_user = user;
@@ -69,6 +76,7 @@ namespace Emby.Dlna.Didl
_mediaSourceManager = mediaSourceManager;
_logger = logger;
_mediaEncoder = mediaEncoder;
_libraryManager = libraryManager;
}
public static string NormalizeDlnaMediaUrl(string url)
@@ -76,7 +84,7 @@ namespace Emby.Dlna.Didl
return url + "&dlnaheaders=true";
}
public string GetItemDidl(DlnaOptions options, BaseItem item, User user, BaseItem context, string deviceId, Filter filter, StreamInfo streamInfo)
public string GetItemDidl(BaseItem item, User user, BaseItem context, string deviceId, Filter filter, StreamInfo streamInfo)
{
var settings = new XmlWriterSettings
{
@@ -90,21 +98,21 @@ namespace Emby.Dlna.Didl
{
using (var writer = XmlWriter.Create(builder, settings))
{
//writer.WriteStartDocument();
// writer.WriteStartDocument();
writer.WriteStartElement(string.Empty, "DIDL-Lite", NS_DIDL);
writer.WriteAttributeString("xmlns", "dc", null, NS_DC);
writer.WriteAttributeString("xmlns", "dlna", null, NS_DLNA);
writer.WriteAttributeString("xmlns", "upnp", null, NS_UPNP);
//didl.SetAttribute("xmlns:sec", NS_SEC);
// didl.SetAttribute("xmlns:sec", NS_SEC);
WriteXmlRootAttributes(_profile, writer);
WriteItemElement(options, writer, item, user, context, null, deviceId, filter, streamInfo);
WriteItemElement(writer, item, user, context, null, deviceId, filter, streamInfo);
writer.WriteFullEndElement();
//writer.WriteEndDocument();
// writer.WriteEndDocument();
}
return builder.ToString();
@@ -128,7 +136,6 @@ namespace Emby.Dlna.Didl
}
public void WriteItemElement(
DlnaOptions options,
XmlWriter writer,
BaseItem item,
User user,
@@ -165,25 +172,23 @@ namespace Emby.Dlna.Didl
// refID?
// storeAttribute(itemNode, object, ClassProperties.REF_ID, false);
var hasMediaSources = item as IHasMediaSources;
if (hasMediaSources != null)
if (item is IHasMediaSources)
{
if (string.Equals(item.MediaType, MediaType.Audio, StringComparison.OrdinalIgnoreCase))
{
AddAudioResource(options, writer, item, deviceId, filter, streamInfo);
AddAudioResource(writer, item, deviceId, filter, streamInfo);
}
else if (string.Equals(item.MediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase))
{
AddVideoResource(options, writer, item, deviceId, filter, streamInfo);
AddVideoResource(writer, item, deviceId, filter, streamInfo);
}
}
AddCover(item, context, null, writer);
AddCover(item, null, writer);
writer.WriteFullEndElement();
}
private void AddVideoResource(DlnaOptions options, XmlWriter writer, BaseItem video, string deviceId, Filter filter, StreamInfo streamInfo = null)
private void AddVideoResource(XmlWriter writer, BaseItem video, string deviceId, Filter filter, StreamInfo streamInfo = null)
{
if (streamInfo == null)
{
@@ -227,7 +232,7 @@ namespace Emby.Dlna.Didl
foreach (var contentFeature in contentFeatureList)
{
AddVideoResource(writer, video, deviceId, filter, contentFeature, streamInfo);
AddVideoResource(writer, filter, contentFeature, streamInfo);
}
var subtitleProfiles = streamInfo.GetSubtitleProfiles(_mediaEncoder, false, _serverAddress, _accessToken);
@@ -284,7 +289,10 @@ namespace Emby.Dlna.Didl
else
{
writer.WriteStartElement(string.Empty, "res", NS_DIDL);
var protocolInfo = string.Format("http-get:*:text/{0}:*", info.Format.ToLowerInvariant());
var protocolInfo = string.Format(
CultureInfo.InvariantCulture,
"http-get:*:text/{0}:*",
info.Format.ToLowerInvariant());
writer.WriteAttributeString("protocolInfo", protocolInfo);
writer.WriteString(info.Url);
@@ -294,7 +302,7 @@ namespace Emby.Dlna.Didl
return true;
}
private void AddVideoResource(XmlWriter writer, BaseItem video, string deviceId, Filter filter, string contentFeatures, StreamInfo streamInfo)
private void AddVideoResource(XmlWriter writer, Filter filter, string contentFeatures, StreamInfo streamInfo)
{
writer.WriteStartElement(string.Empty, "res", NS_DIDL);
@@ -336,7 +344,13 @@ namespace Emby.Dlna.Didl
{
if (targetWidth.HasValue && targetHeight.HasValue)
{
writer.WriteAttributeString("resolution", string.Format("{0}x{1}", targetWidth.Value, targetHeight.Value));
writer.WriteAttributeString(
"resolution",
string.Format(
CultureInfo.InvariantCulture,
"{0}x{1}",
targetWidth.Value,
targetHeight.Value));
}
}
@@ -370,17 +384,19 @@ namespace Emby.Dlna.Didl
streamInfo.TargetVideoCodecTag,
streamInfo.IsTargetAVC);
var filename = url.Substring(0, url.IndexOf('?'));
var filename = url.Substring(0, url.IndexOf('?', StringComparison.Ordinal));
var mimeType = mediaProfile == null || string.IsNullOrEmpty(mediaProfile.MimeType)
? MimeTypes.GetMimeType(filename)
: mediaProfile.MimeType;
writer.WriteAttributeString("protocolInfo", string.Format(
"http-get:*:{0}:{1}",
mimeType,
contentFeatures
));
writer.WriteAttributeString(
"protocolInfo",
string.Format(
CultureInfo.InvariantCulture,
"http-get:*:{0}:{1}",
mimeType,
contentFeatures));
writer.WriteString(url);
@@ -393,54 +409,121 @@ namespace Emby.Dlna.Didl
{
switch (itemStubType.Value)
{
case StubType.Latest: return _localization.GetLocalizedString("Latest");
case StubType.Playlists: return _localization.GetLocalizedString("Playlists");
case StubType.AlbumArtists: return _localization.GetLocalizedString("HeaderAlbumArtists");
case StubType.Albums: return _localization.GetLocalizedString("Albums");
case StubType.Artists: return _localization.GetLocalizedString("Artists");
case StubType.Songs: return _localization.GetLocalizedString("Songs");
case StubType.Genres: return _localization.GetLocalizedString("Genres");
case StubType.FavoriteAlbums: return _localization.GetLocalizedString("HeaderFavoriteAlbums");
case StubType.FavoriteArtists: return _localization.GetLocalizedString("HeaderFavoriteArtists");
case StubType.FavoriteSongs: return _localization.GetLocalizedString("HeaderFavoriteSongs");
case StubType.Latest: return _localization.GetLocalizedString("Latest");
case StubType.Playlists: return _localization.GetLocalizedString("Playlists");
case StubType.AlbumArtists: return _localization.GetLocalizedString("HeaderAlbumArtists");
case StubType.Albums: return _localization.GetLocalizedString("Albums");
case StubType.Artists: return _localization.GetLocalizedString("Artists");
case StubType.Songs: return _localization.GetLocalizedString("Songs");
case StubType.Genres: return _localization.GetLocalizedString("Genres");
case StubType.FavoriteAlbums: return _localization.GetLocalizedString("HeaderFavoriteAlbums");
case StubType.FavoriteArtists: return _localization.GetLocalizedString("HeaderFavoriteArtists");
case StubType.FavoriteSongs: return _localization.GetLocalizedString("HeaderFavoriteSongs");
case StubType.ContinueWatching: return _localization.GetLocalizedString("HeaderContinueWatching");
case StubType.Movies: return _localization.GetLocalizedString("Movies");
case StubType.Collections: return _localization.GetLocalizedString("Collections");
case StubType.Favorites: return _localization.GetLocalizedString("Favorites");
case StubType.NextUp: return _localization.GetLocalizedString("HeaderNextUp");
case StubType.FavoriteSeries: return _localization.GetLocalizedString("HeaderFavoriteShows");
case StubType.Movies: return _localization.GetLocalizedString("Movies");
case StubType.Collections: return _localization.GetLocalizedString("Collections");
case StubType.Favorites: return _localization.GetLocalizedString("Favorites");
case StubType.NextUp: return _localization.GetLocalizedString("HeaderNextUp");
case StubType.FavoriteSeries: return _localization.GetLocalizedString("HeaderFavoriteShows");
case StubType.FavoriteEpisodes: return _localization.GetLocalizedString("HeaderFavoriteEpisodes");
case StubType.Series: return _localization.GetLocalizedString("Shows");
default: break;
case StubType.Series: return _localization.GetLocalizedString("Shows");
}
}
if (item is Episode episode && context is Season season)
{
// This is a special embedded within a season
if (item.ParentIndexNumber.HasValue && item.ParentIndexNumber.Value == 0
&& season.IndexNumber.HasValue && season.IndexNumber.Value != 0)
{
return string.Format(_localization.GetLocalizedString("ValueSpecialEpisodeName"), item.Name);
}
if (item.IndexNumber.HasValue)
{
var number = item.IndexNumber.Value.ToString("00", CultureInfo.InvariantCulture);
if (episode.IndexNumberEnd.HasValue)
{
number += "-" + episode.IndexNumberEnd.Value.ToString("00", CultureInfo.InvariantCulture);
}
return number + " - " + item.Name;
}
}
return item.Name;
return item is Episode episode
? GetEpisodeDisplayName(episode, context)
: item.Name;
}
private void AddAudioResource(DlnaOptions options, XmlWriter writer, BaseItem audio, string deviceId, Filter filter, StreamInfo streamInfo = null)
/// <summary>
/// Gets episode display name appropriate for the given context.
/// </summary>
/// <remarks>
/// If context is a season, this will return a string containing just episode number and name.
/// Otherwise the result will include series nams and season number.
/// </remarks>
/// <param name="episode">The episode.</param>
/// <param name="context">Current context.</param>
/// <returns>Formatted name of the episode.</returns>
private string GetEpisodeDisplayName(Episode episode, BaseItem context)
{
string[] components;
if (context is Season season)
{
// This is a special embedded within a season
if (episode.ParentIndexNumber.HasValue && episode.ParentIndexNumber.Value == 0
&& season.IndexNumber.HasValue && season.IndexNumber.Value != 0)
{
return string.Format(
CultureInfo.InvariantCulture,
_localization.GetLocalizedString("ValueSpecialEpisodeName"),
episode.Name);
}
// inside a season use simple format (ex. '12 - Episode Name')
var epNumberName = GetEpisodeIndexFullName(episode);
components = new[] { epNumberName, episode.Name };
}
else
{
// outside a season include series and season details (ex. 'TV Show - S05E11 - Episode Name')
var epNumberName = GetEpisodeNumberDisplayName(episode);
components = new[] { episode.SeriesName, epNumberName, episode.Name };
}
return string.Join(" - ", components.Where(NotNullOrWhiteSpace));
}
/// <summary>
/// Gets complete episode number.
/// </summary>
/// <param name="episode">The episode.</param>
/// <returns>For single episodes returns just the number. For double episodes - current and ending numbers.</returns>
private string GetEpisodeIndexFullName(Episode episode)
{
var name = string.Empty;
if (episode.IndexNumber.HasValue)
{
name += episode.IndexNumber.Value.ToString("00", CultureInfo.InvariantCulture);
if (episode.IndexNumberEnd.HasValue)
{
name += "-" + episode.IndexNumberEnd.Value.ToString("00", CultureInfo.InvariantCulture);
}
}
return name;
}
/// <summary>
/// Gets episode number formatted as 'S##E##'.
/// </summary>
/// <param name="episode">The episode.</param>
/// <returns>Formatted episode number.</returns>
private string GetEpisodeNumberDisplayName(Episode episode)
{
var name = string.Empty;
var seasonNumber = episode.Season?.IndexNumber;
if (seasonNumber.HasValue)
{
name = "S" + seasonNumber.Value.ToString("00", CultureInfo.InvariantCulture);
}
var indexName = GetEpisodeIndexFullName(episode);
if (!string.IsNullOrWhiteSpace(indexName))
{
name += "E" + indexName;
}
return name;
}
private bool NotNullOrWhiteSpace(string s) => !string.IsNullOrWhiteSpace(s);
private void AddAudioResource(XmlWriter writer, BaseItem audio, string deviceId, Filter filter, StreamInfo streamInfo = null)
{
writer.WriteStartElement(string.Empty, "res", NS_DIDL);
@@ -506,7 +589,7 @@ namespace Emby.Dlna.Didl
targetSampleRate,
targetAudioBitDepth);
var filename = url.Substring(0, url.IndexOf('?'));
var filename = url.Substring(0, url.IndexOf('?', StringComparison.Ordinal));
var mimeType = mediaProfile == null || string.IsNullOrEmpty(mediaProfile.MimeType)
? MimeTypes.GetMimeType(filename)
@@ -522,11 +605,13 @@ namespace Emby.Dlna.Didl
streamInfo.RunTimeTicks ?? 0,
streamInfo.TranscodeSeekInfo);
writer.WriteAttributeString("protocolInfo", string.Format(
"http-get:*:{0}:{1}",
mimeType,
contentFeatures
));
writer.WriteAttributeString(
"protocolInfo",
string.Format(
CultureInfo.InvariantCulture,
"http-get:*:{0}:{1}",
mimeType,
contentFeatures));
writer.WriteString(url);
@@ -549,7 +634,7 @@ namespace Emby.Dlna.Didl
var clientId = GetClientId(folder, stubType);
if (string.Equals(requestedId, "0"))
if (string.Equals(requestedId, "0", StringComparison.Ordinal))
{
writer.WriteAttributeString("id", "0");
writer.WriteAttributeString("parentID", "-1");
@@ -578,7 +663,7 @@ namespace Emby.Dlna.Didl
AddGeneralProperties(folder, stubType, context, writer, filter);
AddCover(folder, context, stubType, writer);
AddCover(folder, stubType, writer);
writer.WriteFullEndElement();
}
@@ -590,7 +675,7 @@ namespace Emby.Dlna.Didl
return;
}
MediaBrowser.Model.Dlna.XmlAttribute secAttribute = null;
XmlAttribute secAttribute = null;
foreach (var attribute in _profile.XmlRootAttributes)
{
if (string.Equals(attribute.Name, "xmlns:sec", StringComparison.OrdinalIgnoreCase))
@@ -611,19 +696,22 @@ namespace Emby.Dlna.Didl
if (playbackPositionTicks > 0)
{
var elementValue = string.Format("BM={0}", Convert.ToInt32(TimeSpan.FromTicks(playbackPositionTicks).TotalSeconds).ToString(_usCulture));
var elementValue = string.Format(
CultureInfo.InvariantCulture,
"BM={0}",
Convert.ToInt32(TimeSpan.FromTicks(playbackPositionTicks).TotalSeconds));
AddValue(writer, "sec", "dcmInfo", elementValue, secAttribute.Value);
}
}
/// <summary>
/// Adds fields used by both items and folders
/// Adds fields used by both items and folders.
/// </summary>
private void AddCommonFields(BaseItem item, StubType? itemStubType, BaseItem context, XmlWriter writer, Filter filter)
{
// Don't filter on dc:title because not all devices will include it in the filter
// MediaMonkey for example won't display content without a title
//if (filter.Contains("dc:title"))
// if (filter.Contains("dc:title"))
{
AddValue(writer, "dc", "title", GetDisplayName(item, itemStubType, context), NS_DC);
}
@@ -662,7 +750,7 @@ namespace Emby.Dlna.Didl
AddValue(writer, "dc", "description", desc, NS_DC);
}
}
//if (filter.Contains("upnp:longDescription"))
// if (filter.Contains("upnp:longDescription"))
//{
// if (!string.IsNullOrWhiteSpace(item.Overview))
// {
@@ -677,6 +765,7 @@ namespace Emby.Dlna.Didl
{
AddValue(writer, "dc", "rating", item.OfficialRating, NS_DC);
}
if (filter.Contains("upnp:rating"))
{
AddValue(writer, "upnp", "rating", item.OfficialRating, NS_UPNP);
@@ -764,37 +853,36 @@ namespace Emby.Dlna.Didl
private void AddPeople(BaseItem item, XmlWriter writer)
{
//var types = new[]
//{
// PersonType.Director,
// PersonType.Writer,
// PersonType.Producer,
// PersonType.Composer,
// "Creator"
//};
if (!item.SupportsPeople)
{
return;
}
//var people = _libraryManager.GetPeople(item);
var types = new[]
{
PersonType.Director,
PersonType.Writer,
PersonType.Producer,
PersonType.Composer,
"creator"
};
//var index = 0;
// Seeing some LG models locking up due content with large lists of people
// The actual issue might just be due to processing a more metadata than it can handle
var people = _libraryManager.GetPeople(
new InternalPeopleQuery
{
ItemId = item.Id,
Limit = 6
});
//// Seeing some LG models locking up due content with large lists of people
//// The actual issue might just be due to processing a more metadata than it can handle
//var limit = 6;
foreach (var actor in people)
{
var type = types.FirstOrDefault(i => string.Equals(i, actor.Type, StringComparison.OrdinalIgnoreCase) || string.Equals(i, actor.Role, StringComparison.OrdinalIgnoreCase))
?? PersonType.Actor;
//foreach (var actor in people)
//{
// var type = types.FirstOrDefault(i => string.Equals(i, actor.Type, StringComparison.OrdinalIgnoreCase) || string.Equals(i, actor.Role, StringComparison.OrdinalIgnoreCase))
// ?? PersonType.Actor;
// AddValue(writer, "upnp", type.ToLowerInvariant(), actor.Name, NS_UPNP);
// index++;
// if (index >= limit)
// {
// break;
// }
//}
AddValue(writer, "upnp", type.ToLowerInvariant(), actor.Name, NS_UPNP);
}
}
private void AddGeneralProperties(BaseItem item, StubType? itemStubType, BaseItem context, XmlWriter writer, Filter filter)
@@ -871,7 +959,7 @@ namespace Emby.Dlna.Didl
}
}
private void AddCover(BaseItem item, BaseItem context, StubType? stubType, XmlWriter writer)
private void AddCover(BaseItem item, StubType? stubType, XmlWriter writer)
{
ImageDownloadInfo imageInfo = GetImageInfo(item);
@@ -913,20 +1001,10 @@ namespace Emby.Dlna.Didl
}
AddImageResElement(item, writer, 160, 160, "jpg", "JPEG_TN");
}
private void AddEmbeddedImageAsCover(string name, XmlWriter writer)
{
writer.WriteStartElement("upnp", "albumArtURI", NS_UPNP);
writer.WriteAttributeString("dlna", "profileID", NS_DLNA, _profile.AlbumArtPn);
writer.WriteString(_serverAddress + "/Dlna/icons/people480.jpg");
writer.WriteFullEndElement();
writer.WriteElementString("upnp", "icon", NS_UPNP, _serverAddress + "/Dlna/icons/people48.jpg");
}
private void AddImageResElement(BaseItem item,
private void AddImageResElement(
BaseItem item,
XmlWriter writer,
int maxWidth,
int maxHeight,
@@ -952,13 +1030,17 @@ namespace Emby.Dlna.Didl
var contentFeatures = new ContentFeatureBuilder(_profile)
.BuildImageHeader(format, width, height, imageInfo.IsDirectStream, org_Pn);
writer.WriteAttributeString("protocolInfo", string.Format(
"http-get:*:{0}:{1}",
MimeTypes.GetMimeType("file." + format),
contentFeatures
));
writer.WriteAttributeString(
"protocolInfo",
string.Format(
CultureInfo.InvariantCulture,
"http-get:*:{0}:{1}",
MimeTypes.GetMimeType("file." + format),
contentFeatures));
writer.WriteAttributeString("resolution", string.Format("{0}x{1}", width, height));
writer.WriteAttributeString(
"resolution",
string.Format(CultureInfo.InvariantCulture, "{0}x{1}", width, height));
writer.WriteString(albumartUrlInfo.Url);
@@ -971,10 +1053,12 @@ namespace Emby.Dlna.Didl
{
return GetImageInfo(item, ImageType.Primary);
}
if (item.HasImage(ImageType.Thumb))
{
return GetImageInfo(item, ImageType.Thumb);
}
if (item.HasImage(ImageType.Backdrop))
{
if (item is Channel)
@@ -983,19 +1067,58 @@ namespace Emby.Dlna.Didl
}
}
item = item.GetParents().FirstOrDefault(i => i.HasImage(ImageType.Primary));
if (item != null)
// For audio tracks without art use album art if available.
if (item is Audio audioItem)
{
if (item.HasImage(ImageType.Primary))
{
return GetImageInfo(item, ImageType.Primary);
}
var album = audioItem.AlbumEntity;
return album != null && album.HasImage(ImageType.Primary)
? GetImageInfo(album, ImageType.Primary)
: null;
}
// Don't look beyond album/playlist level. Metadata service may assign an image from a different album/show to the parent folder.
if (item is MusicAlbum || item is Playlist)
{
return null;
}
// For other item types check parents, but be aware that image retrieved from a parent may be not suitable for this media item.
var parentWithImage = GetFirstParentWithImageBelowUserRoot(item);
if (parentWithImage != null)
{
return GetImageInfo(parentWithImage, ImageType.Primary);
}
return null;
}
private BaseItem GetFirstParentWithImageBelowUserRoot(BaseItem item)
{
if (item == null)
{
return null;
}
if (item.HasImage(ImageType.Primary))
{
return item;
}
var parent = item.GetParent();
if (parent is UserRootFolder)
{
return null;
}
// terminate in case we went past user root folder (unlikely?)
if (parent is Folder folder && folder.IsRoot)
{
return null;
}
return GetFirstParentWithImageBelowUserRoot(parent);
}
private ImageDownloadInfo GetImageInfo(BaseItem item, ImageType type)
{
var imageInfo = item.GetImageInfo(type, 0);
@@ -1015,25 +1138,24 @@ namespace Emby.Dlna.Didl
if (width == 0 || height == 0)
{
//_imageProcessor.GetImageSize(item, imageInfo);
// _imageProcessor.GetImageSize(item, imageInfo);
width = null;
height = null;
}
else if (width == -1 || height == -1)
{
width = null;
height = null;
}
//try
// try
//{
// var size = _imageProcessor.GetImageSize(imageInfo);
// width = size.Width;
// height = size.Height;
//}
//catch
// catch
//{
//}
@@ -1097,7 +1219,9 @@ namespace Emby.Dlna.Didl
private ImageUrlInfo GetImageUrl(ImageDownloadInfo info, int maxWidth, int maxHeight, string format)
{
var url = string.Format("{0}/Items/{1}/Images/{2}/0/{3}/{4}/{5}/{6}/0/0",
var url = string.Format(
CultureInfo.InvariantCulture,
"{0}/Items/{1}/Images/{2}/0/{3}/{4}/{5}/{6}/0/0",
_serverAddress,
info.ItemId.ToString("N", CultureInfo.InvariantCulture),
info.Type,

View File

@@ -1,8 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using MediaBrowser.Model.Extensions;
namespace Emby.Dlna.Didl
{
@@ -14,7 +12,6 @@ namespace Emby.Dlna.Didl
public Filter()
: this("*")
{
}
public Filter(string filter)
@@ -28,7 +25,7 @@ namespace Emby.Dlna.Didl
{
// Don't bother with this. Some clients (media monkey) use the filter and then don't display very well when very little data comes back.
return true;
//return _all || ListHelper.ContainsIgnoreCase(_fields, field);
// return _all || ListHelper.ContainsIgnoreCase(_fields, field);
}
}
}

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.IO;
@@ -54,6 +53,6 @@ namespace Emby.Dlna.Didl
_encoding = encoding;
}
public override Encoding Encoding => (null == _encoding) ? base.Encoding : _encoding;
public override Encoding Encoding => _encoding ?? base.Encoding;
}
}

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Generic;
@@ -32,7 +31,7 @@ namespace Emby.Dlna
private readonly IApplicationPaths _appPaths;
private readonly IXmlSerializer _xmlSerializer;
private readonly IFileSystem _fileSystem;
private readonly ILogger _logger;
private readonly ILogger<DlnaManager> _logger;
private readonly IJsonSerializer _jsonSerializer;
private readonly IServerApplicationHost _appHost;
private static readonly Assembly _assembly = typeof(DlnaManager).Assembly;
@@ -50,7 +49,7 @@ namespace Emby.Dlna
_xmlSerializer = xmlSerializer;
_fileSystem = fileSystem;
_appPaths = appPaths;
_logger = loggerFactory.CreateLogger("Dlna");
_logger = loggerFactory.CreateLogger<DlnaManager>();
_jsonSerializer = jsonSerializer;
_appHost = appHost;
}
@@ -89,7 +88,6 @@ namespace Emby.Dlna
.Select(i => i.Item2)
.ToList();
}
}
public DeviceProfile GetDefaultProfile()
@@ -142,55 +140,73 @@ namespace Emby.Dlna
if (!string.IsNullOrEmpty(profileInfo.DeviceDescription))
{
if (deviceInfo.DeviceDescription == null || !IsRegexMatch(deviceInfo.DeviceDescription, profileInfo.DeviceDescription))
{
return false;
}
}
if (!string.IsNullOrEmpty(profileInfo.FriendlyName))
{
if (deviceInfo.FriendlyName == null || !IsRegexMatch(deviceInfo.FriendlyName, profileInfo.FriendlyName))
{
return false;
}
}
if (!string.IsNullOrEmpty(profileInfo.Manufacturer))
{
if (deviceInfo.Manufacturer == null || !IsRegexMatch(deviceInfo.Manufacturer, profileInfo.Manufacturer))
{
return false;
}
}
if (!string.IsNullOrEmpty(profileInfo.ManufacturerUrl))
{
if (deviceInfo.ManufacturerUrl == null || !IsRegexMatch(deviceInfo.ManufacturerUrl, profileInfo.ManufacturerUrl))
{
return false;
}
}
if (!string.IsNullOrEmpty(profileInfo.ModelDescription))
{
if (deviceInfo.ModelDescription == null || !IsRegexMatch(deviceInfo.ModelDescription, profileInfo.ModelDescription))
{
return false;
}
}
if (!string.IsNullOrEmpty(profileInfo.ModelName))
{
if (deviceInfo.ModelName == null || !IsRegexMatch(deviceInfo.ModelName, profileInfo.ModelName))
{
return false;
}
}
if (!string.IsNullOrEmpty(profileInfo.ModelNumber))
{
if (deviceInfo.ModelNumber == null || !IsRegexMatch(deviceInfo.ModelNumber, profileInfo.ModelNumber))
{
return false;
}
}
if (!string.IsNullOrEmpty(profileInfo.ModelUrl))
{
if (deviceInfo.ModelUrl == null || !IsRegexMatch(deviceInfo.ModelUrl, profileInfo.ModelUrl))
{
return false;
}
}
if (!string.IsNullOrEmpty(profileInfo.SerialNumber))
{
if (deviceInfo.SerialNumber == null || !IsRegexMatch(deviceInfo.SerialNumber, profileInfo.SerialNumber))
{
return false;
}
}
return true;
@@ -252,7 +268,7 @@ namespace Emby.Dlna
return string.Equals(value, header.Value, StringComparison.OrdinalIgnoreCase);
case HeaderMatchType.Substring:
var isMatch = value.ToString().IndexOf(header.Value, StringComparison.OrdinalIgnoreCase) != -1;
//_logger.LogDebug("IsMatch-Substring value: {0} testValue: {1} isMatch: {2}", value, header.Value, isMatch);
// _logger.LogDebug("IsMatch-Substring value: {0} testValue: {1} isMatch: {2}", value, header.Value, isMatch);
return isMatch;
case HeaderMatchType.Regex:
return Regex.IsMatch(value, header.Value, RegexOptions.IgnoreCase);
@@ -440,6 +456,7 @@ namespace Emby.Dlna
{
throw new ArgumentException("Profile is missing Id");
}
if (string.IsNullOrEmpty(profile.Name))
{
throw new ArgumentException("Profile is missing Name");
@@ -465,6 +482,7 @@ namespace Emby.Dlna
{
_profiles[path] = new Tuple<InternalProfileInfo, DeviceProfile>(GetInternalProfileInfo(_fileSystem.GetFileInfo(path), type), profile);
}
SerializeToXml(profile, path);
}
@@ -475,7 +493,7 @@ namespace Emby.Dlna
/// <summary>
/// Recreates the object using serialization, to ensure it's not a subclass.
/// If it's a subclass it may not serlialize properly to xml (different root element tag name)
/// If it's a subclass it may not serlialize properly to xml (different root element tag name).
/// </summary>
/// <param name="profile"></param>
/// <returns></returns>
@@ -494,6 +512,7 @@ namespace Emby.Dlna
class InternalProfileInfo
{
internal DeviceProfileInfo Info { get; set; }
internal string Path { get; set; }
}
@@ -567,9 +586,9 @@ namespace Emby.Dlna
new Foobar2000Profile(),
new SharpSmartTvProfile(),
new MediaMonkeyProfile(),
//new Windows81Profile(),
//new WindowsMediaCenterProfile(),
//new WindowsPhoneProfile(),
// new Windows81Profile(),
// new WindowsMediaCenterProfile(),
// new WindowsPhoneProfile(),
new DirectTvProfile(),
new DishHopperJoeyProfile(),
new DefaultProfile(),

View File

@@ -1,5 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<!-- ProjectGuid is only included as a requirement for SonarQube analysis -->
<PropertyGroup>
<ProjectGuid>{805844AB-E92F-45E6-9D99-4F6D48D129A5}</ProjectGuid>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\SharedVersion.cs" />
</ItemGroup>

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Concurrent;
@@ -32,18 +31,26 @@ namespace Emby.Dlna.Eventing
public EventSubscriptionResponse RenewEventSubscription(string subscriptionId, string notificationType, string requestedTimeoutString, string callbackUrl)
{
var subscription = GetSubscription(subscriptionId, false);
if (subscription != null)
{
subscription.TimeoutSeconds = ParseTimeout(requestedTimeoutString) ?? 300;
int timeoutSeconds = subscription.TimeoutSeconds;
subscription.SubscriptionTime = DateTime.UtcNow;
subscription.TimeoutSeconds = ParseTimeout(requestedTimeoutString) ?? 300;
int timeoutSeconds = subscription.TimeoutSeconds;
subscription.SubscriptionTime = DateTime.UtcNow;
_logger.LogDebug(
"Renewing event subscription for {0} with timeout of {1} to {2}",
subscription.NotificationType,
timeoutSeconds,
subscription.CallbackUrl);
_logger.LogDebug(
"Renewing event subscription for {0} with timeout of {1} to {2}",
subscription.NotificationType,
timeoutSeconds,
subscription.CallbackUrl);
return GetEventSubscriptionResponse(subscriptionId, requestedTimeoutString, timeoutSeconds);
}
return GetEventSubscriptionResponse(subscriptionId, requestedTimeoutString, timeoutSeconds);
return new EventSubscriptionResponse
{
Content = string.Empty,
ContentType = "text/plain"
};
}
public EventSubscriptionResponse CreateEventSubscription(string notificationType, string requestedTimeoutString, string callbackUrl)
@@ -151,6 +158,7 @@ namespace Emby.Dlna.Eventing
builder.Append("</" + key + ">");
builder.Append("</e:property>");
}
builder.Append("</e:propertyset>");
var options = new HttpRequestOptions
@@ -170,7 +178,6 @@ namespace Emby.Dlna.Eventing
{
using (await _httpClient.SendAsync(options, new HttpMethod("NOTIFY")).ConfigureAwait(false))
{
}
}
catch (OperationCanceledException)

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
@@ -8,10 +7,13 @@ namespace Emby.Dlna.Eventing
public class EventSubscription
{
public string Id { get; set; }
public string CallbackUrl { get; set; }
public string NotificationType { get; set; }
public DateTime SubscriptionTime { get; set; }
public int TimeoutSeconds { get; set; }
public long TriggerCount { get; set; }

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
namespace Emby.Dlna
{

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
namespace Emby.Dlna
{

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
namespace Emby.Dlna
{

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
namespace Emby.Dlna
{

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Threading.Tasks;

View File

@@ -1,9 +1,8 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Net.Sockets;
using System.Globalization;
using System.Net.Sockets;
using System.Threading;
using System.Threading.Tasks;
using Emby.Dlna.PlayTo;
@@ -27,17 +26,15 @@ using MediaBrowser.Model.System;
using Microsoft.Extensions.Logging;
using Rssdp;
using Rssdp.Infrastructure;
using OperatingSystem = MediaBrowser.Common.System.OperatingSystem;
using OperatingSystem = MediaBrowser.Common.System.OperatingSystem;
namespace Emby.Dlna.Main
{
public class DlnaEntryPoint : IServerEntryPoint, IRunBeforeStartup
{
private readonly IServerConfigurationManager _config;
private readonly ILogger _logger;
private readonly ILogger<DlnaEntryPoint> _logger;
private readonly IServerApplicationHost _appHost;
private PlayToManager _manager;
private readonly ISessionManager _sessionManager;
private readonly IHttpClient _httpClient;
private readonly ILibraryManager _libraryManager;
@@ -48,23 +45,25 @@ namespace Emby.Dlna.Main
private readonly ILocalizationManager _localization;
private readonly IMediaSourceManager _mediaSourceManager;
private readonly IMediaEncoder _mediaEncoder;
private readonly IDeviceDiscovery _deviceDiscovery;
private SsdpDevicePublisher _Publisher;
private readonly ISocketFactory _socketFactory;
private readonly INetworkManager _networkManager;
private readonly object _syncLock = new object();
private PlayToManager _manager;
private SsdpDevicePublisher _publisher;
private ISsdpCommunicationsServer _communicationsServer;
internal IContentDirectory ContentDirectory { get; private set; }
internal IConnectionManager ConnectionManager { get; private set; }
internal IMediaReceiverRegistrar MediaReceiverRegistrar { get; private set; }
public static DlnaEntryPoint Current;
public DlnaEntryPoint(IServerConfigurationManager config,
public DlnaEntryPoint(
IServerConfigurationManager config,
ILoggerFactory loggerFactory,
IServerApplicationHost appHost,
ISessionManager sessionManager,
@@ -98,7 +97,7 @@ namespace Emby.Dlna.Main
_mediaEncoder = mediaEncoder;
_socketFactory = socketFactory;
_networkManager = networkManager;
_logger = loggerFactory.CreateLogger("Dlna");
_logger = loggerFactory.CreateLogger<DlnaEntryPoint>();
ContentDirectory = new ContentDirectory.ContentDirectory(
dlnaManager,
@@ -107,7 +106,7 @@ namespace Emby.Dlna.Main
libraryManager,
config,
userManager,
_logger,
loggerFactory.CreateLogger<ContentDirectory.ContentDirectory>(),
httpClient,
localizationManager,
mediaSourceManager,
@@ -115,9 +114,16 @@ namespace Emby.Dlna.Main
mediaEncoder,
tvSeriesManager);
ConnectionManager = new ConnectionManager.ConnectionManager(dlnaManager, config, _logger, httpClient);
ConnectionManager = new ConnectionManager.ConnectionManager(
dlnaManager,
config,
loggerFactory.CreateLogger<ConnectionManager.ConnectionManager>(),
httpClient);
MediaReceiverRegistrar = new MediaReceiverRegistrar.MediaReceiverRegistrar(_logger, httpClient, config);
MediaReceiverRegistrar = new MediaReceiverRegistrar.MediaReceiverRegistrar(
loggerFactory.CreateLogger<MediaReceiverRegistrar.MediaReceiverRegistrar>(),
httpClient,
config);
Current = this;
}
@@ -125,20 +131,20 @@ namespace Emby.Dlna.Main
{
await ((DlnaManager)_dlnaManager).InitProfilesAsync().ConfigureAwait(false);
ReloadComponents();
await ReloadComponents().ConfigureAwait(false);
_config.NamedConfigurationUpdated += _config_NamedConfigurationUpdated;
_config.NamedConfigurationUpdated += OnNamedConfigurationUpdated;
}
void _config_NamedConfigurationUpdated(object sender, ConfigurationUpdateEventArgs e)
private async void OnNamedConfigurationUpdated(object sender, ConfigurationUpdateEventArgs e)
{
if (string.Equals(e.Key, "dlna", StringComparison.OrdinalIgnoreCase))
{
ReloadComponents();
await ReloadComponents().ConfigureAwait(false);
}
}
private async void ReloadComponents()
private async Task ReloadComponents()
{
var options = _config.GetDlnaConfiguration();
@@ -172,7 +178,7 @@ namespace Emby.Dlna.Main
var enableMultiSocketBinding = OperatingSystem.Id == OperatingSystemId.Windows ||
OperatingSystem.Id == OperatingSystemId.Linux;
_communicationsServer = new SsdpCommunicationsServer(_config, _socketFactory, _networkManager, _logger, enableMultiSocketBinding)
_communicationsServer = new SsdpCommunicationsServer(_socketFactory, _networkManager, _logger, enableMultiSocketBinding)
{
IsShared = true
};
@@ -223,20 +229,22 @@ namespace Emby.Dlna.Main
return;
}
if (_Publisher != null)
if (_publisher != null)
{
return;
}
try
{
_Publisher = new SsdpDevicePublisher(_communicationsServer, _networkManager, OperatingSystem.Name, Environment.OSVersion.VersionString, _config.GetDlnaConfiguration().SendOnlyMatchedHost);
_Publisher.LogFunction = LogMessage;
_Publisher.SupportPnpRootDevice = false;
_publisher = new SsdpDevicePublisher(_communicationsServer, _networkManager, OperatingSystem.Name, Environment.OSVersion.VersionString, _config.GetDlnaConfiguration().SendOnlyMatchedHost)
{
LogFunction = LogMessage,
SupportPnpRootDevice = false
};
await RegisterServerEndpoints().ConfigureAwait(false);
_Publisher.StartBroadcastingAliveMessages(TimeSpan.FromSeconds(options.BlastAliveMessageIntervalSeconds));
_publisher.StartBroadcastingAliveMessages(TimeSpan.FromSeconds(options.BlastAliveMessageIntervalSeconds));
}
catch (Exception ex)
{
@@ -254,8 +262,14 @@ namespace Emby.Dlna.Main
{
if (address.AddressFamily == AddressFamily.InterNetworkV6)
{
// Not support IPv6 right now
continue;
// Not supporting IPv6 right now
continue;
}
// Limit to LAN addresses only
if (!_networkManager.IsAddressInSubnets(address, true, true))
{
continue;
}
var fullService = "urn:schemas-upnp-org:device:MediaServer:1";
@@ -267,7 +281,7 @@ namespace Emby.Dlna.Main
var device = new SsdpRootDevice
{
CacheLifetime = TimeSpan.FromSeconds(1800), //How long SSDP clients can cache this info.
CacheLifetime = TimeSpan.FromSeconds(1800), // How long SSDP clients can cache this info.
Location = uri, // Must point to the URL that serves your devices UPnP description document.
Address = address,
SubnetMask = _networkManager.GetLocalIpSubnetMask(address),
@@ -279,13 +293,13 @@ namespace Emby.Dlna.Main
};
SetProperies(device, fullService);
_Publisher.AddDevice(device);
_publisher.AddDevice(device);
var embeddedDevices = new[]
{
"urn:schemas-upnp-org:service:ContentDirectory:1",
"urn:schemas-upnp-org:service:ConnectionManager:1",
//"urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1"
// "urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1"
};
foreach (var subDevice in embeddedDevices)
@@ -311,12 +325,13 @@ namespace Emby.Dlna.Main
{
guid = text.GetMD5();
}
return guid.ToString("N", CultureInfo.InvariantCulture);
}
private void SetProperies(SsdpDevice device, string fullDeviceType)
{
var service = fullDeviceType.Replace("urn:", string.Empty).Replace(":1", string.Empty);
var service = fullDeviceType.Replace("urn:", string.Empty, StringComparison.OrdinalIgnoreCase).Replace(":1", string.Empty, StringComparison.OrdinalIgnoreCase);
var serviceParts = service.Split(':');
@@ -327,7 +342,6 @@ namespace Emby.Dlna.Main
device.DeviceType = serviceParts[2];
}
private readonly object _syncLock = new object();
private void StartPlayToManager()
{
lock (_syncLock)
@@ -339,7 +353,8 @@ namespace Emby.Dlna.Main
try
{
_manager = new PlayToManager(_logger,
_manager = new PlayToManager(
_logger,
_sessionManager,
_libraryManager,
_userManager,
@@ -378,6 +393,7 @@ namespace Emby.Dlna.Main
{
_logger.LogError(ex, "Error disposing PlayTo manager");
}
_manager = null;
}
}
@@ -404,11 +420,11 @@ namespace Emby.Dlna.Main
public void DisposeDevicePublisher()
{
if (_Publisher != null)
if (_publisher != null)
{
_logger.LogInformation("Disposing SsdpDevicePublisher");
_Publisher.Dispose();
_Publisher = null;
_publisher.Dispose();
_publisher = null;
}
}
}

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Generic;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Threading.Tasks;
using Emby.Dlna.Service;
@@ -13,7 +12,10 @@ namespace Emby.Dlna.MediaReceiverRegistrar
{
private readonly IServerConfigurationManager _config;
public MediaReceiverRegistrar(ILogger logger, IHttpClient httpClient, IServerConfigurationManager config)
public MediaReceiverRegistrar(
ILogger<MediaReceiverRegistrar> logger,
IHttpClient httpClient,
IServerConfigurationManager config)
: base(logger, httpClient)
{
_config = config;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
using Emby.Dlna.Common;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
using Emby.Dlna.Common;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Generic;
@@ -20,8 +19,6 @@ namespace Emby.Dlna.PlayTo
{
public class Device : IDisposable
{
#region Fields & Properties
private Timer _timer;
public DeviceInfo Properties { get; set; }
@@ -35,9 +32,10 @@ namespace Emby.Dlna.PlayTo
{
get
{
RefreshVolumeIfNeeded();
RefreshVolumeIfNeeded().GetAwaiter().GetResult();
return _volume;
}
set => _volume = value;
}
@@ -53,10 +51,10 @@ namespace Emby.Dlna.PlayTo
public bool IsStopped => TransportState == TRANSPORTSTATE.STOPPED;
#endregion
private readonly IHttpClient _httpClient;
private readonly ILogger _logger;
private readonly IServerConfigurationManager _config;
public Action OnDeviceUnavailable { get; set; }
@@ -77,24 +75,24 @@ namespace Emby.Dlna.PlayTo
private DateTime _lastVolumeRefresh;
private bool _volumeRefreshActive;
private void RefreshVolumeIfNeeded()
private Task RefreshVolumeIfNeeded()
{
if (!_volumeRefreshActive)
{
return;
}
if (DateTime.UtcNow >= _lastVolumeRefresh.AddSeconds(5))
if (_volumeRefreshActive
&& DateTime.UtcNow >= _lastVolumeRefresh.AddSeconds(5))
{
_lastVolumeRefresh = DateTime.UtcNow;
RefreshVolume(CancellationToken.None);
return RefreshVolume();
}
return Task.CompletedTask;
}
private async void RefreshVolume(CancellationToken cancellationToken)
private async Task RefreshVolume(CancellationToken cancellationToken = default)
{
if (_disposed)
{
return;
}
try
{
@@ -142,8 +140,6 @@ namespace Emby.Dlna.PlayTo
}
}
#region Commanding
public Task VolumeDown(CancellationToken cancellationToken)
{
var sendVolume = Math.Max(Volume - 5, 0);
@@ -212,7 +208,9 @@ namespace Emby.Dlna.PlayTo
var command = rendererCommands.ServiceActions.FirstOrDefault(c => c.Name == "SetMute");
if (command == null)
{
return false;
}
var service = GetServiceRenderingControl();
@@ -233,7 +231,7 @@ namespace Emby.Dlna.PlayTo
}
/// <summary>
/// Sets volume on a scale of 0-100
/// Sets volume on a scale of 0-100.
/// </summary>
public async Task SetVolume(int value, CancellationToken cancellationToken)
{
@@ -241,7 +239,9 @@ namespace Emby.Dlna.PlayTo
var command = rendererCommands.ServiceActions.FirstOrDefault(c => c.Name == "SetVolume");
if (command == null)
{
return;
}
var service = GetServiceRenderingControl();
@@ -264,7 +264,9 @@ namespace Emby.Dlna.PlayTo
var command = avCommands.ServiceActions.FirstOrDefault(c => c.Name == "Seek");
if (command == null)
{
return;
}
var service = GetAvTransportService();
@@ -289,7 +291,9 @@ namespace Emby.Dlna.PlayTo
var command = avCommands.ServiceActions.FirstOrDefault(c => c.Name == "SetAVTransportURI");
if (command == null)
{
return;
}
var dictionary = new Dictionary<string, string>
{
@@ -347,7 +351,12 @@ namespace Emby.Dlna.PlayTo
throw new InvalidOperationException("Unable to find service");
}
return new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, 1));
return new SsdpHttpClient(_httpClient).SendCommandAsync(
Properties.BaseUrl,
service,
command.Name,
avCommands.BuildPost(command, service.ServiceType, 1),
cancellationToken: cancellationToken);
}
public async Task SetPlay(CancellationToken cancellationToken)
@@ -397,11 +406,8 @@ namespace Emby.Dlna.PlayTo
RestartTimer(true);
}
#endregion
#region Get data
private int _connectFailureCount;
private async void TimerCallback(object sender)
{
if (_disposed)
@@ -454,7 +460,9 @@ namespace Emby.Dlna.PlayTo
_connectFailureCount = 0;
if (_disposed)
{
return;
}
// If we're not playing anything make sure we don't get data more often than neccessry to keep the Session alive
if (transportState.Value == TRANSPORTSTATE.STOPPED)
@@ -474,7 +482,9 @@ namespace Emby.Dlna.PlayTo
catch (Exception ex)
{
if (_disposed)
{
return;
}
_logger.LogError(ex, "Error updating device info for {DeviceName}", Properties.Name);
@@ -490,6 +500,7 @@ namespace Emby.Dlna.PlayTo
return;
}
}
RestartTimerInactive();
}
}
@@ -516,8 +527,12 @@ namespace Emby.Dlna.PlayTo
return;
}
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType), true)
.ConfigureAwait(false);
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(
Properties.BaseUrl,
service,
command.Name,
rendererCommands.BuildPost(command, service.ServiceType),
cancellationToken: cancellationToken).ConfigureAwait(false);
if (result == null || result.Document == null)
{
@@ -562,11 +577,17 @@ namespace Emby.Dlna.PlayTo
return;
}
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType), true)
.ConfigureAwait(false);
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(
Properties.BaseUrl,
service,
command.Name,
rendererCommands.BuildPost(command, service.ServiceType),
cancellationToken: cancellationToken).ConfigureAwait(false);
if (result == null || result.Document == null)
{
return;
}
var valueNode = result.Document.Descendants(uPnpNamespaces.RenderingControl + "GetMuteResponse")
.Select(i => i.Element("CurrentMute"))
@@ -589,8 +610,12 @@ namespace Emby.Dlna.PlayTo
return null;
}
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType), false)
.ConfigureAwait(false);
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(
Properties.BaseUrl,
service,
command.Name,
avCommands.BuildPost(command, service.ServiceType),
cancellationToken: cancellationToken).ConfigureAwait(false);
if (result == null || result.Document == null)
{
@@ -600,7 +625,7 @@ namespace Emby.Dlna.PlayTo
var transportState =
result.Document.Descendants(uPnpNamespaces.AvTransport + "GetTransportInfoResponse").Select(i => i.Element("CurrentTransportState")).FirstOrDefault(i => i != null);
var transportStateValue = transportState == null ? null : transportState.Value;
var transportStateValue = transportState?.Value;
if (transportStateValue != null
&& Enum.TryParse(transportStateValue, true, out TRANSPORTSTATE state))
@@ -627,8 +652,12 @@ namespace Emby.Dlna.PlayTo
var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false);
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType), false)
.ConfigureAwait(false);
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(
Properties.BaseUrl,
service,
command.Name,
rendererCommands.BuildPost(command, service.ServiceType),
cancellationToken: cancellationToken).ConfigureAwait(false);
if (result == null || result.Document == null)
{
@@ -690,8 +719,12 @@ namespace Emby.Dlna.PlayTo
var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false);
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType), false)
.ConfigureAwait(false);
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(
Properties.BaseUrl,
service,
command.Name,
rendererCommands.BuildPost(command, service.ServiceType),
cancellationToken: cancellationToken).ConfigureAwait(false);
if (result == null || result.Document == null)
{
@@ -726,7 +759,7 @@ namespace Emby.Dlna.PlayTo
if (track == null)
{
//If track is null, some vendors do this, use GetMediaInfo instead
// If track is null, some vendors do this, use GetMediaInfo instead
return (true, null);
}
@@ -770,7 +803,6 @@ namespace Emby.Dlna.PlayTo
}
catch (XmlException)
{
}
// first try to add a root node with a dlna namesapce
@@ -782,7 +814,6 @@ namespace Emby.Dlna.PlayTo
}
catch (XmlException)
{
}
// some devices send back invalid xml
@@ -792,7 +823,6 @@ namespace Emby.Dlna.PlayTo
}
catch (XmlException)
{
}
return null;
@@ -847,10 +877,6 @@ namespace Emby.Dlna.PlayTo
return new string[4];
}
#endregion
#region From XML
private async Task<TransportCommands> GetAVProtocolAsync(CancellationToken cancellationToken)
{
if (AvCommands != null)
@@ -1045,8 +1071,6 @@ namespace Emby.Dlna.PlayTo
return new Device(deviceProperties, httpClient, logger, config);
}
#endregion
private static readonly CultureInfo UsCulture = new CultureInfo("en-US");
private static DeviceIcon CreateIcon(XElement element)
{
@@ -1170,8 +1194,6 @@ namespace Emby.Dlna.PlayTo
});
}
#region IDisposable
bool _disposed;
public void Dispose()
@@ -1198,8 +1220,6 @@ namespace Emby.Dlna.PlayTo
_disposed = true;
}
#endregion
public override string ToString()
{
return string.Format("{0} - {1}", Properties.Name, Properties.BaseUrl);

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
using Emby.Dlna.Common;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Generic;
@@ -8,6 +7,7 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Emby.Dlna.Didl;
using Jellyfin.Data.Entities;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Controller.Dlna;
using MediaBrowser.Controller.Drawing;
@@ -23,11 +23,14 @@ using MediaBrowser.Model.Globalization;
using MediaBrowser.Model.Session;
using Microsoft.AspNetCore.WebUtilities;
using Microsoft.Extensions.Logging;
using Photo = MediaBrowser.Controller.Entities.Photo;
namespace Emby.Dlna.PlayTo
{
public class PlayToController : ISessionController, IDisposable
{
private static readonly CultureInfo _usCulture = CultureInfo.ReadOnly(new CultureInfo("en-US"));
private Device _device;
private readonly SessionInfo _session;
private readonly ISessionManager _sessionManager;
@@ -46,9 +49,10 @@ namespace Emby.Dlna.PlayTo
private readonly string _serverAddress;
private readonly string _accessToken;
public bool IsSessionActive => !_disposed && _device != null;
private readonly List<PlaylistItem> _playlist = new List<PlaylistItem>();
private int _currentPlaylistIndex;
public bool SupportsMediaControl => IsSessionActive;
private bool _disposed;
public PlayToController(
SessionInfo session,
@@ -84,18 +88,22 @@ namespace Emby.Dlna.PlayTo
_mediaEncoder = mediaEncoder;
}
public bool IsSessionActive => !_disposed && _device != null;
public bool SupportsMediaControl => IsSessionActive;
public void Init(Device device)
{
_device = device;
_device.OnDeviceUnavailable = OnDeviceUnavailable;
_device.PlaybackStart += _device_PlaybackStart;
_device.PlaybackProgress += _device_PlaybackProgress;
_device.PlaybackStopped += _device_PlaybackStopped;
_device.MediaChanged += _device_MediaChanged;
_device.PlaybackStart += OnDevicePlaybackStart;
_device.PlaybackProgress += OnDevicePlaybackProgress;
_device.PlaybackStopped += OnDevicePlaybackStopped;
_device.MediaChanged += OnDeviceMediaChanged;
_device.Start();
_deviceDiscovery.DeviceLeft += _deviceDiscovery_DeviceLeft;
_deviceDiscovery.DeviceLeft += OnDeviceDiscoveryDeviceLeft;
}
private void OnDeviceUnavailable()
@@ -111,7 +119,7 @@ namespace Emby.Dlna.PlayTo
}
}
void _deviceDiscovery_DeviceLeft(object sender, GenericEventArgs<UpnpDeviceInfo> e)
private void OnDeviceDiscoveryDeviceLeft(object sender, GenericEventArgs<UpnpDeviceInfo> e)
{
var info = e.Argument;
@@ -126,7 +134,7 @@ namespace Emby.Dlna.PlayTo
}
}
async void _device_MediaChanged(object sender, MediaChangedEventArgs e)
private async void OnDeviceMediaChanged(object sender, MediaChangedEventArgs e)
{
if (_disposed)
{
@@ -138,15 +146,18 @@ namespace Emby.Dlna.PlayTo
var streamInfo = StreamParams.ParseFromUrl(e.OldMediaInfo.Url, _libraryManager, _mediaSourceManager);
if (streamInfo.Item != null)
{
var positionTicks = GetProgressPositionTicks(e.OldMediaInfo, streamInfo);
var positionTicks = GetProgressPositionTicks(streamInfo);
ReportPlaybackStopped(e.OldMediaInfo, streamInfo, positionTicks);
await ReportPlaybackStopped(streamInfo, positionTicks).ConfigureAwait(false);
}
streamInfo = StreamParams.ParseFromUrl(e.NewMediaInfo.Url, _libraryManager, _mediaSourceManager);
if (streamInfo.Item == null) return;
if (streamInfo.Item == null)
{
return;
}
var newItemProgress = GetProgressInfo(e.NewMediaInfo, streamInfo);
var newItemProgress = GetProgressInfo(streamInfo);
await _sessionManager.OnPlaybackStart(newItemProgress).ConfigureAwait(false);
}
@@ -156,7 +167,7 @@ namespace Emby.Dlna.PlayTo
}
}
async void _device_PlaybackStopped(object sender, PlaybackStoppedEventArgs e)
private async void OnDevicePlaybackStopped(object sender, PlaybackStoppedEventArgs e)
{
if (_disposed)
{
@@ -167,11 +178,14 @@ namespace Emby.Dlna.PlayTo
{
var streamInfo = StreamParams.ParseFromUrl(e.MediaInfo.Url, _libraryManager, _mediaSourceManager);
if (streamInfo.Item == null) return;
if (streamInfo.Item == null)
{
return;
}
var positionTicks = GetProgressPositionTicks(e.MediaInfo, streamInfo);
var positionTicks = GetProgressPositionTicks(streamInfo);
ReportPlaybackStopped(e.MediaInfo, streamInfo, positionTicks);
await ReportPlaybackStopped(streamInfo, positionTicks).ConfigureAwait(false);
var mediaSource = await streamInfo.GetMediaSource(CancellationToken.None).ConfigureAwait(false);
@@ -179,7 +193,7 @@ namespace Emby.Dlna.PlayTo
(_device.Duration == null ? (long?)null : _device.Duration.Value.Ticks) :
mediaSource.RunTimeTicks;
var playedToCompletion = (positionTicks.HasValue && positionTicks.Value == 0);
var playedToCompletion = positionTicks.HasValue && positionTicks.Value == 0;
if (!playedToCompletion && duration.HasValue && positionTicks.HasValue)
{
@@ -195,7 +209,7 @@ namespace Emby.Dlna.PlayTo
}
else
{
Playlist.Clear();
_playlist.Clear();
}
}
catch (Exception ex)
@@ -204,7 +218,7 @@ namespace Emby.Dlna.PlayTo
}
}
private async void ReportPlaybackStopped(uBaseObject mediaInfo, StreamParams streamInfo, long? positionTicks)
private async Task ReportPlaybackStopped(StreamParams streamInfo, long? positionTicks)
{
try
{
@@ -214,7 +228,6 @@ namespace Emby.Dlna.PlayTo
SessionId = _session.Id,
PositionTicks = positionTicks,
MediaSourceId = streamInfo.MediaSourceId
}).ConfigureAwait(false);
}
catch (Exception ex)
@@ -223,7 +236,7 @@ namespace Emby.Dlna.PlayTo
}
}
async void _device_PlaybackStart(object sender, PlaybackStartEventArgs e)
private async void OnDevicePlaybackStart(object sender, PlaybackStartEventArgs e)
{
if (_disposed)
{
@@ -236,7 +249,7 @@ namespace Emby.Dlna.PlayTo
if (info.Item != null)
{
var progress = GetProgressInfo(e.MediaInfo, info);
var progress = GetProgressInfo(info);
await _sessionManager.OnPlaybackStart(progress).ConfigureAwait(false);
}
@@ -247,7 +260,7 @@ namespace Emby.Dlna.PlayTo
}
}
async void _device_PlaybackProgress(object sender, PlaybackProgressEventArgs e)
private async void OnDevicePlaybackProgress(object sender, PlaybackProgressEventArgs e)
{
if (_disposed)
{
@@ -267,7 +280,7 @@ namespace Emby.Dlna.PlayTo
if (info.Item != null)
{
var progress = GetProgressInfo(e.MediaInfo, info);
var progress = GetProgressInfo(info);
await _sessionManager.OnPlaybackProgress(progress).ConfigureAwait(false);
}
@@ -278,7 +291,7 @@ namespace Emby.Dlna.PlayTo
}
}
private long? GetProgressPositionTicks(uBaseObject mediaInfo, StreamParams info)
private long? GetProgressPositionTicks(StreamParams info)
{
var ticks = _device.Position.Ticks;
@@ -290,13 +303,13 @@ namespace Emby.Dlna.PlayTo
return ticks;
}
private PlaybackStartInfo GetProgressInfo(uBaseObject mediaInfo, StreamParams info)
private PlaybackStartInfo GetProgressInfo(StreamParams info)
{
return new PlaybackStartInfo
{
ItemId = info.ItemId,
SessionId = _session.Id,
PositionTicks = GetProgressPositionTicks(mediaInfo, info),
PositionTicks = GetProgressPositionTicks(info),
IsMuted = _device.IsMuted,
IsPaused = _device.IsPaused,
MediaSourceId = info.MediaSourceId,
@@ -311,9 +324,7 @@ namespace Emby.Dlna.PlayTo
};
}
#region SendCommands
public async Task SendPlayCommand(PlayRequest command, CancellationToken cancellationToken)
public Task SendPlayCommand(PlayRequest command, CancellationToken cancellationToken)
{
_logger.LogDebug("{0} - Received PlayRequest: {1}", this._session.DeviceName, command.PlayCommand);
@@ -351,11 +362,12 @@ namespace Emby.Dlna.PlayTo
if (command.PlayCommand == PlayCommand.PlayLast)
{
Playlist.AddRange(playlist);
_playlist.AddRange(playlist);
}
if (command.PlayCommand == PlayCommand.PlayNext)
{
Playlist.AddRange(playlist);
_playlist.AddRange(playlist);
}
if (!command.ControllingUserId.Equals(Guid.Empty))
@@ -364,7 +376,7 @@ namespace Emby.Dlna.PlayTo
_session.DeviceName, _session.RemoteEndPoint, user);
}
await PlayItems(playlist).ConfigureAwait(false);
return PlayItems(playlist, cancellationToken);
}
private Task SendPlaystateCommand(PlaystateRequest command, CancellationToken cancellationToken)
@@ -372,7 +384,7 @@ namespace Emby.Dlna.PlayTo
switch (command.Command)
{
case PlaystateCommand.Stop:
Playlist.Clear();
_playlist.Clear();
return _device.SetStop(CancellationToken.None);
case PlaystateCommand.Pause:
@@ -388,10 +400,10 @@ namespace Emby.Dlna.PlayTo
return Seek(command.SeekPositionTicks ?? 0);
case PlaystateCommand.NextTrack:
return SetPlaylistIndex(_currentPlaylistIndex + 1);
return SetPlaylistIndex(_currentPlaylistIndex + 1, cancellationToken);
case PlaystateCommand.PreviousTrack:
return SetPlaylistIndex(_currentPlaylistIndex - 1);
return SetPlaylistIndex(_currentPlaylistIndex - 1, cancellationToken);
}
return Task.CompletedTask;
@@ -413,6 +425,7 @@ namespace Emby.Dlna.PlayTo
await _device.SetAvTransport(newItem.StreamUrl, GetDlnaHeaders(newItem), newItem.Didl, CancellationToken.None).ConfigureAwait(false);
return;
}
await SeekAfterTransportChange(newPosition, CancellationToken.None).ConfigureAwait(false);
}
}
@@ -427,14 +440,6 @@ namespace Emby.Dlna.PlayTo
return info.IsDirectStream;
}
#endregion
#region Playlist
private int _currentPlaylistIndex;
private readonly List<PlaylistItem> _playlist = new List<PlaylistItem>();
private List<PlaylistItem> Playlist => _playlist;
private void AddItemFromId(Guid id, List<BaseItem> list)
{
var item = _libraryManager.GetItemById(id);
@@ -444,7 +449,13 @@ namespace Emby.Dlna.PlayTo
}
}
private PlaylistItem CreatePlaylistItem(BaseItem item, User user, long startPostionTicks, string mediaSourceId, int? audioStreamIndex, int? subtitleStreamIndex)
private PlaylistItem CreatePlaylistItem(
BaseItem item,
User user,
long startPostionTicks,
string mediaSourceId,
int? audioStreamIndex,
int? subtitleStreamIndex)
{
var deviceInfo = _device.Properties;
@@ -452,7 +463,7 @@ namespace Emby.Dlna.PlayTo
_dlnaManager.GetDefaultProfile();
var mediaSources = item is IHasMediaSources
? (_mediaSourceManager.GetStaticMediaSources(item, true, user))
? _mediaSourceManager.GetStaticMediaSources(item, true, user)
: new List<MediaSourceInfo>();
var playlistItem = GetPlaylistItem(item, mediaSources, profile, _session.DeviceId, mediaSourceId, audioStreamIndex, subtitleStreamIndex);
@@ -460,8 +471,19 @@ namespace Emby.Dlna.PlayTo
playlistItem.StreamUrl = DidlBuilder.NormalizeDlnaMediaUrl(playlistItem.StreamInfo.ToUrl(_serverAddress, _accessToken));
var itemXml = new DidlBuilder(profile, user, _imageProcessor, _serverAddress, _accessToken, _userDataManager, _localization, _mediaSourceManager, _logger, _mediaEncoder)
.GetItemDidl(_config.GetDlnaConfiguration(), item, user, null, _session.DeviceId, new Filter(), playlistItem.StreamInfo);
var itemXml = new DidlBuilder(
profile,
user,
_imageProcessor,
_serverAddress,
_accessToken,
_userDataManager,
_localization,
_mediaSourceManager,
_logger,
_mediaEncoder,
_libraryManager)
.GetItemDidl(item, user, null, _session.DeviceId, new Filter(), playlistItem.StreamInfo);
playlistItem.Didl = itemXml;
@@ -571,30 +593,31 @@ namespace Emby.Dlna.PlayTo
/// Plays the items.
/// </summary>
/// <param name="items">The items.</param>
/// <returns></returns>
private async Task<bool> PlayItems(IEnumerable<PlaylistItem> items)
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns><c>true</c> on success.</returns>
private async Task<bool> PlayItems(IEnumerable<PlaylistItem> items, CancellationToken cancellationToken = default)
{
Playlist.Clear();
Playlist.AddRange(items);
_logger.LogDebug("{0} - Playing {1} items", _session.DeviceName, Playlist.Count);
_playlist.Clear();
_playlist.AddRange(items);
_logger.LogDebug("{0} - Playing {1} items", _session.DeviceName, _playlist.Count);
await SetPlaylistIndex(0).ConfigureAwait(false);
await SetPlaylistIndex(0, cancellationToken).ConfigureAwait(false);
return true;
}
private async Task SetPlaylistIndex(int index)
private async Task SetPlaylistIndex(int index, CancellationToken cancellationToken = default)
{
if (index < 0 || index >= Playlist.Count)
if (index < 0 || index >= _playlist.Count)
{
Playlist.Clear();
await _device.SetStop(CancellationToken.None);
_playlist.Clear();
await _device.SetStop(cancellationToken).ConfigureAwait(false);
return;
}
_currentPlaylistIndex = index;
var currentitem = Playlist[index];
var currentitem = _playlist[index];
await _device.SetAvTransport(currentitem.StreamUrl, GetDlnaHeaders(currentitem), currentitem.Didl, CancellationToken.None);
await _device.SetAvTransport(currentitem.StreamUrl, GetDlnaHeaders(currentitem), currentitem.Didl, cancellationToken).ConfigureAwait(false);
var streamInfo = currentitem.StreamInfo;
if (streamInfo.StartPositionTicks > 0 && EnableClientSideSeek(streamInfo))
@@ -603,10 +626,7 @@ namespace Emby.Dlna.PlayTo
}
}
#endregion
private bool _disposed;
/// <inheritdoc />
public void Dispose()
{
Dispose(true);
@@ -625,19 +645,17 @@ namespace Emby.Dlna.PlayTo
_device.Dispose();
}
_device.PlaybackStart -= _device_PlaybackStart;
_device.PlaybackProgress -= _device_PlaybackProgress;
_device.PlaybackStopped -= _device_PlaybackStopped;
_device.MediaChanged -= _device_MediaChanged;
_deviceDiscovery.DeviceLeft -= _deviceDiscovery_DeviceLeft;
_device.PlaybackStart -= OnDevicePlaybackStart;
_device.PlaybackProgress -= OnDevicePlaybackProgress;
_device.PlaybackStopped -= OnDevicePlaybackStopped;
_device.MediaChanged -= OnDeviceMediaChanged;
_deviceDiscovery.DeviceLeft -= OnDeviceDiscoveryDeviceLeft;
_device.OnDeviceUnavailable = null;
_device = null;
_disposed = true;
}
private static readonly CultureInfo _usCulture = CultureInfo.ReadOnly(new CultureInfo("en-US"));
private Task SendGeneralCommand(GeneralCommand command, CancellationToken cancellationToken)
{
if (Enum.TryParse(command.Name, true, out GeneralCommandType commandType))
@@ -696,6 +714,7 @@ namespace Emby.Dlna.PlayTo
throw new ArgumentException("Volume argument cannot be null");
}
default:
return Task.CompletedTask;
}
@@ -714,7 +733,7 @@ namespace Emby.Dlna.PlayTo
if (info.Item != null)
{
var newPosition = GetProgressPositionTicks(media, info) ?? 0;
var newPosition = GetProgressPositionTicks(info) ?? 0;
var user = !_session.UserId.Equals(Guid.Empty) ? _userManager.GetUserById(_session.UserId) : null;
var newItem = CreatePlaylistItem(info.Item, user, newPosition, info.MediaSourceId, newIndex, info.SubtitleStreamIndex);
@@ -739,7 +758,7 @@ namespace Emby.Dlna.PlayTo
if (info.Item != null)
{
var newPosition = GetProgressPositionTicks(media, info) ?? 0;
var newPosition = GetProgressPositionTicks(info) ?? 0;
var user = !_session.UserId.Equals(Guid.Empty) ? _userManager.GetUserById(_session.UserId) : null;
var newItem = CreatePlaylistItem(info.Item, user, newPosition, info.MediaSourceId, info.AudioStreamIndex, newIndex);
@@ -781,12 +800,15 @@ namespace Emby.Dlna.PlayTo
public int? SubtitleStreamIndex { get; set; }
public string DeviceProfileId { get; set; }
public string DeviceId { get; set; }
public string MediaSourceId { get; set; }
public string LiveStreamId { get; set; }
public BaseItem Item { get; set; }
private MediaSourceInfo MediaSource;
private IMediaSourceManager _mediaSourceManager;
@@ -853,8 +875,11 @@ namespace Emby.Dlna.PlayTo
return request;
}
var index = url.IndexOf('?');
if (index == -1) return request;
var index = url.IndexOf('?', StringComparison.Ordinal);
if (index == -1)
{
return request;
}
var query = url.Substring(index + 1);
Dictionary<string, string> values = QueryHelpers.ParseQuery(query).ToDictionary(kv => kv.Key, kv => kv.Value.ToString());
@@ -901,7 +926,8 @@ namespace Emby.Dlna.PlayTo
return 0;
}
public Task SendMessage<T>(string name, string messageId, T data, ISessionController[] allControllers, CancellationToken cancellationToken)
/// <inheritdoc />
public Task SendMessage<T>(string name, Guid messageId, T data, CancellationToken cancellationToken)
{
if (_disposed)
{
@@ -917,10 +943,12 @@ namespace Emby.Dlna.PlayTo
{
return SendPlayCommand(data as PlayRequest, cancellationToken);
}
if (string.Equals(name, "PlayState", StringComparison.OrdinalIgnoreCase))
{
return SendPlaystateCommand(data as PlaystateRequest, cancellationToken);
}
if (string.Equals(name, "GeneralCommand", StringComparison.OrdinalIgnoreCase))
{
return SendGeneralCommand(data as GeneralCommand, cancellationToken);

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Globalization;
@@ -24,7 +23,7 @@ using Microsoft.Extensions.Logging;
namespace Emby.Dlna.PlayTo
{
public class PlayToManager : IDisposable
public sealed class PlayToManager : IDisposable
{
private readonly ILogger _logger;
private readonly ISessionManager _sessionManager;
@@ -79,9 +78,15 @@ namespace Emby.Dlna.PlayTo
var info = e.Argument;
if (!info.Headers.TryGetValue("USN", out string usn)) usn = string.Empty;
if (!info.Headers.TryGetValue("USN", out string usn))
{
usn = string.Empty;
}
if (!info.Headers.TryGetValue("NT", out string nt)) nt = string.Empty;
if (!info.Headers.TryGetValue("NT", out string nt))
{
nt = string.Empty;
}
string location = info.Location.ToString();
@@ -89,7 +94,7 @@ namespace Emby.Dlna.PlayTo
if (usn.IndexOf("MediaRenderer:", StringComparison.OrdinalIgnoreCase) == -1 &&
nt.IndexOf("MediaRenderer:", StringComparison.OrdinalIgnoreCase) == -1)
{
//_logger.LogDebug("Upnp device {0} does not contain a MediaRenderer device (0).", location);
// _logger.LogDebug("Upnp device {0} does not contain a MediaRenderer device (0).", location);
return;
}
@@ -113,7 +118,6 @@ namespace Emby.Dlna.PlayTo
}
catch (OperationCanceledException)
{
}
catch (Exception ex)
{
@@ -134,6 +138,7 @@ namespace Emby.Dlna.PlayTo
usn = usn.Substring(index);
found = true;
}
index = usn.IndexOf("::", StringComparison.OrdinalIgnoreCase);
if (index != -1)
{
@@ -185,7 +190,8 @@ namespace Emby.Dlna.PlayTo
serverAddress = _appHost.GetLocalApiUrl(info.LocalIpAddress);
}
controller = new PlayToController(sessionInfo,
controller = new PlayToController(
sessionInfo,
_sessionManager,
_libraryManager,
_logger,
@@ -232,6 +238,7 @@ namespace Emby.Dlna.PlayTo
}
}
/// <inheritdoc />
public void Dispose()
{
_deviceDiscovery.DeviceDiscovered -= OnDeviceDiscoveryDeviceDiscovered;
@@ -242,9 +249,11 @@ namespace Emby.Dlna.PlayTo
}
catch
{
}
_sessionLock.Dispose();
_disposeCancellationTokenSource.Dispose();
_disposed = true;
}
}

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
@@ -13,6 +12,7 @@ namespace Emby.Dlna.PlayTo
public class MediaChangedEventArgs : EventArgs
{
public uBaseObject OldMediaInfo { get; set; }
public uBaseObject NewMediaInfo { get; set; }
}
}

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using MediaBrowser.Model.Dlna;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.IO;
using System.Linq;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Globalization;
@@ -33,18 +32,15 @@ namespace Emby.Dlna.PlayTo
DeviceService service,
string command,
string postData,
bool logRequest = true,
string header = null)
string header = null,
CancellationToken cancellationToken = default)
{
var cancellationToken = CancellationToken.None;
var url = NormalizeServiceUrl(baseUrl, service.ControlUrl);
using (var response = await PostSoapDataAsync(
url,
$"\"{service.ServiceType}#{command}\"",
postData,
header,
logRequest,
cancellationToken)
.ConfigureAwait(false))
using (var stream = response.Content)
@@ -64,7 +60,7 @@ namespace Emby.Dlna.PlayTo
return serviceUrl;
}
if (!serviceUrl.StartsWith("/"))
if (!serviceUrl.StartsWith("/", StringComparison.Ordinal))
{
serviceUrl = "/" + serviceUrl;
}
@@ -95,7 +91,6 @@ namespace Emby.Dlna.PlayTo
using (await _httpClient.SendAsync(options, new HttpMethod("SUBSCRIBE")).ConfigureAwait(false))
{
}
}
@@ -128,7 +123,6 @@ namespace Emby.Dlna.PlayTo
string soapAction,
string postData,
string header,
bool logRequest,
CancellationToken cancellationToken)
{
if (soapAction[0] != '\"')

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
namespace Emby.Dlna.PlayTo
{

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Generic;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Xml.Linq;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
@@ -45,10 +44,12 @@ namespace Emby.Dlna.PlayTo
{
return MediaBrowser.Model.Entities.MediaType.Audio;
}
if (classType.IndexOf(MediaBrowser.Model.Entities.MediaType.Video, StringComparison.Ordinal) != -1)
{
return MediaBrowser.Model.Entities.MediaType.Video;
}
if (classType.IndexOf("image", StringComparison.Ordinal) != -1)
{
return MediaBrowser.Model.Entities.MediaType.Photo;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Xml.Linq;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Linq;
using MediaBrowser.Model.Dlna;
@@ -13,7 +12,7 @@ namespace Emby.Dlna.Profiles
{
Name = "Generic Device";
ProtocolInfo = "http-get:*:video/mpeg:*,http-get:*:video/mp4:*,http-get:*:video/vnd.dlna.mpeg-tts:*,http-get:*:video/avi:*,http-get:*:video/x-matroska:*,http-get:*:video/x-ms-wmv:*,http-get:*:video/wtv:*,http-get:*:audio/mpeg:*,http-get:*:audio/mp3:*,http-get:*:audio/mp4:*,http-get:*:audio/x-ms-wma*,http-get:*:audio/wav:*,http-get:*:audio/L16:*,http-get:*image/jpeg:*,http-get:*image/png:*,http-get:*image/gif:*,http-get:*image/tiff:*";
ProtocolInfo = "http-get:*:video/mpeg:*,http-get:*:video/mp4:*,http-get:*:video/vnd.dlna.mpeg-tts:*,http-get:*:video/avi:*,http-get:*:video/x-matroska:*,http-get:*:video/x-ms-wmv:*,http-get:*:video/wtv:*,http-get:*:audio/mpeg:*,http-get:*:audio/mp3:*,http-get:*:audio/mp4:*,http-get:*:audio/x-ms-wma:*,http-get:*:audio/wav:*,http-get:*:audio/L16:*,http-get:*:image/jpeg:*,http-get:*:image/png:*,http-get:*:image/gif:*,http-get:*:image/tiff:*";
Manufacturer = "Jellyfin";
ModelDescription = "UPnP/AV 1.0 Compliant Media Server";
@@ -165,7 +164,7 @@ namespace Emby.Dlna.Profiles
public void AddXmlRootAttribute(string name, string value)
{
var atts = XmlRootAttributes ?? new XmlAttribute[] { };
var atts = XmlRootAttributes ?? System.Array.Empty<XmlAttribute>();
var list = atts.ToList();
list.Add(new XmlAttribute

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using MediaBrowser.Model.Dlna;
@@ -29,7 +28,7 @@ namespace Emby.Dlna.Profiles
},
};
ResponseProfiles = new ResponseProfile[] { };
ResponseProfiles = System.Array.Empty<ResponseProfile>();
}
}
}

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using MediaBrowser.Model.Dlna;
@@ -124,7 +123,7 @@ namespace Emby.Dlna.Profiles
}
};
ResponseProfiles = new ResponseProfile[] { };
ResponseProfiles = System.Array.Empty<ResponseProfile>();
}
}
}

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using MediaBrowser.Model.Dlna;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using MediaBrowser.Model.Dlna;
@@ -73,7 +72,7 @@ namespace Emby.Dlna.Profiles
}
};
ResponseProfiles = new ResponseProfile[] { };
ResponseProfiles = System.Array.Empty<ResponseProfile>();
}
}
}

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using MediaBrowser.Model.Dlna;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using MediaBrowser.Model.Dlna;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using MediaBrowser.Model.Dlna;
@@ -38,7 +37,7 @@ namespace Emby.Dlna.Profiles
},
};
ResponseProfiles = new ResponseProfile[] { };
ResponseProfiles = System.Array.Empty<ResponseProfile>();
}
}
}

View File

@@ -1,6 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using MediaBrowser.Model.Dlna;
namespace Emby.Dlna.Profiles
@@ -38,7 +38,7 @@ namespace Emby.Dlna.Profiles
}
};
ResponseProfiles = new ResponseProfile[] { };
ResponseProfiles = Array.Empty<ResponseProfile>();
}
}
}

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using MediaBrowser.Model.Dlna;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using MediaBrowser.Model.Dlna;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using MediaBrowser.Model.Dlna;

View File

@@ -1,5 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using MediaBrowser.Model.Dlna;

View File

@@ -1,6 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using MediaBrowser.Model.Dlna;
namespace Emby.Dlna.Profiles
@@ -224,7 +224,7 @@ namespace Emby.Dlna.Profiles
}
};
ResponseProfiles = new ResponseProfile[] { };
ResponseProfiles = Array.Empty<ResponseProfile>();
}
}
}

View File

@@ -1,6 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using MediaBrowser.Model.Dlna;
namespace Emby.Dlna.Profiles
@@ -224,7 +224,7 @@ namespace Emby.Dlna.Profiles
}
};
ResponseProfiles = new ResponseProfile[] { };
ResponseProfiles = Array.Empty<ResponseProfile>();
}
}
}

View File

@@ -1,6 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using MediaBrowser.Model.Dlna;
namespace Emby.Dlna.Profiles
@@ -212,7 +212,7 @@ namespace Emby.Dlna.Profiles
}
};
ResponseProfiles = new ResponseProfile[] { };
ResponseProfiles = Array.Empty<ResponseProfile>();
}
}
}

Some files were not shown because too many files have changed in this diff Show More