Compare commits

...

2542 Commits

Author SHA1 Message Date
Joshua M. Boniface 16e3bd094f Bump version to 10.6.3 2020-08-16 20:19:54 -04:00
Joshua M. Boniface 8d1075eb77 Merge pull request #3831 from joshuaboniface/newer-docker-dotnet
Bump to .NET Core SDK 3.1.302

(cherry picked from commit 751affa50a)
2020-08-16 20:19:46 -04:00
Joshua M. Boniface 973fcdbaa1 Bump version to 10.6.2 2020-08-02 20:53:04 -04:00
dkanada 5ea5b9a654 Merge pull request #3795 from anthonylavado/master
Update to newer Jellyfin.XMLTV

(cherry picked from commit 714a6f04ef)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-08-02 20:50:44 -04:00
dkanada e657781459 Merge pull request #3792 from cvium/fix_tmdb_deserialize
TMDb: Change Budget and Revenue to long to avoid overflow
(cherry picked from commit 254ef6bc0d)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-08-02 20:50:44 -04:00
Bond-009 4e6e310b71 Merge pull request #3790 from cvium/fewer_string_allocs
Remove some unnecessary string allocations

(cherry picked from commit 43fa983414)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-08-02 20:50:44 -04:00
Joshua M. Boniface 43ade73be4 Merge pull request #3761 from cvium/fix_mem_leak
Fix DI memory leak

(cherry picked from commit 9bf6222597)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-08-02 20:37:11 -04:00
Anthony Lavado f88e9b2678 Merge pull request #3760 from thornbill/true-or-false
Fix inverted logic for LAN IP detection

(cherry picked from commit 4bad529fcb)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-08-02 20:37:11 -04:00
Bond-009 0eb0b15b2a Merge pull request #3757 from jellyfin/update_blurhashsharp
Update BlurHashSharp and set max size to 128x128

(cherry picked from commit ee3fae497c)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-08-02 20:37:11 -04:00
Joshua M. Boniface 7402679a99 Merge pull request #3728 from jellyfin/qsv-cutter
Adjust priority in outputSizeParam cutter

(cherry picked from commit 47e63def20)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-08-02 20:37:11 -04:00
Anthony Lavado e276532f2f Merge pull request #3727 from K900/patch-1
Fix #3624

(cherry picked from commit 06db5f8bca)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-08-02 20:37:01 -04:00
Joshua M. Boniface b1250e2e83 Merge pull request #3725 from joshuaboniface/fix-ci-docker
Flip quoting in variable set command

(cherry picked from commit 8c1dab146c)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-08-02 20:35:31 -04:00
Anthony Lavado 35d3ad1a55 Merge pull request #3723 from joshuaboniface/fix-ci-docker
Get and tag with the actual release version in CI

(cherry picked from commit b207907e1b)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-08-02 20:35:31 -04:00
Joshua M. Boniface 02f36373c2 Merge pull request #3720 from joshuaboniface/fix-bump-version
Fix bump_version so it works properly

(cherry picked from commit dc0f1788f4)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-08-02 20:35:31 -04:00
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 https://github.com/FFmpeg/FFmpeg/commit/74007dd86a87289a075926704fae5bd8ef313bb5
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
Joshua M. Boniface 623c0b6daa Merge pull request #2536 from dkanada/audiodb
Migrate AudioDB to use plugin interface
2020-03-08 17:06:22 -04:00
Joshua M. Boniface d8d37671ff Merge pull request #2535 from mark-monteiro/logging-migration
Create Logging Configuration Heirarchy
2020-03-08 15:33:15 -04:00
Mark Monteiro 9e89cbbc3a Store migration names alongside Ids in configuration in order to assist with development/debugging 2020-03-08 17:40:30 +01:00
Mark Monteiro 72bf920291 Use a Guid to uniquely identify migrations instead of a string name
Also use a list instead of an array to store executed migrations in the configuration class
2020-03-08 16:05:31 +01:00
Mark Monteiro 8dbb1c9257 Use logging.json instead of logging.user.json for override settings 2020-03-08 15:46:13 +01:00
Mark Monteiro 2f0b4cc24c Clean up migration logging messages 2020-03-08 15:02:59 +01:00
Mark Monteiro a0fdceb4bc Throw exception on migration failure to halt application
Also save migration configuration after each migration instead of at the end in case an exception is thrown part way through the list
2020-03-08 15:02:42 +01:00
sharkykh 86190aa7e9 Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2020-03-08 09:01:04 -04:00
dkanada f8b391538d update audiodb config page 2020-03-08 12:19:38 +09:00
dkanada acf1698d2b include audiodb config page in release 2020-03-08 12:17:49 +09:00
dkanada 26c778eb16 implement option to disable audiodb for now 2020-03-08 12:10:25 +09:00
Tomi cbd1e92486 Translated using Weblate (Finnish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fi/
2020-03-07 22:03:35 -05:00
IDXK 01b51388f5 Translated using Weblate (Dutch)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/
2020-03-07 22:03:35 -05:00
Niels van Velzen b4e81f2f0c Translated using Weblate (Dutch)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/
2020-03-07 22:03:35 -05:00
sharkykh d38eab50ef Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2020-03-07 22:03:35 -05:00
Leo Verto 796bdd46df Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2020-03-07 22:03:35 -05:00
Joshua M. Boniface ae9948ce04 Merge branch 'master' into logging-migration 2020-03-07 21:19:24 -05:00
Joshua M. Boniface 3d563ca3a3 Merge pull request #2523 from JustAMan/logging-migration
Improve migrations so they are more maintainable
2020-03-07 21:14:14 -05:00
Mark Monteiro 1295f6c79b Documentation and log message cleanup 2020-03-07 20:26:06 +01:00
dkanada adc3ab1991 Merge pull request #2534 from joshuaboniface/disable-ssl-default
Set EnableHttps disabled by default
2020-03-08 03:03:16 +09:00
Mark Monteiro 7ecb16a46e do not ignore exceptions during migration execution 2020-03-07 18:23:32 +01:00
Joshua M. Boniface 2610bb2cc1 Merge pull request #2532 from MrTimscampi/attachment-baseurl
Add baseURL to attachments API url
2020-03-07 12:21:01 -05:00
Joshua M. Boniface e0381c8854 Set EnableHttps disabled by default
Prevents issues on first setup when behind a reverse proxy. Also
prevents issues saving the Networking page by default if SSL is not
fully configured.
2020-03-07 11:55:02 -05:00
MrTimscampi e8c593f413 Add baseURL to attachments 2020-03-07 17:41:36 +01:00
Terrance M f3db3cacf6 Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2020-03-06 21:35:24 -05:00
Marcus Schelin b373721d29 Translated using Weblate (Swedish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sv/
2020-03-06 21:35:24 -05:00
Mark Monteiro 4c2b543b30 Rename IUpdater to IMigrationRoutine 2020-03-06 21:51:50 +01:00
Mark Monteiro 6660006f01 Load user logging config file into application configuration 2020-03-06 19:28:36 +01:00
Mark Monteiro 1a9908d094 Add migration to create "logging.user.json" 2020-03-06 19:11:42 +01:00
Mark Monteiro f2fdf50b3b Create separate constants for the two logging file names 2020-03-06 19:07:34 +01:00
Vasily 5a0f1fe848 Implement review suggestion 2020-03-06 19:01:07 +03:00
Vasily 098d3538e3 Disable logging.json migration as it is not ready yet 2020-03-06 17:22:22 +03:00
Vasily d4564d8e29 More logging, mark all migrations as applied if setup wizard is not complete 2020-03-06 13:22:44 +03:00
Anthony Lavado b99a5843dd Merge pull request #2524 from ferferga/nsis-fixes
Replaces NSIS uninstaller icon so it's more visible
2020-03-05 13:09:38 -05:00
ferferga e36c4de9f6 Replaces uninstaller icon so it's more visible 2020-03-05 18:53:04 +01:00
Vasily 216e425cc5 Fix comment 2020-03-05 20:52:00 +03:00
Vasily 55b429e5e8 Moved migration routines to their own directory 2020-03-05 20:40:17 +03:00
Vasily ccafebca68 Extract "migrations" config name to a proper constant 2020-03-05 20:37:49 +03:00
Vasily ecaa7f8014 Improve migration logic 2020-03-05 20:09:33 +03:00
Vasily 66e11879ef Shuffle migrations in a more manageable structure 2020-03-05 18:21:27 +03:00
Joshua M. Boniface dcf3dbb250 Merge pull request #2515 from JustAMan/migration-scripts
Implement ability to run migration routines when updating Jellyfin
2020-03-05 10:03:43 -05:00
Vasily 9eef0e8ca0 Implement EnableThrottling migration for pre-10.5.0 to 10.5.0 or newer 2020-03-05 17:41:32 +03:00
Andrew Rabert ca585f12b3 Fix Docker packages (#2499)
* Fix Vaapi Intel packages

https://github.com/jellyfin/jellyfin/issues/1901#issuecomment-593114951

Still need to compile with the packages to verify it builds properly. Arm builds probably need it too.

* Update Dockerfile

* Update Dockerfile

* Update Dockerfile.arm

* Update Dockerfile.arm

* Update Dockerfile.arm64

* Update Dockerfile.arm

* Update Dockerfile.arm

* Update Dockerfile.arm

* Update Dockerfile.arm64

* Update Dockerfile.arm64

* Update Dockerfile.arm

* Update Dockerfile

* shift from curl to git for web install

removed the necessity of curl, tar and package availability and using the source directly

* Update Dockerfile.arm

* Update Dockerfile.arm64

* Update Dockerfile

* Update Dockerfile

* Update Dockerfile.arm

* Update Dockerfile.arm64

* clean up packages and remove unnecessary ARG

* Update Dockerfile

* Update Dockerfile.arm64

* Update Dockerfile

* Update Dockerfile.arm64

* Update Dockerfile

* Update Dockerfile.arm

* Update Dockerfile.arm64

* Explainations

* Update Dockerfile.arm

* Update Dockerfile.arm64
2020-03-05 09:41:14 -05:00
Vasily acd67c7152 Add tracking of JF version used to run this config previously 2020-03-05 16:22:15 +03:00
Vasily f4ccee5801 Add inheritdoc comment and squash simple method bodies 2020-03-05 15:03:17 +03:00
Vasily e80c9bb8c6 Merge pull request #2513 from Bond-009/alpha
Improve alpha numeric sorting
2020-03-05 15:01:05 +03:00
Vasily 456f571343 Follow code review suggestions 2020-03-05 14:25:50 +03:00
Bond-009 375cf212dd Update AlphanumComparatorTests.cs 2020-03-05 12:24:12 +01:00
Davide Polonio 5099f6e4a2 Add FIXME in HasConfiguredPassword public user DTO method 2020-03-05 08:01:47 +01:00
Joshua M. Boniface 434f665e81 Merge pull request #2512 from Artiume/patch-4
Update Fedora build container version
2020-03-04 20:03:02 -05:00
Bond_009 be1d4b32c6 Add speed for alpha numeric sorting 2020-03-05 00:57:24 +01:00
Bond_009 ada3f96668 Add tests for alpha numeric sorting 2020-03-05 00:54:46 +01:00
artiume 7931a7a7d0 update fedora 2020-03-04 17:43:50 -05:00
Vasily 007c5b9f67 Implement BaseItem.GetHashCode override 2020-03-04 13:06:13 +03:00
Joshua M. Boniface a987b68f7c Merge pull request #2508 from joshuaboniface/contributors-update
Update contributors list
2020-03-03 23:27:11 -05:00
Joshua M. Boniface 3016e78aef Remove dependabotbot 2020-03-03 23:22:29 -05:00
Joshua M. Boniface 0e98d8bbad Update contributors list
Refreshes the contributors list with the data available from all merged
PRs. Includes a huge number of people who had never added themselves
manually. Going forward this is probably not needed anymore as we can
update this fairly easily.
2020-03-03 22:51:16 -05: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
Bond-009 5276c75cde Merge pull request #2500 from mark-monteiro/2498-register-logging-correctly
Register Logging Services Correctly
2020-03-03 21:53:53 +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
dkanada c07e1e4f84 Merge pull request #2476 from JustAMan/playto-sort
Bring back sorting when needed to fix PlayTo
2020-03-04 01:53:26 +09: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
dkanada 2dc1a18203 Merge pull request #2501 from JustAMan/pedal-to-the-metal-from-the-get-go
Default transcoding throttling to false for new installs
2020-03-04 01:37:44 +09:00
Vasily f21cd30039 Lower log level for BaseItem.Equals to debug 2020-03-03 19:22:45 +03:00
Vasily c1aafd2ba0 Default transcoding throttling to false for new installs 2020-03-03 19:14:31 +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
Bond-009 20ac3c36e2 Merge pull request #2483 from xosdy/fix-download-filename
Fix download file with non-ASCII filename
2020-03-03 14:28:48 +01:00
Bond-009 464039043d Merge pull request #2491 from mark-monteiro/2425-fix-playlists
Fix Playlist Deletion
2020-03-03 14:23:43 +01:00
Mark Monteiro a4bf645ba5 Fix compilation error 2020-03-03 01:10:26 +01:00
Mark Monteiro 9a6c279473 Increase min log level to 'Warning' framework namespaces 2020-03-03 00:36:54 +01:00
Mark Monteiro c376f4ca51 Register Serilog logging services correctly 2020-03-03 00:35:41 +01:00
Mark Monteiro dde0277050 Check for duplicates when adding items to a playlist 2020-03-02 21:12:35 +01:00
dkanada 76e49a1eb7 migrate audiodb to plugin 2020-03-03 02:07:31 +09:00
Ilija Apostolovski 1c1484389a Translated using Weblate (Macedonian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/mk/
2020-03-02 08:05:17 -05:00
Bond-009 1c21248e2e Merge pull request #2474 from JustAMan/simplify-sorting
Simplify AlphanumericComparer, reduce code duplication
2020-03-02 12:28:31 +01:00
Vasily 13d30a0a79 Merge pull request #2436 from dkanada/music
Add config options for MusicBrainz
2020-03-02 12:54:17 +03:00
Vasily ba8d8cede9 Replace foreach with for - MOAR SPEED 2020-03-02 12:39:34 +03:00
Vasily 9a9f2aa293 Apply suggestions from code review
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-03-02 12:36:44 +03:00
Vasily 376bbb40bd Apply code review suggestion 2020-03-02 12:34:34 +03: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 3ab51712b8 Fix warnings in PlaylistXmlSaver 2020-03-01 18:41:17 +01:00
Mark Monteiro 1204818698 Clean up and document PlaylistResolver 2020-03-01 18:28:19 +01:00
Mark Monteiro 41a26f8ecd Correctly resolve playlists that are stored using a directory path 2020-03-01 18:28:02 +01:00
Mark Monteiro f00356e9fe Use a constant for the default playlist file name 2020-03-01 18:23:51 +01:00
dkanada 49f6809254 fix build error 2020-03-01 22:48:41 +09:00
Mark Monteiro 7e3b6768f8 Add NuGet reference to config abstractions in MediaBrowser.Common project 2020-03-01 12:10:32 +01:00
Ignatius Bagus 0b0c5984f9 Translated using Weblate (Indonesian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/id/
2020-02-29 15:49:17 -05:00
Adam Bokor 03a294a706 Translated using Weblate (Hungarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hu/
2020-02-29 04:10:17 -05:00
dkanada d86e5c2ab7 add code suggestions 2020-02-29 16:24:07 +09:00
dkanada 630d79fc96 prefix private fields with underscore 2020-02-29 16:22:45 +09:00
Steven Tang 2e856ad9fe Fix download file with non-ASCII filename 2020-02-29 12:11:27 +08: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
Ilija Apostolovski 6261e4e7f6 Translated using Weblate (Macedonian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/mk/
2020-02-28 13:12:32 -05:00
Mark Monteiro 3043b7323b Use constants for settings keys 2020-02-28 17:57:38 +01:00
Ilija Apostolovski 77963c7a8c Added translation using Weblate (Macedonian) 2020-02-28 10:12:47 -05:00
Vasily 7f38af3701 Remove custom queue class as it is not needed 2020-02-28 17:27:16 +03:00
Vasily f81cd037f0 Small speed improvement - no need to convert an array to a list to just iterate over it 2020-02-28 16:19:51 +03:00
Vasily ae1f975b99 Implement fast sorting 2020-02-27 20:21:34 +03:00
Vasily 0f0b89f344 Trying to be more safe 2020-02-27 20:14:56 +03:00
Vasily e125db4fe3 Bring back sorting when needed to fix PlayTo
This is partial revert of https://github.com/jellyfin/jellyfin/pull/1011
2020-02-27 20:11:40 +03:00
dkanada e80444d11b use the custom server for external ids 2020-02-28 01:43:57 +09:00
Vasily d1670f8180 Apply suggestions from code review
Co-Authored-By: Claus Vium <cvium@users.noreply.github.com>
2020-02-27 16:02:18 +03:00
Vasily 8e20d2e931 Simplify AlphanumericComparer, reduce code duplication 2020-02-27 14:51:34 +03:00
Bond-009 13bf5e94b3 Merge pull request #2472 from Narfinger/tests-fix3
moves shows tests to Theory and InlineData format
2020-02-27 08:52:12 +01:00
Narfinger 107974e3f8 moves shows tests to Theory and InlineData format 2020-02-27 11:35:01 +09:00
sharkykh 9d53fd0e73 Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2020-02-26 14:01:46 -05:00
Bond_009 d1e1aef5f7 Fix possible race condition 2020-02-26 18:19:34 +01:00
dkanada fd3ee279de Merge pull request #2448 from Narfinger/tests-fix2
adds names from the episodenumber tests to path tests
2020-02-27 02:05:16 +09: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
sharkykh 6c6b5d7f28 Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2020-02-25 18:29:17 -05: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
MOLOKAL f11678ae4b Translated using Weblate (Malay)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ms/
2020-02-25 07:10:03 -05:00
Vasily a075fefca9 Merge pull request #2160 from Artiume/master
Force Transcoding LiveTV
2020-02-25 14:40:06 +03:00
dkanada 4ae80a5d56 partially fix issue with music scans 2020-02-24 14:35:30 +09:00
Andreas Olsson b40ac479a2 Translated using Weblate (Swedish)
Translation: Jellyfin/Jellyfin
Translate-URL: http://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sv/
2020-02-23 23:21:31 -05:00
R0flcopt3r 3e2f09ecf8 Translated using Weblate (Norwegian Nynorsk)
Translation: Jellyfin/Jellyfin
Translate-URL: http://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nn/
2020-02-23 23:21:31 -05:00
Daniel De Jesus 6b634026e6 Translated using Weblate (Spanish (Dominican Republic))
Translation: Jellyfin/Jellyfin
Translate-URL: http://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_DO/
2020-02-23 23:21:31 -05:00
Peter Maar 818695a01e Improve controls for deinterlace method; matches with jellyfin-web changes 2020-02-23 21:40:53 -05:00
artiume 697aee5b0c Merge pull request #21 from jellyfin/master
nightly
2020-02-23 10:57:52 -05:00
dkanada 940990708e remove unused assignment 2020-02-24 00:25:27 +09:00
dkanada 19a609a889 update musicbrainz options 2020-02-24 00:24:03 +09:00
dkanada a34826008f update external ids 2020-02-24 00:22:23 +09:00
dkanada 0a55eb9106 Merge pull request #2444 from Narfinger/tests-fix
converted tests to inlinedata
2020-02-23 21:55:06 +09:00
dkanada a3bb81553d Merge pull request #2176 from Bond-009/nullable2
Enable nullable reference types for Emby.Photos and Emby.Notifications
2020-02-23 21:52:46 +09:00
dkanada de40f22a46 Merge pull request #2384 from Bond-009/warn16
Fix some warnings in Emby.Server.Implementations
2020-02-23 21:46:15 +09: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
Narfinger 496bdc65f3 adds names from the episodenumber tests to path tests 2020-02-23 19:45:29 +09: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
Narfinger fd5f0c54a6 fixes formatting and enabling another test 2020-02-23 18:50:33 +09:00
Narfinger b306b8b881 add todos and fixes some todo tests 2020-02-23 18:46:10 +09:00
Narfinger 4dabc50f09 fixes last tests and cleanup 2020-02-23 18:31:23 +09:00
Narfinger c2fe628c79 removed failing tests 2020-02-23 18:19:19 +09:00
dkanada 72c98e41ca Merge pull request #2442 from Bond-009/remux
Switch remux and direct stream
2020-02-23 16:23:12 +09:00
Narfinger 21f11c600a converted tests to inlinedata 2020-02-23 12:12:48 +09:00
dkanada 6e239c52c5 Merge pull request #2291 from Bond-009/sessionmanager
Fix warnings in SessionManager
2020-02-23 10:53:44 +09:00
dkanada 6715450598 Merge pull request #2427 from Bond-009/minor
Minor improvements
2020-02-23 10:48:47 +09:00
Bond_009 ffc9eb67f0 Switch remux and direct stream 2020-02-23 00:05:28 +01:00
Peter Maar 7716deddf0 Add encoding option bobandweave, change back the EncodingHelper logic 2020-02-22 17:01:56 -05:00
artiume 4becaf83dd Update MediaInfoService.cs 2020-02-22 10:03:17 -05:00
dkanada 65a9d618cc add config options for musicbrainz 2020-02-22 15:04:52 +09:00
Saksol 804ca0543b Translated using Weblate (Icelandic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/is/
2020-02-21 14:29:23 -05:00
R0flcopt3r 583f171f9e Added translation using Weblate (Norwegian Nynorsk) 2020-02-21 14:29:23 -05:00
dkanada 557b165f01 Merge pull request #2434 from Bond-009/photo
Fix photo serialization
2020-02-22 00:21:34 +09:00
dkanada 4355b453d4 Merge pull request #2429 from Bond-009/episode
Fix episode parsing
2020-02-22 00:17:37 +09:00
dkanada 61015c1d0f Merge pull request #2321 from Bond-009/images
Simplify image processing by removing image enhancers
2020-02-21 12:32:54 +09:00
artiume eb67117b83 Merge pull request #20 from jellyfin/master
nightly
2020-02-20 19:44:58 -05:00
Bond-009 b02a3a29f5 Fix photo serialization 2020-02-20 15:30:04 +01:00
Daniel De Jesus 28cc210a5e Translated using Weblate (Spanish (Dominican Republic))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_DO/
2020-02-20 09:18:14 -05:00
SleepyJesse d240321e87 Translated using Weblate (Chinese (Traditional))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2020-02-20 09:18:14 -05:00
SleepyJesse b2bf0f1796 Translated using Weblate (Chinese (Hong Kong))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant_HK/
2020-02-20 09:18:14 -05:00
SleepyJesse 107e43aaac Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2020-02-20 09:18:14 -05:00
Bond-009 7df6d4e7a0 Update EpisodeNumberTests.cs 2020-02-20 12:02:45 +01:00
Vasily c73370ad92 Merge pull request #2421 from viaregio/master
#2407: Prefer episode and season numbers from the embedded MP4-metadata
2020-02-20 13:17:07 +03:00
Bond_009 adc9fc282c Minor improvements 2020-02-19 23:08:58 +01:00
Bond_009 dfd74adc15 Add test 2020-02-19 22:51:30 +01:00
Bond_009 620047ab9a Fix episode parsing 2020-02-19 22:35:40 +01:00
Bond-009 0f173e1778 Merge branch 'master' into sessionmanager 2020-02-19 21:07:09 +01:00
Bond_009 184ad29f3f Address comments 2020-02-19 21:04:28 +01:00
Ulrich Wagner 3bd7633cbf Update Emby.Server.Implementations/Library/LibraryManager.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-19 19:47:03 +01:00
Ulrich Wagner a9e744bea0 Curly braces on new lines 2020-02-19 19:41:10 +01:00
Ulrich Wagner 3d9dc59554 Omitting the parameter ExtraChapters 2020-02-19 19:03:42 +01:00
Ulrich Wagner f4d0fa8dc8 Update Emby.Server.Implementations/Library/LibraryManager.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-19 18:58:28 +01:00
Ulrich Wagner d6971581d6 Update Emby.Server.Implementations/Library/LibraryManager.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-19 17:46:50 +01:00
Ulrich Wagner 0f2ee2686d Constructor of the LibraryManager takes the mediaEncoder as parameter 2020-02-19 16:06:30 +01:00
Ulrich Wagner b16ba7d985 Update Emby.Server.Implementations/Library/LibraryManager.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-19 13:40:27 +01:00
Ulrich Wagner 7005326685 Update Emby.Server.Implementations/Library/LibraryManager.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-19 13:40:06 +01:00
Ulrich Wagner 4d0ee3f6cc Update Emby.Server.Implementations/Library/LibraryManager.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-19 13:39:51 +01:00
Ulrich Wagner 39b6d6586f Update Emby.Server.Implementations/Library/LibraryManager.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-19 13:37:36 +01:00
artiume 8f5ffba29f Merge pull request #19 from Artiume/Artiume-livetv-1
Update MediaInfoService.cs
2020-02-19 06:26:06 -05:00
artiume a4e0364139 Update MediaInfoService.cs 2020-02-19 06:15:55 -05:00
artiume b375aeb56a fix indentation
it was tabs
2020-02-19 06:07:48 -05:00
artiume 967f8c6dcd Merge pull request #18 from jellyfin/master
nightly
2020-02-19 06:02:26 -05:00
Ulrich Wagner 5fed4d10ab Only reading the result of GetMediaInfo if it completed successfully 2020-02-19 08:39:01 +01:00
Ulrich Wagner a62196afc7 Merge pull request #1 from jellyfin/master
Up-to-date
2020-02-19 08:09:37 +01:00
artiume cef796a5ba Update Bug Report for System Details (#2422)
* Update bug_report.md

Increase priority for system details, constantly have to ask people for their deets. also increased details that should be asked.

* Update bug_report.md

* Update bug_report.md

* Update .github/ISSUE_TEMPLATE/bug_report.md

Co-Authored-By: dkanada <dkanada@users.noreply.github.com>

* Update .github/ISSUE_TEMPLATE/bug_report.md

Co-Authored-By: telans <telans@protonmail.com>

* Update bug_report.md

* Update bug_report.md

Co-authored-by: dkanada <dkanada@users.noreply.github.com>
Co-authored-by: telans <telans@protonmail.com>
2020-02-19 13:56:02 +09:00
Protik Das a68d4396e5 Translated using Weblate (Bengali)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bn/
2020-02-18 21:46:15 -05:00
Christian Elbrianno b672d105b6 Translated using Weblate (Indonesian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/id/
2020-02-18 21:46:15 -05:00
Kaspar Laineste e2a36a5b14 Translated using Weblate (Finnish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fi/
2020-02-18 21:46:15 -05:00
Adam Bokor 6783878711 Translated using Weblate (Hungarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hu/
2020-02-18 21:46:15 -05:00
Daniel De Jesus b6ae5242c5 Added translation using Weblate (Spanish (Dominican Republic)) 2020-02-18 21:46:15 -05:00
Ulrich Wagner d7f199bb1c #2407: Prefer MP4-Metadata for episodes 2020-02-17 14:57:07 +01:00
Bond-009 3bc0ce070d Merge pull request #2382 from dkanada/refactor
Refactor some API services
2020-02-17 10:41:19 +01:00
Protik Das 0387c73d64 Translated using Weblate (Bengali)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bn/
2020-02-16 03:16:09 -05:00
Pramit Biswas ae049f7fc8 Translated using Weblate (Bengali)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bn/
2020-02-16 03:16:08 -05:00
Pramit Biswas 6b4f1f3b5b Added translation using Weblate (Bengali) 2020-02-15 12:23:53 -05:00
Adam Bokor 0591d118f9 Translated using Weblate (Hungarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hu/
2020-02-14 22:49:44 -05:00
Andrew Rabert eff8d2466e Merge pull request #2405 from nvllsvm/fuckit
Fix arm32 built on amd64 host
2020-02-14 20:13:43 -05:00
Andrew Rabert dcac99c1a4 Fix arm32 built on amd64 host
dotnet doesn't support building arm32 from QEMU (fuck knows why).
also change arm64 image for the sake of consistency
2020-02-13 20:03:40 -05:00
artiume 63f13df6fc Merge pull request #17 from jellyfin/master
10.5
2020-02-13 13:09:50 -05:00
dkanada 53db526667 merge branch master into refactor 2020-02-14 03:02:06 +09:00
dkanada cf2626428c Merge pull request #2400 from Bond-009/baseurl
Another baseurl related fix
2020-02-14 01:16:52 +09:00
Bond-009 407ba755f1 Merge pull request #2258 from geilername/transcoding-throttling
Enable Throttling when transcoding without Hardware-Acceleration
2020-02-13 17:01:09 +01:00
dkanada 8ee917143f Merge pull request #2358 from Bond-009/tests
Enable TreatWarningsAsErrors and Nullable for test projects
2020-02-14 00:31:00 +09:00
artiume 40ad6f843f Merge pull request #16 from jellyfin/master
nightly
2020-02-13 05:53:23 -05:00
Bond_009 f5db4c8402 Another baseurl related fix
Baseurl always starts with a '/' (unless it's empty)
2020-02-12 20:57:34 +01:00
Bond-009 64800de29d Merge pull request #2394 from mark-monteiro/xml-documentation
Add Some XML Documentation
2020-02-12 20:43:51 +01:00
Mark Monteiro 8ffb073ccb Enable documentation warnings for fully documented files 2020-02-12 20:05:26 +01:00
Bond-009 a2490a7ae5 Merge branch 'master' into images 2020-02-12 17:41:46 +01:00
Mark Monteiro 33761c3658 Use "implement" instead of "apply" when referring to an interface 2020-02-12 14:08:06 +01:00
Vasily e241f83ff1 Merge pull request #2398 from Artiume/patch-1
Update dockerfile to install git for new dependency
2020-02-12 14:24:19 +03:00
Vasily a26c1ab17d Remove commented code 2020-02-12 14:19:11 +03:00
Anthony Lavado 42066ee326 Merge branch 'master' into transcoding-throttling 2020-02-12 02:01:56 -05:00
Anthony Lavado 684568e6d2 Merge pull request #2393 from DMouse10462/patch-1
Fix Fedora build
2020-02-12 01:56:12 -05:00
Johan 6813efd1a2 Translated using Weblate (Finnish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fi/
2020-02-12 00:17:58 -05:00
j7johnny a7c7d536a7 Translated using Weblate (Chinese (Traditional))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2020-02-12 00:17:58 -05:00
Anthony Lavado 00073c162a Merge pull request #2363 from dkanada/view
Add session view endpoint
2020-02-11 23:56:47 -05:00
dkanada 662e1164c9 Merge pull request #2326 from Bond-009/dlnawarnings
Improvements to dlna server
2020-02-12 02:23:52 +09:00
artiume fd55164410 Merge pull request #15 from Artiume/Artiume-livetv
Fix MaxBitrate
2020-02-11 12:21:43 -05:00
artiume b5342bb7d9 Fix MaxBitrate 2020-02-11 10:57:16 -05:00
artiume 8fb86cb5ff git to arm64 2020-02-11 10:30:30 -05:00
artiume e47185160e Add git to arm 2020-02-11 10:30:15 -05:00
artiume 8acfc264fc Update dockerfile to install git for new dependency
https://github.com/jellyfin/jellyfin-web/pull/735

I had to install git to get it to build ✌️
2020-02-11 10:29:26 -05:00
Mark Monteiro a381eb884c add-some-xml-documentation 2020-02-10 10:26:28 +01:00
David Mouse 422c440743 Fix Fedora build
Fedora builds were broken due to dotnet-sdk-3.1 and dotnet-runtime-3.1 not being available on the @dotnet-sig/dotnet repo as well as a lack of the git package (needed for yarn when installing jellyfin/jellyfin-noto per https://github.com/jellyfin/jellyfin-web/pull/735). Replaces the outdated repo with the official repo found in Microsoft's documentation.
2020-02-10 04:12:37 -05:00
Peter Maar 8531ed646d Temporary fix/change forcing yadif to "send_field" 2020-02-09 12:13:31 -05:00
artiume 4d324046ac Merge pull request #14 from jellyfin/master
nightly
2020-02-08 21:14:45 -05:00
Bond_009 867835a474 Fix build 2020-02-08 22:25:44 +01:00
Bond_009 f96bc23c4f Merge branch 'master' into nullable2 2020-02-08 21:49:28 +01:00
diegoalrey 77428d338d Translated using Weblate (Galician)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/gl/
2020-02-08 10:17:50 -05:00
The Iiseppi e7dcaa7d08 Translated using Weblate (Finnish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fi/
2020-02-08 10:17:50 -05:00
dkanada 75d6545145 Merge pull request #2373 from Bond-009/warn14
Fix some warnings in MediaBrowser.Model
2020-02-07 23:45:21 +09:00
artiume 81396a11cb Update CONTRIBUTORS.md 2020-02-06 17:35:47 -05:00
artiume ab59848d92 Merge pull request #13 from Artiume/Artiume-LiveTV
Update MediaInfoService.cs
2020-02-06 17:34:04 -05:00
artiume a73ce1d781 Update MediaInfoService.cs 2020-02-06 17:21:10 -05:00
artiume c3f749ec66 Update MediaBrowser.Model/Users/UserPolicy.cs
Co-Authored-By: Anthony Lavado <anthonylavado@me.com>
2020-02-06 14:02:46 -05:00
Bond_009 7060934792 Fix some warnings in Emby.Server.Implementations 2020-02-06 15:21:38 +01:00
Bond-009 cefac4f886 Update Emby.Server.Implementations/Session/SessionManager.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-02-06 13:16:22 +01:00
Bond-009 1ae9ed6e2a Merge pull request #2381 from sebPomme/fix_readme_link
Fix quick start guide url in readme
2020-02-06 13:16:06 +01:00
Bond-009 0a43814596 Merge branch 'master' into sessionmanager 2020-02-06 13:04:07 +01:00
Bond-009 3fe84c3213 Apply suggestions from code review
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-02-06 13:03:02 +01:00
Bond-009 22510909fb Update Jellyfin.Naming.Tests.csproj 2020-02-06 13:00:15 +01:00
dkanada df739b5b2f Merge pull request #2325 from Bond-009/naming
Clean up Emby.Naming
2020-02-06 20:59:30 +09:00
Bond-009 d5fcca3d05 Merge branch 'master' into naming 2020-02-05 23:28:00 +01:00
dkanada 1cb51a8ac7 rename session folder 2020-02-06 00:47:50 +09:00
sebpomme a954d5e953 Fix qui start guide url in README.md 2020-02-05 16:26:51 +01:00
dkanada c2733ac0dc split api keys into their own service 2020-02-06 00:26:21 +09:00
dkanada e8984ed3a9 Merge pull request #2379 from joshuaboniface/nodejs-deb
Use NodeJS 10.X for NPM builds
2020-02-05 14:06:51 +09:00
ariqfadlan ebd0771dca Translated using Weblate (Indonesian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/id/
2020-02-04 23:17:44 -05:00
Joshua M. Boniface e3c64b9fee Use NodeJS 10.X for NPM builds 2020-02-04 22:07:01 -05:00
dkanada 9af149b02d Merge pull request #2374 from Bond-009/warn15
Fix some warnings in MediaBrowser.Controller
2020-02-05 01:23:04 +09:00
Bond-009 91707f13a8 Add endpoints back 2020-02-04 12:29:14 +01:00
Bond-009 6a6472bb8a Update MediaBrowser.Controller/Entities/PersonInfo.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-02-04 12:28:16 +01:00
Bond-009 ba1ffbabd3 Merge branch 'master' into nullable2 2020-02-04 12:21:42 +01:00
Bond-009 c9e11c95ee Apply suggestions from code review
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-02-04 12:05:14 +01:00
artiume 3b6a4c3a33 Merge pull request #11 from jellyfin/master
nightly
2020-02-04 06:02:38 -05:00
Bond_009 32dcd372f4 Fix some warnings in MediaBrowser.Controller 2020-02-04 02:10:44 +01:00
Bond_009 f47ad85011 Fix warnings MediaBrowser.Model 2020-02-04 01:49:27 +01:00
Noitty 176e850973 Translated using Weblate (Catalan)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ca/
2020-02-03 16:17:42 -05:00
dkanada f93edb7ade add code suggestions 2020-02-04 01:29:18 +09:00
Claus Vium 241e351a61 Merge branch 'master' into dlnawarnings 2020-02-03 13:51:34 +01:00
dkanada b7a9900556 Merge pull request #2357 from Bond-009/warn13
Fix warnings
2020-02-03 17:15:03 +09:00
dkanada fe325a6e73 Merge pull request #2359 from Bond-009/username
Allow changing capitalization of usernames
2020-02-03 17:14:50 +09:00
dkanada ba724f158c Merge pull request #2367 from Artiume/patch-4
fix SSL issue in arm and arm64
2020-02-03 15:59:18 +09:00
dkanada c1ecd886d9 Merge pull request #2368 from nyanmisaka/master
Fix framerate info not showing when mediasource is in H264 format.
2020-02-03 15:58:26 +09:00
Nyanmisaka c149fcb3ee Update MediaBrowser.Controller/MediaEncoding/JobLogger.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-03 00:02:24 +08:00
Nyanmisaka 2c3b1bb8cb Update JobLogger.cs 2020-02-02 16:46:56 +08:00
Nyanmisaka 7472ae5ca9 fix fps info issue when the video is h264.
Fixed an issue that when the media source is in H264 format and the frame rate info is not displayed due to missing space characters in ffmpeg log.
2020-02-02 16:27:02 +08:00
Nyanmisaka 8eced835c0 Update JobLogger.cs 2020-02-02 15:58:29 +08:00
artiume 4302f16925 Update Dockerfile.arm64 2020-02-01 14:50:45 -05:00
artiume 78bb45e8fa fix SSL issue in arm and arm64
verified arm build on raspbian
2020-02-01 14:46:11 -05:00
Andrew Rabert 021427d881 Merge pull request #2365 from mcarlton00/docker-ssl-fix
Add root certificates to docker image
2020-02-01 12:26:49 -05:00
Matt 994481213f Add root certificates to docker image 2020-02-01 11:02:44 -05:00
dkanada 1bc8ca2542 add session view endpoint 2020-02-02 00:16:11 +09:00
dkanada 26dd67a441 change authentication flow 2020-02-02 00:09:18 +09:00
dkanada 6341d986a9 fix a few warnings 2020-02-02 00:07:46 +09:00
Bond-009 87c5047b13 Merge pull request #2362 from dkanada/tasks
Improve scan progress and fix a few bugs
2020-02-01 15:37:16 +01:00
dkanada 692a9bfdd0 update some comments
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-01 23:36:40 +09:00
dkanada 7df6f8d54e update error message
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-01 23:14:27 +09:00
dkanada afe9ed977b improve scan progress and fix a few bugs 2020-02-01 22:44:27 +09:00
dkanada ab2349ff3c update task names and descriptions 2020-02-01 22:27:25 +09:00
Bond-009 70bc03c795 Apply suggestions from code review
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-02-01 12:54:48 +01:00
Bond_009 acc1846e3e Allow changing capitalization of usernames 2020-01-31 22:56:24 +01:00
Bond_009 71abf1d3ce Enable TreatWarningsAsErrors and Nullable for test projects 2020-01-31 22:46:10 +01:00
Bond_009 87d2479b78 Fix warnings 2020-01-31 22:26:53 +01:00
dkanada cd13f718fb Merge pull request #2247 from Bond-009/stringhelper
Remove StringHelper functions
2020-02-01 03:29:16 +09:00
Bond-009 6cd9c84ddf Update MediaBrowser.Model/Extensions/StringHelper.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-31 18:10:15 +01:00
dkanada b3811a9498 Merge pull request #2349 from Bond-009/deps
Update deps
2020-01-31 11:22:30 +09:00
WNotCoder a3615dec69 Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2020-01-30 13:17:32 -05:00
Bond-009 d69870680b Close xmlwriter first 2020-01-29 17:30:27 +01:00
artiume d4470b5709 Merge pull request #9 from jellyfin/master
nightly
2020-01-28 21:41:52 -05:00
artiume a012a4574f remove test patch 2020-01-28 21:36:51 -05:00
Bond_009 2186df8ac4 Update deps 2020-01-28 22:42:07 +01:00
mtanECECS 81fae5932b Translated using Weblate (Filipino)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fil/
2020-01-28 16:09:23 -05:00
Pooka Mustard 1ff74dd8f0 Translated using Weblate (Arabic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ar/
2020-01-28 16:09:23 -05:00
diegoalrey f7b4dfc1cb Added translation using Weblate (Galician) 2020-01-28 16:09:23 -05:00
Bond_009 6ee04855cd Style 2020-01-28 21:54:51 +01:00
Bond-009 ae9c1e29e7 My bad 2020-01-28 17:50:25 +01:00
Bond-009 acfacabf0c Merge pull request #2347 from Matt07211/fix-2255
Fix broken webserver caused by dotnet publish. Temp Fix for #2255
2020-01-28 15:01:29 +01:00
Bond-009 36d62c3093 Fix? 2020-01-28 13:19:25 +01:00
Matt07211 84fbf64867 Fix broken webserver caused by dotnet publish.
This should be considered a temp fix, as it fixes the symptom and not
the actual root cause of the issue. Why this works? I *feel like* this is
a dependency issue and this change forces it to evalute dependencys in a
different order, avoiding the bug.
2020-01-28 19:37:13 +11:00
Bond_009 6b68521bae Try again 2020-01-27 23:34:40 +01:00
Bond_009 fc578de3b3 Try possible solutions 2020-01-27 22:43:58 +01:00
Vasily 0a95c3a1c2 Merge pull request #2343 from Bond-009/spacing
Fix spacing logs
2020-01-27 19:31:42 +03:00
Bond-009 71bdcd7307 Fix spacing logs 2020-01-27 17:24:29 +01:00
Bond-009 04b9e94c7c Merge pull request #2338 from ferferga/master
Removed old 'automatic restart after update' features
2020-01-27 17:02:30 +01:00
dkanada 1ed92b05fb Merge pull request #2332 from pR0Ps/bugfix/dlna
Fix another issue with DLNA responses not properly paginating
2020-01-27 23:18:33 +09:00
Vasily 8c520160cc Merge pull request #2331 from nyanmisaka/master
fix an issue that could not correctly determine 'IsSecondaryAudio' in some cases.
2020-01-27 15:51:50 +03:00
mtanECECS b5be0c567f Added translation using Weblate (Filipino) 2020-01-26 22:25:14 -05:00
Bond-009 bade35958a Fix 2020-01-26 17:41:34 +01:00
Bond-009 3a338c1899 Address comments 2020-01-26 17:37:47 +01:00
artiume 918df5e352 Merge remote-tracking branch 'jellyfin/master' 2020-01-26 09:33:31 -05:00
ferferga d6786c7304 Removed old 'automatic restart after update' features' 2020-01-25 23:01:48 +01:00
dkanada e58aa57ed7 Merge pull request #2337 from ThreeFive-O/AddTranscodingFramerate
Add transcoding framerate info
2020-01-26 01:06:28 +09:00
SaddFox ad5081f276 Translated using Weblate (Slovenian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sl/
2020-01-25 10:17:25 -05:00
a-alshabib eb04126473 Translated using Weblate (Arabic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ar/
2020-01-25 10:17:25 -05:00
ThreeFive-O 4f3bfd9146 Add Transcoding framerate info 2020-01-24 23:33:32 +01:00
Carey Metcalfe d3de91dab6 Fix another issue with DLNA responses not properly paginating
The `UserRootFolder.GetItemsInternal` method now applies any sorting and
pagination requested by the `InternalItemsQuery` that was passed to it.

Previous pagination fix: #2304
Original issue #2303
2020-01-24 00:43:28 -05:00
Nyanmisaka 48e9c004b4 fix an issue about determining 'IsSecondaryAudio'
fix an issue that could not correctly determine 'IsSecondaryAudio' in some cases.
2020-01-24 00:55:14 +08:00
Vasily 8ff07e17e6 Merge pull request #2242 from Bond-009/getstream
Remove FileSystem.GetStream
2020-01-23 19:33:40 +03:00
Bond_009 c751ba9f70 Fix build 2020-01-22 22:27:03 +01:00
Bond-009 c8409d2ea1 Remove FileSystem.GetStream 2020-01-22 22:20:35 +01:00
Bond_009 dc62e436c4 Clean up Emby.Naming 2020-01-22 22:18:56 +01:00
Bond_009 82112b6788 Improvements to dlna server
* Improve response writer
* Add analyzers
* Error on warnings in release mode
* Disable doc warnings
2020-01-22 21:00:07 +01:00
Marco 6eac7f0fa7 Translated using Weblate (Italian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/it/
2020-01-22 12:17:19 -05:00
dkanada 1dd4abebbd Merge pull request #2297 from Bond-009/asyncio
Kestrel doesn't like sync IO operations
2020-01-23 01:59:52 +09:00
Bond-009 5340eb9363 Update Emby.Dlna/Service/BaseControlHandler.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-22 17:46:26 +01:00
Bond_009 ddf9b38799 Simplify image processing by removing image enhancers 2020-01-21 20:26:30 +01:00
Bond-009 ac3b958c67 Use async methods 2020-01-21 17:59:41 +01:00
dkanada d4de78693f Merge pull request #2184 from WiiPlayer2/bug/global-header-flag-support
Add check if output container supports "global_header" flag
2020-01-21 19:24:35 +09:00
Vasily f23434f4f7 Merge pull request #2299 from dkanada/testing
Fix a few more tests for music and episodes
2020-01-21 13:21:24 +03:00
dkanada 4abcbc66be Merge pull request #2295 from shemanaev/patch-1
Enable path mapping in `PlaybackInfo` endpoint
2020-01-21 19:20:14 +09:00
Waldemar Tomme ef487441d1 Remove configuration of global_header flag 2020-01-21 06:48:25 +01:00
dkanada 11c758b6be remove unsupported test cases 2020-01-21 00:20:24 +09:00
Vasily 2f8f064a23 Merge pull request #2304 from pR0Ps/master
Fix pagination for DLNA root folder list
2020-01-20 16:07:51 +03:00
Andrew Rabert da2c998e28 Update ARM images to debian buster (#2313)
Also has the effect of updating ffmpeg to 4.1
2020-01-19 12:34:33 -05:00
Andrew Rabert 075dad8720 Fix ARM images (#2302)
Allow for native building of Docker images. Use buildx if
cross-compilation is needed.
2020-01-19 07:51:38 -05:00
Carey Metcalfe f2eea89ff0 Fix pagination for DLNA root folder list
Previously, when responding to a DLNA "Browse" request, the
`StartingIndex` was not respected and all of the root items were
returned each time. This caused infinite loops with in DLNA clients that
ignored the `TotalMatches` data in the response and just continued
asking for the next page until they got an empty response.

This fix makes the root folder list respect the `StartingIndex` and
`RequestedCount` parameters like all other responses.

Fixes issue #2303
2020-01-19 01:37:52 -05:00
dkanada a562a4d505 minor linting for ci files 2020-01-19 00:19:19 +09:00
dkanada e700fc8a07 fix and remove a few more tests 2020-01-19 00:18:55 +09:00
dkanada c618f3f8eb Merge pull request #2257 from Bond-009/cleantests
Fix a couple of tests
2020-01-19 00:08:37 +09:00
dkanada 1e65cc4695 Merge pull request #2269 from EraYaN/azp-coverlet-reports
Split CI YAML files and update code coverage collection
2020-01-18 23:53:55 +09:00
Bond_009 2610f377c0 Kestrel doesn't like sync IO operations 2020-01-18 00:09:25 +01:00
Denis 549a2d8b6d Enable path mapping in PlaybackInfo endpoint 2020-01-17 22:48:28 +03:00
4d1m 8e71046a3c Translated using Weblate (Romanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ro/
2020-01-17 04:17:10 -05:00
artiume 73a47e934d Fix Docker Arm Nightly (#2286)
* Fix Docker Arm Nightly

Updated image base.

There was an error for libssl missing. I attempted to add libssl1.0.0 but it wasn't found so I fell back to libssl-dev.

Much more work needs to be done. ffmpeg is still debian based. I attempted to add jellyfin-ffmpeg but I was having too many issues so I'm saving it for another day, but it at least builds out successfully.

* Fix docker arm64 nightly
2020-01-17 00:35:41 -05:00
Bond_009 c601def484 Fix warnings in SessionManager 2020-01-17 00:19:58 +01:00
Bond-009 686d1ff9fb Update StringHelper.cs 2020-01-16 23:23:06 +01:00
Bond-009 47d3337124 Update StringHelper.cs 2020-01-16 23:22:42 +01:00
artiume 0cbae4a06d Tcoding
https://github.com/jellyfin/jellyfin/pull/2184
2020-01-16 12:51:34 -05:00
Vasily bdbf7a69f6 Merge pull request #2289 from Bond-009/dvd
Add back support for DVDs copied as folders
2020-01-16 19:43:36 +03:00
Vasily 1cb142fbab Merge pull request #2290 from anthonylavado/master
Update SQLitePCL to new version
2020-01-16 18:26:44 +03:00
Anthony Lavado dcd6ceb9a2 Update SQLitePCL to new version 2020-01-16 09:31:20 -05:00
Bond-009 f3a1729964 Address comments 2020-01-16 15:02:50 +01:00
Vasily ad481322f6 Merge pull request #2288 from Bond-009/logging
Add brackets around thread id
2020-01-16 16:45:46 +03:00
Vasily 88d66d5f5c Merge pull request #2249 from Narfinger/docker-fix
fixes dockerfile building on recent linux installations
2020-01-16 16:40:12 +03:00
Bond-009 e882b03e81 Add back support for DVDs copied as folders 2020-01-16 13:30:38 +01:00
Bond-009 96c9af5904 Add brackets around thread id 2020-01-16 13:20:01 +01:00
dkanada bc4c67e6fa Merge pull request #2287 from nyanmisaka/master
New upstream ffmpeg version 4.2.1 for windows nightly channel
2020-01-16 20:54:59 +09:00
Nyanmisaka 2ce16d4bb5 fix indentation 2020-01-16 18:47:54 +08:00
Nyanmisaka 0a7ea36c68 Update build-jellyfin.ps1 2020-01-16 18:10:14 +08:00
Nyanmisaka e92e105c42 New upstream ffmpeg version 4.2.1 on windows 2020-01-16 17:57:19 +08:00
Nyanmisaka ac0b30285e New upstream ffmpeg version 4.2.1 on windows 2020-01-16 16:32:07 +08:00
Nyanmisaka 15c52867ea New upstream ffmpeg version 4.2.1 on windows 2020-01-16 16:32:04 +08:00
4d1m 42213d94e5 Translated using Weblate (Romanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ro/
2020-01-16 02:17:12 -05:00
nextlooper42 d4745957b3 Translated using Weblate (Slovak)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sk/
2020-01-16 02:17:12 -05:00
dkanada 4aa0b940e3 Merge pull request #2251 from nyanmisaka/master
add support for AMD AMF hardware encoding on Windows & Linux
2020-01-16 15:26:46 +09:00
dkanada 884c3e5614 Merge pull request #2283 from EraYaN/nsis-create-speedup
Change NSIS log verbosity and use lesser but faster compression.
2020-01-16 15:04:16 +09:00
Joshua M. Boniface 3b3718e437 Merge pull request #2275 from Artiume/patch-1
Explicitly ask for ffmpeg logs
2020-01-15 10:05:35 -05:00
artiume 2cad58e5cd Update .github/ISSUE_TEMPLATE/media_playback.md
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-15 10:02:01 -05:00
Erwin de Haan ec8baaf48d Switch around SetCompressor arguments. Hide progress bars for powershell. 2020-01-15 12:17:42 +01:00
Nyanmisaka 2c10891b66 turn on indentation. 2020-01-15 18:45:28 +08:00
Nyanmisaka 8868ff2ffa remove useless comment 2020-01-15 18:40:58 +08:00
Erwin de Haan 67cae37308 Formatting and comment removal. 2020-01-15 11:39:47 +01:00
Erwin de Haan 1ad6f01617 Switch to slightly more verbose logging. 2020-01-15 11:37:37 +01:00
Erwin de Haan 9aa870cf24 Enable /SOLID switch for compression 2020-01-15 11:36:54 +01:00
Erwin de Haan d3bd22d7a2 Enable Unicode
ANSI targets are deprecated
2020-01-15 11:36:22 +01:00
Vasily 3ab979c6ba Merge pull request #2264 from Bond-009/discovery
Clean up server discovery code
2020-01-15 13:34:29 +03:00
Erwin de Haan 22f408201a Less output and lesser compression. 2020-01-15 11:20:01 +01:00
Erwin de Haan da91b4fa4c Split CI testing files
Switch to cobertura for code coverage
Switch to dotnet test for tests
Add matrix run for different platforms
Add extra variables for easier maintenance
2020-01-15 11:05:57 +01:00
Vasily c6484c0220 Merge pull request #2181 from BnMcG/2179-authentication-tests
Test Jellyfin.Api authentication handling
2020-01-14 18:03:25 +03:00
dkanada b1e76db21e Merge pull request #2266 from Bond-009/nullref2
Try to fix nullreff
2020-01-14 18:46:09 +09:00
dkanada d43d39f9b8 Merge pull request #2272 from Bond-009/logging
Add thread ID and source to logging
2020-01-14 18:03:26 +09:00
Artiume c1350f30d2 Update .github/ISSUE_TEMPLATE/media_playback.md
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-13 21:25:41 -05:00
Artiume cd5e5cda61 Update .github/ISSUE_TEMPLATE/media_playback.md
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-13 21:25:21 -05:00
Artiume 402691b5e1 Explicitly ask for ffmpeg logs
gimme yo ffmpeg logs, yo
2020-01-13 17:16:43 -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
Bond-009 facbd87cfc Merge pull request #2268 from dkanada/absolute-path-fix
Fix tests for absolute paths
2020-01-13 19:58:45 +01:00
Bond-009 65fe243afb Add thread ID and source to logging 2020-01-13 19:44:17 +01:00
Slobodan Simić 138bff4327 Translated using Weblate (Serbian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sr/
2020-01-13 06:17:07 -05:00
Z Yang ab0130e9e2 Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2020-01-13 06:17:07 -05:00
Alexander Brissman 7b91df1994 Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2020-01-13 06:17:07 -05:00
hbo faf898ea0d Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-01-13 06:17:07 -05:00
Philmo67 31347de792 Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-01-13 06:17:07 -05:00
punkch 9c2c31b0c6 Translated using Weblate (Bulgarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bg/
2020-01-13 06:17:07 -05:00
dkanada 536237c35d move the split usage to the proper location 2020-01-13 17:37:07 +09:00
dkanada d461f46bef ignore drive name in windows environments 2020-01-13 17:31:14 +09:00
dkanada 9eac19c75a change invariant culture to ordinal 2020-01-13 17:09:22 +09:00
Bond-009 cf13e89ad6 Update MediaBrowser.Api/Playback/MediaInfoService.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-13 09:01:14 +01:00
Bond-009 665ca5cf1f Update UdpServer.cs 2020-01-13 09:00:30 +01:00
dkanada d00fd7ca82 switch two incorrectly used variables 2020-01-13 15:43:06 +09:00
dkanada 65e9a705d3 check operating system for absolute path test 2020-01-13 15:34:50 +09:00
dkanada a8cd963d46 fix tests for absolute paths 2020-01-13 15:25:54 +09:00
dkanada c3efcbf77e Merge pull request #2245 from BnMcG/1874-regression-test
Add a test to prevent a regression of absolute path generation behaviour
2020-01-13 14:18:11 +09:00
Bond_009 56f580cdf6 Add test to prevent regressions 2020-01-12 23:57:13 +01:00
Bond_009 93ab829df5 Attempt #3 2020-01-12 23:25:57 +01:00
Bond_009 84d1b12530 Attempt #2 2020-01-12 21:55:04 +01:00
Bond_009 da5893b0f1 Try to fix nullreff 2020-01-12 21:21:20 +01:00
dkanada ce7744806c Merge pull request #2216 from gnattu/master
Let HLS fallback to mpegts in case device reports unsupported container
2020-01-13 03:43:59 +09:00
gnattu ea075c1b48 Add reminder to remove the workaround
This will be no longer needed when ffmpeg is ready

Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-12 13:22:20 -05:00
Bond-009 ded9857f45 Clean up server discovery code 2020-01-12 18:59:10 +01:00
dkanada d217f1614e Merge pull request #2096 from Bond-009/embytv
Clean up Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
2020-01-13 00:41:52 +09:00
Bond-009 2a09f05ff3 Fix build 2020-01-12 16:30:31 +01:00
Nyanmisaka 08c4d3797f add support for AMF hardware encoding on Linux.
1) h264_amf is now supported on linux with 'amdgpu-pro' installed and '--enable-amf' when compiling ffmpeg.
2) Using vaapi decode and h264_amf encode on linux platform can avoid some weird transcoding errors in h264_vaapi with amd gpu.
2020-01-12 21:38:28 +08:00
Maximilian Marschall 081d942d03 Enable Throttling when transcoding without Hardware-Acceleration 2020-01-12 00:33:57 +01:00
Bond_009 9f5bbb126e Fix tests 2020-01-11 22:29:46 +01:00
Bond_009 abf03f7d3a Clean up some more 2020-01-11 22:17:05 +01:00
Bond_009 ec0ef2a2c5 Remove useless statement 2020-01-11 22:17:05 +01:00
Bond_009 cd0592ea8f Improve parsers 2020-01-11 22:17:05 +01:00
Bond_009 dd254eddac Simplify CleanDateTimeParser 2020-01-11 22:17:05 +01:00
Bond_009 b1dc595be1 Fix a couple of tests 2020-01-11 22:17:05 +01:00
Bond_009 a647dc5705 Cleanup tests 2020-01-11 22:17:05 +01:00
dkanada a272638a84 Merge pull request #2170 from Bond-009/mediainfoservice
Minor changes to MediaInfoService
2020-01-11 16:54:23 +09:00
dkanada bca48b5d5c Merge pull request #2248 from jellyfin/azp-vstest-fix
Fix the VSTest runner
2020-01-11 15:34:22 +09:00
dkanada d63debd008 Merge pull request #2254 from Bond-009/regex
Fix regex for movies released after 2019
2020-01-11 15:12:39 +09:00
Bond_009 801c356d66 Fix regex for movies released after 2019 2020-01-11 00:23:14 +01:00
Vasily dd7feacd34 Merge pull request #2105 from Bond-009/namingtests
Add back all old emby tests
2020-01-11 02:11:13 +03:00
Bond_009 0d6a4c2909 Fix build 2020-01-11 00:08:47 +01:00
Vasily aca4d678a2 Merge pull request #2136 from Bond-009/warn12
More warnings (removed)
2020-01-11 02:02:48 +03:00
Slobodan Simić fa1aeeb18a Added translation using Weblate (Serbian) 2020-01-10 15:27:17 -05:00
Bond_009 d9ec502ff9 Address comments 2020-01-10 21:25:45 +01:00
Bond_009 bb236b9591 Merge branch 'master' into warn12 2020-01-10 21:18:16 +01:00
Bond_009 e714b9930e Merge branch 'master' into embytv 2020-01-10 21:16:46 +01:00
Nyanmisaka e95239e281 add support for AMD h264_amf & hevc_amf 2020-01-11 01:36:25 +08:00
archon eleven 0a39e54984 Translated using Weblate (Malay)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ms/
2020-01-10 10:17:05 -05:00
Philmo67 81ae6d8afd Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-01-10 10:17:05 -05:00
keitaro62 0a92200c6f Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-01-10 10:17:05 -05:00
Narfinger c3ff4e0b9f fixes dockerfile building on recent linux installations 2020-01-10 19:42:07 +09:00
Ben Magee 64baca9fac Renamed project and namespace 2020-01-09 22:03:57 +00:00
Bond_009 b50c4938e1 Merge branch 'master' into namingtests 2020-01-09 18:26:22 +01:00
Artiume a40cb7bbd8 Merge pull request #7 from jellyfin/master
nightly
2020-01-09 12:14:54 -05:00
Erwin de Haan 312987aea5 Build all test projects using a wildcard 2020-01-09 17:39:17 +01:00
Erwin de Haan 654336990f Added plural glob for test assemblies 2020-01-09 17:31:44 +01:00
Erwin de Haan d328fc51cf Apply suggestions from code review
Co-Authored-By: Bond-009 <bond.009@outlook.com>
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-09 17:28:20 +01:00
Erwin de Haan 6792fa111e Fix the test selection glob. 2020-01-09 17:27:48 +01:00
Erwin de Haan 1ea613a9bd Update Jellyfin.Api.Test to 3.1 2020-01-09 17:26:42 +01:00
Erwin de Haan 1fecb9efb2 Fix the VSTest runner 2020-01-09 17:17:52 +01:00
Bond-009 fdbb329118 Remove StringHelper functions 2020-01-09 17:07:13 +01:00
gnattu d5204f572a Fix typo and plural 2020-01-09 02:25:05 -05:00
dkanada 162c1ac7b7 Merge pull request #2185 from Bond-009/scanerrors
Fix exceptions while scanning
2020-01-09 15:10:29 +09:00
Ben Magee 140673fcf6 Add a test case which doesn't specify the parent directory. 2020-01-08 23:03:17 +00:00
Ben Magee 43c76b48c9 Added a test to prevent a regression of the issue seen in #1874. This issue was fixed in PR#2240 2020-01-08 22:52:33 +00:00
Bond-009 b1af8a4178 Rename function 2020-01-08 18:14:01 +01:00
Bond-009 277e9d2b0b fix build 2020-01-08 18:13:11 +01:00
Bond-009 c3752b1a30 Merge branch 'master' into scanerrors 2020-01-08 18:10:17 +01:00
Andrew Rabert 124a852787 Merge pull request #2240 from anthonylavado/fix-pathfinding
Re-order the path statement to avoid file issues
2020-01-08 08:29:03 -05:00
Anthony Lavado 75f19a762c Re-order the path statement to avoid file issues
Fixes #31874.
2020-01-08 04:05:07 -05:00
dkanada 423d50e978 Merge pull request #1838 from Unhelpful/media-attachments
Add support for embedded attachments in media files
2020-01-08 11:04:21 +09:00
dkanada 73fac50e57 rename two properties based on code suggestions 2020-01-08 10:52:48 +09:00
Bond_009 8a0ef41036 Minor improvements 2020-01-08 01:24:12 +09:00
Bond_009 a253fa616d Fix build and address comments 2020-01-08 01:23:57 +09:00
dkanada aca31457c0 merge branch master into media-attachments 2020-01-08 01:21:09 +09:00
Bond-009 9dfafb9e9f Update MediaBrowser.MediaEncoding/Probing/MediaFormatInfo.cs
Co-Authored-By: Erwin de Haan <EraYaN@users.noreply.github.com>
2020-01-07 11:13:47 +01:00
Bond-009 49fef5f09c Update MediaBrowser.MediaEncoding/Probing/MediaChapter.cs
Co-Authored-By: Erwin de Haan <EraYaN@users.noreply.github.com>
2020-01-07 11:13:11 +01:00
dkanada 534716d9c9 Merge pull request #2220 from Bond-009/unicode
Replace unicode char with its integer value
2020-01-06 21:16:22 +09:00
Bond-009 70210b47a4 Update MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-06 10:39:01 +01:00
dkanada e5c68834a3 Merge pull request #2221 from Bond-009/baseurlfix
Fix baseurl (again)
2020-01-06 15:05:11 +09:00
dkanada f48269a319 Merge pull request #2219 from Bond-009/subtitle
Fix JSON subtitle writer
2020-01-06 14:43:07 +09:00
samucamg 80dfc78ba5 Translated using Weblate (Portuguese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt/
2020-01-05 16:47:41 -05:00
Thoscellen a4d0e4b38e Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-01-05 16:47:41 -05:00
Cota Fainado 0a483c83f9 Translated using Weblate (Portuguese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt/
2020-01-05 16:47:41 -05:00
Bond-009 a21645d6be Merge pull request #2230 from dkanada/update-ci
Fix dependency issue for CI
2020-01-05 21:05:29 +01:00
Erwin de Haan 21b78f44c8 Add new dotnet version to compat stage as well. 2020-01-05 19:30:32 +01:00
Erwin de Haan 65f65db8b9 Re-enable compat checks. 2020-01-05 19:25:33 +01:00
Erwin de Haan 2ca7200a05 Updated for v0.0.5 of the compat checker. 2020-01-05 19:24:24 +01:00
Artiume 5b55997984 Merge pull request #6 from jellyfin/master
nightly
2020-01-05 11:49:45 -05:00
dkanada d599124508 manually disable compatibility check 2020-01-05 16:39:48 +09:00
dkanada c7d5f35eb7 update display names for some ci steps 2020-01-05 16:32:24 +09:00
dkanada 303385dfa2 remove unused parameters 2020-01-05 16:08:19 +09:00
dkanada f1008ab58d update job names 2020-01-05 16:01:42 +09:00
dkanada e5e0166951 update dotnet version for ci 2020-01-05 15:59:31 +09:00
Constantin Matel 0b592376d5 Translated using Weblate (Romanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ro/
2020-01-04 18:01:30 -05:00
Cota Fainado aa7aadb2b2 Added translation using Weblate (Portuguese) 2020-01-04 18:01:30 -05:00
dkanada aac0a1ed26 Merge pull request #2206 from Bond-009/userconfig
Delete user config dir on user deletion
2020-01-04 22:55:42 +09:00
Bond-009 77a9ebf13f Merge pull request #2222 from sachk/master
Update the build script to use .NET core SDK 3.1
2020-01-04 11:30:38 +01:00
Sacha Korban 2497573b7f Update the build script to use .NET core SDK 3.1 2020-01-04 15:02:38 +11:00
shoeflydbm 5cd8338e73 Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2020-01-03 10:37:00 -05:00
Constantin Matel 295eaa2ccb Added translation using Weblate (Romanian) 2020-01-03 10:37:00 -05:00
Bond_009 5994328903 Fix baseurl (again) 2020-01-02 21:22:10 +01:00
Bond_009 09d1f976d9 Replace unicode char with its integer value 2020-01-02 20:19:01 +01:00
Bond-009 59cdfdc2d9 Fix JSON subtitle writer 2020-01-02 14:38:13 +01:00
dkanada d756233f62 Merge pull request #2144 from neilsb/feature/Add-Excluded-Tags-to-SQLite-query-using-parameters
Add Excluded Tags to SQLite query using parameters
2020-01-02 15:32:25 +09:00
dkanada 653610d578 Merge pull request #2165 from Ullmie02/master
Add Tmdb as a Provider for Season Images
2020-01-02 11:27:34 +09:00
dkanada fb61a1f882 Merge pull request #2150 from Bond-009/releaseerror
Enable TreatWarningsAsErrors for some projects
2020-01-02 10:13:57 +09:00
Joshua M. Boniface d3bce6e380 Merge pull request #2107 from Bond-009/dotnet3.1
Move to .Net Core 3.1
2020-01-01 13:30:20 -05:00
erikasne6152 72d2b5910a Translated using Weblate (Lithuanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/lt/
2020-01-01 04:16:39 -05:00
marty c62599f873 Translated using Weblate (Lithuanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/lt/
2020-01-01 04:16:39 -05:00
dkanada 529cff3920 Merge pull request #2153 from dkanada/fix-playlist
Fix playlist deletion and a few warning fixes
2020-01-01 15:00:57 +09:00
dkanada c10cb66169 remove directory check 2020-01-01 14:45:09 +09:00
gnattu 167549f5f1 Let HLS fallback to mpegts in case device reported unsupported container 2019-12-31 22:33:14 -05:00
dkanada e476125cf8 Merge pull request #2208 from Bond-009/todo
Fix a couple of TODOs
2019-12-31 03:03:42 -08:00
marty f672ecbac5 Translated using Weblate (Lithuanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/lt/
2019-12-30 11:16:34 -05:00
Bond-009 49330e3082 Fix a couple of TODOs 2019-12-30 16:03:20 +01:00
Bond_009 ab57b504fe Delete user config dir on user deletion 2019-12-29 19:32:12 +01:00
Z Yang 49ce876c2c Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2019-12-28 17:16:32 -05:00
Allan d7164d2eb7 Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2019-12-28 17:16:32 -05:00
dkanada b3963058db Merge pull request #1891 from stanionascu/bdinfo-uhd
Upgrade BDInfo plugin to UHD/Atmos/DTS:X support
2019-12-28 04:16:45 +09:00
Odd Stråbø 5bf0eb2b0e Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2019-12-25 19:16:26 -05:00
arg2009 ef62df69df Translated using Weblate (Indonesian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/id/
2019-12-24 05:16:25 -05:00
Bond_009 a41ec5c9d4 Fix typo 2019-12-23 15:29:30 +01:00
arg2009 a22f1dabb4 Added translation using Weblate (Indonesian) 2019-12-23 04:13:48 -05:00
Ben Magee d1461b4238 Changed cast style as suggested, improved some member names to make them less ambiguous 2019-12-22 23:21:20 +00:00
Ben Magee 00c6d392a1 Added tests for FirstTimeSetupOrElevatedHandler 2019-12-22 23:18:42 +00:00
Ben Magee ef75455178 Test RequiresElevationHandler for all roles 2019-12-22 22:54:46 +00:00
Ben Magee 8d06d0dbdf Removed unneeded dependency 2019-12-22 22:39:29 +00:00
Ben Magee 8c4e679ff4 PR style comments 2019-12-22 22:36:11 +00:00
Bond_009 f9a454628d Preformance!!! 2019-12-22 22:21:41 +01:00
Bond_009 cf2e2a3f30 Fix exceptions while scanning
Fixes these exceptions:
```
[2019-12-22 20:48:14.779 +01:00] [ERR] Error in WaitForExit
System.InvalidOperationException: No process is associated with this object.
   at System.Diagnostics.Process.EnsureState(State state)
   at System.Diagnostics.Process.EnsureState(State state)
   at System.Diagnostics.Process.GetWaitState()
   at System.Diagnostics.Process.WaitForExitCore(Int32 milliseconds)
   at System.Diagnostics.Process.WaitForExit(Int32 milliseconds)
   at Emby.Server.Implementations.Diagnostics.CommonProcess.WaitForExit(Int32 timeMs) in /home/pi/dev/jellyfin/Emby.Server.Implementations/Diagnostics/CommonProcess.cs:line 100
   at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.StopProcess(ProcessWrapper process, Int32 waitTimeMs) in /home/pi/dev/jellyfin/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs:line 785
[2019-12-22 20:48:14.790 +01:00] [INF] Killing ffmpeg process
[2019-12-22 20:48:14.795 +01:00] [ERR] Error killing process
System.InvalidOperationException: No process is associated with this object.
   at System.Diagnostics.Process.EnsureState(State state)
   at System.Diagnostics.Process.EnsureState(State state)
   at System.Diagnostics.Process.Kill()
   at Emby.Server.Implementations.Diagnostics.CommonProcess.Kill() in /home/pi/dev/jellyfin/Emby.Server.Implementations/Diagnostics/CommonProcess.cs:line 95
   at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.StopProcess(ProcessWrapper process, Int32 waitTimeMs) in /home/pi/dev/jellyfin/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs:line 799
[2019-12-22 20:48:14.808 +01:00] [ERR] Error in "ffprobe"
System.Text.Json.JsonException: The JSON value could not be converted to System.String. Path: $.streams[0].start_pts | LineNumber: 32 | BytePositionInLine: 26.
 ---> System.InvalidOperationException: Cannot get the value of a token type 'Number' as a string.
   at System.Text.Json.Utf8JsonReader.GetString()
   at System.Text.Json.Serialization.Converters.JsonConverterString.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options)
   at System.Text.Json.JsonPropertyInfoNotNullable`4.OnRead(JsonTokenType tokenType, ReadStack& state, Utf8JsonReader& reader)
   at System.Text.Json.JsonPropertyInfo.Read(JsonTokenType tokenType, ReadStack& state, Utf8JsonReader& reader)
   at System.Text.Json.JsonSerializer.HandleValue(JsonTokenType tokenType, JsonSerializerOptions options, Utf8JsonReader& reader, ReadStack& state)
   at System.Text.Json.JsonSerializer.ReadCore(JsonSerializerOptions options, Utf8JsonReader& reader, ReadStack& readStack)
   --- End of inner exception stack trace ---
   at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& readStack, Utf8JsonReader& reader, Exception ex)
   at System.Text.Json.JsonSerializer.ReadCore(JsonSerializerOptions options, Utf8JsonReader& reader, ReadStack& readStack)
   at System.Text.Json.JsonSerializer.ReadCore(JsonReaderState& readerState, Boolean isFinalBlock, ReadOnlySpan`1 buffer, JsonSerializerOptions options, ReadStack& readStack)
   at System.Text.Json.JsonSerializer.ReadAsync[TValue](Stream utf8Json, Type returnType, JsonSerializerOptions options, CancellationToken cancellationToken)
   at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken) in /home/pi/dev/jellyfin/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs:line 399
   at MediaBrowser.Providers.MediaInfo.FFProbeVideoInfo.ProbeVideo[T](T item, MetadataRefreshOptions options, CancellationToken cancellationToken) in /home/pi/dev/jellyfin/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs:line 122
   at MediaBrowser.Providers.Manager.MetadataService`2.RunCustomProvider(ICustomMetadataProvider`1 provider, TItemType item, String logName, MetadataRefreshOptions options, RefreshResult refreshResult, CancellationToken cancellationToken) in /home/pi/dev/jellyfin/MediaBrowser.Providers/Manager/MetadataService.cs:line 815
```
2019-12-22 22:09:09 +01:00
Waldemar Tomme 57aec873d0 Add check if output container supports "global_header" flag 2019-12-22 13:01:18 +01:00
Ben Magee f47c7959af Wrote tests to cover CustomAuthenticationHandler 2019-12-22 09:46:09 +00:00
Artiume c2db45bad9 Merge pull request #5 from Artiume/revert-4-server-validation
Revert "Allow valid https requests in .NET Core"
2019-12-21 00:01:54 -05:00
Artiume 1bab76d80c Revert "Allow valid https requests in .NET Core" 2019-12-21 00:01:43 -05:00
Artiume 0e920a6d5f Update MediaInfoService.cs 2019-12-20 23:40:36 -05:00
Artiume 963b69c7b2 Update MediaInfoService.cs 2019-12-20 23:17:01 -05:00
Artiume 82911c8a20 Merge pull request #4 from stevehayles/server-validation
Allow valid https requests in .NET Core
2019-12-20 23:09:35 -05:00
Bond_009 b87750d8e0 Update vs code workspace 2019-12-20 21:50:15 +01:00
Bond_009 5751d86536 Fix warnings and move to System.Text.Json 2019-12-20 21:49:16 +01:00
Bond_009 5dc3874ebd Enable nullable reference types for Emby.Photos and Emby.Notifications
* Enable TreatWarningsAsErrors for Emby.Notifications
* Add analyzers to Emby.Notifications
2019-12-20 21:30:51 +01:00
David 94d3dda324 Refactor seriesId 2019-12-20 20:10:02 +01:00
David d720d8f356 Add requested changes 2019-12-20 20:04:27 +01:00
Bond_009 7f5a174dff Merge branch 'master' into warn12 2019-12-20 19:43:57 +01:00
Artiume 6a6e02e1ec Merge pull request #3 from jellyfin/master
nightly, big one
2019-12-19 20:51:45 -05:00
Bond-009 137db45fc7 Apply suggestions from code review
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2019-12-19 22:01:05 +01:00
David ce8754d052 Refactor list of RemoteImageInfo 2019-12-19 19:58:00 +01:00
David 1f323683b3 Add requested changes 2019-12-19 18:59:55 +01:00
Bond-009 bb62dd14c2 Limit size for playbacktest 2019-12-19 17:46:17 +01:00
Vasily 06dfa2e687 Merge pull request #2134 from Bond-009/dlnam3u8
Fix comparison between different types
2019-12-19 18:51:51 +03:00
Bond-009 a5cd11735c Minor changes to MediaInfoService 2019-12-19 15:54:27 +01:00
David eb12754fc5 Add Tmdb as a Provider for Season Images
Changes to be committed:
	modified:   CONTRIBUTORS.md
	new file:   MediaBrowser.Providers/Tmdb/TV/TmdbSeasonImageProvider.cs
	modified:   MediaBrowser.Providers/Tmdb/TV/TmdbSeasonProvider.cs
2019-12-18 17:27:44 +01:00
Bond-009 5c9e849b85 Enable analyzers 2019-12-18 12:03:54 +01:00
Bond-009 a1ca50fd5a Merge branch 'namingtests' of https://github.com/Bond-009/jellyfin into namingtests 2019-12-18 11:53:41 +01:00
Bond-009 8723bdbb4f Fix tests 2019-12-18 11:52:32 +01:00
dkanada bc7cbfb21a Merge pull request #1941 from Bond-009/mediaencoding
Make probesize and analyzeduration configurable and simplify circular dependencies
2019-12-18 08:54:40 +09:00
pagaiba 0f444c21e9 Translated using Weblate (Catalan)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ca/
2019-12-17 13:16:15 -05:00
Bond_009 742d84e53f Enable analyzers for Emby.Naming 2019-12-17 17:41:12 +01:00
Bond-009 91562a4392 Merge pull request #2155 from mark-monteiro/2149-jellyfin-drawing-skia-warnings
Jellyfin.Drawing.Skia Warnings and Analyzers
2019-12-17 17:39:35 +01:00
Bond-009 6b185119aa Merge branch 'master' into namingtests 2019-12-17 17:35:27 +01:00
Artiume d2e9ce7644 Merge pull request #2 from jellyfin/master
refresh
2019-12-16 15:48:17 -05:00
Artiume b626508bc8 Update Dockerfile 2019-12-16 15:23:43 -05:00
Artiume f3e7c72bac Update MediaInfoService.cs 2019-12-16 15:22:18 -05:00
Artiume b31f4ccbc2 Update MediaInfoService.cs 2019-12-16 14:53:42 -05:00
Óskar Freyr db61a58c39 Translated using Weblate (Icelandic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/is/
2019-12-16 12:16:14 -05:00
tanto faz dda431dff1 Translated using Weblate (Portuguese (Brazil))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_BR/
2019-12-16 12:16:14 -05:00
Roland Vet 6fb7999a14 Translated using Weblate (Dutch)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/
2019-12-16 12:16:14 -05:00
Robin a7a4974d95 Translated using Weblate (Dutch)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/
2019-12-16 12:16:14 -05:00
schbal c6851bd72c Translated using Weblate (Korean)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2019-12-16 12:16:14 -05:00
Artiume 5a9e08e0de Update Dockerfile 2019-12-16 01:26:36 -05:00
Artiume 4e43c70439 Update Dockerfile 2019-12-16 01:12:50 -05:00
Artiume c96d3c35a0 Update Dockerfile 2019-12-16 01:09:45 -05:00
Artiume 0d571b3ad1 Update Dockerfile 2019-12-16 00:59:38 -05:00
Artiume 2457e43dec Update Dockerfile 2019-12-16 00:44:10 -05:00
Artiume 46442e24f8 Update MediaInfoService.cs 2019-12-16 00:43:03 -05:00
Artiume 3fb7aabfde Update MediaInfoService.cs 2019-12-16 00:40:25 -05:00
Artiume 64c313a8fb Update MediaInfoService.cs 2019-12-16 00:27:48 -05:00
Artiume 77fc77eb82 Update UserPolicy.cs 2019-12-15 23:59:46 -05:00
Artiume 1443583a41 Merge pull request #1 from Artiume/branch1
Update MediaInfoService.cs
2019-12-15 23:57:58 -05:00
Artiume be956dfd02 Update MediaInfoService.cs 2019-12-15 23:52:07 -05:00
dkanada 61b9845e0f Merge pull request #2099 from cryptobank/master
Fix VAAPI encoding on 10-bit hevc. Update QSV encoding and scaling to...
2019-12-15 19:54:20 +09:00
cryptobank d063300af4 Add space
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-12-15 20:35:52 +10:30
Bond-009 b8c61a5c40 Merge pull request #2146 from cromefire/patch-1
Fix invalid username handling
2019-12-15 10:07:22 +01:00
Joshua M. Boniface d79242c3c7 Remove broken Microsoft SDK image (#2158)
* Remove broken Microsoft SDK image

This was not working; for some reason the Microsoft .NET Docker image
for 3.0 still had a 2.1 binary which was wreaking havoc. Replace it with
the manual download that all the other .deb packages use.

* Install missing dependency
2019-12-15 01:55:07 -05:00
dkanada 28e922326d remove space
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-12-15 13:38:59 +09:00
Mark Monteiro 3924df9c51 Move CA1032 rule to correct location 2019-12-14 23:35:28 +01:00
Neil Burrows d9c0721e3d Reformatting code 2019-12-14 17:48:30 +00:00
Mark Monteiro 47805d89fe Set CA1032 (Implement standard exception constructors) severity to info globally
This replaces the existing [SurpressMessage] attribute
2019-12-14 16:01:24 +01:00
Mark Monteiro 4c30557527 Remove commented code 2019-12-14 15:48:35 +01:00
Mark Monteiro f7eef1aa7f Use the correct verbiage for documenting thrown exceptions 2019-12-14 15:47:35 +01:00
dkanada 623e85a9e4 add suggested changes
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-12-14 22:34:18 +09:00
Bond-009 831d1daa68 Merge pull request #2152 from dkanada/progress
Track progress for any item that supports the feature
2019-12-14 14:06:13 +01:00
Mark Monteiro c1c1672d0f Fix remaining StyleCop warnings 2019-12-14 12:20:52 +01:00
Mark Monteiro c05933234a Enable TreatWarningsAsErrors flag is project file 2019-12-14 11:46:25 +01:00
Mark Monteiro 2c3e1b8562 Enable StyleCop analyzer and fix existing issues 2019-12-14 11:04:22 +01:00
Mark Monteiro b8c8d45b8d Enable Serilog and multithreading analyzer 2019-12-14 10:53:54 +01:00
Bond-009 c824c564cd Move Emby.XmlTv to a NuGet package (#2042)
* Move Emby.XmlTv to a NuGet package

* Update Emby.Server.Implementations/Emby.Server.Implementations.csproj

Co-Authored-By: Anthony Lavado <anthonylavado@me.com>
2019-12-14 00:45:29 -05:00
dkanada 1b2453b4e9 fix playlist deletion 2019-12-14 12:51:27 +09:00
dkanada 02928128b9 track progress for any item that supports the feature 2019-12-14 11:36:06 +09:00
cryptobank bafcadbe58 Use case insensitive contains (4)
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-12-14 11:27:43 +10:30
cryptobank d0febd6c37 Use case insensitive contains (3)
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-12-14 11:27:43 +10:30
cryptobank 802a66a9e6 Use case insensitive contains (2)
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-12-14 11:27:43 +10:30
cryptobank 867b61025d Use case insensitive contains (1)
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-12-14 11:27:43 +10:30
cryptobank f18d3ed33b Formatting fix (3)
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-12-14 11:27:41 +10:30
Óskar Freyr c36467c496 Translated using Weblate (Icelandic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/is/
2019-12-13 18:16:10 -05:00
Mark Monteiro 0cf9e59d5a Enable FxCop Analysis and fix issues 2019-12-13 21:17:05 +01:00
Mark Monteiro 88928118eb Add missing documentation in Jellyfun.Drawing.Skia 2019-12-13 20:57:23 +01:00
Bond_009 5a8e972952 Enable TreatWarningsAsErrors for some projects
Analyzers are only run in debug build, so setting TreatWarningsAsErrors
for release build will catch the compiler warnings until we resolve all
analyzer warnings.
2019-12-13 20:11:37 +01:00
Vasily 54dbdc695a Merge pull request #2138 from mark-monteiro/fix-episode-search
Fix Tvdb Provider Episode Search
2019-12-13 19:56:41 +03:00
dkanada dc32050a2e Merge pull request #2142 from Bond-009/livetverrormsg
Add improved error message for #2141
2019-12-13 23:33:59 +09:00
Cromefire_ 7e987b9642 Remove whitespace
Co-Authored-By: Claus Vium <cvium@users.noreply.github.com>
2019-12-13 15:30:08 +01:00
Cromefire_ 6231fc18ea Fixed invalid username handling 2019-12-13 15:27:12 +01:00
Neil Burrows 55317b5c74 Fixing index error & split out code for readability 2019-12-13 13:45:20 +00:00
Neil Burrows 12bb4a92eb Tidying up code 2019-12-13 11:08:19 +00:00
Neil Burrows 554c967dd6 Add Excluded Tags using SQLite parameters 2019-12-13 10:29:38 +00:00
Mark Monteiro a2462704d1 Add self to Jellyfin contributors 2019-12-12 17:48:41 +01:00
Bond-009 a4ca259a64 Add improved error error for #2141 2019-12-12 17:25:58 +01:00
Bond-009 6464bca791 Use extension methods 2019-12-12 17:02:42 +01:00
Bond-009 2c0259f920 Replace '_' with ':' in config keys 2019-12-12 16:57:16 +01:00
Bond-009 baadb504bb Merge branch 'master' into mediaencoding 2019-12-12 16:34:34 +01:00
dkanada 96a5dda9ff Merge pull request #2109 from Bond-009/plugin
Fix plugin installation and correct api behaviour
2019-12-12 15:40:22 +09:00
Joshua M. Boniface 9744f5aee3 Merge pull request #2118 from chaosinnovator/master
Add StartIndex result to /Items API query
2019-12-11 23:42:02 -05:00
Mark Monteiro 421092b478 Clean up checks for Dictionary keys 2019-12-11 23:48:41 +01:00
Mark Monteiro 1e0967f43c Fix issue with episode search 2019-12-11 23:47:51 +01:00
Bond_009 2ef4ffd698 More warnings (removed) 2019-12-11 00:13:57 +01:00
Bond_009 0bf8bfbb0c Merge branch 'master' into mediaencoding 2019-12-10 23:00:59 +01:00
chaosinnovator b98e25a07e Add StartIndex result to /Items API query 2019-12-10 09:30:44 -08:00
Bond-009 b20b648659 Fix comparison between different types 2019-12-10 17:25:21 +01:00
dkanada f1fc6ef59f Merge pull request #2106 from Bond-009/docker
Fix ubuntu x64 docker build
2019-12-11 01:15:31 +09:00
dkanada 67922dff50 Merge pull request #2041 from Bond-009/warn11
Fix more warnings
2019-12-11 01:14:55 +09:00
dkanada 2a7210ca28 Merge pull request #2133 from Bond-009/loggerfix
Fix typo
2019-12-11 01:13:09 +09:00
Bond-009 19844a2c2a Fix typo 2019-12-10 17:07:23 +01:00
Bond-009 affb58ef9e Apply suggestions from code review
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2019-12-10 16:22:03 +01:00
dkanada dee3076eaf Merge pull request #1923 from Bond-009/random
Don't shuffle some types by default
2019-12-10 22:28:44 +09:00
dkanada b5d0bd0d76 Merge pull request #2020 from Bond-009/baseurl
Add support for multi segment base urls
2019-12-10 22:11:32 +09:00
gustinn 1b5da55ae5 Translated using Weblate (Icelandic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/is/
2019-12-09 21:16:05 -05:00
Michael Berggren f25c1e40d4 Translated using Weblate (Swedish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sv/
2019-12-09 21:16:05 -05:00
nextlooper42 cf1eb2798c Translated using Weblate (Slovak)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sk/
2019-12-09 21:16:05 -05:00
translit 7d4c4c369e Translated using Weblate (Russian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ru/
2019-12-09 21:16:05 -05:00
tanto faz f0dbcfca6e Translated using Weblate (Portuguese (Brazil))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_BR/
2019-12-09 21:16:05 -05:00
Matzi24GR 52f31775fc Translated using Weblate (Greek)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/el/
2019-12-09 21:16:05 -05:00
antoniy 4fa8f9ccfe Translated using Weblate (Bulgarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bg/
2019-12-09 21:16:05 -05:00
Petr Janda 1cec41baf8 Merge remote-tracking branch 'upstream/master' 2019-12-07 20:21:24 +10:30
Bond_009 ec70f3ac75 Fix plugin installation and correct api behaviour
The `/Packages/{Name}` endpoint would return a package that had either
the corrent name or the correct guid. In reality it shoud check if both
are correct.
2019-12-06 22:06:16 +01:00
Bond_009 c8f403238e Move to .Net Core 3.1 2019-12-06 21:28:47 +01:00
cryptobank 408cf017a4 Remove newline
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2019-12-07 06:48:44 +10:30
cryptobank 5b5d527a09 Use string.Equals instead of of equals operator
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2019-12-07 06:47:57 +10:30
cryptobank 68edb9734d Add space between if statement and boolean expression
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2019-12-07 06:46:24 +10:30
Joshua M. Boniface 6f283d80dc Merge pull request #2104 from cvium/avoid_catastrophic_backtracking
Simplify regex to avoid catastrophic backtracking
2019-12-06 15:13:23 -05:00
Bond_009 803ec15150 Fix ubuntu x64 docker build 2019-12-06 21:08:11 +01:00
Bond_009 35151553e3 Add back all old emby tests 2019-12-06 20:41:39 +01:00
Claus Vium 8befab5b5d Simplify regex to avoid catastrophic backtracking 2019-12-06 20:21:18 +01:00
Bond-009 a2c35e6dba Merge remote-tracking branch 'upstream/master' into random 2019-12-06 12:06:13 +01:00
Bond-009 94edb5b9f9 Add else 2019-12-06 11:58:45 +01:00
Vasily 935525e77a Merge pull request #2102 from jellyfin/Bond-009-plugins
Add installed plugins to bug reports
2019-12-06 12:53:42 +03:00
Petr Janda 75426d0004 Add logging when force_key_frames is disabled 2019-12-06 17:21:24 +10:30
Petr Janda 3f43aef997 Add back code removed during testing/debugging 2019-12-06 16:04:29 +10:30
Petr Janda 535390bb64 QSV can hardware deinterlace too now 2019-12-06 06:30:09 +10:30
Petr Janda a9766992b7 Do not force original aspect ratio to decrease, it causes bitmap subtitles to be off-centre 2019-12-06 06:08:45 +10:30
Petr Janda 9ee0804407 Move scaling filters and definitions before deinterlacing 2019-12-06 05:52:40 +10:30
Petr Janda 7d2bfabb32 Force original aspect ratio can be used for QSV subtitle scaling 2019-12-06 05:12:16 +10:30
Petr Janda 8368815788 Remove trailing spaces 2019-12-06 05:03:46 +10:30
memnos caa57d5bda Translated using Weblate (Italian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/it/
2019-12-05 13:29:41 -05:00
gustinn 8694577c71 Added translation using Weblate (Icelandic) 2019-12-05 13:29:41 -05:00
Bond-009 8718e1ea6b Add installed plugins to bug reports 2019-12-05 18:30:56 +01:00
Bond-009 5f6bca8aeb Merge remote-tracking branch 'upstream/master' into baseurl 2019-12-05 17:49:15 +01:00
Bond-009 a6f883345f Reduce #lines 2019-12-05 17:44:46 +01:00
Vasily e05c02263a Merge pull request #2097 from Bond-009/unused2
Remove unused fields and properties
2019-12-05 12:06:14 +03:00
Vasily e41dd316d1 Merge pull request #2098 from Bond-009/config2
Fix GetTranscodePath function and cache path update logline
2019-12-05 12:05:46 +03:00
Petr Janda 7cde256402 Merge remote-tracking branch 'upstream/master' 2019-12-05 19:29:20 +10:30
WtK0040 82575db662 Translated using Weblate (Afrikaans)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/af/
2019-12-05 03:57:07 -05:00
Pavel Sochor fccc90ae1a Translated using Weblate (Slovak)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sk/
2019-12-05 03:57:07 -05:00
Yuval Pecht fc4bbee39f Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2019-12-05 03:57:07 -05:00
bugthug 9144c84dc9 Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2019-12-05 03:57:07 -05:00
TheGoose 5234c686e7 Translated using Weblate (English (United States))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/en_US/
2019-12-05 03:57:07 -05:00
Dominik 7d2f066cd4 Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2019-12-05 03:57:07 -05:00
woodmichl 383733044f Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2019-12-05 03:57:07 -05:00
Petr Janda 70530e1f14 Fix formatting (2) 2019-12-05 19:20:47 +10:30
Petr Janda 3d8f3da5d6 Add comments 2019-12-05 18:39:09 +10:30
Petr Janda 78a161138f Fix formatting stuffed up by previous commit 2019-12-05 18:07:46 +10:30
Petr Janda 89605d4fb1 Fix VAAPI encoding on 10-bit hevc. Update QSV encoding and scaling to take advantage of scale_qsv and overlay_qsv 2019-12-05 17:39:36 +10:30
dkanada a7ef1aa7ec Merge pull request #2050 from Bond-009/nullref
Fix possible nullref when updating packages
2019-12-05 15:23:48 +09:00
Bond_009 4a0df15bbd Fix GetTranscodePath function and cache path update logline
* GetTranscodePath returned an empty string after the option was left
blank in the web UI
* Unified the log style for all paths
2019-12-04 22:18:37 +01:00
Bond_009 f7d71a2bc7 Remove unused fields and properties 2019-12-04 21:53:01 +01:00
Bond_009 5cab79c839 Clean up Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs 2019-12-04 21:39:27 +01:00
Vasily e44a7ae3f6 Merge pull request #2073 from Bond-009/networkcode
Minor improvements to network code
2019-12-04 20:03:10 +03:00
WtK0040 903752b77b Translated using Weblate (English (United States))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/en_US/
2019-12-04 02:25:32 -05:00
WtK0040 df10cf8012 Added translation using Weblate (Afrikaans) 2019-12-03 07:59:34 -05:00
Bond-009 caca2b31fe Fix build 2019-12-03 10:55:22 +01:00
Bond-009 01c5dcea77 Merge pull request #2082 from excelite/add_centralized_logging_support
added required nuget package to enable serilog based centralized logging in gelf format
2019-12-03 09:12:03 +01:00
Bond-009 7765b43eea Merge pull request #2089 from escabe/fix2088
Fix #2088
2019-12-02 14:22:26 +01:00
dkanada 203bf7b794 Merge pull request #2052 from EraYaN/azp-tag-checkout-windows
Add tag building support to Windows Web build.
2019-12-02 18:23:22 +09:00
KingsFourze a7461f3ba7 Translated using Weblate (Chinese (Hong Kong))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant_HK/
2019-12-01 23:15:46 -05:00
EscAbe 3b7b8eba4c Fix for #2088 2019-12-01 20:50:24 +01:00
Bond-009 84c136b1f2 Update Emby.Server.Implementations/SocketSharp/WebSocketSharpRequest.cs
Co-Authored-By: Claus Vium <cvium@users.noreply.github.com>
2019-12-01 19:30:18 +01:00
penguinfuko 28f71b445f Translated using Weblate (Chinese (Traditional))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2019-11-30 05:15:47 -05:00
Mehmet Can Kanpolat be14b91f23 Translated using Weblate (Turkish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/tr/
2019-11-30 05:15:47 -05:00
excelite 12dd2c51a7 added required nuget package to enable serilog based centralized logging in gelf fromat 2019-11-29 23:03:59 +01:00
Vasily 8f56baf6d9 Merge pull request #2071 from excelite/add_default_values_to_logconfig
add filesize limit for logfiles and a maximum logfile count
2019-11-29 18:55:50 +03:00
Vasily 32519a5471 Merge pull request #2058 from ferferga/master
Add full Raspberry Pi hardware accelerated decoding support
2019-11-29 13:06:06 +03:00
Bond-009 6f45d95951 Minor improvements to network code 2019-11-28 17:46:06 +01:00
excelite 60691349a1 added filesize limit for logfiles and a maximum logfile count 2019-11-28 11:20:46 +01:00
Bond_009 42ffddc269 Fix more warnings 2019-11-27 16:29:56 +01:00
Vasily f3ca4631c3 Merge pull request #2062 from Bond-009/docker
Use .Net Core 3.0 in all docker images
2019-11-27 16:20:41 +03:00
Vasily 5263aaa026 Merge pull request #1503 from cvium/webapi_v2
Move StartupWizard to ASP.NET Web Api
2019-11-27 11:50:06 +03:00
Vasily c45d54efb2 Merge pull request #1942 from Bond-009/nullable
Enable nullable reference types for Jellyfin.Server
2019-11-27 11:48:41 +03:00
Mehmet Can Kanpolat 1606706070 Translated using Weblate (Turkish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/tr/
2019-11-26 11:15:39 -05:00
Leo Verto 22f50de1fe Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2019-11-26 11:15:39 -05:00
dkanada 5bb6e605fa Merge pull request #2054 from jellyfin/Bond-009-dlna-getpathvalue
dlna GetPathValue
2019-11-26 18:43:49 +09:00
dkanada 3dc1bfc179 Merge pull request #2049 from jellyfin/dkanada-patch-1
Update readme
2019-11-26 18:41:01 +09:00
Claus Vium 080b106991 Update Jellyfin.Api/Auth/FirstTimeSetupOrElevatedPolicy/FirstTimeSetupOrElevatedRequirement.cs
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2019-11-26 10:20:45 +01:00
Bond-009 50a535e6e4 Use .Net Core 3.0 in all docker images 2019-11-26 09:47:26 +01:00
ferferga 94ef239de0 Add full Raspberry Pi hardware decoding support 2019-11-25 23:09:23 +01:00
dkanada 65ae4eb0dd fix some html tags in the readme 2019-11-26 00:32:14 +09:00
Bond-009 c6d48f51f6 Fix naming const 2019-11-25 12:29:51 +01:00
Vasily 47e6eede71 Merge pull request #2055 from Bond-009/fixbuild
Fix master build
2019-11-25 14:17:56 +03:00
Bond_009 cc5acf37f7 Make probesize and analyzeduration configurable and simplify circular
dependencies

Makes the probesize and analyzeduration configurable with env args.
(`JELLYFIN_FFmpeg_probesize` and `FFmpeg_analyzeduration`)
2019-11-25 12:07:59 +01:00
Bond_009 3221e837f9 * Add support for multi segment base urls
* Make baseurl case-insensitive
2019-11-25 11:55:24 +01:00
Bond-009 a4c2886ac0 Fix master build
I was wrong, it did break...
2019-11-25 11:04:51 +01:00
Bond-009 69d76af054 dlna GetPathValue
Forgot to update this last time, just copied the code from `MediaBrowser.Api/BaseApiService.cs`
2019-11-25 10:56:23 +01:00
Madokami e7098f1997 Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2019-11-24 21:18:03 -05:00
Erwin de Haan f12c9bf3b0 Added tag building support to Windows Web build. 2019-11-24 23:01:18 +01:00
Mehmet Can Kanpolat afa1d6b708 Translated using Weblate (Turkish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/tr/
2019-11-24 16:15:35 -05:00
Joshua M. Boniface 48120d01dc Merge pull request #1991 from Bond-009/transtemp
Don't append transcodes to transcoding temp path
2019-11-24 15:13:50 -05:00
Bond-009 e808e8b2d2 Update MediaBrowser.Common/Configuration/EncodingConfigurationExtensions.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2019-11-24 20:15:53 +01:00
Joshua M. Boniface db581c4d9b Merge pull request #2045 from Bond-009/baseurlfix2
Fix baseurl issues part 2
2019-11-24 13:25:52 -05:00
Claus Vium 47a4f2f387 Fix more review comments 2019-11-24 19:25:46 +01:00
Claus Vium 2af5922af0 Fix review comments 2019-11-24 18:25:43 +01:00
Bond_009 6a6bfa6da9 Fix possible nullref when updating packages 2019-11-24 17:23:36 +01:00
Claus Vium 27e3cf1558 Move appbuilder and service collection to Jellyfin.Server 2019-11-24 15:27:58 +01:00
dkanada 47ad21b6e3 Merge pull request #2039 from Bond-009/fixcondition
Fix always false condition
2019-11-24 21:41:19 +09:00
dkanada 6889d09cf7 Merge pull request #2040 from Bond-009/https
Validate https certificates
2019-11-24 21:41:03 +09:00
dkanada dbda76e842 Update readme 2019-11-24 21:27:43 +09:00
Bond_009 602ebe3fdb Fix baseurl (attempt #2) 2019-11-23 22:50:37 +01:00
Claus Vium 111b46599a Remove unused reference 2019-11-23 20:46:01 +01:00
Claus Vium c2cdbc909b Add style rules and fix it all 2019-11-23 20:31:17 +01:00
Claus Vium c9669a0d21 Split a long line 2019-11-23 19:59:45 +01:00
Claus Vium 706739dbe6 Move API stuff to the api project 2019-11-23 19:43:30 +01:00
Claus Vium 3f651de24c Add authentication and remove versioning 2019-11-23 16:31:02 +01:00
dkanada 51cdc6ea16 Merge pull request #1926 from Bond-009/auth
Add clearer exceptions, warnings and docs
2019-11-23 01:14:32 +09:00
Bond_009 d7335f6ae6 Reword exception message 2019-11-22 17:02:28 +01:00
Vasily 7b3c394a3e Merge pull request #1967 from Bond-009/warn10
Fix some warnings
2019-11-22 18:29:17 +03:00
Bond_009 526776372e Validate https certificates 2019-11-22 16:23:42 +01:00
Bond_009 d884ed353f Fix always false condition 2019-11-22 16:19:19 +01:00
Bond_009 06596feaa7 Address comments 2019-11-22 16:15:31 +01:00
Bond-009 b477b3874e Fix some warnings 2019-11-22 16:15:31 +01:00
Vasily 7846e9cb3c Merge pull request #1977 from Bond-009/deps
Update deps
2019-11-22 15:53:34 +03:00
Vasily ace45fb3f6 Merge pull request #1968 from Bond-009/CA1720
Disable CA1720: Identifiers should not contain type names
2019-11-22 14:14:51 +03:00
Vasily 13dd63d631 Merge pull request #2034 from Bond-009/easypass
Fix easy password
2019-11-22 11:17:24 +03:00
AdmiralAnimE 883011dd64 Translated using Weblate (Bulgarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bg/
2019-11-21 12:15:31 -05:00
Bond-009 413ae86dbc Fix easy password 2019-11-21 17:32:29 +01:00
Bond_009 3cf9313c86 Update deps 2019-11-21 17:08:06 +01:00
Bond-009 d4b438791f Don't append transcodes to transcoding temp path 2019-11-21 16:57:49 +01:00
Bond-009 d868a8da6c Merge pull request #1934 from dkanada/transcode
Minor changes to transcode cleanup scheduled task
2019-11-21 16:18:46 +01:00
dkanada 37eed8cf1f revert settings to their old names 2019-11-21 21:55:10 +09:00
dkanada b1f9b03b17 rename some missed variables and fix warnings 2019-11-21 21:55:10 +09:00
dkanada f3ca37e523 minor changes to transcode cleanup scheduled task 2019-11-21 21:55:10 +09:00
Claus Vium 05b7e22808 Add SwaggerUI 2019-11-19 22:51:02 +01:00
Claus Vium c011fa2ea8 Remove old instantiation of serviceProvider in app host 2019-11-19 21:49:20 +01:00
Claus Vium e5d57bd82f Move StartupWizard to ASP.NET Web Api 2019-11-19 21:48:16 +01:00
Joshua M. Boniface c0d10800ab Merge pull request #1925 from joshuaboniface/integrate-web-build-debuntu
Integrate web build into Debuntu package build steps
2019-11-19 01:37:38 -05:00
Vasily a8c878f48c Merge pull request #2016 from joshuaboniface/stalebot-wording
Update stalebot timings and message
2019-11-18 13:59:57 +03:00
Vasily 0836241e90 Merge pull request #2019 from Bond-009/baseurlhotfix
Remove leading / from baseurl
2019-11-18 13:55:56 +03:00
Joshua M. Boniface 84009b534d Merge pull request #1937 from justinfenn/docker-entrypoint-exec
use exec form for Dockerfile entrypoint
2019-11-17 17:29:55 -05:00
Stanislav Ionascu 9989b7b68f Replace BDInfo plugin with nupkg and UHD/Atmos/DTS:X support 2019-11-17 20:56:13 +01:00
Joshua M. Boniface 78e0afae2f Merge pull request #1992 from Bond-009/namingtests
Fix naming tests
2019-11-17 13:55:27 -05:00
Bond_009 5ee070eb29 Remove leading / from baseurl 2019-11-17 19:53:12 +01:00
Joshua Boniface 6c7b592131 Update stalebot timings and message
1. Bump up the timings, since the project releases have slowed down a
   fair bit. 120 days stale with 21 days for a response still gets us
   the desired effect while loosening the timeline for issue submitters.
2. Revamp the wording to better explain what the author (or others) need
   to do, and why this bot exists.
2019-11-17 12:24:27 -05:00
dkanada c87f459ec2 Merge pull request #2008 from Bond-009/pathvalue
Fix GetPathValue function
2019-11-16 01:25:20 +09:00
Bond-009 d161b9cbfc Fix GetPathValue function for DLNA service 2019-11-13 16:40:34 +01:00
Bond-009 aea4ef9471 Fix logic 2019-11-13 16:32:33 +01:00
Bond-009 b14d6d0417 Fix GetPathValue function 2019-11-13 16:32:33 +01:00
Andrew Mahone dee247453e Throw InvalidOperationException when attachment extraction exits abnormally or doesn't produce output. 2019-11-13 08:52:37 -05:00
dkanada 0b02c77691 Merge pull request #1864 from Bond-009/installationmanager
Improve IInstallationManager interface
2019-11-13 21:12:52 +09:00
dkanada f51f59d675 Merge pull request #1965 from Bond-009/dbjson
Deserialize with the correct type (and warning fixes)
2019-11-10 16:51:54 +09:00
Sander Lambrechts 522df3196d Translated using Weblate (Dutch)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/
2019-11-09 18:15:12 -05:00
DJSweder 92b6d84433 Translated using Weblate (Czech)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/cs/
2019-11-09 18:15:12 -05:00
Bond_009 dd749dde5f Add comment 2019-11-09 20:26:56 +01:00
Bond_009 03fe0e762d Fix typos in docs 2019-11-09 20:23:09 +01:00
Bond_009 a2df6e0e36 Fix naming tests 2019-11-08 19:59:48 +01:00
Andrew Mahone 7ea05bb86b Merge branch 'media-attachments' of github.com:Unhelpful/jellyfin into media-attachments 2019-11-07 14:30:43 -05:00
Andrew Mahone 79858eb26c Remove use of ProcessFactory, as well as arbitrary timeout in AttachmentExtractor. 2019-11-07 14:24:49 -05:00
dkanada 61b9b4046a Merge pull request #1929 from Narfinger/parser-fix4
[Draft][Help wanted] Fix parsing of certain names and adds a default season if no season was found
2019-11-08 02:14:01 +09:00
Andrew Mahone 3a9bf84e3b Update MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 12:00:47 -05:00
Andrew Mahone 1eb3df1d6c Update MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs
formatting / style

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:59:54 -05:00
Andrew Mahone 380d023351 Merge branch 'media-attachments' of github.com:Unhelpful/jellyfin into media-attachments 2019-11-07 11:58:13 -05:00
Andrew Mahone 2f728fd2a1 Update MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:58:26 -05:00
Andrew Mahone 2338a53229 Don't user ILoggerFactory. 2019-11-07 11:55:39 -05:00
Andrew Mahone c6855e6a2a Simplify AttachmentExtractor instantiation. 2019-11-07 11:53:39 -05:00
Andrew Mahone 743685110c Update MediaBrowser.Controller/Library/IMediaSourceManager.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:29:34 -05:00
Andrew Mahone 0fd7886a12 Update MediaBrowser.Controller/Library/IMediaSourceManager.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:28:11 -05:00
Andrew Mahone d73f46dcda Update Emby.Server.Implementations/Library/MediaSourceManager.cs
docs

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:27:55 -05:00
Andrew Mahone 492bbc9e13 Update MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs
String -> string

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:25:44 -05:00
Andrew Mahone 92aae268a3 Update MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:24:53 -05:00
Andrew Mahone 8b2d7062c4 Update Emby.Server.Implementations/Library/MediaSourceManager.cs
docs

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:24:30 -05:00
Andrew Mahone 193a1fa474 Update Emby.Server.Implementations/Library/MediaSourceManager.cs
docs

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:23:28 -05:00
Andrew Mahone d6aa02ff09 Update Emby.Server.Implementations/Data/SqliteItemRepository.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:22:07 -05:00
Andrew Mahone 4b75e6518e Update MediaBrowser.Api/Attachments/AttachmentService.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:21:40 -05:00
Andrew Mahone f60e9b0b62 formatting
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:20:29 -05:00
Andrew Mahone c09eb34708 Check for attachment file before trying to remove it during cleanup. 2019-11-07 08:56:12 -05:00
Andrew Mahone 6defe80b62 Check for cancellation between each batch of MediaAttachment inserts. 2019-11-07 08:38:36 -05:00
dkanada b103aa20c1 Merge pull request #1970 from Bond-009/nat
Use Mono.Nat Nuget package
2019-11-07 18:56:46 +09:00
Bond-009 126165080b Doc improvements 2019-11-07 10:55:02 +01:00
Bond-009 983d38a43b Merge branch 'master' into installationmanager 2019-11-07 10:50:55 +01:00
Terrance Siu 2779d9d3bc Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2019-11-07 04:15:06 -05:00
dkanada ad852ffd9a Merge pull request #1973 from EraYaN/docs-warning-fixes
Fix the last of the docs warnings
2019-11-07 18:12:26 +09:00
Narfinger 9cd62d661f removed restriction to 3 digits in episodenumber and 4 in season numbers 2019-11-07 10:50:02 +09:00
Andrew Mahone 74fb63a898 Use block rather than local using statement. 2019-11-06 10:43:14 -05:00
Andrew Mahone 4f3b883155 Clean up handling of missing source/attachment in AttachmentExtractor. 2019-11-06 09:46:31 -05:00
Andrew Mahone 79bbf09ecb Revert "Simplify AttachmentExtractor instantiation."
This reverts commit d33e0a4e2c.
2019-11-06 08:43:49 -05:00
Andrew Mahone 8505ee9d6c Extract the prefix for MediaAttachment insertions to a static member instead of generating it per-query. 2019-11-05 14:53:46 -05:00
Andrew Mahone cc7741efd4 Merge branch 'media-attachments' of github.com:Unhelpful/jellyfin into media-attachments 2019-11-05 08:35:42 -05:00
Andrew Mahone 3602251cf5 Update Emby.Server.Implementations/Data/SqliteItemRepository.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-05 08:36:17 -05:00
Andrew Mahone a78aec56e3 Format attachment DeliveryURL with CultureInfo.InvariantCulture.
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-05 08:21:06 -05:00
Andrew Mahone e5b65ed034 Update Emby.Server.Implementations/Data/SqliteItemRepository.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-05 08:19:07 -05:00
Andrew Mahone cdc7d83c22 Merge branch 'media-attachments' of github.com:Unhelpful/jellyfin into media-attachments 2019-11-05 08:18:04 -05:00
Andrew Mahone d33e0a4e2c Simplify AttachmentExtractor instantiation.
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-05 08:17:34 -05:00
Andrew Mahone 349310787c Update MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-05 08:16:46 -05:00
Andrew Mahone 25bc7b81c3 Update Emby.Server.Implementations/Data/SqliteItemRepository.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-05 08:13:35 -05:00
Andrew Mahone 24a460dc93 Update Emby.Server.Implementations/Data/SqliteItemRepository.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-05 08:13:22 -05:00
Andrew Mahone b936c530aa Merge branch 'media-attachments' of github.com:Unhelpful/jellyfin into media-attachments 2019-11-05 08:13:15 -05:00
Andrew Mahone bd4da93d1e Throw ArgumentException instead of ArgumentNullException on empty Guid. 2019-11-05 07:48:32 -05:00
Andrew Mahone 6ca252ba5c Remove check for "[0]" in codec_tag. 2019-11-05 07:09:55 -05:00
Andrew Mahone 28a6718d8e Return path of extracted attachment, which is always a file, instead of AttachmentInfo with path and protocol. 2019-11-04 14:48:28 -05:00
Andrew Mahone 04a96788f9 Convert exceptions for missing MediaSource or MediaAttachment to ResourceNotFoundException with appropriate message. 2019-11-04 14:34:21 -05:00
Andrew Mahone 154fb1fe9b AttachmentExtractor code cleanup. 2019-11-04 11:45:31 -05:00
Andrew Mahone c7d303a6ae MediaExtractor logging cleanup. 2019-11-04 11:39:40 -05:00
Andrew Mahone 262a8f47af Remove attachment filenames from attachment URLs. 2019-11-04 11:31:41 -05:00
Andrew Mahone 9eef5f860d AttachmentExtractor logging cleanup. 2019-11-04 11:16:57 -05:00
Andrew Mahone e9c893f07e Fail attachment extraction on non-zero exit code. 2019-11-04 10:58:56 -05:00
Andrew Mahone bd545891c0 Indentation fix. 2019-11-04 10:38:53 -05:00
Andrew Mahone 7110069b39 Return list result directly for MediaAttachments. 2019-11-04 10:37:19 -05:00
Andrew Mahone ad2101ce52 Rename "limit" to "insertAtOnce" in InsertMediaAttachments. 2019-11-04 10:33:50 -05:00
Andrew Mahone c2d8f210b1 Check for cancellation in SaveMediaAttachments. 2019-11-04 10:31:32 -05:00
Andrew Mahone 0dde5e46df Flatten using connection in GetMediaAttachments/SaveMediaAttachments 2019-11-04 10:28:33 -05:00
Andrew Mahone 4573fb5301 Use ToByteArray instead of ToGuidBlob. 2019-11-04 10:19:53 -05:00
Andrew Mahone 1600d5b53f Merge remote-tracking branch 'origin/master' into media-attachments-clean 2019-11-04 10:03:18 -05:00
Andrew Mahone 90dfe729bb Add space when building query string for attachments.
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2019-11-04 08:48:27 -05:00
Joshua M. Boniface 9756bdb76e Merge pull request #1903 from anthonylavado/nsis-update
Update NSIS Installer
2019-11-03 14:36:56 -05:00
Joshua M. Boniface a460814182 Merge pull request #1904 from JustAMan/hls-move-2
Switch ffmpeg to hls muxer (from segment) to fix premature stop on non-patched ffmpeg
2019-11-03 14:36:34 -05:00
Joshua M. Boniface 5d5fa55fe5 Merge pull request #1859 from joshuaboniface/copr-fix
Fix COPR build and Fedora packaging
2019-11-03 14:05:13 -05:00
Joshua Boniface d4474d493b Remove extraneous newline 2019-11-03 12:39:45 -05:00
Erwin de Haan f0e2f243ad Conform MovieResult.cs to the formatting standards. 2019-11-03 17:55:46 +01:00
Erwin de Haan 45a670f15b Revert the project inclusion that created a cycle. 2019-11-03 16:40:35 +01:00
Erwin de Haan 387051c409 Fix the last docs warnings. 2019-11-03 15:52:10 +01:00
Anthony Lavado e877ef92d7 Always download the latest tray app release 2019-11-03 02:51:29 -05:00
Bond_009 210af0e73e Properly remove event handler 2019-11-02 10:31:27 +01:00
Joshua Boniface fd4a9d13b7 Update path of SOS readme
Seems like this changed upstream as it's not our file.
2019-11-02 01:34:43 -04:00
Joshua Boniface 4fc2bd56ee Add master fallback for web build 2019-11-02 01:24:26 -04:00
Joshua Boniface e40c82be88 REVERT-ME Update to .NET 3.0 2019-11-02 01:17:12 -04:00
Juhos István 0f769fe979 Translated using Weblate (Hungarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hu/
2019-11-02 00:14:59 -04:00
Bond_009 558baeac48 Add docs 2019-11-01 21:25:37 +01:00
Bond_009 b0a25c4237 Use Mono.Nat Nuget package 2019-11-01 21:22:35 +01:00
Joshua M. Boniface 33ddca12ed Merge pull request #1969 from jellyfin/stale-bread
Add an exemption for the confirmed label
2019-11-01 16:11:17 -04:00
Anthony Lavado 3a741936c5 Add an exemption for the confirmed label
Adds an exemption we can use to keep issues open when they are confirmed/real
2019-11-01 16:06:00 -04:00
dkanada 3bfb36a67d Merge pull request #1915 from Bond-009/hex
Rewrite hex encoder/decoder
2019-11-02 04:03:36 +09:00
Bond_009 28df726c33 Disable CA1720: Identifiers should not contain type names 2019-11-01 18:45:16 +01:00
dkanada 48a99366b6 Merge pull request #1789 from Bond-009/deps
Update deps and add MultiThreading analyzer
2019-11-02 02:07:20 +09:00
Bond_009 81c135c5bb Fix PR issues 2019-11-01 17:57:19 +01:00
Bond_009 d529f81cd9 Improve IInstallationManager interface 2019-11-01 17:57:19 +01:00
Bond_009 5e0858d13f Fix xml docs 2019-11-01 17:55:44 +01:00
Bond_009 3f7836d9eb Update deps and add MultiThreading analyzer 2019-11-01 17:55:44 +01:00
Bond_009 60cb256835 Fix benches 2019-11-01 17:52:29 +01:00
Bond_009 593107e190 Multiplication is faster than bit shifting 2019-11-01 17:52:29 +01:00
Bond_009 b6627af65f Make decode even faster 2019-11-01 17:52:29 +01:00
Bond_009 a245f5a0d4 Rewrite hex encoder/decoder 2019-11-01 17:52:29 +01:00
dkanada 89a21c96c0 Merge pull request #1852 from Bond-009/warn9
Fix some more warnings
2019-11-02 01:24:44 +09:00
Bond_009 846857b60e Deserialize with the correct type (and warning fixes) 2019-11-01 17:07:42 +01:00
Bond-009 92abc202a4 Style fix 2019-11-01 16:42:47 +01:00
Bond-009 443422ddb4 Merge pull request #1931 from grafixeyehero/PersonServies
update persons service
2019-11-01 16:38:54 +01:00
Bond-009 43f51b2d90 Fix build 2019-11-01 16:35:44 +01:00
Anthony Lavado 57cf3e24f8 Use the correct file copy operation for the icon 2019-11-01 01:55:09 -04:00
Anthony Lavado 0c003feac6 Fix an incorrect argument type in build script 2019-11-01 01:25:45 -04:00
Steve Hayles da9a59de1e Allow valid https requests in .NET Core
ServerCertificateValidationCallback on the ServicePointManager is not supported in .NET Core and outgoing https requests will fail if the certificate is not trusted.

This adds the equivalent functionality
2019-10-31 18:48:34 +00:00
Anthony Lavado bde1af5def Add the tray app download to the build script, use it in the installer shortcuts
Adds the tray app download to build-jellyfin, adjusts the shortcuts in the installer, and adds the switch to the pipeline configuration.
2019-10-30 18:16:31 -04:00
Thomas Büttner e6e9cd8ce2 Remove the SPEC edit hack, replace with proper repos (#7)
* Remove the SPEC edit hack, replace with proper repos

Signed-off-by: Thomas Büttner <thomas@vergesslicher.tech>

* Fix bad rpmbuild flag

Signed-off-by: Thomas Büttner <thomas@vergesslicher.tech>
2019-10-29 18:16:08 -04:00
Anthony Lavado aca4f83333 Remove extra EndIf 2019-10-29 16:24:45 -04:00
Bond_009 d868530d1e Fix comments 2019-10-29 18:37:10 +01:00
Bond_009 10ae815bb4 Address comments 2019-10-29 17:56:06 +01:00
Bond_009 016be02cd6 More warning fixes 2019-10-29 17:56:05 +01:00
Bond_009 d9a03c9bb1 Fix more warnings 2019-10-29 17:55:16 +01:00
Bond-009 2b1e766c17 Update MediaBrowser.Controller/Library/IUserManager.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2019-10-29 17:50:09 +01:00
Bond-009 24c076eff3 Update Emby.Server.Implementations/Library/UserViewManager.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2019-10-29 17:50:01 +01:00
Bond-009 1258a3766f Update Jellyfin.Server/Program.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2019-10-29 17:49:41 +01:00
dkanada ef623f5129 Merge pull request #1954 from LogicalPhallacy/LogicalPhallacy-patch-NSSM
Use mirror for NSSM
2019-10-29 16:22:58 +09:00
dkanada 0449d7c5e1 Merge pull request #1949 from stevehayles/master
Update to Dockerfile
2019-10-29 16:19:46 +09:00
LogicalPhallacy 9c65853ddd updates win32 build script with nssm mirror 2019-10-28 22:10:36 -07:00
LogicalPhallacy 8c0580aa24 Updating win-x64 build NSSM address 2019-10-28 22:09:46 -07:00
LogicalPhallacy fd8d4894ca Updated build-jellyfin.ps1 to pull from my mirror
Updated it to pull from my mirror on Azure.
2019-10-28 22:07:01 -07:00
LogicalPhallacy 8edb1c49d8 Merge pull request #6 from jellyfin/master
Bringing my branch up to sync
2019-10-28 21:54:40 -07:00
Steve Hayles b1e65c6cd4 Adding OpenSSL library
Depending on configuration the docker container may need OpenSSL to support https access
2019-10-28 08:22:59 +00:00
Steve Hayles 26ce62d318 Update Dockerfile
debian-stretch packages were missing for libva-drm2 so would not build

the base image mcr.microsoft.com/dotnet/core/sdk:${DOTNET_VERSION} is incorrectly referencing .NET Core 3-preview6 which will cause issues at runtime with library references being mismatched
2019-10-27 20:22:17 +00:00
Steve Hayles 5eb9d10287 Merge remote-tracking branch 'jellyfin/master' 2019-10-27 20:17:41 +00:00
Justin Fenn 435c30aed9 use exec form for Dockerfile entrypoint
This causes the jellyfin process to be pid 1 in the container.  It can
receive signals like SIGTERM (from "docker stop", for example) and shut
down properly.
2019-10-27 12:28:56 -07:00
Joshua M. Boniface 53ee78170a Merge branch 'master' into copr-fix 2019-10-27 13:52:08 -04:00
Joshua Boniface 2cdf5c203a Correct CentOS build for new Fedora spec 2019-10-27 13:51:32 -04:00
Vasily 8cf8c36708 Move throwing if cancelled after logging that fact 2019-10-27 16:48:42 +03:00
Vasily dd7ae7747e Apply suggestions from code review
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-10-27 16:47:00 +03:00
Bond-009 c9f4a74af0 Merge pull request #1930 from grafixeyehero/vsc-workspace
update vsc workspace launch for net core 3
2019-10-27 11:44:16 +01:00
Bond_009 2702dca8b6 Enable nullable reference types for Jellyfin.Server 2019-10-26 23:58:23 +02:00
Joshua M. Boniface 588b554ef0 Merge pull request #6 from Wuerfelbecher/copr-fix
Fix build script
2019-10-26 16:48:38 -04:00
Joshua M. Boniface 67be3f8c9e Merge branch 'copr-fix' into copr-fix 2019-10-26 16:41:16 -04:00
Joshua M. Boniface ee488dcb83 Merge pull request #5 from brianjmurrell/fix-copr
Fix jellyfin-web URL
2019-10-26 16:40:12 -04:00
Thomas Büttner bf11426f7d Add comments about Source URLs and remove no longer needed dependency
Signed-off-by: Thomas Büttner <thomas@vergesslicher.tech>
2019-10-26 19:24:44 +02:00
Brian J. Murrell d5cbfee82b Fix jellyfin-web URL 2019-10-26 13:22:52 -04:00
Andrew Rabert 873225a7f2 Merge pull request #1922 from Bond-009/docker
Use the correct dotnet runtime in Docker images
2019-10-25 12:26:18 -04:00
Bond_009 f1167ace7e Use the correct dotnet runtime in Docker images
The self contained packages already contains the dotnet runtime
No need to use the dotnet runtime base image.

This should decrease the size of the image.
2019-10-25 18:04:01 +02:00
delfino434 0add74240f Translated using Weblate (Turkish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/tr/
2019-10-24 11:14:42 -04:00
emmanuel billeaud cb0aeeb189 Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2019-10-24 11:14:42 -04:00
Joshua M. Boniface f8556b3d89 Merge pull request #1918 from nvllsvm/dockermaster
Docker fixes
2019-10-24 09:14:20 -04:00
Bond-009 da7ba822b0 Merge pull request #1933 from cvium/autoreload_log_config
Reload logging.json on changes
2019-10-24 10:27:35 +02:00
Claus Vium c3eac58dda Reload logging.json on changes 2019-10-23 19:52:12 +02:00
Anthony Lavado 5e90747541 More preparations for the tray app 2019-10-23 04:14:58 -04:00
Anthony Lavado cfaf2b97fe Add the "service" argument to the service parameters
This will avoid an exception when the server cannot launch a browser process for the web interface.
2019-10-23 03:49:31 -04:00
Anthony Lavado 14a850b4a8 Change the default AppExit action to Exit
When the service should fail to launch Jellyfin, or should Jellyfin crash, the default action is changed from Restart to AppExit. This prevents the service from entering a constant restart due to a permissions issue or similar.
2019-10-23 03:34:12 -04:00
grafixeyehero 90c1eceec7 update vsc workspace launch for net core 3 2019-10-23 01:57:38 +03:00
grafixeyehero 752cf08e5c update persons service 2019-10-23 01:54:32 +03:00
Andrew Mahone 20727906c8 Use attachment filename if available. 2019-10-22 11:54:59 -04:00
Andrew Mahone 01b1c847e9 Provide delivery URLs for attachments in PlaybackInfo. 2019-10-22 11:54:59 -04:00
Andrew Mahone 8c89d89932 Attachment service. 2019-10-22 11:54:59 -04:00
Andrew Mahone a9a85f251e Instantiate AttachmentExtractor in ApplicationHost. 2019-10-22 11:50:07 -04:00
Andrew Mahone 12f752d8b1 FFMPEG extractor for attachments. 2019-10-22 11:50:07 -04:00
Andrew Mahone f22ca6dd9e Retrieve media attachments in BaseItem. 2019-10-22 10:36:54 -04:00
Andrew Mahone 1513c76a3e Support MediaAttachment retrieval in MediaSourceManager. 2019-10-22 10:35:00 -04:00
Andrew Mahone 03ecf57548 Store MediaAttachments in DB. 2019-10-22 10:32:40 -04:00
Andrew Mahone 321e5cba60 Add new MediaAttachment to store attachments found during media probing. 2019-10-22 10:30:55 -04:00
Anthony Lavado 94932ea216 Make installer shortcut check better
During an upgrade, only create shortcuts if the existing install was not a service install. Otherwise, do not create them.
2019-10-22 04:33:06 -04:00
Anthony Lavado a278b380b6 Fix syntax errors, move order of upgrade checks, enhance folder check, fix shortcuts
Fixes a syntax error with the NoServiceUninstall section. Moves the detection of an existing Service and datadir further up, so it happens before we decide how the installation will happen. Removed a newline from a comment, and enhanced the existing directory check. Adds an existing folder check, as well as a prompt if the user wants to continue with it or not. Also adds the datadir property to shortcuts.
2019-10-22 04:16:08 -04:00
Narfinger 4a20260a27 add another parser case and allow parsing of seasonless
Add another parser case and we now allow parsing of seasonless series which hopefully should cover more cases of directory structure
2019-10-22 15:46:35 +09:00
Thomas Büttner 59995c20f1 Fix buildscript failure, remove unnecessary yarn repo for Fedora build 2019-10-21 23:42:54 +02:00
Vasily 3743137c31 Address Bond-009 review comments 2019-10-21 12:05:49 +03:00
Vasily ae2b95024f Update MediaBrowser.Api/Playback/BaseStreamingService.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-10-21 11:58:04 +03:00
Joshua M. Boniface 91600b1c81 Merge pull request #1898 from Bond-009/jsonfix
Fix Json serialization error
2019-10-20 15:16:01 -04:00
Bond_009 fef35d0505 Add clearer exceptions, warnings and docs 2019-10-20 21:12:03 +02:00
Joshua Boniface 17c1de7bf2 Clean up ubuntu-armhf build steps
Installs the nodejs package via NodeSource, since the Bionic npm
package is heckin' broken.
2019-10-20 13:01:52 -04:00
Joshua Boniface 44e2d91b2f Clean up ubuntu-arm64 build steps
Installs the nodejs package via NodeSource, since the Bionic npm
package is heckin' broken.
2019-10-20 13:01:44 -04:00
Joshua Boniface f02ab9818a Clean up ubuntu-x64 build steps
Installs the nodejs package via NodeSource, since the Bionic npm
package is heckin' broken.
2019-10-20 13:00:38 -04:00
Joshua Boniface 9a48486838 Clean up debian-armhf build steps 2019-10-20 13:00:14 -04:00
Joshua Boniface d9f6c6f289 Clean up debian-arm64 build steps 2019-10-20 12:59:52 -04:00
Joshua Boniface 07d45e82f0 Move web-build into Debian build rules
This removes the convoluted steps in docker-build.sh in favour of
integrating the web-build sequence into the Debian rules file
explicitly. This will allow the web-build to work properly outside of
the boutique Docker container we build, thus allowing it to be build
properly directly on a target system with dpkg-buildpackage.
2019-10-20 12:58:10 -04:00
Joshua Boniface c30866fc93 Remove web frontend build from docker-build.sh
This is now handled in the RPM spec.
2019-10-20 11:18:12 -04:00
Joshua Boniface d57ee0b2b8 Remove spec version bump
This will be taken care of with the 10.4.1 bump in stable.
2019-10-20 11:12:45 -04:00
Bond-009 fdb0c3a1df Merge pull request #1909 from KerryRJ/FixDvdsFailingToPlay
Fix System.NullReferenceException when playing Dvds copied to HDD
2019-10-20 17:10:43 +02:00
Bond_009 bbc0875387 Don't shuffle some types by default 2019-10-20 16:08:40 +02:00
Andrew Rabert 4ace99ad76 Fix Docker ffmpeg 2019-10-19 21:01:01 -04:00
Andrew Rabert 64eca9e1c7 Update Docker containers to dotnet 3.0 2019-10-19 19:36:56 -04:00
Andrew Rabert cd3c14961f Default to jellyfin-web master 2019-10-19 19:32:19 -04:00
schbal e3f1f62a8b Translated using Weblate (Korean)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2019-10-19 09:14:27 -04:00
Marius Lindvall 3f16e6d947 Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2019-10-18 07:14:26 -04:00
schbal f469f18756 Translated using Weblate (Korean)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2019-10-18 07:14:26 -04:00
Joshua M. Boniface e211f821c9 Merge pull request #4 from brianjmurrell/fix-copr
Support building jellyfin-web webpack
2019-10-17 09:27:13 -04:00
Brian J. Murrell 145df92265 Support buiding jellyfin-web webpack
Needs nodejs >= 8 on EL7
- from https://rpm.nodesource.com/pub_8.x/el/7/x86_64/ on EL7.
Needs yarn
- from yarnpkg.com on EL7
2019-10-17 06:22:35 -04:00
KerryJ ef3df7baaf Fix System.NullReferenceException when playing Dvds copied to HDD 2019-10-17 11:31:11 +02:00
Vasily 6b6fede2e0 Address review comments 2019-10-16 16:13:59 +03:00
Vasily 9040ef87dc Merge pull request #1871 from Bond-009/doc
Enable `TreatWarningsAsErrors` for MediaBrowser.Common and Emby.Photos
2019-10-16 12:40:20 +03:00
Vasily dd83784da2 Merge pull request #1887 from joshuaboniface/bump-version
Bump version to 10.5.0 for next stable release
2019-10-16 12:40:01 +03:00
Anthony Lavado 330395e8b6 Check for the presence of AppDataLocal folder before using it 2019-10-16 03:25:39 -04:00
Anthony Lavado 6f504a246b Use the registry path for datadir, don't override it here
Removes an assumption on directory if the user has a datadir from the previous install, use that
2019-10-16 03:18:34 -04:00
Anthony Lavado 63e0bd1d61 Only create/remove shortcuts on non-service install
Should only remove shortcuts if the install type was non-service. On upgrade, check if the install type was non-service, and if so, set the variables correctly and create shortcuts.
2019-10-16 03:14:12 -04:00
Anthony Lavado 5232302532 Adds icons to shortcuts, fixes nsis warning
Adds the icon as a resource file in the program folder, and uses it for the shortcuts created.
Removes an extra section from the dialog creator file, so NSIS won't show a warning for unused code.
2019-10-16 02:29:37 -04:00
Anthony Lavado dc46620a81 Automatically creates shortcuts for non-service installs
If the user is not installing as a service, then the installer creates a Start Menu shortcut, and a desktop shortcut. Commented out future shortcuts for a tray app.
2019-10-16 02:01:26 -04:00
Anthony Lavado f80343bf9d Fix the Setup Type dialog titles
I had put the title and subtitle in the wrong order. This corrects the issue.
2019-10-16 01:43:53 -04:00
Bond_009 5edb8159a7 Fix Json serialization error 2019-10-15 17:49:49 +02:00
Vasily 0ccbc2f374 Merge pull request #1884 from Bond-009/netcore3.0
Move to netcore3.0
2019-10-15 15:35:37 +03:00
Anthony Lavado 9ad781324e Fix up Setup Type dialog, and add logic for basic setup
Fix up the Setup Type dialog, by removing an unused function from the page.
Adds logic to the installer to check for a basic or advanced setup choice. Ensures that the service is only installed if the "advanced" method is chosen. Note - it may be possible to remove some defaults from the .onInit, considering they get set through the program now.
2019-10-15 04:24:30 -04:00
Vasily adccc18298 Revert "yarn build" as it is fixed in master, fix typo 2019-10-14 14:07:12 +03:00
Vasily 3132280b07 * Make sure force_key_frames expression arguments are properly converted to strings
* Fore usage of keyframe cuts only in HLS
2019-10-14 13:22:53 +03:00
Vasily 1bd12083c3 Respect non-inversed setting of "enable break on non-keyframes" 2019-10-14 13:22:53 +03:00
Vasily 82f8345aa5 Log to debug all HTTP 500 response urls 2019-10-14 13:22:53 +03:00
Vasily 2f6879e869 Add limiting max keyframe interval when full transcoding 2019-10-14 13:22:53 +03:00
Vasily 986ea5c636 Fix log message - log args were swapped 2019-10-14 13:22:53 +03:00
Vasily 3740228100 Don't start waiting for a segment which doesn't exist if transcoding is not running 2019-10-14 13:22:52 +03:00
Vasily 7aea9266d0 Stop waiting for a segment to become ready if there's no alive transcode
Remove extra quotes in logging

Fix typo in comment
2019-10-14 13:22:39 +03:00
Vasily c1f9107b8b Add more logging
Trying to fix hls muxer plus ffmpeg 4.1+ combo

Try to fix waiting for segment being ready

This is needed because hls muxer in ffmpeg >= 4.1 creates the
playlist only when it finishes transcoding.

Also cleaned up logs a bit.

Lower log level for "StartFfmpeg finished" to debug
2019-10-14 13:22:15 +03:00
Vasily 6746f708f2 Revert "Revert "Fix premature stop when streaming""
This reverts commit 575b96d03a.
2019-10-14 13:16:30 +03:00
schbal c9851db4c7 Translated using Weblate (Korean)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2019-10-13 17:14:18 -04:00
Axel Gabriel Calle Granda aa5cd46b6c Translated using Weblate (Spanish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es/
2019-10-13 17:14:18 -04:00
Marius Lindvall 510c2d01c7 Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2019-10-13 17:14:18 -04:00
Anthony Lavado 05fb84ba22 Make service setup an optional component, remove setuptype page config for now 2019-10-12 04:39:34 -04:00
Anthony Lavado 04c4ad731e Begin to add setup type dialog 2019-10-12 03:56:46 -04:00
Anthony Lavado c8ffa2fb1d Set service install default to no 2019-10-12 03:03:33 -04:00
Joshua Boniface fffc5e3a6f Bump version to 10.5.0 for next stable release 2019-10-11 20:12:52 -04:00
Bond_009 516933aab5 Move to netcore3.0 2019-10-11 18:32:13 +02:00
Bond-009 d64b43286e Delete Doxyfile (#1879) 2019-10-11 00:11:23 -04:00
Narfinger 45f906c556 added a couple more tests 2019-10-11 11:46:51 +09:00
Vasily 79f9887625 Merge pull request #1854 from Bond-009/json
Use System.Text.Json api for databases
2019-10-10 18:15:48 +03:00
Vasily c6cb4b7cf8 Merge pull request #1840 from Bond-009/ruleset
Ignore warning CA1308 and SA1108
2019-10-10 16:53:37 +03:00
Vasily 094852ce30 Merge pull request #1861 from joshuaboniface/fix-centos-build
Use NVM to install nodejs v8 and yarn for CentOS
2019-10-10 10:35:11 +03:00
schbal 697450a619 Translated using Weblate (Korean)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2019-10-10 02:14:10 -04:00
Narfinger 8da012c8c5 add tests for Emby.Naming/TV/EpisodePathParser.cs
This should in the future help to detect working and non working name matchings
2019-10-10 13:22:42 +09:00
Joshua M. Boniface b7586335a6 Merge pull request #1872 from thornbill/translate-badge
Update translate badge in README
2019-10-09 18:46:10 -04:00
Vasily 1176749f14 Merge pull request #1863 from joshuaboniface/fix-baseurl-issues
Fix inconsistent BaseUrl behavior
2019-10-09 19:24:41 +03:00
Bill Thornton 5437434339 Update translate badge in README 2019-10-09 11:47:55 -04:00
Bond_009 9d4ce82ab9 Enable TreatWarningsAsErrors for MediaBrowser.Common and Emby.Photos
Adds `#pragma warning disable CS1591` to all files in
MediaBrowser.Common containing undocumented members.
2019-10-09 17:14:15 +02:00
Joshua Boniface 345a14ff55 Use value instead of assigning baseUrl first 2019-10-09 10:52:51 -04:00
Joshua Boniface b10e06ff45 Fix spacing issues 2019-10-09 10:40:52 -04:00
Bond-009 d8d2e52e3f Merge pull request #1870 from JustAMan/fix-http-ex1
Fix exception when handling error, log errors better
2019-10-09 16:08:50 +02:00
Joshua Boniface b96079fee6 Make NormalizeUrlPath static 2019-10-09 09:22:55 -04:00
dkanada 8d7ac291bc Merge pull request #1855 from Bond-009/stylefixes
Minor style fixes
2019-10-09 22:21:32 +09:00
dkanada 0c329736cc Merge pull request #1853 from Bond-009/startup
Log startup time
2019-10-09 22:19:49 +09:00
Vasily cadfd5bf3f Merge pull request #1866 from Bond-009/sqlslow
Change slow query time logging to debug
2019-10-09 15:52:29 +03:00
Vasily 03450f383f Fix template for logging 2019-10-09 14:05:32 +03:00
Vasily 8109c7eb30 Always log at least error message when error happens during request processing 2019-10-09 14:00:22 +03:00
Vasily 33b69a7099 Set response length and mime type correctly when reporting an error 2019-10-09 13:54:05 +03:00
Joshua Boniface 2a79ae0a6e Normalize baseUrl behaviour
Fully normalizes the baseUrl behaviour to better match how this sort of
feature works in other programs.

1. The baseUrl is always appended to paths, even the built-in `/emby`
and `/mediabrowser` paths.
2. The baseUrl is set statically at class instance creation, to ensure
it persists through changes until the next restart.
3. Configuration is normalized using a function when set, to ensure it's
in a standard `/mypath` format with leading `/`.
4. Cleans up the conditionals around default redirects. For sanity after
changing the URL, it will match *any* path that doesn't match the
current baseUrl and redirect it back to the main page (with baseUrl).
5. Adds a second method, NormalizeUrlPath, to avoid lots of `+ "/" +`
string manipulations which are unclean - we should always have a leading
slash.
6. Sets the default baseUrl to an empty string to avoid unexpected
behaviour, though this would be worked-around automatically.
7. Adds some debug logs whenever a URL is normalized, to help track down
issues with this code (if any arise).
2019-10-08 18:06:03 -04:00
Bond_009 ac93a5a85c Change slow query time logging to debug 2019-10-08 22:17:15 +02:00
Bond_009 e553eba31e Use System.Text.Json api 2019-10-08 20:59:53 +02:00
Vasily 531642fc53 Improve gitattributes for images 2019-10-08 16:54:41 +03:00
Vasily aa9d7d7f04 Merge pull request #1862 from joshuaboniface/bump-version
Fix bump_version for submodule removal
2019-10-08 16:04:55 +03:00
Joshua Boniface f20555bf4a Use NVM to install nodejs v8 and yarn
Prevents failure of the installation of jellyfin-web dependencies due
to the NodeJS version in EPEL being too old. v8 might be a little
conservative but is the earliest compatible version. Instead of using
their repo to install Yarn, use the new nvm binary to install Yarn, thus
forcing it to use the updated NodeJS version.
2019-10-07 23:34:02 -04:00
Joshua Boniface 3fc71731a3 Remove jellyfin-web submodule from bump_version 2019-10-07 22:37:19 -04:00
Joshua Boniface 218015063b Port former create_tarball into COPR Makefile
This script was removed in #1793; instead of restoring it, instead
implement its functionality directly in the COPR Makefile.
2019-10-07 22:30:23 -04:00
Bond_009 416155c35f Ignore warning SA1108 2019-10-04 20:21:47 +02:00
Bond_009 0cd2bfc428 Ignore warning CA1308 2019-10-04 19:55:14 +02:00
Bond_009 1745f0181c Log startup time 2019-09-29 00:29:28 +02:00
Bond_009 c5995af493 Some style fixes 2019-09-25 17:19:48 +02:00
LogicalPhallacy 984e415c66 Merge pull request #5 from jellyfin/master
Merge up to latest master
2019-08-06 00:26:19 -07:00
1750 changed files with 51007 additions and 41984 deletions
+89
View File
@@ -0,0 +1,89 @@
parameters:
- name: Packages
type: object
default: {}
- name: LinuxImage
type: string
default: "ubuntu-latest"
- name: DotNetSdkVersion
type: string
default: 3.1.100
jobs:
- job: CompatibilityCheck
displayName: Compatibility Check
pool:
vmImage: "${{ parameters.LinuxImage }}"
# only execute for pull requests
condition: and(succeeded(), variables['System.PullRequest.PullRequestNumber'])
strategy:
matrix:
${{ each Package in parameters.Packages }}:
${{ Package.key }}:
NugetPackageName: ${{ Package.value.NugetPackageName }}
AssemblyFileName: ${{ Package.value.AssemblyFileName }}
maxParallel: 2
dependsOn: Build
steps:
- checkout: none
- task: UseDotNet@2
displayName: "Update DotNet"
inputs:
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:
source: "current"
artifact: "$(NugetPackageName)"
path: "$(System.ArtifactsDirectory)/new-artifacts"
runVersion: "latest"
- task: CopyFiles@2
displayName: "Copy New Assembly Build Artifact"
inputs:
sourceFolder: $(System.ArtifactsDirectory)/new-artifacts
contents: "**/*.dll"
targetFolder: $(System.ArtifactsDirectory)/new-release
cleanTargetFolder: true
overWrite: true
flattenFolders: true
- task: DownloadPipelineArtifact@2
displayName: "Download Reference Assembly Build Artifact"
inputs:
source: "specific"
artifact: "$(NugetPackageName)"
path: "$(System.ArtifactsDirectory)/current-artifacts"
project: "$(System.TeamProjectId)"
pipeline: "$(System.DefinitionId)"
runVersion: "latestFromBranch"
runBranch: "refs/heads/$(System.PullRequest.TargetBranch)"
- task: CopyFiles@2
displayName: "Copy Reference Assembly Build Artifact"
inputs:
sourceFolder: $(System.ArtifactsDirectory)/current-artifacts
contents: "**/*.dll"
targetFolder: $(System.ArtifactsDirectory)/current-release
cleanTargetFolder: true
overWrite: true
flattenFolders: true
# The `--warnings-only` switch will swallow the return code and not emit any errors.
- task: DotNetCoreCLI@2
displayName: 'Execute ABI Compatibility Check Tool'
inputs:
command: custom
custom: compat
arguments: 'current-release/$(AssemblyFileName) new-release/$(AssemblyFileName) --azure-pipelines --warnings-only'
workingDirectory: $(System.ArtifactsDirectory)
+93
View File
@@ -0,0 +1,93 @@
parameters:
LinuxImage: 'ubuntu-latest'
RestoreBuildProjects: 'Jellyfin.Server/Jellyfin.Server.csproj'
DotNetSdkVersion: 3.1.100
jobs:
- job: Build
displayName: Build
strategy:
matrix:
Release:
BuildConfiguration: Release
Debug:
BuildConfiguration: Debug
pool:
vmImage: '${{ parameters.LinuxImage }}'
steps:
- checkout: self
clean: true
submodules: true
persistCredentials: true
- task: DownloadPipelineArtifact@2
displayName: 'Download Web Branch'
condition: in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI', 'BuildCompletion')
inputs:
path: '$(Agent.TempDirectory)'
artifact: 'jellyfin-web-production'
source: 'specific'
project: 'jellyfin'
pipeline: 'Jellyfin Web'
runBranch: variables['Build.SourceBranch']
- task: DownloadPipelineArtifact@2
displayName: 'Download Web Target'
condition: eq(variables['Build.Reason'], 'PullRequest')
inputs:
path: '$(Agent.TempDirectory)'
artifact: 'jellyfin-web-production'
source: 'specific'
project: 'jellyfin'
pipeline: 'Jellyfin Web'
runBranch: variables['System.PullRequest.TargetBranch']
- task: ExtractFiles@1
displayName: 'Extract Web Client'
inputs:
archiveFilePatterns: '$(Agent.TempDirectory)/*.zip'
destinationFolder: '$(Build.SourcesDirectory)/MediaBrowser.WebDashboard'
cleanDestinationFolder: false
- task: UseDotNet@2
displayName: 'Update DotNet'
inputs:
packageType: sdk
version: ${{ parameters.DotNetSdkVersion }}
- task: DotNetCoreCLI@2
displayName: 'Publish Server'
inputs:
command: publish
publishWebProjects: false
projects: '${{ parameters.RestoreBuildProjects }}'
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: false
- task: PublishPipelineArtifact@0
displayName: 'Publish Artifact Naming'
condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
inputs:
targetPath: '$(build.ArtifactStagingDirectory)/Jellyfin.Server/Emby.Naming.dll'
artifactName: 'Jellyfin.Naming'
- task: PublishPipelineArtifact@0
displayName: 'Publish Artifact Controller'
condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
inputs:
targetPath: '$(build.ArtifactStagingDirectory)/Jellyfin.Server/MediaBrowser.Controller.dll'
artifactName: 'Jellyfin.Controller'
- task: PublishPipelineArtifact@0
displayName: 'Publish Artifact Model'
condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
inputs:
targetPath: '$(build.ArtifactStagingDirectory)/Jellyfin.Server/MediaBrowser.Model.dll'
artifactName: 'Jellyfin.Model'
- task: PublishPipelineArtifact@0
displayName: 'Publish Artifact Common'
condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
inputs:
targetPath: '$(build.ArtifactStagingDirectory)/Jellyfin.Server/MediaBrowser.Common.dll'
artifactName: 'Jellyfin.Common'
+171
View File
@@ -0,0 +1,171 @@
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'
variables:
- name: JellyfinVersion
value: 0.0.0
steps:
- script: echo "##vso[task.setvariable variable=JellyfinVersion]$( awk -F '/' '{ print $NF }' <<<'$(Build.SourceBranch)' | sed 's/^v//' )"
displayName: Set release version (stable)
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags')
- 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)
$(JellyfinVersion)-$(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'
+93
View File
@@ -0,0 +1,93 @@
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
jobs:
- job: Test
displayName: Test
strategy:
matrix:
${{ each imageName in parameters.ImageNames }}:
${{ imageName.key }}:
ImageName: ${{ imageName.value }}
pool:
vmImage: "$(ImageName)"
steps:
- checkout: self
clean: true
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 CLI Tests'
inputs:
command: "test"
projects: ${{ parameters.TestProjects }}
arguments: '--configuration Release --collect:"XPlat Code Coverage" --settings tests/coverletArgs.runsettings --verbosity minimal "-p:GenerateDocumentationFile=False"'
publishTestResults: true
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: 'Run ReportGenerator'
enabled: false
inputs:
reports: "$(Agent.TempDirectory)/**/coverage.cobertura.xml"
targetdir: "$(Agent.TempDirectory)/merged/"
reporttypes: "Cobertura"
## 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'
enabled: false
inputs:
codeCoverageTool: "cobertura"
#summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml' # !!THIS IS FOR V2
summaryFileLocation: "$(Agent.TempDirectory)/merged/**.xml"
pathToSources: $(Build.SourcesDirectory)
failIfCoverageEmpty: true
+25 -345
View File
@@ -1,10 +1,12 @@
name: $(Date:yyyyMMdd)$(Rev:.r)
variables:
- name: TestProjects
value: 'tests/Jellyfin.Common.Tests/Jellyfin.Common.Tests.csproj'
- name: RestoreBuildProjects
value: 'Jellyfin.Server/Jellyfin.Server.csproj'
- name: TestProjects
value: 'tests/**/*Tests.csproj'
- name: RestoreBuildProjects
value: 'Jellyfin.Server/Jellyfin.Server.csproj'
- name: DotNetSdkVersion
value: 3.1.100
pr:
autoCancel: true
@@ -13,271 +15,24 @@ trigger:
batch: true
jobs:
- job: main_build
displayName: Main Build
pool:
vmImage: ubuntu-latest
strategy:
matrix:
release:
BuildConfiguration: Release
debug:
BuildConfiguration: Debug
maxParallel: 2
steps:
- checkout: self
clean: true
submodules: true
persistCredentials: true
- ${{ 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'
RestoreBuildProjects: $(RestoreBuildProjects)
- task: CmdLine@2
displayName: "Check out web"
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'))
inputs:
script: 'git clone --single-branch --branch $(Build.SourceBranchName) --depth=1 https://github.com/jellyfin/jellyfin-web.git $(Agent.TempDirectory)/jellyfin-web'
- ${{ 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'
- task: CmdLine@2
displayName: "Check out web (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'))
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.js'
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:
versionSpec: '10.x'
- task: CmdLine@2
displayName: "Build Web UI"
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 the web UI
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 # Optional
contents: '**'
targetFolder: $(Build.SourcesDirectory)/MediaBrowser.WebDashboard/jellyfin-web
cleanTargetFolder: true # Optional
overWrite: true # Optional
flattenFolders: false # Optional
- task: DotNetCoreCLI@2
displayName: Publish
inputs:
command: publish
publishWebProjects: false
projects: '$(RestoreBuildProjects)'
arguments: '--configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)'
zipAfterPublish: false
- task: PublishPipelineArtifact@0
displayName: 'Publish Artifact Naming'
condition: and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
inputs:
targetPath: '$(build.artifactstagingdirectory)/Jellyfin.Server/Emby.Naming.dll'
artifactName: 'Jellyfin.Naming'
- task: PublishPipelineArtifact@0
displayName: 'Publish Artifact Controller'
condition: and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
inputs:
targetPath: '$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Controller.dll'
artifactName: 'Jellyfin.Controller'
- task: PublishPipelineArtifact@0
displayName: 'Publish Artifact Model'
condition: and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
inputs:
targetPath: '$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Model.dll'
artifactName: 'Jellyfin.Model'
- task: PublishPipelineArtifact@0
displayName: 'Publish Artifact Common'
condition: and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
inputs:
targetPath: '$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Common.dll'
artifactName: 'Jellyfin.Common'
- job: main_test
displayName: Main Test
pool:
vmImage: windows-latest
steps:
- checkout: self
clean: true
submodules: true
persistCredentials: false
- task: DotNetCoreCLI@2
displayName: Build
inputs:
command: build
publishWebProjects: false
projects: '$(TestProjects)'
arguments: '--configuration $(BuildConfiguration)'
zipAfterPublish: false
- task: VisualStudioTestPlatformInstaller@1
inputs:
packageFeedSelector: 'nugetOrg' # Options: nugetOrg, customFeed, netShare
versionSelector: 'latestPreRelease' # Required when packageFeedSelector == NugetOrg || PackageFeedSelector == CustomFeed# Options: latestPreRelease, latestStable, specificVersion
- task: VSTest@2
inputs:
testSelector: 'testAssemblies' # Options: testAssemblies, testPlan, testRun
testAssemblyVer2: | # Required when testSelector == TestAssemblies
**\bin\$(BuildConfiguration)\**\*test*.dll
!**\obj\**
!**\xunit.runner.visualstudio.testadapter.dll
!**\xunit.runner.visualstudio.dotnetcore.testadapter.dll
#testPlan: # Required when testSelector == TestPlan
#testSuite: # Required when testSelector == TestPlan
#testConfiguration: # Required when testSelector == TestPlan
#tcmTestRun: '$(test.RunId)' # Optional
searchFolder: '$(System.DefaultWorkingDirectory)'
#testFiltercriteria: # Optional
#runOnlyImpactedTests: False # Optional
#runAllTestsAfterXBuilds: '50' # Optional
#uiTests: false # Optional
#vstestLocationMethod: 'version' # Optional. Options: version, location
#vsTestVersion: 'latest' # Optional. Options: latest, 16.0, 15.0, 14.0, toolsInstaller
#vstestLocation: # Optional
#runSettingsFile: # Optional
#overrideTestrunParameters: # Optional
#pathtoCustomTestAdapters: # Optional
runInParallel: True # Optional
runTestsInIsolation: True # Optional
codeCoverageEnabled: True # Optional
#otherConsoleOptions: # Optional
#distributionBatchType: 'basedOnTestCases' # Optional. Options: basedOnTestCases, basedOnExecutionTime, basedOnAssembly
#batchingBasedOnAgentsOption: 'autoBatchSize' # Optional. Options: autoBatchSize, customBatchSize
#customBatchSizeValue: '10' # Required when distributionBatchType == BasedOnTestCases && BatchingBasedOnAgentsOption == CustomBatchSize
#batchingBasedOnExecutionTimeOption: 'autoBatchSize' # Optional. Options: autoBatchSize, customTimeBatchSize
#customRunTimePerBatchValue: '60' # Required when distributionBatchType == BasedOnExecutionTime && BatchingBasedOnExecutionTimeOption == CustomTimeBatchSize
#dontDistribute: False # Optional
#testRunTitle: # Optional
#platform: # Optional
configuration: 'Debug' # Optional
publishRunAttachments: true # Optional
#diagnosticsEnabled: false # Optional
#collectDumpOn: 'onAbortOnly' # Optional. Options: onAbortOnly, always, never
#rerunFailedTests: False # Optional
#rerunType: 'basedOnTestFailurePercentage' # Optional. Options: basedOnTestFailurePercentage, basedOnTestFailureCount
#rerunFailedThreshold: '30' # Optional
#rerunFailedTestCasesMaxLimit: '5' # Optional
#rerunMaxAttempts: '3' # Optional
# - task: PublishTestResults@2
# inputs:
# testResultsFormat: 'VSTest' # Options: JUnit, NUnit, VSTest, xUnit, cTest
# testResultsFiles: '**/*.trx'
# #searchFolder: '$(System.DefaultWorkingDirectory)' # Optional
# mergeTestResults: true # Optional
# #failTaskOnFailedTests: false # Optional
# #testRunTitle: # Optional
# #buildPlatform: # Optional
# #buildConfiguration: # Optional
# #publishRunAttachments: true # Optional
- job: main_build_win
displayName: Main Build Windows
pool:
vmImage: windows-latest
strategy:
matrix:
release:
BuildConfiguration: Release
maxParallel: 2
steps:
- checkout: self
clean: true
submodules: true
persistCredentials: true
- task: CmdLine@2
displayName: "Check out web"
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'))
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: "Check out web (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'))
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.js'
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:
versionSpec: '10.x'
- task: CmdLine@2
displayName: "Build Web UI"
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 the web UI
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 # Optional
contents: '**'
targetFolder: $(Build.SourcesDirectory)/MediaBrowser.WebDashboard/jellyfin-web
cleanTargetFolder: true # Optional
overWrite: true # Optional
flattenFolders: false # Optional
- task: CmdLine@2
displayName: Clone the UX repository
inputs:
script: git clone --depth=1 https://github.com/jellyfin/jellyfin-ux $(Agent.TempDirectory)\jellyfin-ux
- task: PowerShell@2
displayName: Build the NSIS Installer
inputs:
targetType: 'filePath' # Optional. Options: filePath, inline
filePath: ./deployment/windows/build-jellyfin.ps1 # Required when targetType == FilePath
arguments: -InstallFFMPEG -InstallNSSM -MakeNSIS -UXLocation $(Agent.TempDirectory)\jellyfin-ux -InstallLocation $(build.artifactstagingdirectory)
#script: '# Write your PowerShell commands here.Write-Host Hello World' # Required when targetType == Inline
errorActionPreference: 'stop' # Optional. Options: stop, continue, silentlyContinue
#failOnStderr: false # Optional
#ignoreLASTEXITCODE: false # Optional
#pwsh: false # Optional
workingDirectory: $(Build.SourcesDirectory) # Optional
- task: CopyFiles@2
displayName: Copy the NSIS Installer to the artifact directory
inputs:
sourceFolder: $(Build.SourcesDirectory)/deployment/windows/ # Optional
contents: 'jellyfin*.exe'
targetFolder: $(System.ArtifactsDirectory)/setup
cleanTargetFolder: true # Optional
overWrite: true # Optional
flattenFolders: true # Optional
- task: PublishPipelineArtifact@0
displayName: 'Publish Setup Artifact'
condition: and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
inputs:
targetPath: '$(build.artifactstagingdirectory)/setup'
artifactName: 'Jellyfin Server Setup'
- job: dotnet_compat
displayName: Compatibility Check
pool:
vmImage: ubuntu-latest
dependsOn: main_build
condition: and(succeeded(), variables['System.PullRequest.PullRequestNumber']) # Only execute if the pullrequest numer is defined. (So not for normal CI builds)
strategy:
matrix:
- ${{ if not(or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master'))) }}:
- template: azure-pipelines-abi.yml
parameters:
Packages:
Naming:
NugetPackageName: Jellyfin.Naming
AssemblyFileName: Emby.Naming.dll
@@ -290,82 +45,7 @@ jobs:
Common:
NugetPackageName: Jellyfin.Common
AssemblyFileName: MediaBrowser.Common.dll
maxParallel: 2
steps:
- checkout: none
- task: DownloadPipelineArtifact@2
displayName: Download the New Assembly Build Artifact
inputs:
source: 'current' # Options: current, specific
#preferTriggeringPipeline: false # Optional
#tags: # Optional
artifact: '$(NugetPackageName)' # Optional
#patterns: '**' # Optional
path: '$(System.ArtifactsDirectory)/new-artifacts'
#project: # Required when source == Specific
#pipeline: # Required when source == Specific
runVersion: 'latest' # Required when source == Specific. Options: latest, latestFromBranch, specific
#runBranch: 'refs/heads/master' # Required when source == Specific && runVersion == LatestFromBranch
#runId: # Required when source == Specific && runVersion == Specific
- task: CopyFiles@2
displayName: Copy New Assembly to new-release folder
inputs:
sourceFolder: $(System.ArtifactsDirectory)/new-artifacts # Optional
contents: '**/*.dll'
targetFolder: $(System.ArtifactsDirectory)/new-release
cleanTargetFolder: true # Optional
overWrite: true # Optional
flattenFolders: true # Optional
- task: DownloadPipelineArtifact@2
displayName: Download the Reference Assembly Build Artifact
inputs:
source: 'specific' # Options: current, specific
#preferTriggeringPipeline: false # Optional
#tags: # Optional
artifact: '$(NugetPackageName)' # Optional
#patterns: '**' # Optional
path: '$(System.ArtifactsDirectory)/current-artifacts'
project: '$(System.TeamProjectId)' # Required when source == Specific
pipeline: '$(System.DefinitionId)' # Required when source == Specific
runVersion: 'latestFromBranch' # Required when source == Specific. Options: latest, latestFromBranch, specific
runBranch: 'refs/heads/$(System.PullRequest.TargetBranch)' # Required when source == Specific && runVersion == LatestFromBranch
#runId: # Required when source == Specific && runVersion == Specific
- task: CopyFiles@2
displayName: Copy Reference Assembly to current-release folder
inputs:
sourceFolder: $(System.ArtifactsDirectory)/current-artifacts # Optional
contents: '**/*.dll'
targetFolder: $(System.ArtifactsDirectory)/current-release
cleanTargetFolder: true # Optional
overWrite: true # Optional
flattenFolders: true # Optional
- task: DownloadGitHubRelease@0
displayName: Download ABI compatibility check tool from GitHub
inputs:
connection: Jellyfin Release Download
userRepository: EraYaN/dotnet-compatibility
defaultVersionType: 'latest' # Options: latest, specificVersion, specificTag
#version: # Required when defaultVersionType != Latest
itemPattern: '**-ci.zip' # Optional
downloadPath: '$(System.ArtifactsDirectory)'
- task: ExtractFiles@1
displayName: Extract ABI compatibility check tool
inputs:
archiveFilePatterns: '$(System.ArtifactsDirectory)/*-ci.zip'
destinationFolder: $(System.ArtifactsDirectory)/tools
cleanDestinationFolder: true
- task: CmdLine@2
displayName: Execute ABI compatibility check tool
inputs:
script: 'dotnet tools/CompatibilityCheckerCoreCLI.dll current-release/$(AssemblyFileName) new-release/$(AssemblyFileName) --azure-pipelines'
workingDirectory: $(System.ArtifactsDirectory) # Optional
#failOnStderr: false # Optional
LinuxImage: 'ubuntu-latest'
- ${{ if or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master')) }}:
- template: azure-pipelines-package.yml
-46
View File
@@ -1,46 +0,0 @@
name: Nightly-$(date:yyyyMMdd).$(rev:r)
variables:
- name: Version
value: '1.0.0'
trigger: none
pr: none
jobs:
- job: publish_artifacts_nightly
displayName: Publish Artifacts Nightly
pool:
vmImage: ubuntu-latest
steps:
- checkout: none
- task: DownloadPipelineArtifact@2
displayName: Download the Windows Setup Artifact
inputs:
source: 'specific' # Options: current, specific
artifact: 'Jellyfin Server Setup' # Optional
path: '$(System.ArtifactsDirectory)/win-installer'
project: '$(System.TeamProjectId)' # Required when source == Specific
pipelineId: 1 # Required when source == Specific
runVersion: 'latestFromBranch' # Required when source == Specific. Options: latest, latestFromBranch, specific
runBranch: 'refs/heads/master' # Required when source == Specific && runVersion == LatestFromBranch
- task: SSH@0
displayName: 'Create Drop directory'
inputs:
sshEndpoint: 'Jellyfin Build Server'
commands: 'mkdir -p /srv/incoming/jellyfin_$(Version)/win-installer && ln -s /srv/incoming/jellyfin_$(Version) /srv/incoming/jellyfin_nightly_azure_upload'
- task: CopyFilesOverSSH@0
displayName: 'Copy the Windows Setup to the Repo'
inputs:
sshEndpoint: 'Jellyfin Build Server'
sourceFolder: '$(System.ArtifactsDirectory)/win-installer'
contents: 'jellyfin_*.exe'
targetFolder: '/srv/incoming/jellyfin_nightly_azure_upload/win-installer'
- task: SSH@0
displayName: 'Clean up SCP symlink'
inputs:
sshEndpoint: 'Jellyfin Build Server'
commands: 'rm -f /srv/incoming/jellyfin_nightly_azure_upload'
-48
View File
@@ -1,48 +0,0 @@
name: Release-$(Version)-$(date:yyyyMMdd).$(rev:r)
variables:
- name: Version
value: '1.0.0'
- name: UsedRunId
value: 0
trigger: none
pr: none
jobs:
- job: publish_artifacts_release
displayName: Publish Artifacts Release
pool:
vmImage: ubuntu-latest
steps:
- checkout: none
- task: DownloadPipelineArtifact@2
displayName: Download the Windows Setup Artifact
inputs:
source: 'specific' # Options: current, specific
artifact: 'Jellyfin Server Setup' # Optional
path: '$(System.ArtifactsDirectory)/win-installer'
project: '$(System.TeamProjectId)' # Required when source == Specific
pipelineId: 1 # Required when source == Specific
runVersion: 'specific' # Required when source == Specific. Options: latest, latestFromBranch, specific
runId: $(UsedRunId)
- task: SSH@0
displayName: 'Create Drop directory'
inputs:
sshEndpoint: 'Jellyfin Build Server'
commands: 'mkdir -p /srv/incoming/jellyfin_$(Version)/win-installer && ln -s /srv/incoming/jellyfin_$(Version) /srv/incoming/jellyfin_release_azure_upload'
- task: CopyFilesOverSSH@0
displayName: 'Copy the Windows Setup to the Repo'
inputs:
sshEndpoint: 'Jellyfin Build Server'
sourceFolder: '$(System.ArtifactsDirectory)/win-installer'
contents: 'jellyfin_*.exe'
targetFolder: '/srv/incoming/jellyfin_release_azure_upload/win-installer'
- task: SSH@0
displayName: 'Clean up SCP symlink'
inputs:
sshEndpoint: 'Jellyfin Build Server'
commands: 'rm -f /srv/incoming/jellyfin_release_azure_upload'
-8
View File
@@ -1,8 +0,0 @@
srpm:
dnf -y install git
git submodule update --init --recursive
cd deployment/fedora-package-x64; \
./create_tarball.sh; \
rpmbuild -bs pkg-src/jellyfin.spec \
--define "_sourcedir $$PWD/pkg-src/" \
--define "_srcrpmdir $(outdir)"
+1
View File
@@ -0,0 +1 @@
../fedora/Makefile
+7 -10
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
+2
View File
@@ -1,3 +1,5 @@
* text=auto eol=lf
*.png binary
*.jpg binary
CONTRIBUTORS.md merge=union
+3
View File
@@ -0,0 +1,3 @@
# Joshua must review all changes to deployment and build.sh
deployment/* @joshuaboniface
build.sh @joshuaboniface
+13 -6
View File
@@ -10,6 +10,19 @@ assignees: ''
**Describe the bug**
<!-- A clear and concise description of what the bug is. -->
**System (please complete the following information):**
- OS: [e.g. Debian, Windows]
- Virtualization: [e.g. Docker, KVM, LXC]
- Clients: [Browser, Android, Fire Stick, etc.]
- Browser: [e.g. Firefox 72, Chrome 80, Safari 13]
- Jellyfin Version: [e.g. 10.4.3, nightly 20191231]
- Playback: [Direct Play, Remux, Direct Stream, Transcode]
- Installed Plugins: [e.g. none, Fanart, Anime, etc.]
- Reverse Proxy: [e.g. none, nginx, apache, etc.]
- Base URL: [e.g. none, yes: /example]
- Networking: [e.g. Host, Bridge/NAT]
- Storage: [e.g. local, NFS, cloud]
**To Reproduce**
<!-- Steps to reproduce the behavior: -->
1. Go to '...'
@@ -26,11 +39,5 @@ assignees: ''
**Screenshots**
<!-- If applicable, add screenshots to help explain your problem. -->
**System (please complete the following information):**
- OS: [e.g. Docker, Debian, Windows]
- Browser: [e.g. Firefox, Chrome, Safari]
- Jellyfin Version: [e.g. 10.0.1]
- Reverse proxy: [e.g. no, nginx, apache, etc.]
**Additional context**
<!-- Add any other context about the problem here. -->
+13
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.
+4 -2
View File
@@ -11,7 +11,10 @@ assignees: ''
<!-- Use the Media Info tool (set to text format, download here: https://mediaarea.net/en/MediaInfo) or copy the info from the web ui for the file with the playback issue. -->
**Logs**
<!-- Please paste any log message from during the playback issue, for example the ffmpeg command line can be very useful. -->
<!-- Please paste any log messages from during the playback issue. -->
**FFmpeg Logs**
<!-- Please paste any FFmpeg logs if remuxing or transcoding appears to be part of the issue. -->
**Stats for Nerds Screenshots**
<!-- If available, add screenshots of the stats for nerds screen to help show the issue problem. -->
@@ -29,4 +32,3 @@ assignees: ''
- Client: [e.g. Web/Browser, webOS, Android, Android TV, Electron]
- Browser (if Web client): [e.g. Firefox, Chrome, Safari]
- Client and Browser Version: [e.g. 10.3.4 and 68.0]
+9
View File
@@ -0,0 +1,9 @@
version: 2
updates:
- package-ecosystem: nuget
directory: "/"
schedule:
interval: weekly
time: '12:00'
open-pull-requests-limit: 10
+8 -5
View File
@@ -1,7 +1,7 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 90
daysUntilStale: 120
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 14
daysUntilClose: 21
# Issues with these labels will never be considered stale
exemptLabels:
- regression
@@ -11,12 +11,15 @@ exemptLabels:
- future
- feature
- enhancement
- confirmed
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
Issues go stale after 90d of inactivity. Mark the issue as fresh by adding a comment or commit. Stale issues close after an additional 14d of inactivity.
If this issue is safe to close now please do so.
If you have any questions you can reach us on [Matrix or Social Media](https://docs.jellyfin.org/general/getting-help.html).
This issue has gone 120 days without comment. To avoid abandoned issues, it will be closed in 21 days if there are no new comments.
If you're the original submitter of this issue, please comment confirming if this issue still affects you in the latest release or nightlies, or close the issue if it has been fixed. If you're another user also affected by this bug, please comment confirming so. Either action will remove the stale label.
This bot exists to prevent issues from becoming stale and forgotten. Jellyfin is always moving forward, and bugs are often fixed as side effects of other changes. We therefore ask that bug report authors remain vigilant about their issues to ensure they are closed if fixed, or re-confirmed - perhaps with fresh logs or reproduction examples - regularly. If you have any questions you can reach us on [Matrix or Social Media](https://docs.jellyfin.org/general/getting-help.html).
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false
+15 -7
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/
@@ -268,3 +268,11 @@ doc/
# Deployment artifacts
dist
*.exe
# BenchmarkDotNet artifacts
BenchmarkDotNet.Artifacts
# Ignore web artifacts from native builds
web/
web-src.*
MediaBrowser.WebDashboard/jellyfin-web
+14
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": [
]
}
+8 -8
View File
@@ -1,16 +1,13 @@
{
// 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",
"request": "launch",
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/Jellyfin.Server/bin/Debug/netcoreapp2.1/jellyfin.dll",
"program": "${workspaceFolder}/Jellyfin.Server/bin/Debug/netcoreapp3.1/jellyfin.dll",
"args": [],
"cwd": "${workspaceFolder}/Jellyfin.Server",
// For more information about the 'console' field, see https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md#console-terminal-window
@@ -24,5 +21,8 @@
"request": "attach",
"processId": "${command:pickProcess}"
}
,]
}
],
"env": {
"DOTNET_CLI_TELEMETRY_OPTOUT": "1"
}
}
+17 -2
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"
}
}
}
-17
View File
@@ -1,17 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<Compile Include="..\SharedVersion.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj" />
</ItemGroup>
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
</Project>
-33
View File
@@ -1,33 +0,0 @@
namespace BDInfo
{
class BDInfoSettings
{
public static bool GenerateStreamDiagnostics => true;
public static bool EnableSSIF => true;
public static bool AutosaveReport => false;
public static bool GenerateFrameDataFile => false;
public static bool FilterLoopingPlaylists => true;
public static bool FilterShortPlaylists => false;
public static int FilterShortPlaylistsValue => 0;
public static bool UseImagePrefix => false;
public static string UseImagePrefixValue => null;
/// <summary>
/// Setting this to false throws an IComparer error on some discs.
/// </summary>
public static bool KeepStreamOrder => true;
public static bool GenerateTextSummary => false;
public static string LastPath => string.Empty;
}
}
-449
View File
@@ -1,449 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using MediaBrowser.Model.IO;
namespace BDInfo
{
public class BDROM
{
public FileSystemMetadata DirectoryRoot = null;
public FileSystemMetadata DirectoryBDMV = null;
public FileSystemMetadata DirectoryBDJO = null;
public FileSystemMetadata DirectoryCLIPINF = null;
public FileSystemMetadata DirectoryPLAYLIST = null;
public FileSystemMetadata DirectorySNP = null;
public FileSystemMetadata DirectorySSIF = null;
public FileSystemMetadata DirectorySTREAM = null;
public string VolumeLabel = null;
public ulong Size = 0;
public bool IsBDPlus = false;
public bool IsBDJava = false;
public bool IsDBOX = false;
public bool IsPSP = false;
public bool Is3D = false;
public bool Is50Hz = false;
private readonly IFileSystem _fileSystem;
public Dictionary<string, TSPlaylistFile> PlaylistFiles =
new Dictionary<string, TSPlaylistFile>();
public Dictionary<string, TSStreamClipFile> StreamClipFiles =
new Dictionary<string, TSStreamClipFile>();
public Dictionary<string, TSStreamFile> StreamFiles =
new Dictionary<string, TSStreamFile>();
public Dictionary<string, TSInterleavedFile> InterleavedFiles =
new Dictionary<string, TSInterleavedFile>();
public delegate bool OnStreamClipFileScanError(
TSStreamClipFile streamClipFile, Exception ex);
public event OnStreamClipFileScanError StreamClipFileScanError;
public delegate bool OnStreamFileScanError(
TSStreamFile streamClipFile, Exception ex);
public event OnStreamFileScanError StreamFileScanError;
public delegate bool OnPlaylistFileScanError(
TSPlaylistFile playlistFile, Exception ex);
public event OnPlaylistFileScanError PlaylistFileScanError;
public BDROM(string path, IFileSystem fileSystem)
{
if (string.IsNullOrEmpty(path))
{
throw new ArgumentNullException(nameof(path));
}
_fileSystem = fileSystem;
//
// Locate BDMV directories.
//
DirectoryBDMV =
GetDirectoryBDMV(path);
if (DirectoryBDMV == null)
{
throw new Exception("Unable to locate BD structure.");
}
DirectoryRoot =
_fileSystem.GetDirectoryInfo(Path.GetDirectoryName(DirectoryBDMV.FullName));
DirectoryBDJO =
GetDirectory("BDJO", DirectoryBDMV, 0);
DirectoryCLIPINF =
GetDirectory("CLIPINF", DirectoryBDMV, 0);
DirectoryPLAYLIST =
GetDirectory("PLAYLIST", DirectoryBDMV, 0);
DirectorySNP =
GetDirectory("SNP", DirectoryRoot, 0);
DirectorySTREAM =
GetDirectory("STREAM", DirectoryBDMV, 0);
DirectorySSIF =
GetDirectory("SSIF", DirectorySTREAM, 0);
if (DirectoryCLIPINF == null
|| DirectoryPLAYLIST == null)
{
throw new Exception("Unable to locate BD structure.");
}
//
// Initialize basic disc properties.
//
VolumeLabel = GetVolumeLabel(DirectoryRoot);
Size = (ulong)GetDirectorySize(DirectoryRoot);
if (null != GetDirectory("BDSVM", DirectoryRoot, 0))
{
IsBDPlus = true;
}
if (null != GetDirectory("SLYVM", DirectoryRoot, 0))
{
IsBDPlus = true;
}
if (null != GetDirectory("ANYVM", DirectoryRoot, 0))
{
IsBDPlus = true;
}
if (DirectoryBDJO != null &&
_fileSystem.GetFilePaths(DirectoryBDJO.FullName).Any())
{
IsBDJava = true;
}
if (DirectorySNP != null &&
GetFilePaths(DirectorySNP.FullName, ".mnv").Any())
{
IsPSP = true;
}
if (DirectorySSIF != null &&
_fileSystem.GetFilePaths(DirectorySSIF.FullName).Any())
{
Is3D = true;
}
if (File.Exists(Path.Combine(DirectoryRoot.FullName, "FilmIndex.xml")))
{
IsDBOX = true;
}
//
// Initialize file lists.
//
if (DirectoryPLAYLIST != null)
{
FileSystemMetadata[] files = GetFiles(DirectoryPLAYLIST.FullName, ".mpls").ToArray();
foreach (var file in files)
{
PlaylistFiles.Add(
file.Name.ToUpper(), new TSPlaylistFile(this, file));
}
}
if (DirectorySTREAM != null)
{
FileSystemMetadata[] files = GetFiles(DirectorySTREAM.FullName, ".m2ts").ToArray();
foreach (var file in files)
{
StreamFiles.Add(
file.Name.ToUpper(), new TSStreamFile(file, _fileSystem));
}
}
if (DirectoryCLIPINF != null)
{
FileSystemMetadata[] files = GetFiles(DirectoryCLIPINF.FullName, ".clpi").ToArray();
foreach (var file in files)
{
StreamClipFiles.Add(
file.Name.ToUpper(), new TSStreamClipFile(file));
}
}
if (DirectorySSIF != null)
{
FileSystemMetadata[] files = GetFiles(DirectorySSIF.FullName, ".ssif").ToArray();
foreach (var file in files)
{
InterleavedFiles.Add(
file.Name.ToUpper(), new TSInterleavedFile(file));
}
}
}
private IEnumerable<FileSystemMetadata> GetFiles(string path, string extension)
{
return _fileSystem.GetFiles(path, new[] { extension }, false, false);
}
private IEnumerable<string> GetFilePaths(string path, string extension)
{
return _fileSystem.GetFilePaths(path, new[] { extension }, false, false);
}
public void Scan()
{
foreach (var streamClipFile in StreamClipFiles.Values)
{
try
{
streamClipFile.Scan();
}
catch (Exception ex)
{
if (StreamClipFileScanError != null)
{
if (StreamClipFileScanError(streamClipFile, ex))
{
continue;
}
else
{
break;
}
}
else throw;
}
}
foreach (var streamFile in StreamFiles.Values)
{
string ssifName = Path.GetFileNameWithoutExtension(streamFile.Name) + ".SSIF";
if (InterleavedFiles.ContainsKey(ssifName))
{
streamFile.InterleavedFile = InterleavedFiles[ssifName];
}
}
TSStreamFile[] streamFiles = new TSStreamFile[StreamFiles.Count];
StreamFiles.Values.CopyTo(streamFiles, 0);
Array.Sort(streamFiles, CompareStreamFiles);
foreach (var playlistFile in PlaylistFiles.Values)
{
try
{
playlistFile.Scan(StreamFiles, StreamClipFiles);
}
catch (Exception ex)
{
if (PlaylistFileScanError != null)
{
if (PlaylistFileScanError(playlistFile, ex))
{
continue;
}
else
{
break;
}
}
else throw;
}
}
foreach (var streamFile in streamFiles)
{
try
{
var playlists = new List<TSPlaylistFile>();
foreach (var playlist in PlaylistFiles.Values)
{
foreach (var streamClip in playlist.StreamClips)
{
if (streamClip.Name == streamFile.Name)
{
playlists.Add(playlist);
break;
}
}
}
streamFile.Scan(playlists, false);
}
catch (Exception ex)
{
if (StreamFileScanError != null)
{
if (StreamFileScanError(streamFile, ex))
{
continue;
}
else
{
break;
}
}
else throw;
}
}
foreach (var playlistFile in PlaylistFiles.Values)
{
playlistFile.Initialize();
if (!Is50Hz)
{
foreach (var videoStream in playlistFile.VideoStreams)
{
if (videoStream.FrameRate == TSFrameRate.FRAMERATE_25 ||
videoStream.FrameRate == TSFrameRate.FRAMERATE_50)
{
Is50Hz = true;
}
}
}
}
}
private FileSystemMetadata GetDirectoryBDMV(
string path)
{
if (string.IsNullOrEmpty(path))
{
throw new ArgumentNullException(nameof(path));
}
FileSystemMetadata dir = _fileSystem.GetDirectoryInfo(path);
while (dir != null)
{
if (string.Equals(dir.Name, "BDMV", StringComparison.OrdinalIgnoreCase))
{
return dir;
}
var parentFolder = Path.GetDirectoryName(dir.FullName);
if (string.IsNullOrEmpty(parentFolder))
{
dir = null;
}
else
{
dir = _fileSystem.GetDirectoryInfo(parentFolder);
}
}
return GetDirectory("BDMV", _fileSystem.GetDirectoryInfo(path), 0);
}
private FileSystemMetadata GetDirectory(
string name,
FileSystemMetadata dir,
int searchDepth)
{
if (dir != null)
{
FileSystemMetadata[] children = _fileSystem.GetDirectories(dir.FullName).ToArray();
foreach (var child in children)
{
if (string.Equals(child.Name, name, StringComparison.OrdinalIgnoreCase))
{
return child;
}
}
if (searchDepth > 0)
{
foreach (var child in children)
{
GetDirectory(
name, child, searchDepth - 1);
}
}
}
return null;
}
private long GetDirectorySize(FileSystemMetadata directoryInfo)
{
long size = 0;
//if (!ExcludeDirs.Contains(directoryInfo.Name.ToUpper())) // TODO: Keep?
{
FileSystemMetadata[] pathFiles = _fileSystem.GetFiles(directoryInfo.FullName).ToArray();
foreach (var pathFile in pathFiles)
{
if (pathFile.Extension.ToUpper() == ".SSIF")
{
continue;
}
size += pathFile.Length;
}
FileSystemMetadata[] pathChildren = _fileSystem.GetDirectories(directoryInfo.FullName).ToArray();
foreach (var pathChild in pathChildren)
{
size += GetDirectorySize(pathChild);
}
}
return size;
}
private string GetVolumeLabel(FileSystemMetadata dir)
{
return dir.Name;
}
public int CompareStreamFiles(
TSStreamFile x,
TSStreamFile y)
{
// TODO: Use interleaved file sizes
if ((x == null || x.FileInfo == null) && (y == null || y.FileInfo == null))
{
return 0;
}
else if ((x == null || x.FileInfo == null) && (y != null && y.FileInfo != null))
{
return 1;
}
else if ((x != null && x.FileInfo != null) && (y == null || y.FileInfo == null))
{
return -1;
}
else
{
if (x.FileInfo.Length > y.FileInfo.Length)
{
return 1;
}
else if (y.FileInfo.Length > x.FileInfo.Length)
{
return -1;
}
else
{
return 0;
}
}
}
}
}
-493
View File
@@ -1,493 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
namespace BDInfo
{
public abstract class LanguageCodes
{
public static string GetName(string code)
{
switch (code)
{
case "abk": return "Abkhazian";
case "ace": return "Achinese";
case "ach": return "Acoli";
case "ada": return "Adangme";
case "aar": return "Afar";
case "afh": return "Afrihili";
case "afr": return "Afrikaans";
case "afa": return "Afro-Asiatic (Other)";
case "aka": return "Akan";
case "akk": return "Akkadian";
case "alb": return "Albanian";
case "sqi": return "Albanian";
case "ale": return "Aleut";
case "alg": return "Algonquian languages";
case "tut": return "Altaic (Other)";
case "amh": return "Amharic";
case "apa": return "Apache languages";
case "ara": return "Arabic";
case "arc": return "Aramaic";
case "arp": return "Arapaho";
case "arn": return "Araucanian";
case "arw": return "Arawak";
case "arm": return "Armenian";
case "hye": return "Armenian";
case "art": return "Artificial (Other)";
case "asm": return "Assamese";
case "ath": return "Athapascan languages";
case "aus": return "Australian languages";
case "map": return "Austronesian (Other)";
case "ava": return "Avaric";
case "ave": return "Avestan";
case "awa": return "Awadhi";
case "aym": return "Aymara";
case "aze": return "Azerbaijani";
case "ban": return "Balinese";
case "bat": return "Baltic (Other)";
case "bal": return "Baluchi";
case "bam": return "Bambara";
case "bai": return "Bamileke languages";
case "bad": return "Banda";
case "bnt": return "Bantu (Other)";
case "bas": return "Basa";
case "bak": return "Bashkir";
case "baq": return "Basque";
case "eus": return "Basque";
case "btk": return "Batak (Indonesia)";
case "bej": return "Beja";
case "bel": return "Belarusian";
case "bem": return "Bemba";
case "ben": return "Bengali";
case "ber": return "Berber (Other)";
case "bho": return "Bhojpuri";
case "bih": return "Bihari";
case "bik": return "Bikol";
case "bin": return "Bini";
case "bis": return "Bislama";
case "bos": return "Bosnian";
case "bra": return "Braj";
case "bre": return "Breton";
case "bug": return "Buginese";
case "bul": return "Bulgarian";
case "bua": return "Buriat";
case "bur": return "Burmese";
case "mya": return "Burmese";
case "cad": return "Caddo";
case "car": return "Carib";
case "cat": return "Catalan";
case "cau": return "Caucasian (Other)";
case "ceb": return "Cebuano";
case "cel": return "Celtic (Other)";
case "cai": return "Central American Indian (Other)";
case "chg": return "Chagatai";
case "cmc": return "Chamic languages";
case "cha": return "Chamorro";
case "che": return "Chechen";
case "chr": return "Cherokee";
case "chy": return "Cheyenne";
case "chb": return "Chibcha";
case "chi": return "Chinese";
case "zho": return "Chinese";
case "chn": return "Chinook jargon";
case "chp": return "Chipewyan";
case "cho": return "Choctaw";
case "chu": return "Church Slavic";
case "chk": return "Chuukese";
case "chv": return "Chuvash";
case "cop": return "Coptic";
case "cor": return "Cornish";
case "cos": return "Corsican";
case "cre": return "Cree";
case "mus": return "Creek";
case "crp": return "Creoles and pidgins (Other)";
case "cpe": return "Creoles and pidgins,";
case "cpf": return "Creoles and pidgins,";
case "cpp": return "Creoles and pidgins,";
case "scr": return "Croatian";
case "hrv": return "Croatian";
case "cus": return "Cushitic (Other)";
case "cze": return "Czech";
case "ces": return "Czech";
case "dak": return "Dakota";
case "dan": return "Danish";
case "day": return "Dayak";
case "del": return "Delaware";
case "din": return "Dinka";
case "div": return "Divehi";
case "doi": return "Dogri";
case "dgr": return "Dogrib";
case "dra": return "Dravidian (Other)";
case "dua": return "Duala";
case "dut": return "Dutch";
case "nld": return "Dutch";
case "dum": return "Dutch, Middle (ca. 1050-1350)";
case "dyu": return "Dyula";
case "dzo": return "Dzongkha";
case "efi": return "Efik";
case "egy": return "Egyptian (Ancient)";
case "eka": return "Ekajuk";
case "elx": return "Elamite";
case "eng": return "English";
case "enm": return "English, Middle (1100-1500)";
case "ang": return "English, Old (ca.450-1100)";
case "epo": return "Esperanto";
case "est": return "Estonian";
case "ewe": return "Ewe";
case "ewo": return "Ewondo";
case "fan": return "Fang";
case "fat": return "Fanti";
case "fao": return "Faroese";
case "fij": return "Fijian";
case "fin": return "Finnish";
case "fiu": return "Finno-Ugrian (Other)";
case "fon": return "Fon";
case "fre": return "French";
case "fra": return "French";
case "frm": return "French, Middle (ca.1400-1600)";
case "fro": return "French, Old (842-ca.1400)";
case "fry": return "Frisian";
case "fur": return "Friulian";
case "ful": return "Fulah";
case "gaa": return "Ga";
case "glg": return "Gallegan";
case "lug": return "Ganda";
case "gay": return "Gayo";
case "gba": return "Gbaya";
case "gez": return "Geez";
case "geo": return "Georgian";
case "kat": return "Georgian";
case "ger": return "German";
case "deu": return "German";
case "nds": return "Saxon";
case "gmh": return "German, Middle High (ca.1050-1500)";
case "goh": return "German, Old High (ca.750-1050)";
case "gem": return "Germanic (Other)";
case "gil": return "Gilbertese";
case "gon": return "Gondi";
case "gor": return "Gorontalo";
case "got": return "Gothic";
case "grb": return "Grebo";
case "grc": return "Greek, Ancient (to 1453)";
case "gre": return "Greek";
case "ell": return "Greek";
case "grn": return "Guarani";
case "guj": return "Gujarati";
case "gwi": return "Gwich´in";
case "hai": return "Haida";
case "hau": return "Hausa";
case "haw": return "Hawaiian";
case "heb": return "Hebrew";
case "her": return "Herero";
case "hil": return "Hiligaynon";
case "him": return "Himachali";
case "hin": return "Hindi";
case "hmo": return "Hiri Motu";
case "hit": return "Hittite";
case "hmn": return "Hmong";
case "hun": return "Hungarian";
case "hup": return "Hupa";
case "iba": return "Iban";
case "ice": return "Icelandic";
case "isl": return "Icelandic";
case "ibo": return "Igbo";
case "ijo": return "Ijo";
case "ilo": return "Iloko";
case "inc": return "Indic (Other)";
case "ine": return "Indo-European (Other)";
case "ind": return "Indonesian";
case "ina": return "Interlingua (International";
case "ile": return "Interlingue";
case "iku": return "Inuktitut";
case "ipk": return "Inupiaq";
case "ira": return "Iranian (Other)";
case "gle": return "Irish";
case "mga": return "Irish, Middle (900-1200)";
case "sga": return "Irish, Old (to 900)";
case "iro": return "Iroquoian languages";
case "ita": return "Italian";
case "jpn": return "Japanese";
case "jav": return "Javanese";
case "jrb": return "Judeo-Arabic";
case "jpr": return "Judeo-Persian";
case "kab": return "Kabyle";
case "kac": return "Kachin";
case "kal": return "Kalaallisut";
case "kam": return "Kamba";
case "kan": return "Kannada";
case "kau": return "Kanuri";
case "kaa": return "Kara-Kalpak";
case "kar": return "Karen";
case "kas": return "Kashmiri";
case "kaw": return "Kawi";
case "kaz": return "Kazakh";
case "kha": return "Khasi";
case "khm": return "Khmer";
case "khi": return "Khoisan (Other)";
case "kho": return "Khotanese";
case "kik": return "Kikuyu";
case "kmb": return "Kimbundu";
case "kin": return "Kinyarwanda";
case "kir": return "Kirghiz";
case "kom": return "Komi";
case "kon": return "Kongo";
case "kok": return "Konkani";
case "kor": return "Korean";
case "kos": return "Kosraean";
case "kpe": return "Kpelle";
case "kro": return "Kru";
case "kua": return "Kuanyama";
case "kum": return "Kumyk";
case "kur": return "Kurdish";
case "kru": return "Kurukh";
case "kut": return "Kutenai";
case "lad": return "Ladino";
case "lah": return "Lahnda";
case "lam": return "Lamba";
case "lao": return "Lao";
case "lat": return "Latin";
case "lav": return "Latvian";
case "ltz": return "Letzeburgesch";
case "lez": return "Lezghian";
case "lin": return "Lingala";
case "lit": return "Lithuanian";
case "loz": return "Lozi";
case "lub": return "Luba-Katanga";
case "lua": return "Luba-Lulua";
case "lui": return "Luiseno";
case "lun": return "Lunda";
case "luo": return "Luo (Kenya and Tanzania)";
case "lus": return "Lushai";
case "mac": return "Macedonian";
case "mkd": return "Macedonian";
case "mad": return "Madurese";
case "mag": return "Magahi";
case "mai": return "Maithili";
case "mak": return "Makasar";
case "mlg": return "Malagasy";
case "may": return "Malay";
case "msa": return "Malay";
case "mal": return "Malayalam";
case "mlt": return "Maltese";
case "mnc": return "Manchu";
case "mdr": return "Mandar";
case "man": return "Mandingo";
case "mni": return "Manipuri";
case "mno": return "Manobo languages";
case "glv": return "Manx";
case "mao": return "Maori";
case "mri": return "Maori";
case "mar": return "Marathi";
case "chm": return "Mari";
case "mah": return "Marshall";
case "mwr": return "Marwari";
case "mas": return "Masai";
case "myn": return "Mayan languages";
case "men": return "Mende";
case "mic": return "Micmac";
case "min": return "Minangkabau";
case "mis": return "Miscellaneous languages";
case "moh": return "Mohawk";
case "mol": return "Moldavian";
case "mkh": return "Mon-Khmer (Other)";
case "lol": return "Mongo";
case "mon": return "Mongolian";
case "mos": return "Mossi";
case "mul": return "Multiple languages";
case "mun": return "Munda languages";
case "nah": return "Nahuatl";
case "nau": return "Nauru";
case "nav": return "Navajo";
case "nde": return "Ndebele, North";
case "nbl": return "Ndebele, South";
case "ndo": return "Ndonga";
case "nep": return "Nepali";
case "new": return "Newari";
case "nia": return "Nias";
case "nic": return "Niger-Kordofanian (Other)";
case "ssa": return "Nilo-Saharan (Other)";
case "niu": return "Niuean";
case "non": return "Norse, Old";
case "nai": return "North American Indian (Other)";
case "sme": return "Northern Sami";
case "nor": return "Norwegian";
case "nob": return "Norwegian Bokmål";
case "nno": return "Norwegian Nynorsk";
case "nub": return "Nubian languages";
case "nym": return "Nyamwezi";
case "nya": return "Nyanja";
case "nyn": return "Nyankole";
case "nyo": return "Nyoro";
case "nzi": return "Nzima";
case "oci": return "Occitan";
case "oji": return "Ojibwa";
case "ori": return "Oriya";
case "orm": return "Oromo";
case "osa": return "Osage";
case "oss": return "Ossetian";
case "oto": return "Otomian languages";
case "pal": return "Pahlavi";
case "pau": return "Palauan";
case "pli": return "Pali";
case "pam": return "Pampanga";
case "pag": return "Pangasinan";
case "pan": return "Panjabi";
case "pap": return "Papiamento";
case "paa": return "Papuan (Other)";
case "per": return "Persian";
case "fas": return "Persian";
case "peo": return "Persian, Old (ca.600-400 B.C.)";
case "phi": return "Philippine (Other)";
case "phn": return "Phoenician";
case "pon": return "Pohnpeian";
case "pol": return "Polish";
case "por": return "Portuguese";
case "pra": return "Prakrit languages";
case "pro": return "Provençal";
case "pus": return "Pushto";
case "que": return "Quechua";
case "roh": return "Raeto-Romance";
case "raj": return "Rajasthani";
case "rap": return "Rapanui";
case "rar": return "Rarotongan";
case "roa": return "Romance (Other)";
case "rum": return "Romanian";
case "ron": return "Romanian";
case "rom": return "Romany";
case "run": return "Rundi";
case "rus": return "Russian";
case "sal": return "Salishan languages";
case "sam": return "Samaritan Aramaic";
case "smi": return "Sami languages (Other)";
case "smo": return "Samoan";
case "sad": return "Sandawe";
case "sag": return "Sango";
case "san": return "Sanskrit";
case "sat": return "Santali";
case "srd": return "Sardinian";
case "sas": return "Sasak";
case "sco": return "Scots";
case "gla": return "Gaelic";
case "sel": return "Selkup";
case "sem": return "Semitic (Other)";
case "scc": return "Serbian";
case "srp": return "Serbian";
case "srr": return "Serer";
case "shn": return "Shan";
case "sna": return "Shona";
case "sid": return "Sidamo";
case "sgn": return "Sign languages";
case "bla": return "Siksika";
case "snd": return "Sindhi";
case "sin": return "Sinhalese";
case "sit": return "Sino-Tibetan (Other)";
case "sio": return "Siouan languages";
case "den": return "Slave (Athapascan)";
case "sla": return "Slavic (Other)";
case "slo": return "Slovak";
case "slk": return "Slovak";
case "slv": return "Slovenian";
case "sog": return "Sogdian";
case "som": return "Somali";
case "son": return "Songhai";
case "snk": return "Soninke";
case "wen": return "Sorbian languages";
case "nso": return "Sotho, Northern";
case "sot": return "Sotho, Southern";
case "sai": return "South American Indian (Other)";
case "spa": return "Spanish";
case "suk": return "Sukuma";
case "sux": return "Sumerian";
case "sun": return "Sundanese";
case "sus": return "Susu";
case "swa": return "Swahili";
case "ssw": return "Swati";
case "swe": return "Swedish";
case "syr": return "Syriac";
case "tgl": return "Tagalog";
case "tah": return "Tahitian";
case "tai": return "Tai (Other)";
case "tgk": return "Tajik";
case "tmh": return "Tamashek";
case "tam": return "Tamil";
case "tat": return "Tatar";
case "tel": return "Telugu";
case "ter": return "Tereno";
case "tet": return "Tetum";
case "tha": return "Thai";
case "tib": return "Tibetan";
case "bod": return "Tibetan";
case "tig": return "Tigre";
case "tir": return "Tigrinya";
case "tem": return "Timne";
case "tiv": return "Tiv";
case "tli": return "Tlingit";
case "tpi": return "Tok Pisin";
case "tkl": return "Tokelau";
case "tog": return "Tonga (Nyasa)";
case "ton": return "Tonga (Tonga Islands)";
case "tsi": return "Tsimshian";
case "tso": return "Tsonga";
case "tsn": return "Tswana";
case "tum": return "Tumbuka";
case "tur": return "Turkish";
case "ota": return "Turkish, Ottoman (1500-1928)";
case "tuk": return "Turkmen";
case "tvl": return "Tuvalu";
case "tyv": return "Tuvinian";
case "twi": return "Twi";
case "uga": return "Ugaritic";
case "uig": return "Uighur";
case "ukr": return "Ukrainian";
case "umb": return "Umbundu";
case "und": return "Undetermined";
case "urd": return "Urdu";
case "uzb": return "Uzbek";
case "vai": return "Vai";
case "ven": return "Venda";
case "vie": return "Vietnamese";
case "vol": return "Volapük";
case "vot": return "Votic";
case "wak": return "Wakashan languages";
case "wal": return "Walamo";
case "war": return "Waray";
case "was": return "Washo";
case "wel": return "Welsh";
case "cym": return "Welsh";
case "wol": return "Wolof";
case "xho": return "Xhosa";
case "sah": return "Yakut";
case "yao": return "Yao";
case "yap": return "Yapese";
case "yid": return "Yiddish";
case "yor": return "Yoruba";
case "ypk": return "Yupik languages";
case "znd": return "Zande";
case "zap": return "Zapotec";
case "zen": return "Zenaga";
case "zha": return "Zhuang";
case "zul": return "Zulu";
case "zun": return "Zuni";
default: return code;
}
}
}
}
-21
View File
@@ -1,21 +0,0 @@
using System.Reflection;
using System.Resources;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("BDInfo")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Jellyfin Project")]
[assembly: AssemblyProduct("Jellyfin Server")]
[assembly: AssemblyCopyright("Copyright © 2016 CinemaSquid. Copyright © 2019 Jellyfin Contributors. Code released under the GNU General Public License")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: NeutralResourcesLanguage("en")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
-5
View File
@@ -1,5 +0,0 @@
The source is taken from the BDRom folder of this project:
http://www.cinemasquid.com/blu-ray/tools/bdinfo
BDInfoSettings was taken from the FormSettings class, and changed so that the settings all return defaults.
-309
View File
@@ -1,309 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
#undef DEBUG
using System.IO;
namespace BDInfo
{
public abstract class TSCodecAC3
{
private static byte[] eac3_blocks = new byte[] { 1, 2, 3, 6 };
public static void Scan(
TSAudioStream stream,
TSStreamBuffer buffer,
ref string tag)
{
if (stream.IsInitialized) return;
byte[] sync = buffer.ReadBytes(2);
if (sync == null ||
sync[0] != 0x0B ||
sync[1] != 0x77)
{
return;
}
int sr_code = 0;
int frame_size = 0;
int frame_size_code = 0;
int channel_mode = 0;
int lfe_on = 0;
int dial_norm = 0;
int num_blocks = 0;
byte[] hdr = buffer.ReadBytes(4);
int bsid = (hdr[3] & 0xF8) >> 3;
buffer.Seek(-4, SeekOrigin.Current);
if (bsid <= 10)
{
byte[] crc = buffer.ReadBytes(2);
sr_code = buffer.ReadBits(2);
frame_size_code = buffer.ReadBits(6);
bsid = buffer.ReadBits(5);
int bsmod = buffer.ReadBits(3);
channel_mode = buffer.ReadBits(3);
int cmixlev = 0;
if (((channel_mode & 0x1) > 0) && (channel_mode != 0x1))
{
cmixlev = buffer.ReadBits(2);
}
int surmixlev = 0;
if ((channel_mode & 0x4) > 0)
{
surmixlev = buffer.ReadBits(2);
}
int dsurmod = 0;
if (channel_mode == 0x2)
{
dsurmod = buffer.ReadBits(2);
if (dsurmod == 0x2)
{
stream.AudioMode = TSAudioMode.Surround;
}
}
lfe_on = buffer.ReadBits(1);
dial_norm = buffer.ReadBits(5);
int compr = 0;
if (1 == buffer.ReadBits(1))
{
compr = buffer.ReadBits(8);
}
int langcod = 0;
if (1 == buffer.ReadBits(1))
{
langcod = buffer.ReadBits(8);
}
int mixlevel = 0;
int roomtyp = 0;
if (1 == buffer.ReadBits(1))
{
mixlevel = buffer.ReadBits(5);
roomtyp = buffer.ReadBits(2);
}
if (channel_mode == 0)
{
int dialnorm2 = buffer.ReadBits(5);
int compr2 = 0;
if (1 == buffer.ReadBits(1))
{
compr2 = buffer.ReadBits(8);
}
int langcod2 = 0;
if (1 == buffer.ReadBits(1))
{
langcod2 = buffer.ReadBits(8);
}
int mixlevel2 = 0;
int roomtyp2 = 0;
if (1 == buffer.ReadBits(1))
{
mixlevel2 = buffer.ReadBits(5);
roomtyp2 = buffer.ReadBits(2);
}
}
int copyrightb = buffer.ReadBits(1);
int origbs = buffer.ReadBits(1);
if (bsid == 6)
{
if (1 == buffer.ReadBits(1))
{
int dmixmod = buffer.ReadBits(2);
int ltrtcmixlev = buffer.ReadBits(3);
int ltrtsurmixlev = buffer.ReadBits(3);
int lorocmixlev = buffer.ReadBits(3);
int lorosurmixlev = buffer.ReadBits(3);
}
if (1 == buffer.ReadBits(1))
{
int dsurexmod = buffer.ReadBits(2);
int dheadphonmod = buffer.ReadBits(2);
if (dheadphonmod == 0x2)
{
// TODO
}
int adconvtyp = buffer.ReadBits(1);
int xbsi2 = buffer.ReadBits(8);
int encinfo = buffer.ReadBits(1);
if (dsurexmod == 2)
{
stream.AudioMode = TSAudioMode.Extended;
}
}
}
}
else
{
int frame_type = buffer.ReadBits(2);
int substreamid = buffer.ReadBits(3);
frame_size = (buffer.ReadBits(11) + 1) << 1;
sr_code = buffer.ReadBits(2);
if (sr_code == 3)
{
sr_code = buffer.ReadBits(2);
}
else
{
num_blocks = buffer.ReadBits(2);
}
channel_mode = buffer.ReadBits(3);
lfe_on = buffer.ReadBits(1);
}
switch (channel_mode)
{
case 0: // 1+1
stream.ChannelCount = 2;
if (stream.AudioMode == TSAudioMode.Unknown)
{
stream.AudioMode = TSAudioMode.DualMono;
}
break;
case 1: // 1/0
stream.ChannelCount = 1;
break;
case 2: // 2/0
stream.ChannelCount = 2;
if (stream.AudioMode == TSAudioMode.Unknown)
{
stream.AudioMode = TSAudioMode.Stereo;
}
break;
case 3: // 3/0
stream.ChannelCount = 3;
break;
case 4: // 2/1
stream.ChannelCount = 3;
break;
case 5: // 3/1
stream.ChannelCount = 4;
break;
case 6: // 2/2
stream.ChannelCount = 4;
break;
case 7: // 3/2
stream.ChannelCount = 5;
break;
default:
stream.ChannelCount = 0;
break;
}
switch (sr_code)
{
case 0:
stream.SampleRate = 48000;
break;
case 1:
stream.SampleRate = 44100;
break;
case 2:
stream.SampleRate = 32000;
break;
default:
stream.SampleRate = 0;
break;
}
if (bsid <= 10)
{
switch (frame_size_code >> 1)
{
case 18:
stream.BitRate = 640000;
break;
case 17:
stream.BitRate = 576000;
break;
case 16:
stream.BitRate = 512000;
break;
case 15:
stream.BitRate = 448000;
break;
case 14:
stream.BitRate = 384000;
break;
case 13:
stream.BitRate = 320000;
break;
case 12:
stream.BitRate = 256000;
break;
case 11:
stream.BitRate = 224000;
break;
case 10:
stream.BitRate = 192000;
break;
case 9:
stream.BitRate = 160000;
break;
case 8:
stream.BitRate = 128000;
break;
case 7:
stream.BitRate = 112000;
break;
case 6:
stream.BitRate = 96000;
break;
case 5:
stream.BitRate = 80000;
break;
case 4:
stream.BitRate = 64000;
break;
case 3:
stream.BitRate = 56000;
break;
case 2:
stream.BitRate = 48000;
break;
case 1:
stream.BitRate = 40000;
break;
case 0:
stream.BitRate = 32000;
break;
default:
stream.BitRate = 0;
break;
}
}
else
{
stream.BitRate = (long)
(4.0 * frame_size * stream.SampleRate / (num_blocks * 256));
}
stream.LFE = lfe_on;
if (stream.StreamType != TSStreamType.AC3_PLUS_AUDIO &&
stream.StreamType != TSStreamType.AC3_PLUS_SECONDARY_AUDIO)
{
stream.DialNorm = dial_norm - 31;
}
stream.IsVBR = false;
stream.IsInitialized = true;
}
}
}
-148
View File
@@ -1,148 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
namespace BDInfo
{
public abstract class TSCodecAVC
{
public static void Scan(
TSVideoStream stream,
TSStreamBuffer buffer,
ref string tag)
{
uint parse = 0;
byte accessUnitDelimiterParse = 0;
byte sequenceParameterSetParse = 0;
string profile = null;
string level = null;
byte constraintSet0Flag = 0;
byte constraintSet1Flag = 0;
byte constraintSet2Flag = 0;
byte constraintSet3Flag = 0;
for (int i = 0; i < buffer.Length; i++)
{
parse = (parse << 8) + buffer.ReadByte();
if (parse == 0x00000109)
{
accessUnitDelimiterParse = 1;
}
else if (accessUnitDelimiterParse > 0)
{
--accessUnitDelimiterParse;
if (accessUnitDelimiterParse == 0)
{
switch ((parse & 0xFF) >> 5)
{
case 0: // I
case 3: // SI
case 5: // I, SI
tag = "I";
break;
case 1: // I, P
case 4: // SI, SP
case 6: // I, SI, P, SP
tag = "P";
break;
case 2: // I, P, B
case 7: // I, SI, P, SP, B
tag = "B";
break;
}
if (stream.IsInitialized) return;
}
}
else if (parse == 0x00000127 || parse == 0x00000167)
{
sequenceParameterSetParse = 3;
}
else if (sequenceParameterSetParse > 0)
{
--sequenceParameterSetParse;
switch (sequenceParameterSetParse)
{
case 2:
switch (parse & 0xFF)
{
case 66:
profile = "Baseline Profile";
break;
case 77:
profile = "Main Profile";
break;
case 88:
profile = "Extended Profile";
break;
case 100:
profile = "High Profile";
break;
case 110:
profile = "High 10 Profile";
break;
case 122:
profile = "High 4:2:2 Profile";
break;
case 144:
profile = "High 4:4:4 Profile";
break;
default:
profile = "Unknown Profile";
break;
}
break;
case 1:
constraintSet0Flag = (byte)
((parse & 0x80) >> 7);
constraintSet1Flag = (byte)
((parse & 0x40) >> 6);
constraintSet2Flag = (byte)
((parse & 0x20) >> 5);
constraintSet3Flag = (byte)
((parse & 0x10) >> 4);
break;
case 0:
byte b = (byte)(parse & 0xFF);
if (b == 11 && constraintSet3Flag == 1)
{
level = "1b";
}
else
{
level = string.Format(
"{0:D}.{1:D}",
b / 10, (b - ((b / 10) * 10)));
}
stream.EncodingProfile = string.Format(
"{0} {1}", profile, level);
stream.IsVBR = true;
stream.IsInitialized = true;
break;
}
}
}
return;
}
}
}
-159
View File
@@ -1,159 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
namespace BDInfo
{
public abstract class TSCodecDTS
{
private static int[] dca_sample_rates =
{
0, 8000, 16000, 32000, 0, 0, 11025, 22050, 44100, 0, 0,
12000, 24000, 48000, 96000, 192000
};
private static int[] dca_bit_rates =
{
32000, 56000, 64000, 96000, 112000, 128000,
192000, 224000, 256000, 320000, 384000,
448000, 512000, 576000, 640000, 768000,
896000, 1024000, 1152000, 1280000, 1344000,
1408000, 1411200, 1472000, 1509000, 1920000,
2048000, 3072000, 3840000, 1/*open*/, 2/*variable*/, 3/*lossless*/
};
private static int[] dca_channels =
{
1, 2, 2, 2, 2, 3, 3, 4, 4, 5, 6, 6, 6, 7, 8, 8
};
private static int[] dca_bits_per_sample =
{
16, 16, 20, 20, 0, 24, 24
};
public static void Scan(
TSAudioStream stream,
TSStreamBuffer buffer,
long bitrate,
ref string tag)
{
if (stream.IsInitialized) return;
bool syncFound = false;
uint sync = 0;
for (int i = 0; i < buffer.Length; i++)
{
sync = (sync << 8) + buffer.ReadByte();
if (sync == 0x7FFE8001)
{
syncFound = true;
break;
}
}
if (!syncFound) return;
int frame_type = buffer.ReadBits(1);
int samples_deficit = buffer.ReadBits(5);
int crc_present = buffer.ReadBits(1);
int sample_blocks = buffer.ReadBits(7);
int frame_size = buffer.ReadBits(14);
if (frame_size < 95)
{
return;
}
int amode = buffer.ReadBits(6);
int sample_rate = buffer.ReadBits(4);
if (sample_rate < 0 || sample_rate >= dca_sample_rates.Length)
{
return;
}
int bit_rate = buffer.ReadBits(5);
if (bit_rate < 0 || bit_rate >= dca_bit_rates.Length)
{
return;
}
int downmix = buffer.ReadBits(1);
int dynrange = buffer.ReadBits(1);
int timestamp = buffer.ReadBits(1);
int aux_data = buffer.ReadBits(1);
int hdcd = buffer.ReadBits(1);
int ext_descr = buffer.ReadBits(3);
int ext_coding = buffer.ReadBits(1);
int aspf = buffer.ReadBits(1);
int lfe = buffer.ReadBits(2);
int predictor_history = buffer.ReadBits(1);
if (crc_present == 1)
{
int crc = buffer.ReadBits(16);
}
int multirate_inter = buffer.ReadBits(1);
int version = buffer.ReadBits(4);
int copy_history = buffer.ReadBits(2);
int source_pcm_res = buffer.ReadBits(3);
int front_sum = buffer.ReadBits(1);
int surround_sum = buffer.ReadBits(1);
int dialog_norm = buffer.ReadBits(4);
if (source_pcm_res < 0 || source_pcm_res >= dca_bits_per_sample.Length)
{
return;
}
int subframes = buffer.ReadBits(4);
int total_channels = buffer.ReadBits(3) + 1 + ext_coding;
stream.SampleRate = dca_sample_rates[sample_rate];
stream.ChannelCount = total_channels;
stream.LFE = (lfe > 0 ? 1 : 0);
stream.BitDepth = dca_bits_per_sample[source_pcm_res];
stream.DialNorm = -dialog_norm;
if ((source_pcm_res & 0x1) == 0x1)
{
stream.AudioMode = TSAudioMode.Extended;
}
stream.BitRate = (uint)dca_bit_rates[bit_rate];
switch (stream.BitRate)
{
case 1:
if (bitrate > 0)
{
stream.BitRate = bitrate;
stream.IsVBR = false;
stream.IsInitialized = true;
}
else
{
stream.BitRate = 0;
}
break;
case 2:
case 3:
stream.IsVBR = true;
stream.IsInitialized = true;
break;
default:
stream.IsVBR = false;
stream.IsInitialized = true;
break;
}
}
}
}
-246
View File
@@ -1,246 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
namespace BDInfo
{
public abstract class TSCodecDTSHD
{
private static int[] SampleRates = new int[]
{ 0x1F40, 0x3E80, 0x7D00, 0x0FA00, 0x1F400, 0x5622, 0x0AC44, 0x15888, 0x2B110, 0x56220, 0x2EE0, 0x5DC0, 0x0BB80, 0x17700, 0x2EE00, 0x5DC00 };
public static void Scan(
TSAudioStream stream,
TSStreamBuffer buffer,
long bitrate,
ref string tag)
{
if (stream.IsInitialized &&
(stream.StreamType == TSStreamType.DTS_HD_SECONDARY_AUDIO ||
(stream.CoreStream != null &&
stream.CoreStream.IsInitialized))) return;
bool syncFound = false;
uint sync = 0;
for (int i = 0; i < buffer.Length; i++)
{
sync = (sync << 8) + buffer.ReadByte();
if (sync == 0x64582025)
{
syncFound = true;
break;
}
}
if (!syncFound)
{
tag = "CORE";
if (stream.CoreStream == null)
{
stream.CoreStream = new TSAudioStream();
stream.CoreStream.StreamType = TSStreamType.DTS_AUDIO;
}
if (!stream.CoreStream.IsInitialized)
{
buffer.BeginRead();
TSCodecDTS.Scan(stream.CoreStream, buffer, bitrate, ref tag);
}
return;
}
tag = "HD";
int temp1 = buffer.ReadBits(8);
int nuSubStreamIndex = buffer.ReadBits(2);
int nuExtSSHeaderSize = 0;
int nuExtSSFSize = 0;
int bBlownUpHeader = buffer.ReadBits(1);
if (1 == bBlownUpHeader)
{
nuExtSSHeaderSize = buffer.ReadBits(12) + 1;
nuExtSSFSize = buffer.ReadBits(20) + 1;
}
else
{
nuExtSSHeaderSize = buffer.ReadBits(8) + 1;
nuExtSSFSize = buffer.ReadBits(16) + 1;
}
int nuNumAudioPresent = 1;
int nuNumAssets = 1;
int bStaticFieldsPresent = buffer.ReadBits(1);
if (1 == bStaticFieldsPresent)
{
int nuRefClockCode = buffer.ReadBits(2);
int nuExSSFrameDurationCode = buffer.ReadBits(3) + 1;
long nuTimeStamp = 0;
if (1 == buffer.ReadBits(1))
{
nuTimeStamp = (buffer.ReadBits(18) << 18) + buffer.ReadBits(18);
}
nuNumAudioPresent = buffer.ReadBits(3) + 1;
nuNumAssets = buffer.ReadBits(3) + 1;
int[] nuActiveExSSMask = new int[nuNumAudioPresent];
for (int i = 0; i < nuNumAudioPresent; i++)
{
nuActiveExSSMask[i] = buffer.ReadBits(nuSubStreamIndex + 1); //?
}
for (int i = 0; i < nuNumAudioPresent; i++)
{
for (int j = 0; j < nuSubStreamIndex + 1; j++)
{
if (((j + 1) % 2) == 1)
{
int mask = buffer.ReadBits(8);
}
}
}
if (1 == buffer.ReadBits(1))
{
int nuMixMetadataAdjLevel = buffer.ReadBits(2);
int nuBits4MixOutMask = buffer.ReadBits(2) * 4 + 4;
int nuNumMixOutConfigs = buffer.ReadBits(2) + 1;
int[] nuMixOutChMask = new int[nuNumMixOutConfigs];
for (int i = 0; i < nuNumMixOutConfigs; i++)
{
nuMixOutChMask[i] = buffer.ReadBits(nuBits4MixOutMask);
}
}
}
int[] AssetSizes = new int[nuNumAssets];
for (int i = 0; i < nuNumAssets; i++)
{
if (1 == bBlownUpHeader)
{
AssetSizes[i] = buffer.ReadBits(20) + 1;
}
else
{
AssetSizes[i] = buffer.ReadBits(16) + 1;
}
}
for (int i = 0; i < nuNumAssets; i++)
{
long bufferPosition = buffer.Position;
int nuAssetDescriptorFSIZE = buffer.ReadBits(9) + 1;
int DescriptorDataForAssetIndex = buffer.ReadBits(3);
if (1 == bStaticFieldsPresent)
{
int AssetTypeDescrPresent = buffer.ReadBits(1);
if (1 == AssetTypeDescrPresent)
{
int AssetTypeDescriptor = buffer.ReadBits(4);
}
int LanguageDescrPresent = buffer.ReadBits(1);
if (1 == LanguageDescrPresent)
{
int LanguageDescriptor = buffer.ReadBits(24);
}
int bInfoTextPresent = buffer.ReadBits(1);
if (1 == bInfoTextPresent)
{
int nuInfoTextByteSize = buffer.ReadBits(10) + 1;
int[] InfoText = new int[nuInfoTextByteSize];
for (int j = 0; j < nuInfoTextByteSize; j++)
{
InfoText[j] = buffer.ReadBits(8);
}
}
int nuBitResolution = buffer.ReadBits(5) + 1;
int nuMaxSampleRate = buffer.ReadBits(4);
int nuTotalNumChs = buffer.ReadBits(8) + 1;
int bOne2OneMapChannels2Speakers = buffer.ReadBits(1);
int nuSpkrActivityMask = 0;
if (1 == bOne2OneMapChannels2Speakers)
{
int bEmbeddedStereoFlag = 0;
if (nuTotalNumChs > 2)
{
bEmbeddedStereoFlag = buffer.ReadBits(1);
}
int bEmbeddedSixChFlag = 0;
if (nuTotalNumChs > 6)
{
bEmbeddedSixChFlag = buffer.ReadBits(1);
}
int bSpkrMaskEnabled = buffer.ReadBits(1);
int nuNumBits4SAMask = 0;
if (1 == bSpkrMaskEnabled)
{
nuNumBits4SAMask = buffer.ReadBits(2);
nuNumBits4SAMask = nuNumBits4SAMask * 4 + 4;
nuSpkrActivityMask = buffer.ReadBits(nuNumBits4SAMask);
}
// TODO...
}
stream.SampleRate = SampleRates[nuMaxSampleRate];
stream.BitDepth = nuBitResolution;
stream.LFE = 0;
if ((nuSpkrActivityMask & 0x8) == 0x8)
{
++stream.LFE;
}
if ((nuSpkrActivityMask & 0x1000) == 0x1000)
{
++stream.LFE;
}
stream.ChannelCount = nuTotalNumChs - stream.LFE;
}
if (nuNumAssets > 1)
{
// TODO...
break;
}
}
// TODO
if (stream.CoreStream != null)
{
var coreStream = (TSAudioStream)stream.CoreStream;
if (coreStream.AudioMode == TSAudioMode.Extended &&
stream.ChannelCount == 5)
{
stream.AudioMode = TSAudioMode.Extended;
}
/*
if (coreStream.DialNorm != 0)
{
stream.DialNorm = coreStream.DialNorm;
}
*/
}
if (stream.StreamType == TSStreamType.DTS_HD_MASTER_AUDIO)
{
stream.IsVBR = true;
stream.IsInitialized = true;
}
else if (bitrate > 0)
{
stream.IsVBR = false;
stream.BitRate = bitrate;
if (stream.CoreStream != null)
{
stream.BitRate += stream.CoreStream.BitRate;
stream.IsInitialized = true;
}
stream.IsInitialized = (stream.BitRate > 0 ? true : false);
}
}
}
}
-123
View File
@@ -1,123 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
namespace BDInfo
{
public abstract class TSCodecLPCM
{
public static void Scan(
TSAudioStream stream,
TSStreamBuffer buffer,
ref string tag)
{
if (stream.IsInitialized) return;
byte[] header = buffer.ReadBytes(4);
int flags = (header[2] << 8) + header[3];
switch ((flags & 0xF000) >> 12)
{
case 1: // 1/0/0
stream.ChannelCount = 1;
stream.LFE = 0;
break;
case 3: // 2/0/0
stream.ChannelCount = 2;
stream.LFE = 0;
break;
case 4: // 3/0/0
stream.ChannelCount = 3;
stream.LFE = 0;
break;
case 5: // 2/1/0
stream.ChannelCount = 3;
stream.LFE = 0;
break;
case 6: // 3/1/0
stream.ChannelCount = 4;
stream.LFE = 0;
break;
case 7: // 2/2/0
stream.ChannelCount = 4;
stream.LFE = 0;
break;
case 8: // 3/2/0
stream.ChannelCount = 5;
stream.LFE = 0;
break;
case 9: // 3/2/1
stream.ChannelCount = 5;
stream.LFE = 1;
break;
case 10: // 3/4/0
stream.ChannelCount = 7;
stream.LFE = 0;
break;
case 11: // 3/4/1
stream.ChannelCount = 7;
stream.LFE = 1;
break;
default:
stream.ChannelCount = 0;
stream.LFE = 0;
break;
}
switch ((flags & 0xC0) >> 6)
{
case 1:
stream.BitDepth = 16;
break;
case 2:
stream.BitDepth = 20;
break;
case 3:
stream.BitDepth = 24;
break;
default:
stream.BitDepth = 0;
break;
}
switch ((flags & 0xF00) >> 8)
{
case 1:
stream.SampleRate = 48000;
break;
case 4:
stream.SampleRate = 96000;
break;
case 5:
stream.SampleRate = 192000;
break;
default:
stream.SampleRate = 0;
break;
}
stream.BitRate = (uint)
(stream.SampleRate * stream.BitDepth *
(stream.ChannelCount + stream.LFE));
stream.IsVBR = false;
stream.IsInitialized = true;
}
}
}
-208
View File
@@ -1,208 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
#undef DEBUG
namespace BDInfo
{
public abstract class TSCodecMPEG2
{
public static void Scan(
TSVideoStream stream,
TSStreamBuffer buffer,
ref string tag)
{
int parse = 0;
int pictureParse = 0;
int sequenceHeaderParse = 0;
int extensionParse = 0;
int sequenceExtensionParse = 0;
for (int i = 0; i < buffer.Length; i++)
{
parse = (parse << 8) + buffer.ReadByte();
if (parse == 0x00000100)
{
pictureParse = 2;
}
else if (parse == 0x000001B3)
{
sequenceHeaderParse = 7;
}
else if (sequenceHeaderParse > 0)
{
--sequenceHeaderParse;
switch (sequenceHeaderParse)
{
#if DEBUG
case 6:
break;
case 5:
break;
case 4:
stream.Width =
(int)((parse & 0xFFF000) >> 12);
stream.Height =
(int)(parse & 0xFFF);
break;
case 3:
stream.AspectRatio =
(TSAspectRatio)((parse & 0xF0) >> 4);
switch ((parse & 0xF0) >> 4)
{
case 0: // Forbidden
break;
case 1: // Square
break;
case 2: // 4:3
break;
case 3: // 16:9
break;
case 4: // 2.21:1
break;
default: // Reserved
break;
}
switch (parse & 0xF)
{
case 0: // Forbidden
break;
case 1: // 23.976
stream.FrameRateEnumerator = 24000;
stream.FrameRateDenominator = 1001;
break;
case 2: // 24
stream.FrameRateEnumerator = 24000;
stream.FrameRateDenominator = 1000;
break;
case 3: // 25
stream.FrameRateEnumerator = 25000;
stream.FrameRateDenominator = 1000;
break;
case 4: // 29.97
stream.FrameRateEnumerator = 30000;
stream.FrameRateDenominator = 1001;
break;
case 5: // 30
stream.FrameRateEnumerator = 30000;
stream.FrameRateDenominator = 1000;
break;
case 6: // 50
stream.FrameRateEnumerator = 50000;
stream.FrameRateDenominator = 1000;
break;
case 7: // 59.94
stream.FrameRateEnumerator = 60000;
stream.FrameRateDenominator = 1001;
break;
case 8: // 60
stream.FrameRateEnumerator = 60000;
stream.FrameRateDenominator = 1000;
break;
default: // Reserved
stream.FrameRateEnumerator = 0;
stream.FrameRateDenominator = 0;
break;
}
break;
case 2:
break;
case 1:
break;
#endif
case 0:
#if DEBUG
stream.BitRate =
(((parse & 0xFFFFC0) >> 6) * 200);
#endif
stream.IsVBR = true;
stream.IsInitialized = true;
break;
}
}
else if (pictureParse > 0)
{
--pictureParse;
if (pictureParse == 0)
{
switch ((parse & 0x38) >> 3)
{
case 1:
tag = "I";
break;
case 2:
tag = "P";
break;
case 3:
tag = "B";
break;
default:
break;
}
if (stream.IsInitialized) return;
}
}
else if (parse == 0x000001B5)
{
extensionParse = 1;
}
else if (extensionParse > 0)
{
--extensionParse;
if (extensionParse == 0)
{
if ((parse & 0xF0) == 0x10)
{
sequenceExtensionParse = 1;
}
}
}
else if (sequenceExtensionParse > 0)
{
--sequenceExtensionParse;
#if DEBUG
if (sequenceExtensionParse == 0)
{
uint sequenceExtension =
((parse & 0x8) >> 3);
if (sequenceExtension == 0)
{
stream.IsInterlaced = true;
}
else
{
stream.IsInterlaced = false;
}
}
#endif
}
}
}
}
}
-36
View File
@@ -1,36 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
namespace BDInfo
{
// TODO: Do something more interesting here...
public abstract class TSCodecMVC
{
public static void Scan(
TSVideoStream stream,
TSStreamBuffer buffer,
ref string tag)
{
stream.IsVBR = true;
stream.IsInitialized = true;
}
}
}
-186
View File
@@ -1,186 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
namespace BDInfo
{
public abstract class TSCodecTrueHD
{
public static void Scan(
TSAudioStream stream,
TSStreamBuffer buffer,
ref string tag)
{
if (stream.IsInitialized &&
stream.CoreStream != null &&
stream.CoreStream.IsInitialized) return;
bool syncFound = false;
uint sync = 0;
for (int i = 0; i < buffer.Length; i++)
{
sync = (sync << 8) + buffer.ReadByte();
if (sync == 0xF8726FBA)
{
syncFound = true;
break;
}
}
if (!syncFound)
{
tag = "CORE";
if (stream.CoreStream == null)
{
stream.CoreStream = new TSAudioStream();
stream.CoreStream.StreamType = TSStreamType.AC3_AUDIO;
}
if (!stream.CoreStream.IsInitialized)
{
buffer.BeginRead();
TSCodecAC3.Scan(stream.CoreStream, buffer, ref tag);
}
return;
}
tag = "HD";
int ratebits = buffer.ReadBits(4);
if (ratebits != 0xF)
{
stream.SampleRate =
(((ratebits & 8) > 0 ? 44100 : 48000) << (ratebits & 7));
}
int temp1 = buffer.ReadBits(8);
int channels_thd_stream1 = buffer.ReadBits(5);
int temp2 = buffer.ReadBits(2);
stream.ChannelCount = 0;
stream.LFE = 0;
int c_LFE2 = buffer.ReadBits(1);
if (c_LFE2 == 1)
{
stream.LFE += 1;
}
int c_Cvh = buffer.ReadBits(1);
if (c_Cvh == 1)
{
stream.ChannelCount += 1;
}
int c_LRw = buffer.ReadBits(1);
if (c_LRw == 1)
{
stream.ChannelCount += 2;
}
int c_LRsd = buffer.ReadBits(1);
if (c_LRsd == 1)
{
stream.ChannelCount += 2;
}
int c_Ts = buffer.ReadBits(1);
if (c_Ts == 1)
{
stream.ChannelCount += 1;
}
int c_Cs = buffer.ReadBits(1);
if (c_Cs == 1)
{
stream.ChannelCount += 1;
}
int c_LRrs = buffer.ReadBits(1);
if (c_LRrs == 1)
{
stream.ChannelCount += 2;
}
int c_LRc = buffer.ReadBits(1);
if (c_LRc == 1)
{
stream.ChannelCount += 2;
}
int c_LRvh = buffer.ReadBits(1);
if (c_LRvh == 1)
{
stream.ChannelCount += 2;
}
int c_LRs = buffer.ReadBits(1);
if (c_LRs == 1)
{
stream.ChannelCount += 2;
}
int c_LFE = buffer.ReadBits(1);
if (c_LFE == 1)
{
stream.LFE += 1;
}
int c_C = buffer.ReadBits(1);
if (c_C == 1)
{
stream.ChannelCount += 1;
}
int c_LR = buffer.ReadBits(1);
if (c_LR == 1)
{
stream.ChannelCount += 2;
}
int access_unit_size = 40 << (ratebits & 7);
int access_unit_size_pow2 = 64 << (ratebits & 7);
int a1 = buffer.ReadBits(16);
int a2 = buffer.ReadBits(16);
int a3 = buffer.ReadBits(16);
int is_vbr = buffer.ReadBits(1);
int peak_bitrate = buffer.ReadBits(15);
peak_bitrate = (peak_bitrate * stream.SampleRate) >> 4;
double peak_bitdepth =
(double)peak_bitrate /
(stream.ChannelCount + stream.LFE) /
stream.SampleRate;
if (peak_bitdepth > 14)
{
stream.BitDepth = 24;
}
else
{
stream.BitDepth = 16;
}
#if DEBUG
System.Diagnostics.Debug.WriteLine(string.Format(
"{0}\t{1}\t{2:F2}",
stream.PID, peak_bitrate, peak_bitdepth));
#endif
/*
// TODO: Get THD dialnorm from metadata
if (stream.CoreStream != null)
{
TSAudioStream coreStream = (TSAudioStream)stream.CoreStream;
if (coreStream.DialNorm != 0)
{
stream.DialNorm = coreStream.DialNorm;
}
}
*/
stream.IsVBR = true;
stream.IsInitialized = true;
}
}
}
-131
View File
@@ -1,131 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
namespace BDInfo
{
public abstract class TSCodecVC1
{
public static void Scan(
TSVideoStream stream,
TSStreamBuffer buffer,
ref string tag)
{
int parse = 0;
byte frameHeaderParse = 0;
byte sequenceHeaderParse = 0;
bool isInterlaced = false;
for (int i = 0; i < buffer.Length; i++)
{
parse = (parse << 8) + buffer.ReadByte();
if (parse == 0x0000010D)
{
frameHeaderParse = 4;
}
else if (frameHeaderParse > 0)
{
--frameHeaderParse;
if (frameHeaderParse == 0)
{
uint pictureType = 0;
if (isInterlaced)
{
if ((parse & 0x80000000) == 0)
{
pictureType =
(uint)((parse & 0x78000000) >> 13);
}
else
{
pictureType =
(uint)((parse & 0x3c000000) >> 12);
}
}
else
{
pictureType =
(uint)((parse & 0xf0000000) >> 14);
}
if ((pictureType & 0x20000) == 0)
{
tag = "P";
}
else if ((pictureType & 0x10000) == 0)
{
tag = "B";
}
else if ((pictureType & 0x8000) == 0)
{
tag = "I";
}
else if ((pictureType & 0x4000) == 0)
{
tag = "BI";
}
else
{
tag = null;
}
if (stream.IsInitialized) return;
}
}
else if (parse == 0x0000010F)
{
sequenceHeaderParse = 6;
}
else if (sequenceHeaderParse > 0)
{
--sequenceHeaderParse;
switch (sequenceHeaderParse)
{
case 5:
int profileLevel = ((parse & 0x38) >> 3);
if (((parse & 0xC0) >> 6) == 3)
{
stream.EncodingProfile = string.Format(
"Advanced Profile {0}", profileLevel);
}
else
{
stream.EncodingProfile = string.Format(
"Main Profile {0}", profileLevel);
}
break;
case 0:
if (((parse & 0x40) >> 6) > 0)
{
isInterlaced = true;
}
else
{
isInterlaced = false;
}
break;
}
stream.IsVBR = true;
stream.IsInitialized = true;
}
}
}
}
}
-37
View File
@@ -1,37 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
using MediaBrowser.Model.IO;
// TODO: Do more interesting things here...
namespace BDInfo
{
public class TSInterleavedFile
{
public FileSystemMetadata FileInfo = null;
public string Name = null;
public TSInterleavedFile(FileSystemMetadata fileInfo)
{
FileInfo = fileInfo;
Name = fileInfo.Name.ToUpper();
}
}
}
File diff suppressed because it is too large Load Diff
-780
View File
@@ -1,780 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
using System;
using System.Collections.Generic;
namespace BDInfo
{
public enum TSStreamType : byte
{
Unknown = 0,
MPEG1_VIDEO = 0x01,
MPEG2_VIDEO = 0x02,
AVC_VIDEO = 0x1b,
MVC_VIDEO = 0x20,
VC1_VIDEO = 0xea,
MPEG1_AUDIO = 0x03,
MPEG2_AUDIO = 0x04,
LPCM_AUDIO = 0x80,
AC3_AUDIO = 0x81,
AC3_PLUS_AUDIO = 0x84,
AC3_PLUS_SECONDARY_AUDIO = 0xA1,
AC3_TRUE_HD_AUDIO = 0x83,
DTS_AUDIO = 0x82,
DTS_HD_AUDIO = 0x85,
DTS_HD_SECONDARY_AUDIO = 0xA2,
DTS_HD_MASTER_AUDIO = 0x86,
PRESENTATION_GRAPHICS = 0x90,
INTERACTIVE_GRAPHICS = 0x91,
SUBTITLE = 0x92
}
public enum TSVideoFormat : byte
{
Unknown = 0,
VIDEOFORMAT_480i = 1,
VIDEOFORMAT_576i = 2,
VIDEOFORMAT_480p = 3,
VIDEOFORMAT_1080i = 4,
VIDEOFORMAT_720p = 5,
VIDEOFORMAT_1080p = 6,
VIDEOFORMAT_576p = 7,
}
public enum TSFrameRate : byte
{
Unknown = 0,
FRAMERATE_23_976 = 1,
FRAMERATE_24 = 2,
FRAMERATE_25 = 3,
FRAMERATE_29_97 = 4,
FRAMERATE_50 = 6,
FRAMERATE_59_94 = 7
}
public enum TSChannelLayout : byte
{
Unknown = 0,
CHANNELLAYOUT_MONO = 1,
CHANNELLAYOUT_STEREO = 3,
CHANNELLAYOUT_MULTI = 6,
CHANNELLAYOUT_COMBO = 12
}
public enum TSSampleRate : byte
{
Unknown = 0,
SAMPLERATE_48 = 1,
SAMPLERATE_96 = 4,
SAMPLERATE_192 = 5,
SAMPLERATE_48_192 = 12,
SAMPLERATE_48_96 = 14
}
public enum TSAspectRatio
{
Unknown = 0,
ASPECT_4_3 = 2,
ASPECT_16_9 = 3,
ASPECT_2_21 = 4
}
public class TSDescriptor
{
public byte Name;
public byte[] Value;
public TSDescriptor(byte name, byte length)
{
Name = name;
Value = new byte[length];
}
public TSDescriptor Clone()
{
var descriptor =
new TSDescriptor(Name, (byte)Value.Length);
Value.CopyTo(descriptor.Value, 0);
return descriptor;
}
}
public abstract class TSStream
{
public TSStream()
{
}
public override string ToString()
{
return string.Format("{0} ({1})", CodecShortName, PID);
}
public ushort PID;
public TSStreamType StreamType;
public List<TSDescriptor> Descriptors = null;
public long BitRate = 0;
public long ActiveBitRate = 0;
public bool IsVBR = false;
public bool IsInitialized = false;
public string LanguageName;
public bool IsHidden = false;
public ulong PayloadBytes = 0;
public ulong PacketCount = 0;
public double PacketSeconds = 0;
public int AngleIndex = 0;
public ulong PacketSize => PacketCount * 192;
private string _LanguageCode;
public string LanguageCode
{
get => _LanguageCode;
set
{
_LanguageCode = value;
LanguageName = LanguageCodes.GetName(value);
}
}
public bool IsVideoStream
{
get
{
switch (StreamType)
{
case TSStreamType.MPEG1_VIDEO:
case TSStreamType.MPEG2_VIDEO:
case TSStreamType.AVC_VIDEO:
case TSStreamType.MVC_VIDEO:
case TSStreamType.VC1_VIDEO:
return true;
default:
return false;
}
}
}
public bool IsAudioStream
{
get
{
switch (StreamType)
{
case TSStreamType.MPEG1_AUDIO:
case TSStreamType.MPEG2_AUDIO:
case TSStreamType.LPCM_AUDIO:
case TSStreamType.AC3_AUDIO:
case TSStreamType.AC3_PLUS_AUDIO:
case TSStreamType.AC3_PLUS_SECONDARY_AUDIO:
case TSStreamType.AC3_TRUE_HD_AUDIO:
case TSStreamType.DTS_AUDIO:
case TSStreamType.DTS_HD_AUDIO:
case TSStreamType.DTS_HD_SECONDARY_AUDIO:
case TSStreamType.DTS_HD_MASTER_AUDIO:
return true;
default:
return false;
}
}
}
public bool IsGraphicsStream
{
get
{
switch (StreamType)
{
case TSStreamType.PRESENTATION_GRAPHICS:
case TSStreamType.INTERACTIVE_GRAPHICS:
return true;
default:
return false;
}
}
}
public bool IsTextStream
{
get
{
switch (StreamType)
{
case TSStreamType.SUBTITLE:
return true;
default:
return false;
}
}
}
public string CodecName
{
get
{
switch (StreamType)
{
case TSStreamType.MPEG1_VIDEO:
return "MPEG-1 Video";
case TSStreamType.MPEG2_VIDEO:
return "MPEG-2 Video";
case TSStreamType.AVC_VIDEO:
return "MPEG-4 AVC Video";
case TSStreamType.MVC_VIDEO:
return "MPEG-4 MVC Video";
case TSStreamType.VC1_VIDEO:
return "VC-1 Video";
case TSStreamType.MPEG1_AUDIO:
return "MP1 Audio";
case TSStreamType.MPEG2_AUDIO:
return "MP2 Audio";
case TSStreamType.LPCM_AUDIO:
return "LPCM Audio";
case TSStreamType.AC3_AUDIO:
if (((TSAudioStream)this).AudioMode == TSAudioMode.Extended)
return "Dolby Digital EX Audio";
else
return "Dolby Digital Audio";
case TSStreamType.AC3_PLUS_AUDIO:
case TSStreamType.AC3_PLUS_SECONDARY_AUDIO:
return "Dolby Digital Plus Audio";
case TSStreamType.AC3_TRUE_HD_AUDIO:
return "Dolby TrueHD Audio";
case TSStreamType.DTS_AUDIO:
if (((TSAudioStream)this).AudioMode == TSAudioMode.Extended)
return "DTS-ES Audio";
else
return "DTS Audio";
case TSStreamType.DTS_HD_AUDIO:
return "DTS-HD High-Res Audio";
case TSStreamType.DTS_HD_SECONDARY_AUDIO:
return "DTS Express";
case TSStreamType.DTS_HD_MASTER_AUDIO:
return "DTS-HD Master Audio";
case TSStreamType.PRESENTATION_GRAPHICS:
return "Presentation Graphics";
case TSStreamType.INTERACTIVE_GRAPHICS:
return "Interactive Graphics";
case TSStreamType.SUBTITLE:
return "Subtitle";
default:
return "UNKNOWN";
}
}
}
public string CodecAltName
{
get
{
switch (StreamType)
{
case TSStreamType.MPEG1_VIDEO:
return "MPEG-1";
case TSStreamType.MPEG2_VIDEO:
return "MPEG-2";
case TSStreamType.AVC_VIDEO:
return "AVC";
case TSStreamType.MVC_VIDEO:
return "MVC";
case TSStreamType.VC1_VIDEO:
return "VC-1";
case TSStreamType.MPEG1_AUDIO:
return "MP1";
case TSStreamType.MPEG2_AUDIO:
return "MP2";
case TSStreamType.LPCM_AUDIO:
return "LPCM";
case TSStreamType.AC3_AUDIO:
return "DD AC3";
case TSStreamType.AC3_PLUS_AUDIO:
case TSStreamType.AC3_PLUS_SECONDARY_AUDIO:
return "DD AC3+";
case TSStreamType.AC3_TRUE_HD_AUDIO:
return "Dolby TrueHD";
case TSStreamType.DTS_AUDIO:
return "DTS";
case TSStreamType.DTS_HD_AUDIO:
return "DTS-HD Hi-Res";
case TSStreamType.DTS_HD_SECONDARY_AUDIO:
return "DTS Express";
case TSStreamType.DTS_HD_MASTER_AUDIO:
return "DTS-HD Master";
case TSStreamType.PRESENTATION_GRAPHICS:
return "PGS";
case TSStreamType.INTERACTIVE_GRAPHICS:
return "IGS";
case TSStreamType.SUBTITLE:
return "SUB";
default:
return "UNKNOWN";
}
}
}
public string CodecShortName
{
get
{
switch (StreamType)
{
case TSStreamType.MPEG1_VIDEO:
return "MPEG-1";
case TSStreamType.MPEG2_VIDEO:
return "MPEG-2";
case TSStreamType.AVC_VIDEO:
return "AVC";
case TSStreamType.MVC_VIDEO:
return "MVC";
case TSStreamType.VC1_VIDEO:
return "VC-1";
case TSStreamType.MPEG1_AUDIO:
return "MP1";
case TSStreamType.MPEG2_AUDIO:
return "MP2";
case TSStreamType.LPCM_AUDIO:
return "LPCM";
case TSStreamType.AC3_AUDIO:
if (((TSAudioStream)this).AudioMode == TSAudioMode.Extended)
return "AC3-EX";
else
return "AC3";
case TSStreamType.AC3_PLUS_AUDIO:
case TSStreamType.AC3_PLUS_SECONDARY_AUDIO:
return "AC3+";
case TSStreamType.AC3_TRUE_HD_AUDIO:
return "TrueHD";
case TSStreamType.DTS_AUDIO:
if (((TSAudioStream)this).AudioMode == TSAudioMode.Extended)
return "DTS-ES";
else
return "DTS";
case TSStreamType.DTS_HD_AUDIO:
return "DTS-HD HR";
case TSStreamType.DTS_HD_SECONDARY_AUDIO:
return "DTS Express";
case TSStreamType.DTS_HD_MASTER_AUDIO:
return "DTS-HD MA";
case TSStreamType.PRESENTATION_GRAPHICS:
return "PGS";
case TSStreamType.INTERACTIVE_GRAPHICS:
return "IGS";
case TSStreamType.SUBTITLE:
return "SUB";
default:
return "UNKNOWN";
}
}
}
public virtual string Description => "";
public abstract TSStream Clone();
protected void CopyTo(TSStream stream)
{
stream.PID = PID;
stream.StreamType = StreamType;
stream.IsVBR = IsVBR;
stream.BitRate = BitRate;
stream.IsInitialized = IsInitialized;
stream.LanguageCode = _LanguageCode;
if (Descriptors != null)
{
stream.Descriptors = new List<TSDescriptor>();
foreach (var descriptor in Descriptors)
{
stream.Descriptors.Add(descriptor.Clone());
}
}
}
}
public class TSVideoStream : TSStream
{
public TSVideoStream()
{
}
public int Width;
public int Height;
public bool IsInterlaced;
public int FrameRateEnumerator;
public int FrameRateDenominator;
public TSAspectRatio AspectRatio;
public string EncodingProfile;
private TSVideoFormat _VideoFormat;
public TSVideoFormat VideoFormat
{
get => _VideoFormat;
set
{
_VideoFormat = value;
switch (value)
{
case TSVideoFormat.VIDEOFORMAT_480i:
Height = 480;
IsInterlaced = true;
break;
case TSVideoFormat.VIDEOFORMAT_480p:
Height = 480;
IsInterlaced = false;
break;
case TSVideoFormat.VIDEOFORMAT_576i:
Height = 576;
IsInterlaced = true;
break;
case TSVideoFormat.VIDEOFORMAT_576p:
Height = 576;
IsInterlaced = false;
break;
case TSVideoFormat.VIDEOFORMAT_720p:
Height = 720;
IsInterlaced = false;
break;
case TSVideoFormat.VIDEOFORMAT_1080i:
Height = 1080;
IsInterlaced = true;
break;
case TSVideoFormat.VIDEOFORMAT_1080p:
Height = 1080;
IsInterlaced = false;
break;
}
}
}
private TSFrameRate _FrameRate;
public TSFrameRate FrameRate
{
get => _FrameRate;
set
{
_FrameRate = value;
switch (value)
{
case TSFrameRate.FRAMERATE_23_976:
FrameRateEnumerator = 24000;
FrameRateDenominator = 1001;
break;
case TSFrameRate.FRAMERATE_24:
FrameRateEnumerator = 24000;
FrameRateDenominator = 1000;
break;
case TSFrameRate.FRAMERATE_25:
FrameRateEnumerator = 25000;
FrameRateDenominator = 1000;
break;
case TSFrameRate.FRAMERATE_29_97:
FrameRateEnumerator = 30000;
FrameRateDenominator = 1001;
break;
case TSFrameRate.FRAMERATE_50:
FrameRateEnumerator = 50000;
FrameRateDenominator = 1000;
break;
case TSFrameRate.FRAMERATE_59_94:
FrameRateEnumerator = 60000;
FrameRateDenominator = 1001;
break;
}
}
}
public override string Description
{
get
{
string description = "";
if (Height > 0)
{
description += string.Format("{0:D}{1} / ",
Height,
IsInterlaced ? "i" : "p");
}
if (FrameRateEnumerator > 0 &&
FrameRateDenominator > 0)
{
if (FrameRateEnumerator % FrameRateDenominator == 0)
{
description += string.Format("{0:D} fps / ",
FrameRateEnumerator / FrameRateDenominator);
}
else
{
description += string.Format("{0:F3} fps / ",
(double)FrameRateEnumerator / FrameRateDenominator);
}
}
if (AspectRatio == TSAspectRatio.ASPECT_4_3)
{
description += "4:3 / ";
}
else if (AspectRatio == TSAspectRatio.ASPECT_16_9)
{
description += "16:9 / ";
}
if (EncodingProfile != null)
{
description += EncodingProfile + " / ";
}
if (description.EndsWith(" / "))
{
description = description.Substring(0, description.Length - 3);
}
return description;
}
}
public override TSStream Clone()
{
var stream = new TSVideoStream();
CopyTo(stream);
stream.VideoFormat = _VideoFormat;
stream.FrameRate = _FrameRate;
stream.Width = Width;
stream.Height = Height;
stream.IsInterlaced = IsInterlaced;
stream.FrameRateEnumerator = FrameRateEnumerator;
stream.FrameRateDenominator = FrameRateDenominator;
stream.AspectRatio = AspectRatio;
stream.EncodingProfile = EncodingProfile;
return stream;
}
}
public enum TSAudioMode
{
Unknown,
DualMono,
Stereo,
Surround,
Extended
}
public class TSAudioStream : TSStream
{
public TSAudioStream()
{
}
public int SampleRate;
public int ChannelCount;
public int BitDepth;
public int LFE;
public int DialNorm;
public TSAudioMode AudioMode;
public TSAudioStream CoreStream;
public TSChannelLayout ChannelLayout;
public static int ConvertSampleRate(
TSSampleRate sampleRate)
{
switch (sampleRate)
{
case TSSampleRate.SAMPLERATE_48:
return 48000;
case TSSampleRate.SAMPLERATE_96:
case TSSampleRate.SAMPLERATE_48_96:
return 96000;
case TSSampleRate.SAMPLERATE_192:
case TSSampleRate.SAMPLERATE_48_192:
return 192000;
}
return 0;
}
public string ChannelDescription
{
get
{
if (ChannelLayout == TSChannelLayout.CHANNELLAYOUT_MONO &&
ChannelCount == 2)
{
}
string description = "";
if (ChannelCount > 0)
{
description += string.Format(
"{0:D}.{1:D}",
ChannelCount, LFE);
}
else
{
switch (ChannelLayout)
{
case TSChannelLayout.CHANNELLAYOUT_MONO:
description += "1.0";
break;
case TSChannelLayout.CHANNELLAYOUT_STEREO:
description += "2.0";
break;
case TSChannelLayout.CHANNELLAYOUT_MULTI:
description += "5.1";
break;
}
}
if (AudioMode == TSAudioMode.Extended)
{
if (StreamType == TSStreamType.AC3_AUDIO)
{
description += "-EX";
}
if (StreamType == TSStreamType.DTS_AUDIO ||
StreamType == TSStreamType.DTS_HD_AUDIO ||
StreamType == TSStreamType.DTS_HD_MASTER_AUDIO)
{
description += "-ES";
}
}
return description;
}
}
public override string Description
{
get
{
string description = ChannelDescription;
if (SampleRate > 0)
{
description += string.Format(
" / {0:D} kHz", SampleRate / 1000);
}
if (BitRate > 0)
{
description += string.Format(
" / {0:D} kbps", (uint)Math.Round((double)BitRate / 1000));
}
if (BitDepth > 0)
{
description += string.Format(
" / {0:D}-bit", BitDepth);
}
if (DialNorm != 0)
{
description += string.Format(
" / DN {0}dB", DialNorm);
}
if (ChannelCount == 2)
{
switch (AudioMode)
{
case TSAudioMode.DualMono:
description += " / Dual Mono";
break;
case TSAudioMode.Surround:
description += " / Dolby Surround";
break;
}
}
if (description.EndsWith(" / "))
{
description = description.Substring(0, description.Length - 3);
}
if (CoreStream != null)
{
string codec = "";
switch (CoreStream.StreamType)
{
case TSStreamType.AC3_AUDIO:
codec = "AC3 Embedded";
break;
case TSStreamType.DTS_AUDIO:
codec = "DTS Core";
break;
}
description += string.Format(
" ({0}: {1})",
codec,
CoreStream.Description);
}
return description;
}
}
public override TSStream Clone()
{
var stream = new TSAudioStream();
CopyTo(stream);
stream.SampleRate = SampleRate;
stream.ChannelLayout = ChannelLayout;
stream.ChannelCount = ChannelCount;
stream.BitDepth = BitDepth;
stream.LFE = LFE;
stream.DialNorm = DialNorm;
stream.AudioMode = AudioMode;
if (CoreStream != null)
{
stream.CoreStream = (TSAudioStream)CoreStream.Clone();
}
return stream;
}
}
public class TSGraphicsStream : TSStream
{
public TSGraphicsStream()
{
IsVBR = true;
IsInitialized = true;
}
public override TSStream Clone()
{
var stream = new TSGraphicsStream();
CopyTo(stream);
return stream;
}
}
public class TSTextStream : TSStream
{
public TSTextStream()
{
IsVBR = true;
IsInitialized = true;
}
public override TSStream Clone()
{
var stream = new TSTextStream();
CopyTo(stream);
return stream;
}
}
}
-130
View File
@@ -1,130 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
using System;
using System.Collections.Specialized;
using System.IO;
namespace BDInfo
{
public class TSStreamBuffer
{
private MemoryStream Stream = new MemoryStream();
private int SkipBits = 0;
private byte[] Buffer;
private int BufferLength = 0;
public int TransferLength = 0;
public TSStreamBuffer()
{
Buffer = new byte[4096];
Stream = new MemoryStream(Buffer);
}
public long Length => (long)BufferLength;
public long Position => Stream.Position;
public void Add(
byte[] buffer,
int offset,
int length)
{
TransferLength += length;
if (BufferLength + length >= Buffer.Length)
{
length = Buffer.Length - BufferLength;
}
if (length > 0)
{
Array.Copy(buffer, offset, Buffer, BufferLength, length);
BufferLength += length;
}
}
public void Seek(
long offset,
SeekOrigin loc)
{
Stream.Seek(offset, loc);
}
public void Reset()
{
BufferLength = 0;
TransferLength = 0;
}
public void BeginRead()
{
SkipBits = 0;
Stream.Seek(0, SeekOrigin.Begin);
}
public void EndRead()
{
}
public byte[] ReadBytes(int bytes)
{
if (Stream.Position + bytes >= BufferLength)
{
return null;
}
byte[] value = new byte[bytes];
Stream.Read(value, 0, bytes);
return value;
}
public byte ReadByte()
{
return (byte)Stream.ReadByte();
}
public int ReadBits(int bits)
{
long pos = Stream.Position;
int shift = 24;
int data = 0;
for (int i = 0; i < 4; i++)
{
if (pos + i >= BufferLength) break;
data += (Stream.ReadByte() << shift);
shift -= 8;
}
var vector = new BitVector32(data);
int value = 0;
for (int i = SkipBits; i < SkipBits + bits; i++)
{
value <<= 1;
value += (vector[1 << (32 - i - 1)] ? 1 : 0);
}
SkipBits += bits;
Stream.Seek(pos + (SkipBits >> 3), SeekOrigin.Begin);
SkipBits = SkipBits % 8;
return value;
}
}
}
-107
View File
@@ -1,107 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
using System;
using System.Collections.Generic;
namespace BDInfo
{
public class TSStreamClip
{
public int AngleIndex = 0;
public string Name;
public double TimeIn;
public double TimeOut;
public double RelativeTimeIn;
public double RelativeTimeOut;
public double Length;
public ulong FileSize = 0;
public ulong InterleavedFileSize = 0;
public ulong PayloadBytes = 0;
public ulong PacketCount = 0;
public double PacketSeconds = 0;
public List<double> Chapters = new List<double>();
public TSStreamFile StreamFile = null;
public TSStreamClipFile StreamClipFile = null;
public TSStreamClip(
TSStreamFile streamFile,
TSStreamClipFile streamClipFile)
{
if (streamFile != null)
{
Name = streamFile.Name;
StreamFile = streamFile;
FileSize = (ulong)StreamFile.FileInfo.Length;
if (StreamFile.InterleavedFile != null)
{
InterleavedFileSize = (ulong)StreamFile.InterleavedFile.FileInfo.Length;
}
}
StreamClipFile = streamClipFile;
}
public string DisplayName
{
get
{
if (StreamFile != null &&
StreamFile.InterleavedFile != null &&
BDInfoSettings.EnableSSIF)
{
return StreamFile.InterleavedFile.Name;
}
return Name;
}
}
public ulong PacketSize => PacketCount * 192;
public ulong PacketBitRate
{
get
{
if (PacketSeconds > 0)
{
return (ulong)Math.Round(((PacketSize * 8.0) / PacketSeconds));
}
return 0;
}
}
public bool IsCompatible(TSStreamClip clip)
{
foreach (var stream1 in StreamFile.Streams.Values)
{
if (clip.StreamFile.Streams.ContainsKey(stream1.PID))
{
var stream2 = clip.StreamFile.Streams[stream1.PID];
if (stream1.StreamType != stream2.StreamType)
{
return false;
}
}
}
return true;
}
}
}
-244
View File
@@ -1,244 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
#undef DEBUG
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using MediaBrowser.Model.IO;
namespace BDInfo
{
public class TSStreamClipFile
{
public FileSystemMetadata FileInfo = null;
public string FileType = null;
public bool IsValid = false;
public string Name = null;
public Dictionary<ushort, TSStream> Streams =
new Dictionary<ushort, TSStream>();
public TSStreamClipFile(FileSystemMetadata fileInfo)
{
FileInfo = fileInfo;
Name = fileInfo.Name.ToUpper();
}
public void Scan()
{
Stream fileStream = null;
BinaryReader fileReader = null;
try
{
#if DEBUG
Debug.WriteLine(string.Format(
"Scanning {0}...", Name));
#endif
Streams.Clear();
fileStream = File.OpenRead(FileInfo.FullName);
fileReader = new BinaryReader(fileStream);
byte[] data = new byte[fileStream.Length];
fileReader.Read(data, 0, data.Length);
byte[] fileType = new byte[8];
Array.Copy(data, 0, fileType, 0, fileType.Length);
FileType = Encoding.ASCII.GetString(fileType, 0, fileType.Length);
if (FileType != "HDMV0100" &&
FileType != "HDMV0200")
{
throw new Exception(string.Format(
"Clip info file {0} has an unknown file type {1}.",
FileInfo.Name, FileType));
}
#if DEBUG
Debug.WriteLine(string.Format(
"\tFileType: {0}", FileType));
#endif
int clipIndex =
((int)data[12] << 24) +
((int)data[13] << 16) +
((int)data[14] << 8) +
((int)data[15]);
int clipLength =
((int)data[clipIndex] << 24) +
((int)data[clipIndex + 1] << 16) +
((int)data[clipIndex + 2] << 8) +
((int)data[clipIndex + 3]);
byte[] clipData = new byte[clipLength];
Array.Copy(data, clipIndex + 4, clipData, 0, clipData.Length);
int streamCount = clipData[8];
#if DEBUG
Debug.WriteLine(string.Format(
"\tStreamCount: {0}", streamCount));
#endif
int streamOffset = 10;
for (int streamIndex = 0;
streamIndex < streamCount;
streamIndex++)
{
TSStream stream = null;
ushort PID = (ushort)
((clipData[streamOffset] << 8) +
clipData[streamOffset + 1]);
streamOffset += 2;
var streamType = (TSStreamType)
clipData[streamOffset + 1];
switch (streamType)
{
case TSStreamType.MVC_VIDEO:
// TODO
break;
case TSStreamType.AVC_VIDEO:
case TSStreamType.MPEG1_VIDEO:
case TSStreamType.MPEG2_VIDEO:
case TSStreamType.VC1_VIDEO:
{
var videoFormat = (TSVideoFormat)
(clipData[streamOffset + 2] >> 4);
var frameRate = (TSFrameRate)
(clipData[streamOffset + 2] & 0xF);
var aspectRatio = (TSAspectRatio)
(clipData[streamOffset + 3] >> 4);
stream = new TSVideoStream();
((TSVideoStream)stream).VideoFormat = videoFormat;
((TSVideoStream)stream).AspectRatio = aspectRatio;
((TSVideoStream)stream).FrameRate = frameRate;
#if DEBUG
Debug.WriteLine(string.Format(
"\t{0} {1} {2} {3} {4}",
PID,
streamType,
videoFormat,
frameRate,
aspectRatio));
#endif
}
break;
case TSStreamType.AC3_AUDIO:
case TSStreamType.AC3_PLUS_AUDIO:
case TSStreamType.AC3_PLUS_SECONDARY_AUDIO:
case TSStreamType.AC3_TRUE_HD_AUDIO:
case TSStreamType.DTS_AUDIO:
case TSStreamType.DTS_HD_AUDIO:
case TSStreamType.DTS_HD_MASTER_AUDIO:
case TSStreamType.DTS_HD_SECONDARY_AUDIO:
case TSStreamType.LPCM_AUDIO:
case TSStreamType.MPEG1_AUDIO:
case TSStreamType.MPEG2_AUDIO:
{
byte[] languageBytes = new byte[3];
Array.Copy(clipData, streamOffset + 3,
languageBytes, 0, languageBytes.Length);
string languageCode = Encoding.ASCII.GetString(languageBytes, 0, languageBytes.Length);
var channelLayout = (TSChannelLayout)
(clipData[streamOffset + 2] >> 4);
var sampleRate = (TSSampleRate)
(clipData[streamOffset + 2] & 0xF);
stream = new TSAudioStream();
((TSAudioStream)stream).LanguageCode = languageCode;
((TSAudioStream)stream).ChannelLayout = channelLayout;
((TSAudioStream)stream).SampleRate = TSAudioStream.ConvertSampleRate(sampleRate);
((TSAudioStream)stream).LanguageCode = languageCode;
#if DEBUG
Debug.WriteLine(string.Format(
"\t{0} {1} {2} {3} {4}",
PID,
streamType,
languageCode,
channelLayout,
sampleRate));
#endif
}
break;
case TSStreamType.INTERACTIVE_GRAPHICS:
case TSStreamType.PRESENTATION_GRAPHICS:
{
byte[] languageBytes = new byte[3];
Array.Copy(clipData, streamOffset + 2,
languageBytes, 0, languageBytes.Length);
string languageCode = Encoding.ASCII.GetString(languageBytes, 0, languageBytes.Length);
stream = new TSGraphicsStream();
stream.LanguageCode = languageCode;
#if DEBUG
Debug.WriteLine(string.Format(
"\t{0} {1} {2}",
PID,
streamType,
languageCode));
#endif
}
break;
case TSStreamType.SUBTITLE:
{
byte[] languageBytes = new byte[3];
Array.Copy(clipData, streamOffset + 3,
languageBytes, 0, languageBytes.Length);
string languageCode = Encoding.ASCII.GetString(languageBytes, 0, languageBytes.Length);
#if DEBUG
Debug.WriteLine(string.Format(
"\t{0} {1} {2}",
PID,
streamType,
languageCode));
#endif
stream = new TSTextStream();
stream.LanguageCode = languageCode;
}
break;
}
if (stream != null)
{
stream.PID = PID;
stream.StreamType = streamType;
Streams.Add(PID, stream);
}
streamOffset += clipData[streamOffset] + 1;
}
IsValid = true;
}
finally
{
if (fileReader != null) fileReader.Dispose();
if (fileStream != null) fileStream.Dispose();
}
}
}
}
File diff suppressed because it is too large Load Diff
+126 -24
View File
@@ -1,35 +1,137 @@
# Jellyfin Contributors
- [JoshuaBoniface](https://github.com/joshuaboniface)
- [nvllsvm](https://github.com/nvllsvm)
- [JustAMan](https://github.com/JustAMan)
- [dcrdev](https://github.com/dcrdev)
- [EraYaN](https://github.com/EraYaN)
- [flemse](https://github.com/flemse)
- [97carmine](https://github.com/97carmine)
- [Abbe98](https://github.com/Abbe98)
- [agrenott](https://github.com/agrenott)
- [AndreCarvalho](https://github.com/AndreCarvalho)
- [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)
- [Bond_009](https://github.com/Bond-009)
- [AnthonyLavado](https://github.com/anthonylavado)
- [sparky8251](https://github.com/sparky8251)
- [LeoVerto](https://github.com/LeoVerto)
- [grafixeyehero](https://github.com/grafixeyehero)
- [BnMcG](https://github.com/BnMcG)
- [Bond-009](https://github.com/Bond-009)
- [brianjmurrell](https://github.com/brianjmurrell)
- [bugfixin](https://github.com/bugfixin)
- [chaosinnovator](https://github.com/chaosinnovator)
- [ckcr4lyf](https://github.com/ckcr4lyf)
- [crankdoofus](https://github.com/crankdoofus)
- [crobibero](https://github.com/crobibero)
- [cromefire](https://github.com/cromefire)
- [cryptobank](https://github.com/cryptobank)
- [cvium](https://github.com/cvium)
- [wtayl0r](https://github.com/wtayl0r)
- [TtheCreator](https://github.com/Tthecreator)
- [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)
- [dkanada](https://github.com/dkanada)
- [LogicalPhallacy](https://github.com/LogicalPhallacy/)
- [RazeLighter777](https://github.com/RazeLighter777)
- [WillWill56](https://github.com/WillWill56)
- [Liggy](https://github.com/Liggy)
- [fruhnow](https://github.com/fruhnow)
- [Lynxy](https://github.com/Lynxy)
- [dlahoti](https://github.com/dlahoti)
- [dmitrylyzo](https://github.com/dmitrylyzo)
- [DMouse10462](https://github.com/DMouse10462)
- [DrPandemic](https://github.com/DrPandemic)
- [EraYaN](https://github.com/EraYaN)
- [escabe](https://github.com/escabe)
- [excelite](https://github.com/excelite)
- [fasheng](https://github.com/fasheng)
- [ploughpuff](https://github.com/ploughpuff)
- [pjeanjean](https://github.com/pjeanjean)
- [DrPandemic](https://github.com/drpandemic)
- [joern-h](https://github.com/joern-h)
- [Khinenw](https://github.com/HelloWorld017)
- [ferferga](https://github.com/ferferga)
- [fhriley](https://github.com/fhriley)
- [flemse](https://github.com/flemse)
- [Froghut](https://github.com/Froghut)
- [fruhnow](https://github.com/fruhnow)
- [geilername](https://github.com/geilername)
- [gnattu](https://github.com/gnattu)
- [grafixeyehero](https://github.com/grafixeyehero)
- [h1nk](https://github.com/h1nk)
- [hawken93](https://github.com/hawken93)
- [HelloWorld017](https://github.com/HelloWorld017)
- [jftuga](https://github.com/jftuga)
- [joern-h](https://github.com/joern-h)
- [joshuaboniface](https://github.com/joshuaboniface)
- [JustAMan](https://github.com/JustAMan)
- [justinfenn](https://github.com/justinfenn)
- [KerryRJ](https://github.com/KerryRJ)
- [Larvitar](https://github.com/Larvitar)
- [LeoVerto](https://github.com/LeoVerto)
- [Liggy](https://github.com/Liggy)
- [LogicalPhallacy](https://github.com/LogicalPhallacy)
- [loli10K](https://github.com/loli10K)
- [lostmypillow](https://github.com/lostmypillow)
- [Lynxy](https://github.com/Lynxy)
- [ManfredRichthofen](https://github.com/ManfredRichthofen)
- [Marenz](https://github.com/Marenz)
- [marius-luca-87](https://github.com/marius-luca-87)
- [mark-monteiro](https://github.com/mark-monteiro)
- [Matt07211](https://github.com/Matt07211)
- [mcarlton00](https://github.com/mcarlton00)
- [mitchfizz05](https://github.com/mitchfizz05)
- [MrTimscampi](https://github.com/MrTimscampi)
- [n8225](https://github.com/n8225)
- [Narfinger](https://github.com/Narfinger)
- [NathanPickard](https://github.com/NathanPickard)
- [neilsb](https://github.com/neilsb)
- [nevado](https://github.com/nevado)
- [Nickbert7](https://github.com/Nickbert7)
- [nvllsvm](https://github.com/nvllsvm)
- [nyanmisaka](https://github.com/nyanmisaka)
- [oddstr13](https://github.com/oddstr13)
- [petermcneil](https://github.com/petermcneil)
- [Phlogi](https://github.com/Phlogi)
- [pjeanjean](https://github.com/pjeanjean)
- [ploughpuff](https://github.com/ploughpuff)
- [pR0Ps](https://github.com/pR0Ps)
- [PrplHaz4](https://github.com/PrplHaz4)
- [RazeLighter777](https://github.com/RazeLighter777)
- [redSpoutnik](https://github.com/redSpoutnik)
- [ringmatter](https://github.com/ringmatter)
- [ryan-hartzell](https://github.com/ryan-hartzell)
- [s0urcelab](https://github.com/s0urcelab)
- [sachk](https://github.com/sachk)
- [sammyrc34](https://github.com/sammyrc34)
- [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)
- [sl1288](https://github.com/sl1288)
- [sorinyo2004](https://github.com/sorinyo2004)
- [sparky8251](https://github.com/sparky8251)
- [stanionascu](https://github.com/stanionascu)
- [stevehayles](https://github.com/stevehayles)
- [SuperSandro2000](https://github.com/SuperSandro2000)
- [tbraeutigam](https://github.com/tbraeutigam)
- [teacupx](https://github.com/teacupx)
- [Terror-Gene](https://github.com/Terror-Gene)
- [ThatNerdyPikachu](https://github.com/ThatNerdyPikachu)
- [ThibaultNocchi](https://github.com/ThibaultNocchi)
- [thornbill](https://github.com/thornbill)
- [ThreeFive-O](https://github.com/ThreeFive-O)
- [TrisMcC](https://github.com/TrisMcC)
- [trumblejoe](https://github.com/trumblejoe)
- [TtheCreator](https://github.com/TtheCreator)
- [twinkybot](https://github.com/twinkybot)
- [Ullmie02](https://github.com/Ullmie02)
- [Unhelpful](https://github.com/Unhelpful)
- [viaregio](https://github.com/viaregio)
- [vitorsemeano](https://github.com/vitorsemeano)
- [voodoos](https://github.com/voodoos)
- [whooo](https://github.com/whooo)
- [WiiPlayer2](https://github.com/WiiPlayer2)
- [WillWill56](https://github.com/WillWill56)
- [wtayl0r](https://github.com/wtayl0r)
- [Wuerfelbecher](https://github.com/Wuerfelbecher)
- [Wunax](https://github.com/Wunax)
- [WWWesten](https://github.com/WWWesten)
- [WX9yMOXWId](https://github.com/WX9yMOXWId)
- [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
+38 -20
View File
@@ -1,42 +1,60 @@
ARG DOTNET_VERSION=2.2
ARG FFMPEG_VERSION=latest
ARG DOTNET_VERSION=3.1
FROM node:alpine as web-builder
ARG JELLYFIN_WEB_VERSION=v10.4.0
RUN apk add curl \
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} as builder
FROM mcr.microsoft.com/dotnet/core/sdk:${DOTNET_VERSION}-buster as builder
WORKDIR /repo
COPY . .
ENV DOTNET_CLI_TELEMETRY_OPTOUT=1
RUN dotnet publish Jellyfin.Server --configuration Release --output="/jellyfin" --self-contained --runtime linux-x64 "-p:GenerateDocumentationFile=false;DebugSymbols=false;DebugType=none"
# because of changes in docker and systemd we need to not build in parallel at the moment
# 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
ARG DEBIAN_FRONTEND="noninteractive"
# http://stackoverflow.com/questions/48162574/ddg#49462622
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"
FROM mcr.microsoft.com/dotnet/core/runtime:${DOTNET_VERSION}
COPY --from=ffmpeg / /
COPY --from=builder /jellyfin /jellyfin
COPY --from=web-builder /dist /jellyfin/jellyfin-web
# Install dependencies:
# libfontconfig1: needed for Skia
# 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 mesa-va-drivers \
&& apt-get clean autoclean \
&& apt-get autoremove \
mesa-va-drivers \
jellyfin-ffmpeg \
openssl \
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
&& 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
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 dotnet /jellyfin/jellyfin.dll \
--datadir /config \
--cachedir /cache \
--ffmpeg /usr/local/bin/ffmpeg
ENTRYPOINT ["./jellyfin/jellyfin", \
"--datadir", "/config", \
"--cachedir", "/cache", \
"--ffmpeg", "/usr/lib/jellyfin-ffmpeg/ffmpeg"]
+46 -13
View File
@@ -1,15 +1,16 @@
# DESIGNED FOR BUILDING ON AMD64 ONLY
#####################################
# Requires binfm_misc registration
# https://github.com/multiarch/qemu-user-static#binfmt_misc-register
ARG DOTNET_VERSION=3.0
ARG DOTNET_VERSION=3.1
FROM node:alpine as web-builder
ARG JELLYFIN_WEB_VERSION=v10.4.0
RUN apk add curl \
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
@@ -17,8 +18,6 @@ FROM mcr.microsoft.com/dotnet/core/sdk:${DOTNET_VERSION} as builder
WORKDIR /repo
COPY . .
ENV DOTNET_CLI_TELEMETRY_OPTOUT=1
# TODO Remove or update the sed line when we update dotnet version.
RUN find . -type f -exec sed -i 's/netcoreapp2.1/netcoreapp3.0/g' {} \;
# Discard objs - may cause failures if exists
RUN find . -type d -name obj | xargs -r rm -r
# Build
@@ -26,19 +25,53 @@ RUN dotnet publish Jellyfin.Server --configuration Release --output="/jellyfin"
FROM multiarch/qemu-user-static:x86_64-arm as qemu
FROM mcr.microsoft.com/dotnet/core/runtime:${DOTNET_VERSION}-stretch-slim-arm32v7
FROM arm32v7/debian:buster-slim
# https://askubuntu.com/questions/972516/debian-frontend-environment-variable
ARG DEBIAN_FRONTEND="noninteractive"
# http://stackoverflow.com/questions/48162574/ddg#49462622
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=qemu /usr/bin/qemu-arm-static /usr/bin
RUN apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y ffmpeg \
&& apt-get install --no-install-recommends --no-install-suggests -y ca-certificates gnupg curl && \
curl -ks https://repo.jellyfin.org/debian/jellyfin_team.gpg.key | apt-key add - && \
curl -ks https://keyserver.ubuntu.com/pks/lookup?op=get\&search=0x6587ffd6536b8826e88a62547876ae518cbcf2f2 | apt-key add - && \
echo 'deb [arch=armhf] https://repo.jellyfin.org/debian buster main' > /etc/apt/sources.list.d/jellyfin.list && \
echo "deb http://ppa.launchpad.net/ubuntu-raspi2/ppa/ubuntu bionic main">> /etc/apt/sources.list.d/raspbins.list && \
apt-get update && \
apt-get install --no-install-recommends --no-install-suggests -y \
jellyfin-ffmpeg \
libssl-dev \
libfontconfig1 \
libfreetype6 \
libomxil-bellagio0 \
libomxil-bellagio-bin \
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 dotnet /jellyfin/jellyfin.dll \
--datadir /config \
--cachedir /cache \
--ffmpeg /usr/bin/ffmpeg
ENTRYPOINT ["./jellyfin/jellyfin", \
"--datadir", "/config", \
"--cachedir", "/cache", \
"--ffmpeg", "/usr/lib/jellyfin-ffmpeg/ffmpeg"]
+37 -15
View File
@@ -1,15 +1,16 @@
# DESIGNED FOR BUILDING ON AMD64 ONLY
#####################################
# Requires binfm_misc registration
# https://github.com/multiarch/qemu-user-static#binfmt_misc-register
ARG DOTNET_VERSION=3.0
ARG DOTNET_VERSION=3.1
FROM node:alpine as web-builder
ARG JELLYFIN_WEB_VERSION=v10.4.0
RUN apk add curl \
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
@@ -17,28 +18,49 @@ FROM mcr.microsoft.com/dotnet/core/sdk:${DOTNET_VERSION} as builder
WORKDIR /repo
COPY . .
ENV DOTNET_CLI_TELEMETRY_OPTOUT=1
# TODO Remove or update the sed line when we update dotnet version.
RUN find . -type f -exec sed -i 's/netcoreapp2.1/netcoreapp3.0/g' {} \;
# Discard objs - may cause failures if exists
RUN find . -type d -name obj | xargs -r rm -r
# Build
RUN dotnet publish Jellyfin.Server --configuration Release --output="/jellyfin" --self-contained --runtime linux-arm64 "-p:GenerateDocumentationFile=false;DebugSymbols=false;DebugType=none"
FROM multiarch/qemu-user-static:x86_64-aarch64 as qemu
FROM mcr.microsoft.com/dotnet/core/runtime:${DOTNET_VERSION}-stretch-slim-arm64v8
FROM arm64v8/debian:buster-slim
# https://askubuntu.com/questions/972516/debian-frontend-environment-variable
ARG DEBIAN_FRONTEND="noninteractive"
# http://stackoverflow.com/questions/48162574/ddg#49462622
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=qemu /usr/bin/qemu-aarch64-static /usr/bin
RUN apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y ffmpeg \
RUN apt-get update && apt-get install --no-install-recommends --no-install-suggests -y \
ffmpeg \
libssl-dev \
ca-certificates \
libfontconfig1 \
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
ENTRYPOINT dotnet /jellyfin/jellyfin.dll \
--datadir /config \
--cachedir /cache \
--ffmpeg /usr/bin/ffmpeg
ENTRYPOINT ["./jellyfin/jellyfin", \
"--datadir", "/config", \
"--cachedir", "/cache", \
"--ffmpeg", "/usr/bin/ffmpeg"]
-2565
View File
File diff suppressed because it is too large Load Diff
+5 -10
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));
}
}
}
+7 -5
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.0</TargetFramework>
<TargetFramework>netstandard2.1</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
</Project>
+3
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)
+2
View File
@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System.IO;
namespace DvdLib.Ifo
+2
View File
@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System.IO;
namespace DvdLib.Ifo
+4
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)
+21 -13
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);
@@ -42,7 +40,7 @@ namespace DvdLib.Ifo
}
else
{
using (var vmgFs = _fileSystem.GetFileStream(vmgPath.FullName, FileOpenMode.Open, FileAccessMode.Read, FileShareMode.Read))
using (var vmgFs = new FileStream(vmgPath.FullName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (var vmgRead = new BigEndianBinaryReader(vmgFs))
{
@@ -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);
@@ -95,7 +93,7 @@ namespace DvdLib.Ifo
{
VTSPaths[vtsNum] = vtsPath;
using (var vtsFs = _fileSystem.GetFileStream(vtsPath, FileOpenMode.Open, FileAccessMode.Read, FileShareMode.Read))
using (var vtsFs = new FileStream(vtsPath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (var vtsRead = new BigEndianBinaryReader(vtsFs))
{
@@ -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);
}
}
}
}
+10 -2
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)
+3 -1
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)
{
+15 -2
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);
+10 -1
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);
}
+2
View File
@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System;
namespace DvdLib.Ifo
+115 -38
View File
@@ -1,11 +1,13 @@
#pragma warning disable CS1591
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Emby.Dlna.Main;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Dlna;
using MediaBrowser.Controller.Net;
using MediaBrowser.Model.Services;
@@ -108,12 +110,13 @@ namespace Emby.Dlna.Api
public class DlnaServerService : IService, IRequiresRequest
{
private readonly IDlnaManager _dlnaManager;
private const string XMLContentType = "text/xml; charset=UTF-8";
private readonly IDlnaManager _dlnaManager;
private readonly IHttpResultFactory _resultFactory;
private readonly IServerConfigurationManager _configurationManager;
public IRequest Request { get; set; }
private IHttpResultFactory _resultFactory;
private IContentDirectory ContentDirectory => DlnaEntryPoint.Current.ContentDirectory;
@@ -121,10 +124,14 @@ namespace Emby.Dlna.Api
private IMediaReceiverRegistrar MediaReceiverRegistrar => DlnaEntryPoint.Current.MediaReceiverRegistrar;
public DlnaServerService(IDlnaManager dlnaManager, IHttpResultFactory httpResultFactory)
public DlnaServerService(
IDlnaManager dlnaManager,
IHttpResultFactory httpResultFactory,
IServerConfigurationManager configurationManager)
{
_dlnaManager = dlnaManager;
_resultFactory = httpResultFactory;
_configurationManager = configurationManager;
}
private string GetHeader(string name)
@@ -145,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();
@@ -152,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();
@@ -159,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();
@@ -166,32 +176,32 @@ namespace Emby.Dlna.Api
return _resultFactory.GetResult(Request, xml, XMLContentType);
}
public object Post(ProcessMediaReceiverRegistrarControlRequest request)
public async Task<object> Post(ProcessMediaReceiverRegistrarControlRequest request)
{
var response = PostAsync(request.RequestStream, MediaReceiverRegistrar);
var response = await PostAsync(request.RequestStream, MediaReceiverRegistrar).ConfigureAwait(false);
return _resultFactory.GetResult(Request, response.Xml, XMLContentType);
}
public object Post(ProcessContentDirectoryControlRequest request)
public async Task<object> Post(ProcessContentDirectoryControlRequest request)
{
var response = PostAsync(request.RequestStream, ContentDirectory);
var response = await PostAsync(request.RequestStream, ContentDirectory).ConfigureAwait(false);
return _resultFactory.GetResult(Request, response.Xml, XMLContentType);
}
public object Post(ProcessConnectionManagerControlRequest request)
public async Task<object> Post(ProcessConnectionManagerControlRequest request)
{
var response = PostAsync(request.RequestStream, ConnectionManager);
var response = await PostAsync(request.RequestStream, ConnectionManager).ConfigureAwait(false);
return _resultFactory.GetResult(Request, response.Xml, XMLContentType);
}
private ControlResponse PostAsync(Stream requestStream, IUpnpService service)
private Task<ControlResponse> PostAsync(Stream requestStream, IUpnpService service)
{
var id = GetPathValue(2);
var id = GetPathValue(2).ToString();
return service.ProcessControlRequest(new ControlRequest
return service.ProcessControlRequestAsync(new ControlRequest
{
Headers = Request.Headers,
InputXml = requestStream,
@@ -200,38 +210,99 @@ namespace Emby.Dlna.Api
});
}
protected string GetPathValue(int index)
// Copied from MediaBrowser.Api/BaseApiService.cs
// TODO: Remove code duplication
/// <summary>
/// Gets the path segment at the specified index.
/// </summary>
/// <param name="index">The index of the path segment.</param>
/// <returns>The path segment at the specified index.</returns>
/// <exception cref="IndexOutOfRangeException" >Path doesn't contain enough segments.</exception>
/// <exception cref="InvalidDataException" >Path doesn't start with the base url.</exception>
protected internal ReadOnlySpan<char> GetPathValue(int index)
{
var pathInfo = Parse(Request.PathInfo);
var first = pathInfo[0];
static void ThrowIndexOutOfRangeException()
=> throw new IndexOutOfRangeException("Path doesn't contain enough segments.");
// backwards compatibility
// TODO: Work out what this is doing.
if (string.Equals(first, "mediabrowser", StringComparison.OrdinalIgnoreCase) ||
string.Equals(first, "emby", StringComparison.OrdinalIgnoreCase) ||
string.Equals(first, "jellyfin", StringComparison.OrdinalIgnoreCase))
static void ThrowInvalidDataException()
=> throw new InvalidDataException("Path doesn't start with the base url.");
ReadOnlySpan<char> path = Request.PathInfo;
// Remove the protocol part from the url
int pos = path.LastIndexOf("://");
if (pos != -1)
{
index++;
path = path.Slice(pos + 3);
}
return pathInfo[index];
}
private List<string> Parse(string pathUri)
{
var actionParts = pathUri.Split(new[] { "://" }, StringSplitOptions.None);
var pathInfo = actionParts[actionParts.Length - 1];
var optionsPos = pathInfo.LastIndexOf('?');
if (optionsPos != -1)
// Remove the query string
pos = path.LastIndexOf('?');
if (pos != -1)
{
pathInfo = pathInfo.Substring(0, optionsPos);
path = path.Slice(0, pos);
}
var args = pathInfo.Split('/');
// Remove the domain
pos = path.IndexOf('/');
if (pos != -1)
{
path = path.Slice(pos);
}
return args.Skip(1).ToList();
// Remove base url
string baseUrl = _configurationManager.Configuration.BaseUrl;
int baseUrlLen = baseUrl.Length;
if (baseUrlLen != 0)
{
if (path.StartsWith(baseUrl, StringComparison.OrdinalIgnoreCase))
{
path = path.Slice(baseUrlLen);
}
else
{
// The path doesn't start with the base url,
// how did we get here?
ThrowInvalidDataException();
}
}
// Remove leading /
path = path.Slice(1);
// Backwards compatibility
const string Emby = "emby/";
if (path.StartsWith(Emby, StringComparison.OrdinalIgnoreCase))
{
path = path.Slice(Emby.Length);
}
const string MediaBrowser = "mediabrowser/";
if (path.StartsWith(MediaBrowser, StringComparison.OrdinalIgnoreCase))
{
path = path.Slice(MediaBrowser.Length);
}
// Skip segments until we are at the right index
for (int i = 0; i < index; i++)
{
pos = path.IndexOf('/');
if (pos == -1)
{
ThrowIndexOutOfRangeException();
}
path = path.Slice(pos + 1);
}
// Remove the rest
pos = path.IndexOf('/');
if (pos != -1)
{
path = path.Slice(0, pos);
}
return path;
}
public object Get(GetIcon request)
@@ -246,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);
+5
View File
@@ -1,3 +1,6 @@
#pragma warning disable CS1591
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using MediaBrowser.Controller.Dlna;
using MediaBrowser.Controller.Net;
@@ -50,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();
@@ -60,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();
+1
View File
@@ -1,3 +1,4 @@
#pragma warning disable CS1591
namespace Emby.Dlna.Common
{
+9 -1
View File
@@ -1,3 +1,6 @@
#pragma warning disable CS1591
using System.Globalization;
namespace Emby.Dlna.Common
{
@@ -13,9 +16,14 @@ namespace Emby.Dlna.Common
public string Depth { get; set; }
/// <inheritdoc />
public override string ToString()
{
return string.Format("{0}x{1}", Height, Width);
return string.Format(
CultureInfo.InvariantCulture,
"{0}x{1}",
Height,
Width);
}
}
}
+3 -3
View File
@@ -1,3 +1,4 @@
#pragma warning disable CS1591
namespace Emby.Dlna.Common
{
@@ -13,9 +14,8 @@ namespace Emby.Dlna.Common
public string EventSubUrl { get; set; }
/// <inheritdoc />
public override string ToString()
{
return string.Format("{0}", ServiceId);
}
=> ServiceId;
}
}
+12 -9
View File
@@ -1,21 +1,24 @@
#pragma warning disable CS1591
using System.Collections.Generic;
namespace Emby.Dlna.Common
{
public class ServiceAction
{
public string Name { get; set; }
public List<Argument> ArgumentList { get; set; }
public override string ToString()
{
return Name;
}
public ServiceAction()
{
ArgumentList = new List<Argument>();
}
public string Name { get; set; }
public List<Argument> ArgumentList { get; set; }
/// <inheritdoc />
public override string ToString()
{
return Name;
}
}
}
+9 -8
View File
@@ -1,9 +1,16 @@
#pragma warning disable CS1591
using System;
namespace Emby.Dlna.Common
{
public class StateVariable
{
public StateVariable()
{
AllowedValues = Array.Empty<string>();
}
public string Name { get; set; }
public string DataType { get; set; }
@@ -12,14 +19,8 @@ namespace Emby.Dlna.Common
public string[] AllowedValues { get; set; }
/// <inheritdoc />
public override string ToString()
{
return Name;
}
public StateVariable()
{
AllowedValues = Array.Empty<string>();
}
=> Name;
}
}
+17 -9
View File
@@ -1,17 +1,9 @@
#pragma warning disable CS1591
namespace Emby.Dlna.Configuration
{
public class DlnaOptions
{
public bool EnablePlayTo { get; set; }
public bool EnableServer { get; set; }
public bool EnableDebugLog { get; set; }
public bool BlastAliveMessages { get; set; }
public bool SendOnlyMatchedHost { get; set; }
public int ClientDiscoveryIntervalSeconds { get; set; }
public int BlastAliveMessageIntervalSeconds { get; set; }
public string DefaultUserId { get; set; }
public DlnaOptions()
{
EnablePlayTo = true;
@@ -21,5 +13,21 @@ namespace Emby.Dlna.Configuration
ClientDiscoveryIntervalSeconds = 60;
BlastAliveMessageIntervalSeconds = 1800;
}
public bool EnablePlayTo { get; set; }
public bool EnableServer { get; set; }
public bool EnableDebugLog { get; set; }
public bool BlastAliveMessages { get; set; }
public bool SendOnlyMatchedHost { get; set; }
public int ClientDiscoveryIntervalSeconds { get; set; }
public int BlastAliveMessageIntervalSeconds { get; set; }
public string DefaultUserId { get; set; }
}
}
+3
View File
@@ -1,3 +1,6 @@
#nullable enable
#pragma warning disable CS1591
using System.Collections.Generic;
using Emby.Dlna.Configuration;
using MediaBrowser.Common.Configuration;
@@ -1,3 +1,6 @@
#pragma warning disable CS1591
using System.Threading.Tasks;
using Emby.Dlna.Service;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
@@ -12,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;
@@ -20,17 +27,19 @@ namespace Emby.Dlna.ConnectionManager
_logger = logger;
}
/// <inheritdoc />
public string GetServiceXml()
{
return new ConnectionManagerXmlBuilder().GetXml();
}
public ControlResponse ProcessControlRequest(ControlRequest request)
/// <inheritdoc />
public Task<ControlResponse> ProcessControlRequestAsync(ControlRequest request)
{
var profile = _dlna.GetProfile(request.Headers) ??
_dlna.GetDefaultProfile();
return new ControlHandler(_config, _logger, profile).ProcessControlRequest(request);
return new ControlHandler(_config, _logger, profile).ProcessControlRequestAsync(request);
}
}
}
@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System.Collections.Generic;
using Emby.Dlna.Common;
using Emby.Dlna.Service;
+21 -19
View File
@@ -1,5 +1,8 @@
#pragma warning disable CS1591
using System;
using System.Collections.Generic;
using System.Xml;
using Emby.Dlna.Service;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Configuration;
@@ -12,29 +15,28 @@ namespace Emby.Dlna.ConnectionManager
{
private readonly DeviceProfile _profile;
protected override IEnumerable<KeyValuePair<string, string>> GetResult(string methodName, IDictionary<string, string> methodParams)
{
if (string.Equals(methodName, "GetProtocolInfo", StringComparison.OrdinalIgnoreCase))
{
return HandleGetProtocolInfo();
}
throw new ResourceNotFoundException("Unexpected control request name: " + methodName);
}
private IEnumerable<KeyValuePair<string, string>> HandleGetProtocolInfo()
{
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "Source", _profile.ProtocolInfo },
{ "Sink", "" }
};
}
public ControlHandler(IServerConfigurationManager config, ILogger logger, DeviceProfile profile)
: base(config, logger)
{
_profile = profile;
}
/// <inheritdoc />
protected override void WriteResult(string methodName, IDictionary<string, string> methodParams, XmlWriter xmlWriter)
{
if (string.Equals(methodName, "GetProtocolInfo", StringComparison.OrdinalIgnoreCase))
{
HandleGetProtocolInfo(xmlWriter);
return;
}
throw new ResourceNotFoundException("Unexpected control request name: " + methodName);
}
private void HandleGetProtocolInfo(XmlWriter xmlWriter)
{
xmlWriter.WriteElementString("Source", _profile.ProtocolInfo);
xmlWriter.WriteElementString("Sink", string.Empty);
}
}
}
@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System.Collections.Generic;
using Emby.Dlna.Common;
+17 -15
View File
@@ -1,11 +1,15 @@
#pragma warning disable CS1591
using System;
using System.Collections.Generic;
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;
@@ -29,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,
@@ -67,12 +72,14 @@ namespace Emby.Dlna.ContentDirectory
}
}
/// <inheritdoc />
public string GetServiceXml()
{
return new ContentDirectoryXmlBuilder().GetXml();
}
public ControlResponse ProcessControlRequest(ControlRequest request)
/// <inheritdoc />
public Task<ControlResponse> ProcessControlRequestAsync(ControlRequest request)
{
var profile = _dlna.GetProfile(request.Headers) ??
_dlna.GetDefaultProfile();
@@ -97,14 +104,14 @@ namespace Emby.Dlna.ContentDirectory
_userViewManager,
_mediaEncoder,
_tvSeriesManager)
.ProcessControlRequest(request);
.ProcessControlRequestAsync(request);
}
private User GetUser(DeviceProfile profile)
{
if (!string.IsNullOrEmpty(profile.UserId))
{
var user = _userManager.GetUserById(profile.UserId);
var user = _userManager.GetUserById(Guid.Parse(profile.UserId));
if (user != null)
{
@@ -116,7 +123,7 @@ namespace Emby.Dlna.ContentDirectory
if (!string.IsNullOrEmpty(userId))
{
var user = _userManager.GetUserById(userId);
var user = _userManager.GetUserById(Guid.Parse(userId));
if (user != null)
{
@@ -126,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();
}
}
}
@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System.Collections.Generic;
using Emby.Dlna.Common;
using Emby.Dlna.Service;
+284 -270
View File
@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -8,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;
@@ -15,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;
@@ -26,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
{
@@ -44,7 +52,6 @@ namespace Emby.Dlna.ContentDirectory
private const string NS_UPNP = "urn:schemas-upnp-org:metadata-1-0/upnp/";
private readonly int _systemUpdateId;
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
private readonly DidlBuilder _didlBuilder;
@@ -58,7 +65,8 @@ namespace Emby.Dlna.ContentDirectory
string accessToken,
IImageProcessor imageProcessor,
IUserDataManager userDataManager,
User user, int systemUpdateId,
User user,
int systemUpdateId,
IServerConfigurationManager config,
ILocalizationManager localization,
IMediaSourceManager mediaSourceManager,
@@ -76,117 +84,143 @@ 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);
}
protected override IEnumerable<KeyValuePair<string, string>> GetResult(string methodName, IDictionary<string, string> methodParams)
/// <inheritdoc />
protected override void WriteResult(string methodName, IDictionary<string, string> methodParams, XmlWriter xmlWriter)
{
var deviceId = "test";
var user = _user;
const string DeviceId = "test";
if (string.Equals(methodName, "GetSearchCapabilities", StringComparison.OrdinalIgnoreCase))
return HandleGetSearchCapabilities();
{
HandleGetSearchCapabilities(xmlWriter);
return;
}
if (string.Equals(methodName, "GetSortCapabilities", StringComparison.OrdinalIgnoreCase))
return HandleGetSortCapabilities();
{
HandleGetSortCapabilities(xmlWriter);
return;
}
if (string.Equals(methodName, "GetSortExtensionCapabilities", StringComparison.OrdinalIgnoreCase))
return HandleGetSortExtensionCapabilities();
{
HandleGetSortExtensionCapabilities(xmlWriter);
return;
}
if (string.Equals(methodName, "GetSystemUpdateID", StringComparison.OrdinalIgnoreCase))
return HandleGetSystemUpdateID();
{
HandleGetSystemUpdateID(xmlWriter);
return;
}
if (string.Equals(methodName, "Browse", StringComparison.OrdinalIgnoreCase))
return HandleBrowse(methodParams, user, deviceId);
{
HandleBrowse(xmlWriter, methodParams, DeviceId);
return;
}
if (string.Equals(methodName, "X_GetFeatureList", StringComparison.OrdinalIgnoreCase))
return HandleXGetFeatureList();
{
HandleXGetFeatureList(xmlWriter);
return;
}
if (string.Equals(methodName, "GetFeatureList", StringComparison.OrdinalIgnoreCase))
return HandleGetFeatureList();
{
HandleGetFeatureList(xmlWriter);
return;
}
if (string.Equals(methodName, "X_SetBookmark", StringComparison.OrdinalIgnoreCase))
return HandleXSetBookmark(methodParams, user);
{
HandleXSetBookmark(methodParams);
return;
}
if (string.Equals(methodName, "Search", StringComparison.OrdinalIgnoreCase))
return HandleSearch(methodParams, user, deviceId);
{
HandleSearch(xmlWriter, methodParams, DeviceId);
return;
}
if (string.Equals(methodName, "X_BrowseByLetter", StringComparison.OrdinalIgnoreCase))
return HandleX_BrowseByLetter(methodParams, user, deviceId);
{
HandleXBrowseByLetter(xmlWriter, methodParams, DeviceId);
return;
}
throw new ResourceNotFoundException("Unexpected control request name: " + methodName);
}
private IEnumerable<KeyValuePair<string, string>> HandleXSetBookmark(IDictionary<string, string> sparams, User user)
private void HandleXSetBookmark(IDictionary<string, string> sparams)
{
var id = sparams["ObjectID"];
var serverItem = GetItemFromObjectId(id, user);
var serverItem = GetItemFromObjectId(id);
var item = serverItem.Item;
var newbookmark = int.Parse(sparams["PosSecond"], _usCulture);
var newbookmark = int.Parse(sparams["PosSecond"], CultureInfo.InvariantCulture);
var userdata = _userDataManager.GetUserData(user, item);
var userdata = _userDataManager.GetUserData(_user, item);
userdata.PlaybackPositionTicks = TimeSpan.FromSeconds(newbookmark).Ticks;
_userDataManager.SaveUserData(user, item, userdata, UserDataSaveReason.TogglePlayed,
_userDataManager.SaveUserData(_user, item, userdata, UserDataSaveReason.TogglePlayed,
CancellationToken.None);
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
}
private IEnumerable<KeyValuePair<string, string>> HandleGetSearchCapabilities()
private void HandleGetSearchCapabilities(XmlWriter xmlWriter)
{
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "SearchCaps", "res@resolution,res@size,res@duration,dc:title,dc:creator,upnp:actor,upnp:artist,upnp:genre,upnp:album,dc:date,upnp:class,@id,@refID,@protocolInfo,upnp:author,dc:description,pv:avKeywords" }
};
xmlWriter.WriteElementString(
"SearchCaps",
"res@resolution,res@size,res@duration,dc:title,dc:creator,upnp:actor,upnp:artist,upnp:genre,upnp:album,dc:date,upnp:class,@id,@refID,@protocolInfo,upnp:author,dc:description,pv:avKeywords");
}
private IEnumerable<KeyValuePair<string, string>> HandleGetSortCapabilities()
private void HandleGetSortCapabilities(XmlWriter xmlWriter)
{
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "SortCaps", "res@duration,res@size,res@bitrate,dc:date,dc:title,dc:size,upnp:album,upnp:artist,upnp:albumArtist,upnp:episodeNumber,upnp:genre,upnp:originalTrackNumber,upnp:rating" }
};
xmlWriter.WriteElementString(
"SortCaps",
"res@duration,res@size,res@bitrate,dc:date,dc:title,dc:size,upnp:album,upnp:artist,upnp:albumArtist,upnp:episodeNumber,upnp:genre,upnp:originalTrackNumber,upnp:rating");
}
private IEnumerable<KeyValuePair<string, string>> HandleGetSortExtensionCapabilities()
private void HandleGetSortExtensionCapabilities(XmlWriter xmlWriter)
{
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "SortExtensionCaps", "res@duration,res@size,res@bitrate,dc:date,dc:title,dc:size,upnp:album,upnp:artist,upnp:albumArtist,upnp:episodeNumber,upnp:genre,upnp:originalTrackNumber,upnp:rating" }
};
xmlWriter.WriteElementString(
"SortExtensionCaps",
"res@duration,res@size,res@bitrate,dc:date,dc:title,dc:size,upnp:album,upnp:artist,upnp:albumArtist,upnp:episodeNumber,upnp:genre,upnp:originalTrackNumber,upnp:rating");
}
private IEnumerable<KeyValuePair<string, string>> HandleGetSystemUpdateID()
private void HandleGetSystemUpdateID(XmlWriter xmlWriter)
{
var headers = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
headers.Add("Id", _systemUpdateId.ToString(_usCulture));
return headers;
xmlWriter.WriteElementString("Id", _systemUpdateId.ToString(CultureInfo.InvariantCulture));
}
private IEnumerable<KeyValuePair<string, string>> HandleGetFeatureList()
private void HandleGetFeatureList(XmlWriter xmlWriter)
{
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "FeatureList", GetFeatureListXml() }
};
xmlWriter.WriteElementString("FeatureList", WriteFeatureListXml());
}
private IEnumerable<KeyValuePair<string, string>> HandleXGetFeatureList()
{
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "FeatureList", GetFeatureListXml() }
};
}
private void HandleXGetFeatureList(XmlWriter xmlWriter)
=> HandleGetFeatureList(xmlWriter);
private string GetFeatureListXml()
private string WriteFeatureListXml()
{
// TODO: clean this up
var builder = new StringBuilder();
builder.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
@@ -213,7 +247,7 @@ namespace Emby.Dlna.ContentDirectory
return defaultValue;
}
private IEnumerable<KeyValuePair<string, string>> HandleBrowse(IDictionary<string, string> sparams, User user, string deviceId)
private void HandleBrowse(XmlWriter xmlWriter, IDictionary<string, string> sparams, string deviceId)
{
var id = sparams["ObjectID"];
var flag = sparams["BrowseFlag"];
@@ -237,101 +271,95 @@ namespace Emby.Dlna.ContentDirectory
start = startVal;
}
var settings = new XmlWriterSettings
{
Encoding = Encoding.UTF8,
CloseOutput = false,
OmitXmlDeclaration = true,
ConformanceLevel = ConformanceLevel.Fragment
};
StringWriter builder = new StringWriterWithEncoding(Encoding.UTF8);
int totalCount;
var dlnaOptions = _config.GetDlnaConfiguration();
using (var writer = XmlWriter.Create(builder, settings))
using (StringWriter builder = new StringWriterWithEncoding(Encoding.UTF8))
{
//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);
DidlBuilder.WriteXmlRootAttributes(_profile, writer);
var serverItem = GetItemFromObjectId(id, user);
var item = serverItem.Item;
if (string.Equals(flag, "BrowseMetadata"))
var settings = new XmlWriterSettings()
{
totalCount = 1;
Encoding = Encoding.UTF8,
CloseOutput = false,
OmitXmlDeclaration = true,
ConformanceLevel = ConformanceLevel.Fragment
};
if (item.IsDisplayedAsFolder || serverItem.StubType.HasValue)
{
var childrenResult = GetUserItems(item, serverItem.StubType, user, sortCriteria, start, requestedCount);
_didlBuilder.WriteFolderElement(writer, item, serverItem.StubType, null, childrenResult.TotalRecordCount, filter, id);
}
else
{
_didlBuilder.WriteItemElement(dlnaOptions, writer, item, user, null, null, deviceId, filter);
}
provided++;
}
else
using (var writer = XmlWriter.Create(builder, settings))
{
var childrenResult = GetUserItems(item, serverItem.StubType, user, sortCriteria, start, requestedCount);
totalCount = childrenResult.TotalRecordCount;
writer.WriteStartElement(string.Empty, "DIDL-Lite", NS_DIDL);
provided = childrenResult.Items.Count;
writer.WriteAttributeString("xmlns", "dc", null, NS_DC);
writer.WriteAttributeString("xmlns", "dlna", null, NS_DLNA);
writer.WriteAttributeString("xmlns", "upnp", null, NS_UPNP);
foreach (var i in childrenResult.Items)
DidlBuilder.WriteXmlRootAttributes(_profile, writer);
var serverItem = GetItemFromObjectId(id);
var item = serverItem.Item;
if (string.Equals(flag, "BrowseMetadata", StringComparison.Ordinal))
{
var childItem = i.Item;
var displayStubType = i.StubType;
totalCount = 1;
if (childItem.IsDisplayedAsFolder || displayStubType.HasValue)
if (item.IsDisplayedAsFolder || serverItem.StubType.HasValue)
{
var childCount = (GetUserItems(childItem, displayStubType, user, sortCriteria, null, 0))
.TotalRecordCount;
var childrenResult = GetUserItems(item, serverItem.StubType, _user, sortCriteria, start, requestedCount);
_didlBuilder.WriteFolderElement(writer, childItem, displayStubType, item, childCount, filter);
_didlBuilder.WriteFolderElement(writer, item, serverItem.StubType, null, childrenResult.TotalRecordCount, filter, id);
}
else
{
_didlBuilder.WriteItemElement(dlnaOptions, writer, childItem, user, item, serverItem.StubType, deviceId, filter);
var dlnaOptions = _config.GetDlnaConfiguration();
_didlBuilder.WriteItemElement(writer, item, _user, null, null, deviceId, filter);
}
provided++;
}
else
{
var childrenResult = GetUserItems(item, serverItem.StubType, _user, sortCriteria, start, requestedCount);
totalCount = childrenResult.TotalRecordCount;
provided = childrenResult.Items.Count;
var dlnaOptions = _config.GetDlnaConfiguration();
foreach (var i in childrenResult.Items)
{
var childItem = i.Item;
var displayStubType = i.StubType;
if (childItem.IsDisplayedAsFolder || displayStubType.HasValue)
{
var childCount = GetUserItems(childItem, displayStubType, _user, sortCriteria, null, 0)
.TotalRecordCount;
_didlBuilder.WriteFolderElement(writer, childItem, displayStubType, item, childCount, filter);
}
else
{
_didlBuilder.WriteItemElement(writer, childItem, _user, item, serverItem.StubType, deviceId, filter);
}
}
}
writer.WriteFullEndElement();
}
writer.WriteFullEndElement();
//writer.WriteEndDocument();
xmlWriter.WriteElementString("Result", builder.ToString());
}
var resXML = builder.ToString();
return new[]
{
new KeyValuePair<string,string>("Result", resXML),
new KeyValuePair<string,string>("NumberReturned", provided.ToString(_usCulture)),
new KeyValuePair<string,string>("TotalMatches", totalCount.ToString(_usCulture)),
new KeyValuePair<string,string>("UpdateID", _systemUpdateId.ToString(_usCulture))
};
xmlWriter.WriteElementString("NumberReturned", provided.ToString(CultureInfo.InvariantCulture));
xmlWriter.WriteElementString("TotalMatches", totalCount.ToString(CultureInfo.InvariantCulture));
xmlWriter.WriteElementString("UpdateID", _systemUpdateId.ToString(CultureInfo.InvariantCulture));
}
private IEnumerable<KeyValuePair<string, string>> HandleX_BrowseByLetter(IDictionary<string, string> sparams, User user, string deviceId)
private void HandleXBrowseByLetter(XmlWriter xmlWriter, IDictionary<string, string> sparams, string deviceId)
{
// TODO: Implement this method
return HandleSearch(sparams, user, deviceId);
HandleSearch(xmlWriter, sparams, deviceId);
}
private IEnumerable<KeyValuePair<string, string>> HandleSearch(IDictionary<string, string> sparams, User user, string deviceId)
private void HandleSearch(XmlWriter xmlWriter, IDictionary<string, string> sparams, string deviceId)
{
var searchCriteria = new SearchCriteria(GetValueOrDefault(sparams, "SearchCriteria", ""));
var sortCriteria = new SortCriteria(GetValueOrDefault(sparams, "SortCriteria", ""));
@@ -354,109 +382,96 @@ namespace Emby.Dlna.ContentDirectory
start = startVal;
}
var settings = new XmlWriterSettings
QueryResult<BaseItem> childrenResult;
using (StringWriter builder = new StringWriterWithEncoding(Encoding.UTF8))
{
Encoding = Encoding.UTF8,
CloseOutput = false,
OmitXmlDeclaration = true,
ConformanceLevel = ConformanceLevel.Fragment
};
StringWriter builder = new StringWriterWithEncoding(Encoding.UTF8);
int totalCount = 0;
int provided = 0;
using (var writer = XmlWriter.Create(builder, settings))
{
//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);
DidlBuilder.WriteXmlRootAttributes(_profile, writer);
var serverItem = GetItemFromObjectId(sparams["ContainerID"], user);
var item = serverItem.Item;
var childrenResult = (GetChildrenSorted(item, user, searchCriteria, sortCriteria, start, requestedCount));
totalCount = childrenResult.TotalRecordCount;
provided = childrenResult.Items.Count;
var dlnaOptions = _config.GetDlnaConfiguration();
foreach (var i in childrenResult.Items)
var settings = new XmlWriterSettings()
{
if (i.IsDisplayedAsFolder)
{
var childCount = (GetChildrenSorted(i, user, searchCriteria, sortCriteria, null, 0))
.TotalRecordCount;
Encoding = Encoding.UTF8,
CloseOutput = false,
OmitXmlDeclaration = true,
ConformanceLevel = ConformanceLevel.Fragment
};
_didlBuilder.WriteFolderElement(writer, i, null, item, childCount, filter);
}
else
using (var writer = XmlWriter.Create(builder, settings))
{
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);
DidlBuilder.WriteXmlRootAttributes(_profile, writer);
var serverItem = GetItemFromObjectId(sparams["ContainerID"]);
var item = serverItem.Item;
childrenResult = GetChildrenSorted(item, _user, searchCriteria, sortCriteria, start, requestedCount);
var dlnaOptions = _config.GetDlnaConfiguration();
foreach (var i in childrenResult.Items)
{
_didlBuilder.WriteItemElement(dlnaOptions, writer, i, user, item, serverItem.StubType, deviceId, filter);
if (i.IsDisplayedAsFolder)
{
var childCount = GetChildrenSorted(i, _user, searchCriteria, sortCriteria, null, 0)
.TotalRecordCount;
_didlBuilder.WriteFolderElement(writer, i, null, item, childCount, filter);
}
else
{
_didlBuilder.WriteItemElement(writer, i, _user, item, serverItem.StubType, deviceId, filter);
}
}
writer.WriteFullEndElement();
}
writer.WriteFullEndElement();
//writer.WriteEndDocument();
xmlWriter.WriteElementString("Result", builder.ToString());
}
var resXML = builder.ToString();
return new List<KeyValuePair<string, string>>
{
new KeyValuePair<string,string>("Result", resXML),
new KeyValuePair<string,string>("NumberReturned", provided.ToString(_usCulture)),
new KeyValuePair<string,string>("TotalMatches", totalCount.ToString(_usCulture)),
new KeyValuePair<string,string>("UpdateID", _systemUpdateId.ToString(_usCulture))
};
xmlWriter.WriteElementString("NumberReturned", childrenResult.Items.Count.ToString(CultureInfo.InvariantCulture));
xmlWriter.WriteElementString("TotalMatches", childrenResult.TotalRecordCount.ToString(CultureInfo.InvariantCulture));
xmlWriter.WriteElementString("UpdateID", _systemUpdateId.ToString(CultureInfo.InvariantCulture));
}
private QueryResult<BaseItem> GetChildrenSorted(BaseItem item, User user, SearchCriteria search, SortCriteria sort, int? startIndex, int? limit)
{
var folder = (Folder)item;
var sortOrders = new List<string>();
if (!folder.IsPreSorted)
{
sortOrders.Add(ItemSortBy.SortName);
}
var sortOrders = folder.IsPreSorted
? Array.Empty<(string, SortOrder)>()
: new[] { (ItemSortBy.SortName, sort.SortOrder) };
var mediaTypes = new List<string>();
string[] mediaTypes = Array.Empty<string>();
bool? isFolder = null;
if (search.SearchType == SearchType.Audio)
{
mediaTypes.Add(MediaType.Audio);
mediaTypes = new[] { MediaType.Audio };
isFolder = false;
}
else if (search.SearchType == SearchType.Video)
{
mediaTypes.Add(MediaType.Video);
mediaTypes = new[] { MediaType.Video };
isFolder = false;
}
else if (search.SearchType == SearchType.Image)
{
mediaTypes.Add(MediaType.Photo);
mediaTypes = new[] { MediaType.Photo };
isFolder = false;
}
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;
}
@@ -464,13 +479,13 @@ namespace Emby.Dlna.ContentDirectory
{
Limit = limit,
StartIndex = startIndex,
OrderBy = sortOrders.Select(i => new ValueTuple<string, SortOrder>(i, sort.SortOrder)).ToArray(),
OrderBy = sortOrders,
User = user,
Recursive = true,
IsMissing = false,
ExcludeItemTypes = new[] { typeof(Book).Name },
IsFolder = isFolder,
MediaTypes = mediaTypes.ToArray(),
MediaTypes = mediaTypes,
DtoOptions = GetDtoOptions()
});
}
@@ -514,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);
}
}
@@ -549,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)
{
@@ -581,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)
@@ -709,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)
@@ -722,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)
@@ -771,11 +782,11 @@ namespace Emby.Dlna.ContentDirectory
})
.ToArray();
return new QueryResult<ServerItem>
return ApplyPaging(new QueryResult<ServerItem>
{
Items = folders,
TotalRecordCount = folders.Length
};
}, startIndex, limit);
}
private QueryResult<ServerItem> GetTvFolders(BaseItem item, User user, StubType? stubType, SortCriteria sort, int? startIndex, int? limit)
@@ -794,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)
@@ -872,10 +883,10 @@ namespace Emby.Dlna.ContentDirectory
query.Parent = parent;
query.SetUser(user);
query.OrderBy = new ValueTuple<string, SortOrder>[]
query.OrderBy = new[]
{
new ValueTuple<string, SortOrder> (ItemSortBy.DatePlayed, SortOrder.Descending),
new ValueTuple<string, SortOrder> (ItemSortBy.SortName, SortOrder.Ascending)
(ItemSortBy.DatePlayed, SortOrder.Descending),
(ItemSortBy.SortName, SortOrder.Ascending)
};
query.IsResumable = true;
@@ -912,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 };
@@ -1107,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;
@@ -1121,31 +1132,29 @@ namespace Emby.Dlna.ContentDirectory
private QueryResult<ServerItem> GetMusicLatest(BaseItem parent, User user, InternalItemsQuery query)
{
query.OrderBy = new ValueTuple<string, SortOrder>[] { };
query.OrderBy = Array.Empty<(string, SortOrder)>();
var items = _userViewManager.GetLatestItems(new LatestItemsQuery
{
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 = new ValueTuple<string, SortOrder>[] { };
query.OrderBy = Array.Empty<(string, SortOrder)>();
var result = _tvSeriesManager.GetNextUp(new NextUpQuery
{
Limit = query.Limit,
StartIndex = query.StartIndex,
UserId = query.User.Id
}, new[] { parent }, query.DtoOptions);
return ToResult(result);
@@ -1153,7 +1162,7 @@ namespace Emby.Dlna.ContentDirectory
private QueryResult<ServerItem> GetTvLatest(BaseItem parent, User user, InternalItemsQuery query)
{
query.OrderBy = new ValueTuple<string, SortOrder>[] { };
query.OrderBy = Array.Empty<(string, SortOrder)>();
var items = _userViewManager.GetLatestItems(new LatestItemsQuery
{
@@ -1162,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);
@@ -1170,16 +1178,16 @@ namespace Emby.Dlna.ContentDirectory
private QueryResult<ServerItem> GetMovieLatest(BaseItem parent, User user, InternalItemsQuery query)
{
query.OrderBy = new ValueTuple<string, SortOrder>[] { };
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);
@@ -1212,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()
@@ -1274,13 +1286,14 @@ namespace Emby.Dlna.ContentDirectory
private void SetSorting(InternalItemsQuery query, SortCriteria sort, bool isPreSorted)
{
var sortOrders = new List<string>();
if (!isPreSorted)
if (isPreSorted)
{
sortOrders.Add(ItemSortBy.SortName);
query.OrderBy = Array.Empty<(string, SortOrder)>();
}
else
{
query.OrderBy = new[] { (ItemSortBy.SortName, sort.SortOrder) };
}
query.OrderBy = sortOrders.Select(i => new ValueTuple<string, SortOrder>(i, sort.SortOrder)).ToArray();
}
private QueryResult<ServerItem> ApplyPaging(QueryResult<ServerItem> result, int? startIndex, int? limit)
@@ -1290,24 +1303,24 @@ 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;
// After using PlayTo, MediaMonkey sends a request to the server trying to get item info
const string paramsSrch = "Params=";
var paramsIndex = id.IndexOf(paramsSrch, StringComparison.OrdinalIgnoreCase);
const string ParamsSrch = "Params=";
var paramsIndex = id.IndexOf(ParamsSrch, StringComparison.OrdinalIgnoreCase);
if (paramsIndex != -1)
{
id = id.Substring(paramsIndex + paramsSrch.Length);
id = id.Substring(paramsIndex + ParamsSrch.Length);
var parts = id.Split(';');
id = parts[23];
@@ -1335,7 +1348,7 @@ namespace Emby.Dlna.ContentDirectory
};
}
_logger.LogError("Error parsing item Id: {id}. Returning user root folder.", id);
Logger.LogError("Error parsing item Id: {id}. Returning user root folder.", id);
return new ServerItem(_libraryManager.GetUserRootFolder());
}
@@ -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)
@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System.Collections.Generic;
using Emby.Dlna.Common;
+2
View File
@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System.IO;
using Microsoft.AspNetCore.Http;
+7 -5
View File
@@ -1,18 +1,20 @@
#pragma warning disable CS1591
using System.Collections.Generic;
namespace Emby.Dlna
{
public class ControlResponse
{
public ControlResponse()
{
Headers = new Dictionary<string, string>();
}
public IDictionary<string, string> Headers { get; set; }
public string Xml { get; set; }
public bool IsSuccessful { get; set; }
public ControlResponse()
{
Headers = new Dictionary<string, string>();
}
}
}
+266 -140
View File
@@ -1,27 +1,34 @@
#pragma warning disable CS1591
using System;
using System.Globalization;
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;
using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Drawing;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Extensions;
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
{
@@ -44,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,
@@ -55,7 +63,8 @@ namespace Emby.Dlna.Didl
ILocalizationManager localization,
IMediaSourceManager mediaSourceManager,
ILogger logger,
IMediaEncoder mediaEncoder)
IMediaEncoder mediaEncoder,
ILibraryManager libraryManager)
{
_profile = profile;
_user = user;
@@ -67,6 +76,7 @@ namespace Emby.Dlna.Didl
_mediaSourceManager = mediaSourceManager;
_logger = logger;
_mediaEncoder = mediaEncoder;
_libraryManager = libraryManager;
}
public static string NormalizeDlnaMediaUrl(string url)
@@ -74,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
{
@@ -88,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();
@@ -126,7 +136,6 @@ namespace Emby.Dlna.Didl
}
public void WriteItemElement(
DlnaOptions options,
XmlWriter writer,
BaseItem item,
User user,
@@ -163,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)
{
@@ -225,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);
@@ -282,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);
@@ -292,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);
@@ -334,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));
}
}
@@ -368,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);
@@ -391,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);
@@ -504,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)
@@ -520,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);
@@ -547,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");
@@ -576,7 +663,7 @@ namespace Emby.Dlna.Didl
AddGeneralProperties(folder, stubType, context, writer, filter);
AddCover(folder, context, stubType, writer);
AddCover(folder, stubType, writer);
writer.WriteFullEndElement();
}
@@ -588,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))
@@ -609,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);
}
@@ -632,7 +722,7 @@ namespace Emby.Dlna.Didl
{
if (item.PremiereDate.HasValue)
{
AddValue(writer, "dc", "date", item.PremiereDate.Value.ToString("o"), NS_DC);
AddValue(writer, "dc", "date", item.PremiereDate.Value.ToString("o", CultureInfo.InvariantCulture), NS_DC);
}
}
@@ -660,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))
// {
@@ -675,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);
@@ -762,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)
@@ -869,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);
@@ -911,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,
@@ -950,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);
@@ -969,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)
@@ -981,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);
@@ -1013,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
//{
//}
@@ -1095,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,
+4 -4
View File
@@ -1,5 +1,6 @@
#pragma warning disable CS1591
using System;
using MediaBrowser.Model.Extensions;
namespace Emby.Dlna.Didl
{
@@ -11,12 +12,11 @@ namespace Emby.Dlna.Didl
public Filter()
: this("*")
{
}
public Filter(string filter)
{
_all = StringHelper.EqualsIgnoreCase(filter, "*");
_all = string.Equals(filter, "*", StringComparison.OrdinalIgnoreCase);
_fields = (filter ?? string.Empty).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
}
@@ -25,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);
}
}
}
+3 -1
View File
@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System;
using System.IO;
using System.Text;
@@ -51,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;
}
}
+31 -9
View File
@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -29,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;
@@ -47,7 +49,7 @@ namespace Emby.Dlna
_xmlSerializer = xmlSerializer;
_fileSystem = fileSystem;
_appPaths = appPaths;
_logger = loggerFactory.CreateLogger("Dlna");
_logger = loggerFactory.CreateLogger<DlnaManager>();
_jsonSerializer = jsonSerializer;
_appHost = appHost;
}
@@ -86,7 +88,6 @@ namespace Emby.Dlna
.Select(i => i.Item2)
.ToList();
}
}
public DeviceProfile GetDefaultProfile()
@@ -139,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;
@@ -249,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);
@@ -385,7 +404,7 @@ namespace Emby.Dlna
{
Directory.CreateDirectory(systemProfilesPath);
using (var fileStream = _fileSystem.GetFileStream(path, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read))
using (var fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read))
{
await stream.CopyToAsync(fileStream);
}
@@ -437,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");
@@ -462,6 +482,7 @@ namespace Emby.Dlna
{
_profiles[path] = new Tuple<InternalProfileInfo, DeviceProfile>(GetInternalProfileInfo(_fileSystem.GetFileInfo(path), type), profile);
}
SerializeToXml(profile, path);
}
@@ -472,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>
@@ -491,6 +512,7 @@ namespace Emby.Dlna
class InternalProfileInfo
{
internal DeviceProfileInfo Info { get; set; }
internal string Path { get; set; }
}
@@ -564,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(),
+19 -1
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>
@@ -12,9 +17,22 @@
</ItemGroup>
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFramework>netstandard2.1</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<TreatWarningsAsErrors Condition=" '$(Configuration)' == 'Release'" >true</TreatWarningsAsErrors>
</PropertyGroup>
<!-- Code Analyzers-->
<ItemGroup Condition=" '$(Configuration)' == 'Debug' ">
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.9.8" PrivateAssets="All" />
<PackageReference Include="SerilogAnalyzer" Version="0.15.0" PrivateAssets="All" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All" />
<PackageReference Include="SmartAnalyzers.MultithreadingAnalyzer" Version="1.1.31" PrivateAssets="All" />
</ItemGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<CodeAnalysisRuleSet>../jellyfin.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
+8 -5
View File
@@ -1,17 +1,20 @@
#pragma warning disable CS1591
using System.Collections.Generic;
namespace Emby.Dlna
{
public class EventSubscriptionResponse
{
public string Content { get; set; }
public string ContentType { get; set; }
public Dictionary<string, string> Headers { get; set; }
public EventSubscriptionResponse()
{
Headers = new Dictionary<string, string>();
}
public string Content { get; set; }
public string ContentType { get; set; }
public Dictionary<string, string> Headers { get; set; }
}
}
+23 -24
View File
@@ -1,8 +1,11 @@
#pragma warning disable CS1591
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using MediaBrowser.Common.Extensions;
@@ -28,28 +31,26 @@ namespace Emby.Dlna.Eventing
public EventSubscriptionResponse RenewEventSubscription(string subscriptionId, string notificationType, string requestedTimeoutString, string callbackUrl)
{
var subscription = GetSubscription(subscriptionId, false);
int timeoutSeconds;
// Remove logging for now because some devices are sending this very frequently
// TODO re-enable with dlna debug logging setting
//_logger.LogDebug("Renewing event subscription for {0} with timeout of {1} to {2}",
// subscription.NotificationType,
// timeout,
// subscription.CallbackUrl);
if (subscription != null)
{
subscription.TimeoutSeconds = ParseTimeout(requestedTimeoutString) ?? 300;
timeoutSeconds = subscription.TimeoutSeconds;
int timeoutSeconds = subscription.TimeoutSeconds;
subscription.SubscriptionTime = DateTime.UtcNow;
}
else
{
timeoutSeconds = 300;
_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)
@@ -57,12 +58,10 @@ namespace Emby.Dlna.Eventing
var timeout = ParseTimeout(requestedTimeoutString) ?? 300;
var id = "uuid:" + Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture);
// Remove logging for now because some devices are sending this very frequently
// TODO re-enable with dlna debug logging setting
//_logger.LogDebug("Creating event subscription for {0} with timeout of {1} to {2}",
// notificationType,
// timeout,
// callbackUrl);
_logger.LogDebug("Creating event subscription for {0} with timeout of {1} to {2}",
notificationType,
timeout,
callbackUrl);
_subscriptions.TryAdd(id, new EventSubscription
{
@@ -159,6 +158,7 @@ namespace Emby.Dlna.Eventing
builder.Append("</" + key + ">");
builder.Append("</e:property>");
}
builder.Append("</e:propertyset>");
var options = new HttpRequestOptions
@@ -176,9 +176,8 @@ namespace Emby.Dlna.Eventing
try
{
using (await _httpClient.SendAsync(options, "NOTIFY").ConfigureAwait(false))
using (await _httpClient.SendAsync(options, new HttpMethod("NOTIFY")).ConfigureAwait(false))
{
}
}
catch (OperationCanceledException)
+7 -2
View File
@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System;
namespace Emby.Dlna.Eventing
@@ -5,14 +7,19 @@ 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; }
public bool IsExpired => SubscriptionTime.AddSeconds(TimeoutSeconds) >= DateTime.UtcNow;
public void IncrementTriggerCount()
{
if (TriggerCount == long.MaxValue)
@@ -22,7 +29,5 @@ namespace Emby.Dlna.Eventing
TriggerCount++;
}
public bool IsExpired => SubscriptionTime.AddSeconds(TimeoutSeconds) >= DateTime.UtcNow;
}
}
+1
View File
@@ -1,3 +1,4 @@
#pragma warning disable CS1591
namespace Emby.Dlna
{
+1
View File
@@ -1,3 +1,4 @@
#pragma warning disable CS1591
namespace Emby.Dlna
{
+1
View File
@@ -1,3 +1,4 @@
#pragma warning disable CS1591
namespace Emby.Dlna
{
+1
View File
@@ -1,3 +1,4 @@
#pragma warning disable CS1591
namespace Emby.Dlna
{
+5 -1
View File
@@ -1,3 +1,7 @@
#pragma warning disable CS1591
using System.Threading.Tasks;
namespace Emby.Dlna
{
public interface IUpnpService
@@ -13,6 +17,6 @@ namespace Emby.Dlna
/// </summary>
/// <param name="request">The request.</param>
/// <returns>ControlResponse.</returns>
ControlResponse ProcessControlRequest(ControlRequest request);
Task<ControlResponse> ProcessControlRequestAsync(ControlRequest request);
}
}
+55 -36
View File
@@ -1,6 +1,8 @@
#pragma warning disable CS1591
using System;
using System.Net.Sockets;
using System.Globalization;
using System.Net.Sockets;
using System.Threading;
using System.Threading.Tasks;
using Emby.Dlna.PlayTo;
@@ -24,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;
@@ -45,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,
@@ -95,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,
@@ -104,7 +106,7 @@ namespace Emby.Dlna.Main
libraryManager,
config,
userManager,
_logger,
loggerFactory.CreateLogger<ContentDirectory.ContentDirectory>(),
httpClient,
localizationManager,
mediaSourceManager,
@@ -112,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;
}
@@ -122,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();
@@ -169,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
};
@@ -220,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)
{
@@ -251,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";
@@ -264,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),
@@ -276,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)
@@ -308,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(':');
@@ -324,7 +342,6 @@ namespace Emby.Dlna.Main
device.DeviceType = serviceParts[2];
}
private readonly object _syncLock = new object();
private void StartPlayToManager()
{
lock (_syncLock)
@@ -336,7 +353,8 @@ namespace Emby.Dlna.Main
try
{
_manager = new PlayToManager(_logger,
_manager = new PlayToManager(
_logger,
_sessionManager,
_libraryManager,
_userManager,
@@ -375,6 +393,7 @@ namespace Emby.Dlna.Main
{
_logger.LogError(ex, "Error disposing PlayTo manager");
}
_manager = null;
}
}
@@ -401,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;
}
}
}
@@ -1,5 +1,8 @@
#pragma warning disable CS1591
using System;
using System.Collections.Generic;
using System.Xml;
using Emby.Dlna.Service;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Configuration;
@@ -9,35 +12,33 @@ namespace Emby.Dlna.MediaReceiverRegistrar
{
public class ControlHandler : BaseControlHandler
{
protected override IEnumerable<KeyValuePair<string, string>> GetResult(string methodName, IDictionary<string, string> methodParams)
{
if (string.Equals(methodName, "IsAuthorized", StringComparison.OrdinalIgnoreCase))
return HandleIsAuthorized();
if (string.Equals(methodName, "IsValidated", StringComparison.OrdinalIgnoreCase))
return HandleIsValidated();
throw new ResourceNotFoundException("Unexpected control request name: " + methodName);
}
private static IEnumerable<KeyValuePair<string, string>> HandleIsAuthorized()
{
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "Result", "1" }
};
}
private static IEnumerable<KeyValuePair<string, string>> HandleIsValidated()
{
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "Result", "1" }
};
}
public ControlHandler(IServerConfigurationManager config, ILogger logger)
: base(config, logger)
{
}
/// <inheritdoc />
protected override void WriteResult(string methodName, IDictionary<string, string> methodParams, XmlWriter xmlWriter)
{
if (string.Equals(methodName, "IsAuthorized", StringComparison.OrdinalIgnoreCase))
{
HandleIsAuthorized(xmlWriter);
return;
}
if (string.Equals(methodName, "IsValidated", StringComparison.OrdinalIgnoreCase))
{
HandleIsValidated(xmlWriter);
return;
}
throw new ResourceNotFoundException("Unexpected control request name: " + methodName);
}
private static void HandleIsAuthorized(XmlWriter xmlWriter)
=> xmlWriter.WriteElementString("Result", "1");
private static void HandleIsValidated(XmlWriter xmlWriter)
=> xmlWriter.WriteElementString("Result", "1");
}
}
@@ -1,3 +1,6 @@
#pragma warning disable CS1591
using System.Threading.Tasks;
using Emby.Dlna.Service;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
@@ -9,23 +12,28 @@ 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;
}
/// <inheritdoc />
public string GetServiceXml()
{
return new MediaReceiverRegistrarXmlBuilder().GetXml();
}
public ControlResponse ProcessControlRequest(ControlRequest request)
/// <inheritdoc />
public Task<ControlResponse> ProcessControlRequestAsync(ControlRequest request)
{
return new ControlHandler(
_config,
Logger)
.ProcessControlRequest(request);
.ProcessControlRequestAsync(request);
}
}
}
@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System.Collections.Generic;
using Emby.Dlna.Common;
using Emby.Dlna.Service;
@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System.Collections.Generic;
using Emby.Dlna.Common;
+79 -56
View File
@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -17,8 +19,6 @@ namespace Emby.Dlna.PlayTo
{
public class Device : IDisposable
{
#region Fields & Properties
private Timer _timer;
public DeviceInfo Properties { get; set; }
@@ -32,9 +32,10 @@ namespace Emby.Dlna.PlayTo
{
get
{
RefreshVolumeIfNeeded();
RefreshVolumeIfNeeded().GetAwaiter().GetResult();
return _volume;
}
set => _volume = value;
}
@@ -50,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; }
@@ -74,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
{
@@ -139,8 +140,6 @@ namespace Emby.Dlna.PlayTo
}
}
#region Commanding
public Task VolumeDown(CancellationToken cancellationToken)
{
var sendVolume = Math.Max(Volume - 5, 0);
@@ -209,7 +208,9 @@ namespace Emby.Dlna.PlayTo
var command = rendererCommands.ServiceActions.FirstOrDefault(c => c.Name == "SetMute");
if (command == null)
{
return false;
}
var service = GetServiceRenderingControl();
@@ -221,7 +222,7 @@ namespace Emby.Dlna.PlayTo
_logger.LogDebug("Setting mute");
var value = mute ? 1 : 0;
await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType, value))
await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType, value))
.ConfigureAwait(false);
IsMuted = mute;
@@ -230,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)
{
@@ -238,7 +239,9 @@ namespace Emby.Dlna.PlayTo
var command = rendererCommands.ServiceActions.FirstOrDefault(c => c.Name == "SetVolume");
if (command == null)
{
return;
}
var service = GetServiceRenderingControl();
@@ -251,7 +254,7 @@ namespace Emby.Dlna.PlayTo
// Remote control will perform better
Volume = value;
await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType, value))
await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType, value))
.ConfigureAwait(false);
}
@@ -261,7 +264,9 @@ namespace Emby.Dlna.PlayTo
var command = avCommands.ServiceActions.FirstOrDefault(c => c.Name == "Seek");
if (command == null)
{
return;
}
var service = GetAvTransportService();
@@ -270,7 +275,7 @@ namespace Emby.Dlna.PlayTo
throw new InvalidOperationException("Unable to find service");
}
await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, string.Format("{0:hh}:{0:mm}:{0:ss}", value), "REL_TIME"))
await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, string.Format("{0:hh}:{0:mm}:{0:ss}", value), "REL_TIME"))
.ConfigureAwait(false);
RestartTimer(true);
@@ -286,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>
{
@@ -302,7 +309,7 @@ namespace Emby.Dlna.PlayTo
}
var post = avCommands.BuildPost(command, service.ServiceType, url, dictionary);
await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, post, header: header)
await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, post, header: header)
.ConfigureAwait(false);
await Task.Delay(50).ConfigureAwait(false);
@@ -344,7 +351,12 @@ namespace Emby.Dlna.PlayTo
throw new InvalidOperationException("Unable to find service");
}
return new SsdpHttpClient(_httpClient, _config).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)
@@ -368,7 +380,7 @@ namespace Emby.Dlna.PlayTo
var service = GetAvTransportService();
await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, 1))
await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, 1))
.ConfigureAwait(false);
RestartTimer(true);
@@ -386,7 +398,7 @@ namespace Emby.Dlna.PlayTo
var service = GetAvTransportService();
await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, 1))
await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, 1))
.ConfigureAwait(false);
TransportState = TRANSPORTSTATE.PAUSED;
@@ -394,11 +406,8 @@ namespace Emby.Dlna.PlayTo
RestartTimer(true);
}
#endregion
#region Get data
private int _connectFailureCount;
private async void TimerCallback(object sender)
{
if (_disposed)
@@ -451,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)
@@ -471,7 +482,9 @@ namespace Emby.Dlna.PlayTo
catch (Exception ex)
{
if (_disposed)
{
return;
}
_logger.LogError(ex, "Error updating device info for {DeviceName}", Properties.Name);
@@ -487,6 +500,7 @@ namespace Emby.Dlna.PlayTo
return;
}
}
RestartTimerInactive();
}
}
@@ -513,8 +527,12 @@ namespace Emby.Dlna.PlayTo
return;
}
var result = await new SsdpHttpClient(_httpClient, _config).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)
{
@@ -559,11 +577,17 @@ namespace Emby.Dlna.PlayTo
return;
}
var result = await new SsdpHttpClient(_httpClient, _config).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"))
@@ -586,8 +610,12 @@ namespace Emby.Dlna.PlayTo
return null;
}
var result = await new SsdpHttpClient(_httpClient, _config).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)
{
@@ -597,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))
@@ -624,8 +652,12 @@ namespace Emby.Dlna.PlayTo
var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false);
var result = await new SsdpHttpClient(_httpClient, _config).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)
{
@@ -687,8 +719,12 @@ namespace Emby.Dlna.PlayTo
var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false);
var result = await new SsdpHttpClient(_httpClient, _config).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)
{
@@ -723,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);
}
@@ -767,7 +803,6 @@ namespace Emby.Dlna.PlayTo
}
catch (XmlException)
{
}
// first try to add a root node with a dlna namesapce
@@ -779,7 +814,6 @@ namespace Emby.Dlna.PlayTo
}
catch (XmlException)
{
}
// some devices send back invalid xml
@@ -789,7 +823,6 @@ namespace Emby.Dlna.PlayTo
}
catch (XmlException)
{
}
return null;
@@ -844,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)
@@ -868,7 +897,7 @@ namespace Emby.Dlna.PlayTo
string url = NormalizeUrl(Properties.BaseUrl, avService.ScpdUrl);
var httpClient = new SsdpHttpClient(_httpClient, _config);
var httpClient = new SsdpHttpClient(_httpClient);
var document = await httpClient.GetDataAsync(url, cancellationToken).ConfigureAwait(false);
@@ -896,7 +925,7 @@ namespace Emby.Dlna.PlayTo
string url = NormalizeUrl(Properties.BaseUrl, avService.ScpdUrl);
var httpClient = new SsdpHttpClient(_httpClient, _config);
var httpClient = new SsdpHttpClient(_httpClient);
_logger.LogDebug("Dlna Device.GetRenderingProtocolAsync");
var document = await httpClient.GetDataAsync(url, cancellationToken).ConfigureAwait(false);
@@ -931,7 +960,7 @@ namespace Emby.Dlna.PlayTo
public static async Task<Device> CreateuPnpDeviceAsync(Uri url, IHttpClient httpClient, IServerConfigurationManager config, ILogger logger, CancellationToken cancellationToken)
{
var ssdpHttpClient = new SsdpHttpClient(httpClient, config);
var ssdpHttpClient = new SsdpHttpClient(httpClient);
var document = await ssdpHttpClient.GetDataAsync(url.ToString(), cancellationToken).ConfigureAwait(false);
@@ -1042,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)
{
@@ -1167,8 +1194,6 @@ namespace Emby.Dlna.PlayTo
});
}
#region IDisposable
bool _disposed;
public void Dispose()
@@ -1195,8 +1220,6 @@ namespace Emby.Dlna.PlayTo
_disposed = true;
}
#endregion
public override string ToString()
{
return string.Format("{0} - {1}", Properties.Name, Properties.BaseUrl);
+2
View File
@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System.Collections.Generic;
using Emby.Dlna.Common;
using MediaBrowser.Model.Dlna;
+108 -78
View File
@@ -1,3 +1,5 @@
#pragma warning disable CS1591
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -5,8 +7,8 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Emby.Dlna.Didl;
using Jellyfin.Data.Entities;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Dlna;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
@@ -21,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;
@@ -44,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,
@@ -82,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()
@@ -109,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;
@@ -124,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)
{
@@ -136,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);
}
@@ -154,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)
{
@@ -165,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);
@@ -177,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)
{
@@ -193,7 +209,7 @@ namespace Emby.Dlna.PlayTo
}
else
{
Playlist.Clear();
_playlist.Clear();
}
}
catch (Exception ex)
@@ -202,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
{
@@ -212,7 +228,6 @@ namespace Emby.Dlna.PlayTo
SessionId = _session.Id,
PositionTicks = positionTicks,
MediaSourceId = streamInfo.MediaSourceId
}).ConfigureAwait(false);
}
catch (Exception ex)
@@ -221,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)
{
@@ -234,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);
}
@@ -245,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)
{
@@ -265,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);
}
@@ -276,7 +291,7 @@ namespace Emby.Dlna.PlayTo
}
}
private long? GetProgressPositionTicks(uBaseObject mediaInfo, StreamParams info)
private long? GetProgressPositionTicks(StreamParams info)
{
var ticks = _device.Position.Ticks;
@@ -288,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,
@@ -309,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);
@@ -349,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))
@@ -362,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)
@@ -370,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:
@@ -386,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;
@@ -411,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);
}
}
@@ -425,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);
@@ -442,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;
@@ -450,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);
@@ -458,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;
@@ -569,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))
@@ -601,10 +626,7 @@ namespace Emby.Dlna.PlayTo
}
}
#endregion
private bool _disposed;
/// <inheritdoc />
public void Dispose()
{
Dispose(true);
@@ -623,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))
@@ -694,6 +714,7 @@ namespace Emby.Dlna.PlayTo
throw new ArgumentException("Volume argument cannot be null");
}
default:
return Task.CompletedTask;
}
@@ -712,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);
@@ -737,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);
@@ -779,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;
@@ -851,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());
@@ -899,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)
{
@@ -915,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);

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