Compare commits

...

2931 Commits

Author SHA1 Message Date
Joshua M. Boniface 53186c766b Bump version to 10.7.7 2021-09-05 22:33:31 -04:00
Bond-009 26990eac71 Merge pull request #6274 from thornbill/restore-max-resolution-params
Restore max width and height params

(cherry picked from commit d8b9f4dc2d)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-09-05 22:30:44 -04:00
dkanada f6be0e2d1d Merge pull request #6512 from thornbill/preferences-fix
Preferences fix
2021-09-06 11:27:32 +09:00
Bill Thornton 3d45834bd8 Fix python package name 2021-09-05 14:20:03 -04:00
Bill Thornton fddfd55018 Remove required constraint in preferences 2021-09-05 14:19:01 -04:00
Bond-009 56b05f4e2b Merge pull request #6175 from nielsvanvelzen/crobibero-is-stupid
Fix routeMediaSourceId route parameter in SubtitleController GetSubtitle

(cherry picked from commit 04daf0ff49)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-06-13 19:30:34 -04:00
Joshua M. Boniface e8148ec0bd Merge pull request #6131 from BaronGreenback/Fix_NetworkFlooding
Fix network flooding issue

(cherry picked from commit b060d9d0f1)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-06-02 22:08:16 -04:00
Claus Vium 77c5c53598 Merge pull request #6043 from peterspenler/feature/chromecast-aac-handling
Reorder requested audio channels checks

(cherry picked from commit ffe2770388)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-05-27 02:46:02 -04:00
Claus Vium d2db73b876 Merge pull request #6038 from crobibero/delete-existing-sessions
Don't logout if deviceId is null

(cherry picked from commit 1594385497)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-05-27 02:46:02 -04:00
Joshua M. Boniface 49873c3d7f Bump version to 10.7.6 2021-05-20 22:06:25 -04:00
Bond-009 0b577c8a44 Merge pull request #6053 from jellyfin/cuda-fix
Fix the 'No decoder surfaces left' error on Cuda

(cherry picked from commit 9b82b37095)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-05-20 22:05:00 -04:00
Bond-009 6386606a53 Merge pull request #5987 from Bond-009/ioob
PathExtensions: Fix index out of bounds in TryReplaceSubPath
(cherry picked from commit a6ee4632ce)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-05-20 22:05:00 -04:00
dkanada cc908210d9 Merge pull request #6022 from jellyfin/revert-remux-perm
Revert remuxing permission changes from #5859
2021-05-11 21:07:36 +09:00
Claus Vium dec30ade8f Revert remuxing permission changes from #5859
Clients cannot currently handle it properly.
2021-05-10 08:35:23 +02:00
Joshua M. Boniface 55a8d2555e Bump version to 10.7.5 2021-05-04 22:08:44 -04:00
Joshua M. Boniface b7c3510da1 Revert "Merge pull request #5943 from Maxr1998/device-profile-defaults"
This PR broke direct play in JMP and caused aspect ratio issues in web.

This reverts commit 4c8df4c5bb.
2021-05-04 22:07:32 -04:00
Joshua M. Boniface fd102abd81 Merge pull request #5973 from crobibero/legacy-ci-apiclient
Kill the CI

(cherry picked from commit d655145867)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-05-04 21:33:52 -04:00
Joshua M. Boniface f8f7767cc5 Merge pull request #5968 from crobibero/legacy-ci-apiclient
(cherry picked from commit a598a8071b)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-05-04 21:21:44 -04:00
Joshua M. Boniface e8436814dc Bump version to 10.7.4 2021-05-04 21:21:44 -04:00
Joshua M. Boniface 14f63e8f2f Merge pull request #5970 from crobibero/fix-linux-test
Fix Linux Tests
2021-05-04 21:21:29 -04:00
crobibero e764de0c80 Fix linux test for backport 2021-05-04 19:19:35 -06:00
Joshua M. Boniface 40147c9bb7 Merge pull request #5969 from crobibero/required-revert
Remove Required attributes

(cherry picked from commit fe0fce26e4)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-05-04 21:14:59 -04:00
Joshua M. Boniface 3566d21ad1 Bump version to 10.7.3 2021-05-04 20:01:50 -04:00
Bond-009 4c8df4c5bb Merge pull request #5943 from Maxr1998/device-profile-defaults
(cherry picked from commit 9d3f614527)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-05-04 19:33:08 -04:00
Bond-009 9798bf29f3 Merge pull request #5937 from Maxr1998/videoscontroller-api-fix
Remove extraneous 'stream' parameter

(cherry picked from commit 266913c5d8)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-05-02 17:02:10 -04:00
Joshua M. Boniface 93ce087fc9 Merge pull request from GHSA-rgjw-4fwc-9v96
Remove /Images/Remote API endpoint

(cherry picked from commit e71cd8274a)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-05-02 17:01:33 -04:00
Bond-009 e39495354b Merge pull request #5904 from cvium/fix-updatepeople-questionmark
add UpdatePeopleAsync and add people to both tables

(cherry picked from commit 5df87b3e0d)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-29 14:56:58 -04:00
Bond-009 ee94fad8f7 Merge pull request #5903 from iwalton3/auto-leave-syncplay
Leave SyncPlay group on session disconnect.

(cherry picked from commit dcc2df75ec)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-29 14:56:58 -04:00
Claus Vium 53239b0529 Merge pull request #5861 from BaronGreenback/ProfileMatch
Change profile matching to match what the web interface says.

(cherry picked from commit 12496677bd)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-29 14:56:57 -04:00
Bond-009 cf0da1de86 Merge pull request #5826 from BaronGreenback/ssdpFix
PlayTo Fix: Use external ip not internal interface

(cherry picked from commit f4a59c92e6)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-29 14:56:30 -04:00
Bond-009 093510ae58 Merge pull request #5881 from cvium/tmdb-episode-externalids
Add tvrage and imdb ids for episodes

(cherry picked from commit e19d89bb4f)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-21 21:25:41 -04:00
Bond-009 c3fafe9289 Merge pull request #5878 from Artiume/patch-2
(cherry picked from commit 95ab603a40)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-21 21:25:41 -04:00
Bond-009 bd914acd16 Merge pull request #5873 from cvium/fix-displaypref-migration
(cherry picked from commit 233900401e)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-21 21:25:41 -04:00
Bond-009 81f9bec101 Merge pull request #5870 from cvium/fix-tmdbpersonprovider
(cherry picked from commit 6b103f7ab2)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-21 21:25:40 -04:00
Bond-009 7db8601fbc Merge pull request #5863 from cvium/fix-index-migration
use IF NOT EXISTS in migration

(cherry picked from commit 5a4cfe11cf)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-21 21:25:40 -04:00
Bond-009 1ec247f5d8 Merge pull request #5860 from cvium/fix-notification-user-list
Fix notification disabled users list

(cherry picked from commit ebe8301404)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-21 21:25:39 -04:00
Bond-009 11e9173fbc Merge pull request #5859 from cvium/fix-streambuilder-permissions
Respect user settings for transcode and remux

(cherry picked from commit 5a6e60b414)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-21 21:24:27 -04:00
Bond-009 34508286a8 Merge pull request #5852 from cvium/fix-person-creation
Add Person to TypedBaseItems if it's new

(cherry picked from commit 4eeb69233d)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-21 21:24:27 -04:00
Claus Vium a82eded845 Merge pull request #5848 from sgmoore/IndexError
Fix ArgumentOutOfRangeException scanning AudioBooks

(cherry picked from commit 665220c4fb)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-21 21:24:27 -04:00
Bond-009 fcb729ff6b Merge pull request #5808 from cvium/semi-fix-collection-perf
(cherry picked from commit 48ed4b016c)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-21 21:24:27 -04:00
Joshua M. Boniface 69f30bc52c Merge pull request #5782 from cvium/fix-release-10.7.2
Fix 10.7.2 nullable
2021-04-11 16:31:26 -04:00
cvium 3b605b6280 fix 10.7.2 nullable 2021-04-11 22:19:59 +02:00
Joshua M. Boniface e8a359f97b Bump version 10.7.2 2021-04-11 14:19:21 -04:00
Bond-009 dbfaafc08a Merge pull request #5596 from BaronGreenback/DLNA_Hardening
Implemented DLNA exception handling

(cherry picked from commit 55102973d6)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:17:47 -04:00
Bond-009 de6747f6c5 Merge pull request #5385 from Bond-009/dlna2
Use XDocument.LoadAsync instead of XDocument.Parse

(cherry picked from commit a1cdc2c63f)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:17:46 -04:00
Bond-009 100fe40b0a Merge pull request #5769 from cvium/workstation-gc
Enable Workstation GC mode

(cherry picked from commit f0625bb023)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Joshua M. Boniface 2197d20783 Merge pull request #5764 from cvium/fix-folders-perms
Do not check permissions for Folders collectiontype

(cherry picked from commit 770c123d12)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Claus Vium f4f9ab777f Merge pull request #5750 from iwalton3/fix-audio-selection-uns
Fix setting audio stream in PlaybackInfo for jellyfin-web.

(cherry picked from commit bf510ca04e)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Joshua M. Boniface 9ca7d62709 Merge pull request #5748 from cvium/playlist-audio-type
Set mediatype to Audio for playlists in a music library

(cherry picked from commit cd0daa7985)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Bond-009 7aad16b6ec Merge pull request #5747 from cvium/more-convertimage-fixes
Catch IOException and include stack trace when saving images

(cherry picked from commit 240e67d485)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Bond-009 f77673438e Merge pull request #5746 from cvium/dangling-symlinks
(cherry picked from commit 62117a6c12)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Bond-009 bc2eb9fa79 Merge pull request #5736 from jellyfin/catch-httprequestex-librarymanager
fetching images should not kill the scanner

(cherry picked from commit 6577f1deb2)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Claus Vium df69ce55f7 Merge pull request #5734 from jellyfin/fix-isplayed-itemvalues
move IsPlayed to outerquery

(cherry picked from commit d532e95410)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Claus Vium 93cca4d50e Merge pull request #5725 from BrianCArnold/Fix2845_PlaylistDeletion
(cherry picked from commit 9d0467addf)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Bond-009 3c64bcffe3 Merge pull request #5717 from cvium/nullable-custompref-value
(cherry picked from commit 47bbe4c146)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Claus Vium 6ece01d425 Merge pull request #5712 from BaronGreenback/5700
(cherry picked from commit 1a92d94e92)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Bond-009 53f333bd64 Merge pull request #5702 from cvium/ws-auth
add simple auth handling to websocketmanager

(cherry picked from commit 3412120c61)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Bond-009 9e459090ed Merge pull request #5693 from Maxr1998/probe-result-tweaks
(cherry picked from commit 7978f30ff7)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Claus Vium 95a4fc0f18 Merge pull request #5688 from crobibero/api-docs-sever-discovery
Add SessionDiscoveryInfo to generated api-docs

(cherry picked from commit f718735b4e)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Bond-009 62bf3db885 Merge pull request #5672 from jellyfin/skip-bad-images
ensure only valid images are saved in ItemImageProvider

(cherry picked from commit 38913a42b4)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Bond-009 42d702c091 Merge pull request #5671 from jellyfin/tmdbmovieprovider-originaltitle
set original title in tmdbmovieprovider

(cherry picked from commit 7c51d0a50e)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Bond-009 d07fe14814 Merge pull request #5661 from ferferga/openapi-product-version
Return Major.Minor.Build instead of Major.Minor.Build.Revision for OpenAPI

(cherry picked from commit cb111eb767)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Bond-009 970eaf8dfb Merge pull request #5634 from cvium/directoryservice-case-sensitive
make directoryservice cache case sensitive

(cherry picked from commit 1de031a7c3)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Claus Vium bc27c2b7da Merge pull request #5631 from BrianCArnold/FixMessageCommand
(cherry picked from commit a1718e392b)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Claus Vium 37b969304a Merge pull request #5629 from lmaonator/fix-cast-stream-selection
(cherry picked from commit 90d9530aed)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Claus Vium c6b5c4dda5 Merge pull request #5624 from crobibero/subtitle-format
(cherry picked from commit 9144d11a9d)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Claus Vium 51f5da8015 Merge pull request #5621 from cvium/enable-range-processing-download
enable range processing for download endpoints

(cherry picked from commit 411570e6d4)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Claus Vium 6e89ca9a34 Merge pull request #5620 from MrTimscampi/iso-ignore
(cherry picked from commit a76d997a86)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Claus Vium de1896828f Merge pull request #5613 from accek/accek-samsung-dlna-fix
(cherry picked from commit e64f9f2f66)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Bond-009 7d1d159b8a Merge pull request #5556 from oddstr13/image-fill-resize
(cherry picked from commit 790f7430aa)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Bond-009 c3c98331d9 Merge pull request #5495 from BaronGreenback/RemoteAccessFix
(cherry picked from commit a890a85092)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Joshua M. Boniface e78fa8c3ef Merge pull request #5416 from BaronGreenback/SubnetOverlappFix
(cherry picked from commit 19e7ebb279)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Bond-009 d63fb437c6 Merge pull request #5258 from Smith00101010/next-up-specials-fix
(cherry picked from commit 9d548c62ba)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-04-11 14:13:44 -04:00
Claus Vium 25c6388e23 Merge pull request #5600 from cvium/fix-hls-defaults-10.7
Fix hls defaults for 10.7
2021-03-28 00:15:57 +01:00
Claus Vium 8f16e10fc6 Apply suggestions from code review 2021-03-25 08:44:34 +01:00
cvium 1f07586d1c forgot streaminfo 2021-03-22 23:11:25 +01:00
cvium 5e0f480e48 fix build and isdirectstream 2021-03-22 23:08:09 +01:00
cvium 210d10400a change HLS endpoint defaults to false 2021-03-22 23:05:05 +01:00
Joshua M. Boniface 3dda25412c Bump version to 10.7.1 2021-03-21 19:18:08 -04:00
Joshua M. Boniface 0183ef8e89 Merge pull request from GHSA-wg4c-c9g9-rxhx
Fix issues 1 through 5 from GHSL-2021-050

(cherry picked from commit fe8cf29cad)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:13:08 -04:00
Claus Vium 75f39f0f2a Merge pull request #5559 from cvium/fix-tmdb-search-clean
Clean the entity name for non-words before searching

(cherry picked from commit 9360fecb31)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:10:13 -04:00
Bond-009 966217e6a9 Merge pull request #5550 from cvium/revert_underscore_multiversion
(cherry picked from commit f42cee4790)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:10:13 -04:00
Joshua M. Boniface 328bcadabf Merge pull request #5532 from cvium/fix_episode_extras_questionmark
(cherry picked from commit 890a490776)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:10:13 -04:00
Bond-009 0f38b2ffb2 Merge pull request #5518 from crobibero/missing-endpoints
Add missing InstantMix endpoints

(cherry picked from commit 8bb2420a25)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:10:13 -04:00
Bond-009 40f4780825 Merge pull request #5515 from jellyfin/fix-refresh-endpoint
fix refresh endpoint

(cherry picked from commit 260b48ef9d)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:10:13 -04:00
Claus Vium 546ffbe4f7 Merge pull request #5512 from crobibero/api-spec-version
(cherry picked from commit 94820f569b)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:10:13 -04:00
Claus Vium d00218c370 Merge pull request #5510 from BaronGreenback/DlnaFirstFix
Fix: Streaming crashing due to no deviceProfileId match.
(cherry picked from commit 109f24514f)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:10:13 -04:00
Bond-009 679d3f5873 Merge pull request #5504 from crobibero/json-string-converter
(cherry picked from commit 1a0ce16f4d)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:10:13 -04:00
Bond-009 787ad44323 Merge pull request #5500 from crobibero/api-integration-fix
Fix third party integration

(cherry picked from commit 7a988ef77d)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:10:13 -04:00
Bond-009 2ce6b347f5 Merge pull request #5480 from crobibero/api-session-message-type
Add SessionMessageType to generated openapi spec

(cherry picked from commit e3adc9ab74)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:10:13 -04:00
Bill Thornton 318c1f7f0c Merge pull request #5476 from jellyfin/EraYaN-nuget-ci
Remove BuildPackage dependency for PublishNuget in CI

(cherry picked from commit 9fe3ca7a92)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:10:13 -04:00
Claus Vium ed15cb1571 Merge pull request #5475 from BaronGreenback/SSDPFix
(cherry picked from commit baa43c6b41)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:10:13 -04:00
Bond-009 c171bac71a Merge pull request #5461 from cvium/fix_multiversion
(cherry picked from commit d967267cef)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:09:59 -04:00
Bond-009 be5f511fc7 Merge pull request #5457 from cvium/fix_double_artist
(cherry picked from commit a037e30b41)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:08:27 -04:00
Claus Vium a65c97c8f7 Merge pull request #5447 from joshuaboniface/fix-fedora-build
Remove Microsoft repo from install step

(cherry picked from commit 88a8fa7100)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:08:27 -04:00
Claus Vium 3fbe10364b Merge pull request #5444 from Ullmie02/hdhr-fix
(cherry picked from commit 329edd9dbe)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:08:27 -04:00
Claus Vium 88ab008112 Merge pull request #5431 from cvium/fix_tmdb_imdbid
Use imdbid as fallback in movie provider

(cherry picked from commit 84e16a8535)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:08:27 -04:00
Bond-009 1518f6d325 Merge pull request #5428 from cvium/fix_tmdb_year
Default to the searchinfo year, fallback to parsed year

(cherry picked from commit 97fd136a8c)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:08:26 -04:00
Claus Vium 53576fe1b8 Merge pull request #5403 from BaronGreenback/DLNAProfileFix
(cherry picked from commit 5592967497)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:08:26 -04:00
Claus Vium da3b7bb684 Merge pull request #5324 from danieladov/master
Fix duplicated movies when group movies into collections is enabled

(cherry picked from commit bd70f56218)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-21 19:08:26 -04:00
Joshua M. Boniface 4a320b26b5 Bump version to 10.7.0
Also clear out old changelogs since these don't actually make sense
anyways.
2021-03-08 18:11:29 -05:00
Joshua M. Boniface 63868eca40 Merge pull request #5409 from ikomhoog/master
(cherry picked from commit 82d88bdec6)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-08 18:08:26 -05:00
Claus Vium f6e8493d69 Merge pull request #5407 from Bond-009/hack
(cherry picked from commit 90cdd1345d)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-08 18:08:26 -05:00
Joshua M. Boniface 3c3b536e81 Merge pull request #5406 from cvium/trycleanstring-dont-die-on-me
(cherry picked from commit 0ef8bea125)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-08 18:08:26 -05:00
Joshua M. Boniface a10eea41ac Merge pull request #5402 from Ullmie02/fix-null-size
Use FileShare.None when creating files

(cherry picked from commit 480dd66428)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-08 18:08:25 -05:00
Bond-009 42d0c1ac5f Merge pull request #5381 from cvium/fix-network-substitution
(cherry picked from commit 497ea57fd2)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-08 18:08:25 -05:00
Joshua M. Boniface b01290013e Merge pull request #5315 from BaronGreenback/FixFor5280Part2
(cherry picked from commit 3c46f10e3d)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-08 18:08:20 -05:00
Bond-009 132335a747 Merge pull request #5383 from cvium/fix-mergeversions-overflow
do not pick a linked item as primary when merging versions

(cherry picked from commit 3741be51ec)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-06 14:30:11 -05:00
Claus Vium 75d3d120d3 Fix UpdateMediaPath model binding (#5378)
(cherry picked from commit d0a2d00b29)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-06 14:28:08 -05:00
Bond-009 e8890cc682 Merge pull request #5377 from cvium/fix-tmdb-image-languages
Do not use language or imagelanguages when searching for images with TMDb

(cherry picked from commit 1d87274cc2)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-06 14:27:58 -05:00
Bond-009 e4bf57c739 Merge pull request #5375 from crobibero/default-api-value
Specify defaults or set query parameter to nullable

(cherry picked from commit a0f6bc14a2)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-06 14:27:58 -05:00
Claus Vium 046dd7fa60 Merge pull request #5356 from cvium/fix_provideridextensions
return false when providerid is null or empty

(cherry picked from commit ddc62a89ba)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-06 14:27:58 -05:00
David Ullmer 5e18ab3604 Fix TMDb search name containing year (#5349)
(cherry picked from commit 8f99bdd07c)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-06 14:26:54 -05:00
dkanada 7545b1286b Merge pull request #5345 from BaronGreenback/IP6Fix
Dual IP4 / IP6 server fails on non-windows platforms

(cherry picked from commit 8615847a8a)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-06 14:26:41 -05:00
Bond-009 b99db64f8f Merge pull request #5342 from BaronGreenback/errorMessageCorrection
Corrected logging message

(cherry picked from commit 1f0bbe266c)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-06 14:26:41 -05:00
Claus Vium 20810eedbe Merge pull request #5339 from Bond-009/hasproviderids
Revert breaking change to HasProviderId

(cherry picked from commit e858e5f0b8)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-06 14:26:41 -05:00
BaronGreenback 2d88b8346d Remove Content-Length header from DLNA HEAD request (#5335)
(cherry picked from commit d819a1d928)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-06 14:26:38 -05:00
Bond-009 eafaccae5d Merge pull request #5004 from jellyfin/camera-upload
remove unused notification type

(cherry picked from commit bffebce909)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-03-06 14:24:50 -05:00
Joshua M. Boniface d2851979d4 Fix bad spacer in changelog line 2021-02-28 22:30:24 -05:00
Claus Vium 4b6ff7ffa5 Merge pull request #5312 from BaronGreenback/FixFor5280
(cherry picked from commit 9e77fdc70d)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-27 22:30:50 -05:00
Claus Vium 153123278b Merge pull request #5278 from BaronGreenback/STRMFix
Fix for #5168

(cherry picked from commit 64730b5661)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-27 22:30:49 -05:00
Claus Vium 25c19f79d4 Merge pull request #5274 from BaronGreenback/bindfix
(cherry picked from commit 14605280a0)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-27 22:30:49 -05:00
Claus Vium 0f139e8857 Merge pull request #5181 from BaronGreenback/Fix_IPHostIP6Parsing
(cherry picked from commit f8c9c37c29)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-27 22:30:49 -05:00
Claus Vium e6cc8d5015 Merge pull request #5073 from BaronGreenback/ffmpeg
Fix for 4933: Alternative ffmpeg fix

(cherry picked from commit e5f99762e2)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-27 22:30:49 -05:00
Bond-009 ef864e24b9 Merge pull request #5301 from Bond-009/validinput
(cherry picked from commit 5860979500)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-26 21:01:50 -05:00
Joshua M. Boniface ab054d6239 Merge pull request #5290 from Bond-009/nullref
Fix possible null ref exception

(cherry picked from commit 1442a63556)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-26 21:01:50 -05:00
Bond-009 19ff447e51 Merge pull request #5275 from BaronGreenback/upnpStartupFix
Fixes #5148

(cherry picked from commit 0beda0e32c)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-26 21:01:50 -05:00
Joshua M. Boniface 4220808b96 Merge pull request #5270 from Bond-009/imdb
(cherry picked from commit 5ce4df4178)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-26 21:01:50 -05:00
dkanada eb0621a354 Merge pull request #5217 from jellyfin/auto-manifest
handle plugin manifests automatically

(cherry picked from commit c54ca489f1)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-26 21:01:50 -05:00
Joshua M. Boniface 621c0b9d15 Bump version to 10.7.0~rc4 2021-02-21 13:42:26 -05:00
Andrew Rabert fecab1d549 Merge pull request #5263 from Bond-009/tmdb
TMDB: Include year in search
(cherry picked from commit 5379fa0bd0)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:30:32 -05:00
Bond-009 bd89cdf8d2 Merge pull request #5255 from cvium/fix_renameuser
(cherry picked from commit ae30eaf320)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:30:32 -05:00
Bond-009 557a091865 Merge pull request #5251 from crobibero/vpp-null-ref
Fix vpp null reference

(cherry picked from commit 467cd9227e)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:30:32 -05:00
dkanada a1773ce97b Merge pull request #5250 from barronpm/user-rename-fix
Fix user renaming logic

(cherry picked from commit b4c2086138)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:30:32 -05:00
Bond-009 be7411dc58 Merge pull request #5230 from orryverducci/double-rate-deint-fix
Fix double rate deinterlacing for some TS files

(cherry picked from commit 32934cb33d)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:30:31 -05:00
dkanada b2a8fd82d8 Merge pull request #5216 from jellyfin/remove-old-settings
remove deprecated settings from server config

(cherry picked from commit 542401c7f4)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:30:31 -05:00
Bond-009 d53120602c Merge pull request #5208 from crobibero/api-post-image
Add image file accept to openapi

(cherry picked from commit 76d66e0dee)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:30:31 -05:00
dkanada da09257d58 Merge pull request #5207 from matthin/default-language
Default to English metadata during the setup wizard.

(cherry picked from commit 75ec8b0c8c)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:30:31 -05:00
Joshua M. Boniface 706ac0fafd Merge pull request #5200 from crobibero/dotnet-5.0.3
Update to dotnet 5.0.3

(cherry picked from commit 426b55052f)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:30:29 -05:00
Bond-009 ebd4328f02 Merge pull request #5188 from cvium/fix_manifest_bom
Exclude BOM when writing meta.json plugin manifest

(cherry picked from commit fba80cf6f9)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:29:02 -05:00
Bond-009 39b0d69786 Merge pull request #5171 from Ullmie02/reset-fix
(cherry picked from commit 34e10622c6)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:29:02 -05:00
Claus Vium 9f3cebf493 Merge pull request #5154 from crobibero/skip-attributes
(cherry picked from commit 5f63c33557)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:29:02 -05:00
Claus Vium 20e985a0d1 Merge pull request #5117 from jellyfin/fix-framerate-locale
Make FRAME-RATE field culture invariant

(cherry picked from commit 63be326302)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:29:02 -05:00
Claus Vium 5dbd6f076c Merge pull request #5111 from Larvitar/tmdb-season-name-fix
Remove season name from metadata result

(cherry picked from commit 3fd0987ee3)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:29:02 -05:00
Joshua M. Boniface 19a01ccdf3 Merge pull request #5107 from jellyfin/enhanced-nvdec-vpp-tonemap
(cherry picked from commit bd8c269ea2)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:29:02 -05:00
Bond-009 d816995d27 Merge pull request #5106 from BaronGreenback/FileShareTest2
(cherry picked from commit 28ffbf6945)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:29:02 -05:00
Claus Vium a934477850 Merge pull request #5105 from crobibero/image-null-ref
Add null check for ImageTags

(cherry picked from commit e7e385d7a2)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:29:02 -05:00
Claus Vium a7f65bd205 Merge pull request #5099 from crobibero/non-required-query-param
(cherry picked from commit e5828cdbf1)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:29:02 -05:00
Claus Vium 8138fc3003 Merge pull request #5095 from Bond-009/sortorder
(cherry picked from commit 98a4e1b840)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:29:02 -05:00
Bond-009 46a6cd8d1f Merge pull request #5091 from crobibero/query-param-array
Use ArrayModelBinder for sortBy and sortOrder

(cherry picked from commit b4d04f9ca5)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:29:02 -05:00
Claus Vium 524df2e45d Merge pull request #5090 from Ullmie02/plugin-startup-fix
(cherry picked from commit f82e6ee8cc)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:29:02 -05:00
dkanada a486cd27a9 Merge pull request #4935 from ConfusedPolarBear/quickconnect-cleanup
Remove used quick connect tokens

(cherry picked from commit 158e69c6f0)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:29:02 -05:00
Bond-009 34053b7259 Merge pull request #4905 from BaronGreenback/streamingHelper
Null exception fix

(cherry picked from commit 9a10a18db1)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-02-21 13:29:02 -05:00
Joshua M. Boniface d5a7478600 Bump version to 10.7.0-rc3 2021-01-23 15:51:49 -05:00
Joshua M. Boniface ed333dec43 Merge pull request #5069 from crobibero/obsolete-param
(cherry picked from commit 4b6b90e0b1)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:39:35 -05:00
Joshua M. Boniface c17c32f9dc Merge pull request #5064 from BaronGreenback/PluginFix
Plugin bug fixes

(cherry picked from commit 3fda50de6d)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:39:35 -05:00
Joshua M. Boniface 5cc8ed6516 Merge pull request #5062 from crobibero/delete_log_task
(cherry picked from commit 4d13cad7af)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:39:35 -05:00
Joshua M. Boniface cdba6b3d35 Merge pull request #5031 from crobibero/5.0.2
Update to dotnet 5.0.2

(cherry picked from commit 3bf7e18886)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:39:32 -05:00
Claus Vium fa7a8752a9 Merge pull request #5027 from crobibero/episode-first-up
(cherry picked from commit 65c09f82c5)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:37:26 -05:00
Claus Vium d129afa74e Merge pull request #5025 from BaronGreenback/DlnaFix
(cherry picked from commit b9691e8712)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:37:26 -05:00
Claus Vium bc8a1d2276 Merge pull request #4997 from crobibero/subtitle-upload-auth
Require elevated auth to upload subtitles

(cherry picked from commit 5c00b4175a)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:37:26 -05:00
Bond-009 147f9e1edf Merge pull request #4980 from Ullmie02/chinese
Add additional chinese languages

(cherry picked from commit 0bb0dd646f)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:37:26 -05:00
Claus Vium 7796486511 Merge pull request #4978 from BaronGreenback/MultipeProxies
(cherry picked from commit 14bd4a110f)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:37:25 -05:00
Bond-009 ab5ae34595 Merge pull request #4976 from BaronGreenback/dlnaPortFix
Fixed DLNA Server on RC2

(cherry picked from commit a554423163)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:37:25 -05:00
Joshua M. Boniface 81a17b803d Merge pull request #4970 from BaronGreenback/networkTestCorrection
(cherry picked from commit fe9096be94)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:37:25 -05:00
Bond-009 cc6afb0971 Merge pull request #4968 from ianjazz246/fix-music-album-display
Fix library with music directly under artist folder

(cherry picked from commit 7758c61ea8)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:37:25 -05:00
Bond-009 d9a9a23a3c Merge pull request #4962 from thornbill/fix-playstate-name
Fix capitalization of Playstate message

(cherry picked from commit 07650d91da)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:37:25 -05:00
Bond-009 dd1fddf79c Merge pull request #4961 from crobibero/person-blurhash-null-ref
Fix potential null reference

(cherry picked from commit a8230c07ea)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:37:25 -05:00
Joshua M. Boniface 4df7522629 Merge pull request #4956 from jceresini/master
Fix rpm package dependencies

(cherry picked from commit 3204ce71b3)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:37:25 -05:00
Bond-009 9c83a6cef9 Merge pull request #4936 from crobibero/series-start-item-id
Fix inverted SkipWhile

(cherry picked from commit 841996c642)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:37:25 -05:00
dkanada 910819c71c Merge pull request #4920 from crobibero/person-blurhash
Attach correct Blurhash to BaseItemPerson

(cherry picked from commit c117b12b6b)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:37:25 -05:00
Bond-009 a0e047d560 Change converter log level (#4916)
Change converter log level

(cherry picked from commit 9265dd68a4)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:37:25 -05:00
Joshua M. Boniface 34322ba491 Merge pull request #4911 from Ullmie02/nuget_again
(cherry picked from commit c5e9d56028)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:37:25 -05:00
Bond-009 801dd74ff6 Merge pull request #4906 from Spacetech/library_scan_ignore_inaccessible
Ignore inaccessible files & folders during library scans

(cherry picked from commit 4549c96f6d)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:37:25 -05:00
Joshua M. Boniface 129453214f Merge pull request #4859 from Ullmie02/ci
Don't build unstable Nuget packages on tags

(cherry picked from commit 7227d0d48b)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2021-01-23 15:37:25 -05:00
Joshua M. Boniface ac82fead82 Bump version to 10.7.0-rc2 2020-12-31 19:23:19 -05:00
dkanada 9a59ff3c87 Merge pull request #4902 from BaronGreenback/NetmaskFix
Fixed loopback subnet

(cherry picked from commit d6db0e4b02)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-31 18:50:02 -05:00
Joshua M. Boniface a16cf8ec0a Merge pull request #4890 from nielsvanvelzen/4888-fix-search-hints
Fix search hint endpoint error

(cherry picked from commit 7caba04c3c)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-31 18:50:02 -05:00
Joshua M. Boniface 4a2b143028 Merge pull request #4884 from crobibero/json-nullable-guid-converter
Add JsonConverter for Nullable Guids

(cherry picked from commit 0de45d8724)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-31 18:50:02 -05:00
Joshua M. Boniface d737c2b84a Merge pull request #4729 from BaronGreenback/19.0RC---Fix-networkInterfaceFix
(cherry picked from commit ccc1b8bf92)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-31 18:50:02 -05:00
Joshua M. Boniface 1ad8e54035 Merge pull request #4709 from BaronGreenback/PluginDowngrade
(cherry picked from commit 406ae3e43a)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-31 18:49:53 -05:00
Joshua M. Boniface 83dd3e2201 Merge pull request #4891 from Artiume/patch-1
(cherry picked from commit eb084f9021)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 19:13:04 -05:00
Bond-009 d9634b7fc0 Merge pull request #4874 from MrTimscampi/enable-tmdb-omdb
Enable TMDB and OMDB by default

(cherry picked from commit f8681aa518)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:51 -05:00
Bond-009 05b34b2710 Merge pull request #4872 from BaronGreenback/NetworkManagerFix
Removed workaround code as web is now fixed.

(cherry picked from commit 4ed20c75f7)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:51 -05:00
Joshua M. Boniface 2dab55a8f2 Merge pull request #4863 from nyanmisaka/boxes-backdrop
Fix boxes in library name backdrop

(cherry picked from commit f2e05bd183)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:51 -05:00
Joshua M. Boniface 124ab090bc Merge pull request #4861 from crobibero/null-ref
Fix null reference when logging

(cherry picked from commit 93b754c366)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:51 -05:00
dkanada 03c8216946 Merge pull request #4860 from nyanmisaka/3ch-transcode-hls
Avoid transcoding to 3ch audio for HLS streaming

(cherry picked from commit 2913e2604c)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:51 -05:00
Claus Vium f72f27ff45 Merge pull request #4856 from nyanmisaka/amf-profile
Fix some profiles for H264 AMF encoder

(cherry picked from commit afdc98746b)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:51 -05:00
Bond-009 71188ad27a Merge pull request #4855 from crobibero/cache-json-serializer
Initialize JsonSerializerOptions statically

(cherry picked from commit f42208673f)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:51 -05:00
Claus Vium 0d9e8b4f00 Merge pull request #4852 from ryanpetris/fix-schedulesdirect-refresh
SchedulesDirect no longer refreshes channels properly

(cherry picked from commit e36881f4fd)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:51 -05:00
Joshua M. Boniface fbfb23abab Merge pull request #4850 from BaronGreenback/NetworkApiFix
Null reference fix

(cherry picked from commit bfdd4727b5)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:51 -05:00
Joshua M. Boniface 622c71ce1c Merge pull request #4847 from crobibero/display-prefs-migration-x251256
Fix another key collision in MigrateDisplayPreferencesDatabase

(cherry picked from commit ca535b2fbe)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:51 -05:00
Claus Vium dbc9256945 Merge pull request #4842 from crobibero/date-time-formatter
Add JsonDateTimeConverter

(cherry picked from commit c8a89b0fe3)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:51 -05:00
Claus Vium 6b20aaaa6a Merge pull request #4836 from crobibero/dashboard-theme
Return dashboardTheme when requesting DisplayPreferences

(cherry picked from commit 98da2c67a5)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:51 -05:00
Claus Vium c2097ba5fe Merge pull request #4833 from Ullmie02/similar-fix
Fix similar items endpoint for movies and TV

(cherry picked from commit c90c382e2f)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:51 -05:00
Bond-009 8884f4f288 Merge pull request #4828 from joshuaboniface/linux-alt-arch
(cherry picked from commit 2e8e96874f)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:51 -05:00
Claus Vium ce741f541c Merge pull request #4824 from crobibero/livestream-post-body
Add request parameters to OpenLiveStreamDto

(cherry picked from commit 53119ed2a1)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:51 -05:00
Joshua M. Boniface 783d6409af Merge pull request #4821 from BaronGreenback/disableDlna
(cherry picked from commit a77788906c)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:51 -05:00
Joshua M. Boniface 5bf25ce2cc Merge pull request #4819 from crobibero/download-name
Set filename when downloading file

(cherry picked from commit 668e168c47)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:50 -05:00
Claus Vium 6c2ddd9758 Merge pull request #4816 from nyanmisaka/profiles
Fix some video profiles for Android client

(cherry picked from commit e9db47cd20)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:50 -05:00
Claus Vium 8760a298b1 Merge pull request #4807 from nyanmisaka/ps4-dlna
Correct DLNA audio codecs for PS3 and PS4

(cherry picked from commit 1f2488d7d9)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:50 -05:00
Claus Vium c08933c9d9 Merge pull request #4803 from ryanpetris/fix-getuser
Fix Live TV Recording Scheduling

(cherry picked from commit 6274cf8fcc)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:50 -05:00
Bond-009 c86c652006 Merge pull request #4794 from cvium/fix_image_upload
Convert from base64 when saving item images

(cherry picked from commit e84622b4ab)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:50 -05:00
Bond-009 c08ce82a04 Merge pull request #4792 from cvium/fix_missing_seasons
Add missing seasons during AfterMetadataRefresh

(cherry picked from commit 8eeed82523)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:50 -05:00
Claus Vium b10178bd1e Merge pull request #4789 from crobibero/provider-search
Fix get provider id extension

(cherry picked from commit bc8f1bdcac)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:50 -05:00
Bond-009 00a608dfab Merge pull request #4781 from crobibero/map-xmltv
Use request body for mapping xml channels

(cherry picked from commit 906ee4f962)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:50 -05:00
Claus Vium 480ded0671 Merge pull request #4771 from crobibero/typed-get-preference
Use typed UserManager GetPreference

(cherry picked from commit 21d2e9ff0c)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-30 18:55:50 -05:00
Bond-009 98c081f0ce Merge pull request #4774 from nyanmisaka/finetune-tonemap
Fine tune some tone mapping params

(cherry picked from commit 381341c83b)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:33 -05:00
Joshua M. Boniface e77d0ab5fd Merge pull request #4773 from Artiume/patch-10
Remove opf extension for book types

(cherry picked from commit e7ae712437)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:33 -05:00
Claus Vium 28ef1bc8b2 Merge pull request #4769 from crobibero/typo
Check correct fetcher list for provider name

(cherry picked from commit 4ecb30ef10)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:33 -05:00
Claus Vium 7ebf7014e0 Merge pull request #4767 from nyanmisaka/fix-ssl-save
(cherry picked from commit f9a78625b7)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:33 -05:00
Claus Vium 89a649cc23 Merge pull request #4762 from crobibero/api-file-return
Fix openapi file schema

(cherry picked from commit b56feac841)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:33 -05:00
Claus Vium 24b2991def Merge pull request #4761 from crobibero/playlist
(cherry picked from commit 13bb5e1ead)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:33 -05:00
Claus Vium 87dde66e92 Merge pull request #4758 from nyanmisaka/fix-landingScreen-options
(cherry picked from commit f8ef38c0ea)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:33 -05:00
Claus Vium 1b82ef905e Merge pull request #4757 from cvium/semi_revert_defer_image_loading
(cherry picked from commit 0cddfbcff5)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:33 -05:00
Claus Vium 02cc83b807 Merge pull request #4756 from crobibero/api-key-inverted-condition
Fix inverted condition when authenticating with an ApiKey

(cherry picked from commit c1bb29532f)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium 0d8fa795a0 Merge pull request #4753 from crobibero/5.0.1
Update to dotnet 5.0.1

(cherry picked from commit a56ac65449)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Bond-009 b32f15ab1e Merge pull request #4751 from nyanmisaka/mpegts-batchsize
(cherry picked from commit 9e601ba731)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Joshua M. Boniface 26993e39f7 Merge pull request #4750 from crobibero/skia
Fix blueberry

(cherry picked from commit 7b5319bb07)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Bond-009 ddedb2d7f1 Merge pull request #4749 from crobibero/guid-standard
(cherry picked from commit 933e7fa159)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium 5c0d930dc3 Merge pull request #4743 from crobibero/metadata-options
Actually use library options when filtering metadata providers

(cherry picked from commit e85884ddb9)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium 13d62c5977 Merge pull request #4741 from jellyfin/tests8
Add tests for HdHomerunHost.GetLineup

(cherry picked from commit 31e8273795)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium 9799b6ae81 Merge pull request #4738 from jellyfin/tests8
Add tests for HdHomerunHost.GetModelInfo

(cherry picked from commit e6650651b3)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium c1dd8f2050 Merge pull request #4737 from crobibero/missing-ensure-success
(cherry picked from commit f322866127)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium 853c328763 Merge pull request #4736 from nyanmisaka/fix-custom-order
Fix custom library order

(cherry picked from commit b83bc0a589)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Anthony Lavado 126753a1fe Merge pull request #4735 from crobibero/json-recursion
Fix JsonConverter recursion

(cherry picked from commit 94d805d03d)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Bond-009 24e4fcc3b7 Merge pull request #4733 from crobibero/omdb-null
Fix potential null reference in OMDB

(cherry picked from commit 87e13b858a)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium aae90a8480 Merge pull request #4730 from crobibero/base-item-dto-guid-nullable
Don't serialize empty GUID to null

(cherry picked from commit b6ecaccf92)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium 11a37884f0 Merge pull request #4726 from BaronGreenback/19.0RC--Fix-CertificateLoadError
Fix - Access Denied on using certificates in windows as user.

(cherry picked from commit c5a5f77b9e)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium 49f3579c1b Merge pull request #4724 from BaronGreenback/17.0RC----DLNA_PlayTo_Fix
(cherry picked from commit e6ea5a776d)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium 259d811b95 Merge pull request #4722 from crobibero/forbid
Fix API forbidden response

(cherry picked from commit 80ff564143)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Joshua M. Boniface 7e01cce884 Merge pull request #4716 from OancaAndrei/syncplay-new-auth-policies
(cherry picked from commit 4f6a585424)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium 2e5333c1d4 Merge pull request #4715 from crobibero/hdhr-json-bool
Add number to bool json converter

(cherry picked from commit 0aad17554c)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium e8e1bbffd9 Merge pull request #4713 from crobibero/robots
(cherry picked from commit a3a7467f49)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium 723fe43d2e Merge pull request #4711 from barronpm/api-fixes
Add required attributes to parameters

(cherry picked from commit 4c199ac9a5)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium e70a6d41f4 Merge pull request #4710 from OancaAndrei/syncplay-fix-session-restore
Restore sessions in SyncPlay groups upon reconnection

(cherry picked from commit a57e465de9)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium 9d4417eee3 Merge pull request #4706 from cvium/fix_aspectratio_again
Only apply series image aspect ratio if episode/season has no primary image

(cherry picked from commit 0d5f651ae9)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium 67f41386ba Merge pull request #4701 from crobibero/plugin-version
(cherry picked from commit 7455de1f85)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Bond-009 b1af8db423 Merge pull request #4699 from crobibero/display_prefs_index
Fix CustomItemDisplayPreferences unique key collision in the migration

(cherry picked from commit b3caa51173)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium 91656acabb Merge pull request #4678 from BaronGreenback/network_routing_fix_17.0rc
Change logging level and message in NetworkManager

(cherry picked from commit 885d42cb65)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Claus Vium 5fa8c83ba4 Merge pull request #4675 from BaronGreenback/ProxyDNS
(cherry picked from commit 8c00fbea9c)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:32 -05:00
Bond-009 683bc27b27 Merge pull request #4672 from cvium/fix_mergeversions_which_was_unrelated_to_my_bughunt
Fix MergeVersions endpoint

(cherry picked from commit 26919eed26)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:31 -05:00
Bond-009 0b6a05cf82 Merge pull request #4671 from cvium/allow_proxy
Clear KnownNetworks and KnownProxies if none are configured explicitly

(cherry picked from commit 804dd00425)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-13 20:34:31 -05:00
Joshua M. Boniface 2647935b96 Merge pull request #4669 from MrTimscampi/fix-npm-public
Fix NPM command in CI

(cherry picked from commit 8976b22ac4)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-05 01:36:00 -05:00
Joshua M. Boniface 2a4023c6c7 Merge pull request #4667 from joshuaboniface/fix-nuget-ci
Remove obsolete erroring command

(cherry picked from commit f2c2beca0f)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-05 01:35:18 -05:00
Joshua M. Boniface 2a2630098b Merge pull request #4662 from joshuaboniface/fix-bump-version
Fix bad do in bump_version

(cherry picked from commit e3a1991fe9)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-12-05 01:12:47 -05:00
Joshua M. Boniface 79472dce70 Bump version to 10.7.0~rc1 2020-12-04 21:03:57 -05:00
Joshua M. Boniface 6aed4b6e32 Merge pull request #4661 from Bond-009/spam
Remove spammy debug line
2020-12-04 20:24:54 -05:00
Joshua M. Boniface bba01bf7b9 Merge pull request #3194 from OancaAndrei/syncplay-enhanced
SyncPlay for TV series (and Music)
2020-12-04 20:22:30 -05:00
Joshua M. Boniface b96d4ef0e8 Merge pull request #4653 from crobibero/favorite-persons
Optimize FavoritePersons query
2020-12-04 20:05:35 -05:00
Joshua M. Boniface 4e6584c345 Merge pull request #4652 from crobibero/display-preferences
Add support for custom item display preferences
2020-12-04 20:05:04 -05:00
crobibero 76250a8895 Use md5 Guid for legacy compat 2020-12-04 16:27:31 -07:00
crobibero 3db6ae91f6 Add ItemId to all display preferences 2020-12-04 16:00:11 -07:00
Ionut Andrei Oanca cc64ee483d Reorder parameters in HandleRequest 2020-12-04 23:16:15 +01:00
Bond-009 3980b5ce9f Merge pull request #4660 from crobibero/mime-type
Add support for web serving .mem files
2020-12-04 22:17:10 +01:00
Bond_009 e530401462 Remove spammy debug line 2020-12-04 22:15:00 +01:00
crobibero e49bb3f4e6 Add support for web serving .mem files 2020-12-04 14:12:59 -07:00
Ionut Andrei Oanca 23473ef8fb Fix access policies to SyncPlay 2020-12-04 22:03:35 +01:00
Ionut Andrei Oanca 1f57b594e6 Loosen locking logic in SyncPlayManager 2020-12-04 21:27:25 +01:00
Joshua M. Boniface 670f7cacc3 Merge pull request #4651 from crobibero/iso_manager
Remove IIsoMounter and IsoMounter
2020-12-04 14:53:09 -05:00
Ionut Andrei Oanca cbf70e7a03 Change type of PlaylistItemId to Guid 2020-12-04 20:15:16 +01:00
crobibero 8d8738835e Use DisplayPreferencesId as ItemId 2020-12-04 09:16:38 -07:00
crobibero 60b7e49a7f Suggestions from code review 2020-12-04 08:00:55 -07:00
Claus Vium f07a6c3c3e Merge pull request #4638 from crobibero/migration-guid
Don't die if folder doesn't have id
2020-12-04 15:24:17 +01:00
Eero Nevaluoto 958c3a3217 Translated using Weblate (Finnish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fi/
2020-12-04 09:03:02 -05:00
Claus Vium 8b697060dd Merge pull request #4522 from BaronGreenback/PlugsVersionNumberFix
Set plugin version to that specified in the manifest
2020-12-04 14:10:31 +01:00
Claus Vium dca3f62ff8 Merge branch 'master' into PlugsVersionNumberFix 2020-12-04 13:50:44 +01:00
Claus Vium 9afd19b06e Merge pull request #4648 from nyanmisaka/optimize-plugin-logs
Optimize load plugin logs
2020-12-04 13:46:06 +01:00
Claus Vium f1cc01f324 Merge pull request #4242 from Spacetech/library_scan_speed
Increase library scan and metadata refresh speed
2020-12-04 13:17:26 +01:00
jeansebbeaulieu cba1aced8a Translated using Weblate (French (Canada))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr_CA/
2020-12-04 01:38:22 -05:00
crobibero b7443f6042 Optimize FavoritePersons query 2020-12-03 20:16:11 -07:00
Gary Wilber a9367b6169 Add OnConfigurationUpdated method 2020-12-03 17:11:53 -08:00
crobibero e765184afa Fix existing DisplayPreferences migration 2020-12-03 15:00:26 -07:00
Page Asgardius cff2b7fed1 Translated using Weblate (Spanish (Mexico))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_MX/
2020-12-03 16:49:44 -05:00
crobibero 685c966468 Suggestion from review 2020-12-03 14:35:18 -07:00
crobibero b0c79edd2c Add support for custom item display preferences 2020-12-03 13:51:12 -07:00
Ionut Andrei Oanca b7eb4da04e Rename GroupController into Group 2020-12-03 21:01:18 +01:00
Ionut Andrei Oanca 7169c0a22d Move SyncPlay request DTOs to proper namespace 2020-12-03 19:01:57 +01:00
Ionut Andrei Oanca 389367fec8 Rename 'track' into 'item' in SyncPlay 2020-12-03 15:54:39 +01:00
crobibero ca5c20c988 Remove IIsoMounter and IsoMounter 2020-12-03 07:34:15 -07:00
Nyanmisaka d496fd2d48 Apply suggestions from code review
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-12-03 21:34:25 +08:00
nyanmisaka bbe872524d optimize load plugin logs 2020-12-03 20:12:41 +08:00
cvium 7e0ea296c3 Move request validation to auth policies 2020-12-03 10:43:44 +01:00
Claus Vium 4a3411cad1 Merge pull request #4645 from crobibero/openapi-auth-filter
Move OpenApiSecurityScheme to OperationFilter
2020-12-03 10:16:34 +01:00
Gary Wilber 2b6b2cbf31 Remove Lazy 2020-12-02 23:23:13 -08:00
Gary Wilber 74f211960a only recreate the lazy when needed 2020-12-02 23:14:18 -08:00
Claus Vium fdd8b34cc1 Merge pull request #4636 from jellyfin/MissedOne
[Fix for 10.7] Missed a config move
2020-12-03 08:10:02 +01:00
Claus Vium f01eff0559 Merge pull request #4647 from rhamzeh/fix/localization-add-palestine
fix: add Palestine to supported countries
2020-12-03 08:09:33 +01:00
Gary Wilber 26a05e6974 Handle config updates 2020-12-02 23:07:51 -08:00
Claus Vium 4ae62e74e9 Merge pull request #4644 from jellyfin/minor9
Minor improvements
2020-12-03 08:00:44 +01:00
Claus Vium 1d3b2e8dd6 Merge pull request #4643 from crobibero/empty-lib-null-ref
Fix null reference when getting filters of an empty library
2020-12-03 07:58:05 +01:00
Claus Vium e042572588 Merge pull request #4633 from crobibero/guid-params
Use Guid as API parameter type where possible
2020-12-03 07:51:02 +01:00
Gary Wilber f4edca7c27 Move MetadataRefreshThrottler to BaseItemManager 2020-12-02 18:51:53 -08:00
Raghd Hamzeh 9497530281 fix: add Palestine to supported countries 2020-12-02 21:14:37 -05:00
crobibero 7a729ea8d6 Move OpenApiSecurityScheme to OperationFilter 2020-12-02 14:59:57 -07:00
crobibero 828504e925 The future is now 2020-12-02 08:04:08 -07:00
crobibero 08be7f094a Cleaner type checking 2020-12-02 07:55:34 -07:00
Bond-009 ea20f05de4 Merge pull request #4589 from ConfusedPolarBear/id-fix
[Fix] Test query value
2020-12-02 15:55:17 +01:00
crobibero 41e127d1d2 Fix null reference when getting filters of an empty library 2020-12-02 07:42:25 -07:00
Bond_009 e4fd61411f Minor improvements 2020-12-02 15:38:52 +01:00
Fernando 5bfc5b9166 Translated using Weblate (Spanish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es/
2020-12-02 09:24:13 -05:00
crobibero 09b1e571f4 Apply suggestions from review 2020-12-02 07:11:42 -07:00
Claus Vium 3b4f86579b Merge pull request #4610 from nyanmisaka/hdr-extract
Extract tone mapped thumbnails for HDR videos
2020-12-02 09:50:54 +01:00
Joshua M. Boniface a6199f821b Merge pull request #4169 from stanionascu/bdiso-playback
Playback (direct-stream/transcode) of BDISO/BDAV containers
2020-12-01 22:36:04 -05:00
crobibero 589625a349 Don't die if folder doesn't have id 2020-12-01 17:36:36 -07:00
Nyanmisaka 7b5285feac Apply suggestions from code review
Co-authored-by: BaronGreenback <jimcartlidge@yahoo.co.uk>
2020-12-02 08:22:07 +08:00
crobibero b5a7a74e89 Use GetParentItem where applicable 2020-12-01 16:16:17 -07:00
Claus Vium 28373504da Merge pull request #4625 from crobibero/api-docs-description
Fix OpenApi generation for BlurHash
2020-12-02 00:04:05 +01:00
Joshua M. Boniface 513a9e2857 Merge pull request #4597 from nyanmisaka/opencl-intel
Add NEO OpenCL runtime for Intel Tone mapping
2020-12-01 18:00:49 -05:00
Claus Vium 65087a382e Merge pull request #4580 from crobibero/efcore-datetime
Specify default DateTimeKind from EFCore
2020-12-01 23:48:11 +01:00
Claus Vium 79578521b8 Merge pull request #4629 from crobibero/auth-handler
Provide NoResult instead of Fail in CustomAuthenticationHandler
2020-12-01 23:44:52 +01:00
Claus Vium 81823f9a3d Merge pull request #4628 from MrTimscampi/no-next-resumable
Prevent GetUpNext from returning episodes in progress
2020-12-01 23:01:01 +01:00
crobibero cd459c51f3 Return NoResult only when request doesn't have a token. 2020-12-01 14:47:42 -07:00
Claus Vium 673d2c0d26 Update Emby.Server.Implementations/TV/TVSeriesManager.cs 2020-12-01 22:31:55 +01:00
BaronGreenback 6173534d33 Update Startup.cs
Missed a config move
2020-12-01 21:16:36 +00:00
crobibero f48e47be5f Split nested conditional 2020-12-01 12:10:11 -07:00
Bill Thornton ffd45b8df7 Merge pull request #4630 from jellyfin/uuid
Add tests for GetUuid
2020-12-01 13:40:50 -05:00
Bill Thornton 1bb4b590a7 Merge pull request #4626 from nyanmisaka/audio-bitrate
Do not extract audio stream bitrate info for videos from formatInfo
2020-12-01 13:39:29 -05:00
MrTimscampi 371092cf62 Fix possible nullref 2020-12-01 19:33:18 +01:00
MrTimscampi 7ba9ba4780 Fix typo 2020-12-01 19:26:51 +01:00
Claus Vium afd20f69d9 Merge pull request #4632 from crobibero/muzicbrainz-xml
Fix MusicBrainz request Accept header.
2020-12-01 19:19:31 +01:00
crobibero 2055d49701 fix inverted condition 2020-12-01 11:10:56 -07:00
crobibero 821ad79992 fix spacing 2020-12-01 11:09:01 -07:00
crobibero c083b29e29 Use Guid as API parameter type where possible 2020-12-01 11:07:41 -07:00
crobibero b32c75fee5 Fix MusicBrainz request Accept header. 2020-12-01 09:57:13 -07:00
4d1m f660969e6c Translated using Weblate (Romanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ro/
2020-12-01 10:36:36 -05:00
Bond_009 f6a38e6340 Add tests for GetUuid 2020-12-01 15:12:55 +01:00
crobibero 38b3b4f867 Provide NoResult instead of Fail in CustomAuthenticationHandler 2020-12-01 06:32:46 -07:00
MrTimscampi 21a67a66d2 Prevent GetUpNext from returning episodes in progress 2020-12-01 14:23:24 +01:00
nyanmisaka 6536c81226 do not extract audio stream bitrate info for videos from formatInfo 2020-12-01 10:55:25 +08:00
Claus Vium 0a35f35311 Merge pull request #4591 from jellyfin/schedulesdirect
Clean up SchedulesDirect
2020-11-30 19:58:20 +01:00
xnick d734deb6c1 Translated using Weblate (Greek)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/el/
2020-11-30 13:00:51 -05:00
Nyanmisaka 421faabc7c Merge branch 'master' into hdr-extract 2020-12-01 00:59:21 +08:00
Bond-009 78fef80696 Merge pull request #4607 from nyanmisaka/fix-image-extraction
Fix the I-frame image extraction filter string
2020-11-30 17:47:03 +01:00
crobibero d2d71ac3a1 Fix OpenApi generation for BlurHash 2020-11-30 08:47:52 -07:00
Bond-009 729327441d Merge pull request #4622 from jellyfin/dependabot/nuget/prometheus-net.DotNetRuntime-3.4.1
Bump prometheus-net.DotNetRuntime from 3.4.0 to 3.4.1
2020-11-30 16:06:30 +01:00
dependabot[bot] d13611f7da Bump prometheus-net.DotNetRuntime from 3.4.0 to 3.4.1
Bumps [prometheus-net.DotNetRuntime](https://github.com/djluck/prometheus-net.DotNetRuntime) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/djluck/prometheus-net.DotNetRuntime/releases)
- [Commits](https://github.com/djluck/prometheus-net.DotNetRuntime/compare/3.4.0...3.4.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-30 15:06:21 +00:00
Bond-009 b3f39b1f9f Merge pull request #4623 from jellyfin/dependabot/nuget/Moq-4.15.2
Bump Moq from 4.15.1 to 4.15.2
2020-11-30 16:06:14 +01:00
Bond-009 acc75fc9cf Merge pull request #4621 from jellyfin/dependabot/nuget/ServiceStack.Text.Core-5.10.2
Bump ServiceStack.Text.Core from 5.10.0 to 5.10.2
2020-11-30 16:05:29 +01:00
Claus Vium 73b04d58ad Merge pull request #4613 from jellyfin/DLNAEventFix
[Fix] NotificationType was never set in dlna event manager
2020-11-30 15:35:47 +01:00
Bond-009 926d821298 Merge pull request #4620 from nyanmisaka/fix-transcodeReasons
Fix transcoding reasons report
2020-11-30 13:22:56 +01:00
dependabot[bot] 44edd4b1a2 Bump Moq from 4.15.1 to 4.15.2
Bumps [Moq](https://github.com/moq/moq4) from 4.15.1 to 4.15.2.
- [Release notes](https://github.com/moq/moq4/releases)
- [Changelog](https://github.com/moq/moq4/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moq/moq4/commits/v4.15.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-30 12:01:00 +00:00
dependabot[bot] 21a2dec5b2 Bump ServiceStack.Text.Core from 5.10.0 to 5.10.2
Bumps [ServiceStack.Text.Core](https://github.com/ServiceStack/ServiceStack.Text) from 5.10.0 to 5.10.2.
- [Release notes](https://github.com/ServiceStack/ServiceStack.Text/releases)
- [Commits](https://github.com/ServiceStack/ServiceStack.Text/compare/v5.10...v5.10.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-30 12:00:45 +00:00
nyanmisaka ea592d0256 fix trascodeReasons report 2020-11-30 18:41:59 +08:00
Ionut Andrei Oanca b57ace7888 Address requested changes from review 2020-11-30 10:03:42 +01:00
Enes 2375bd69e4 Translated using Weblate (Turkish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/tr/
2020-11-29 19:20:13 -05:00
TF 21893b6abe Translated using Weblate (Portuguese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt/
2020-11-29 17:30:43 -05:00
Enes 7561eda0f0 Translated using Weblate (Turkish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/tr/
2020-11-29 17:30:43 -05:00
nyanmisaka 92118c2129 allow to extract music bitrate info from formatInfo 2020-11-29 22:46:26 +08:00
Claus Vium 93bd5e67e9 Merge pull request #4525 from crobibero/transcode-file-task-schedule
Set DeleteTranscodeFileTask to trigger every 24h
2020-11-29 10:02:25 +01:00
nyanmisaka 3e9cf98c30 add hdr tone mapping to image extraction 2020-11-29 13:22:42 +08:00
nyanmisaka c2c06ae15b fix image extraction 2020-11-29 13:20:55 +08:00
nyanmisaka bb16174936 increase the default image extraction timeout 2020-11-29 13:12:41 +08:00
BaronGreenback a8ceb7e20b Update DlnaEventManager.cs 2020-11-28 23:45:26 +00:00
BaronGreenback 4a67267e1e Update DlnaEventManager.cs
Set notificationType
2020-11-28 23:44:19 +00:00
Telmo Duarte e936d0872b Translated using Weblate (Portuguese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt/
2020-11-28 17:33:37 -05:00
Telmo Duarte 304bbfd66d Translated using Weblate (Portuguese (Portugal))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_PT/
2020-11-28 17:33:37 -05:00
No Available e52e1918c5 Translated using Weblate (Danish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/da/
2020-11-28 17:33:37 -05:00
dkanada 3e1631fed1 Merge pull request #4608 from jellyfin/enable-music
Remove deprecated flag to disable music plugins
2020-11-29 01:20:43 +09:00
Bill Thornton 162d6ee6b3 Merge pull request #4609 from Bond-009/tests4
Add more tests for JsonGuidConverter
2020-11-28 10:56:42 -05:00
Bond_009 10be618ec3 Add more tests for JsonGuidConverter 2020-11-28 16:33:57 +01:00
Bond-009 1cd3b3fc41 Merge pull request #4605 from hawken93/bugfix-libraryerror
Allow JsonGuidConverter to read null
2020-11-28 16:23:56 +01:00
Ionut Andrei Oanca 78ea8ef99e Create common interface for SyncPlay requests 2020-11-28 16:03:02 +01:00
dkanada 8b0ef119c3 remove deprecated flag to disable music plugins 2020-11-28 23:55:56 +09:00
BaronGreenback cab78f40b3 [Fix] Possible null reference. (#4585)
Fix possible null reference.
2020-11-28 15:44:14 +01:00
Nyanmisaka 0c6efe6317 Apply suggestions from code review
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-11-28 22:32:54 +08:00
Nyanmisaka d72f3498bf fix ci 2020-11-28 21:27:55 +08:00
Ionut Andrei Oanca c60714e365 Move query parameters to request body in SyncPlay 2020-11-28 14:20:46 +01:00
Nyanmisaka 53c91c2c14 Apply suggestions from code review
Co-authored-by: BaronGreenback <jimcartlidge@yahoo.co.uk>
2020-11-28 21:14:55 +08:00
nyanmisaka d19edefbcd fix image extraction 2020-11-28 20:55:56 +08:00
cvium ba78ad5424 Add missing inheritdoc 2020-11-28 11:24:52 +01:00
cvium 65e6211c03 Remove circular dependency between websocket listeners and manager 2020-11-28 11:21:53 +01:00
cvium 3ae39d44da Revert "Fixed SessionWebSocketListener.OnServerManagerWebSocketConnected." 2020-11-28 09:50:30 +01:00
cvium 1a0d8aef80 Revert "Removed Lazy implementation." 2020-11-28 09:50:16 +01:00
hawken f9f0df88d5 allow JsonGuidConverter to read null 2020-11-28 09:41:06 +01:00
conashinck f1b3811ca7 Translated using Weblate (Chinese (Traditional))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2020-11-27 22:23:02 -05:00
conashinck 1458797330 Translated using Weblate (Chinese (Traditional))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2020-11-27 20:33:04 -05:00
Nyanmisaka 8814d9c5ea Apply suggestions from code review
Co-authored-by: artiume <siderite@gmail.com>
2020-11-28 09:03:45 +08:00
Greenback 5cd5a7d4ce Removed Lazy implementation. 2020-11-28 00:25:20 +00:00
Greenback a59aeb12e0 Fixed SessionWebSocketListener.OnServerManagerWebSocketConnected. 2020-11-27 23:04:13 +00:00
Matt Montgomery 185476c08a Add support for query negation 2020-11-27 16:12:16 -06:00
Claus Vium 5dc61f066d Merge pull request #4595 from MrTimscampi/clean-next-up
Don't return first episodes in next up
2020-11-27 21:03:06 +01:00
MrTimscampi 0dda909a60 Fix suggestion 2020-11-27 19:06:18 +01:00
Claus Vium e6502503f6 Merge pull request #4594 from nyanmisaka/remove-redundant
Remove one redundant 'hwaccel vaapi' string
2020-11-27 18:23:28 +01:00
Joshua M. Boniface c98c2ab955 Merge branch 'master' into syncplay-enhanced 2020-11-27 09:46:18 -05:00
nyanmisaka b26a5e9e20 add NEO OpenCL runtime for Intel Tone mapping 2020-11-27 20:12:47 +08:00
MrTimscampi c196ad3351 Don't return first episodes in next up 2020-11-27 10:25:43 +01:00
nyanmisaka cc9e178d9a remove a redundant 'hwaccel vaapi' string 2020-11-27 16:08:44 +08:00
Joshua M. Boniface 9169a28df1 Merge pull request #4588 from jellyfin/hex
Remove Hex class as the BCL has one now
2020-11-27 01:59:58 -05:00
Bond_009 81ca6cb47c Clean up SchedulesDirect 2020-11-26 21:54:14 +01:00
WWWesten 536ac4c11c Translated using Weblate (Russian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ru/
2020-11-26 14:23:08 -05:00
Rubikscraft ab6a4fac91 Translated using Weblate (Dutch)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/
2020-11-26 08:15:48 -05:00
Bond_009 38932fc7d1 Schedules Direct requires the hex to be lowercase 2020-11-26 13:21:04 +01:00
Claus Vium 32822ef9e6 Merge pull request #4582 from crobibero/music-client
Use proper Named HttpClient for MusicBrainz requests
2020-11-26 10:32:09 +01:00
Matt Montgomery 0758d84a61 Test query value 2020-11-25 16:54:16 -06:00
Bond_009 8c8a71692e Remove Hex class as the BCL has one now 2020-11-25 23:40:31 +01:00
crobibero c4423373b6 Use proper Named HttpClient for MusicBrainz requests 2020-11-25 08:47:05 -07:00
Bill Thornton 79f197938d Merge pull request #4570 from nyanmisaka/tonemap-vaapi
Add Tonemapping for Intel VAAPI
2020-11-25 10:45:52 -05:00
crobibero 6c0188c42b Fix efcore not returning a UTC DateTime 2020-11-25 07:44:11 -07:00
Bond-009 3d6920ae40 Merge pull request #4574 from jellyfin/revert-4553-enable-service-on-fedora
Revert "Enable jellyfin.service unit on Fedora fresh install"
2020-11-25 14:08:18 +01:00
nextlooper42 abf0f85123 Translated using Weblate (Slovak)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sk/
2020-11-25 06:09:06 -05:00
Claus Vium e86385b74d Merge pull request #4575 from crobibero/null-ref
Don't throw null reference if ContentType is null.
2020-11-25 08:20:57 +01:00
Ignatius Bagus 8275a5d635 Translated using Weblate (Indonesian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/id/
2020-11-25 00:26:24 -05:00
Nyanmisaka b042a9f539 minor changes 2020-11-25 10:33:16 +08:00
Bill Thornton 42e90893cd Merge pull request #4517 from BaronGreenback/pluginMessageFix
[Fix] Fixed Plugin versioning in browser notifications
2020-11-24 20:35:40 -05:00
nextlooper42 4edbd6d182 Translated using Weblate (Slovak)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sk/
2020-11-24 20:34:40 -05:00
Bill Thornton 94ddfda6e5 Merge pull request #4563 from crobibero/playback-info
Fix sending PlaybackInfo
2020-11-24 20:34:32 -05:00
crobibero 0acea5b077 Don't throw null reference if ContentType is null. 2020-11-24 16:42:27 -07:00
volodymyr 49eadd3246 Translated using Weblate (Ukrainian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/uk/
2020-11-24 18:29:13 -05:00
nextlooper42 9b2999237f Translated using Weblate (Slovak)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sk/
2020-11-24 18:29:13 -05:00
Joshua M. Boniface 922b02733b Revert "Enable jellyfin.service unit on Fedora fresh install" 2020-11-24 17:25:50 -05:00
nextlooper42 9534f55eb0 Translated using Weblate (Slovak)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sk/
2020-11-24 13:58:27 -05:00
Nyanmisaka 44dc1c3729 Apply suggestions from code review
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-24 16:27:46 +00:00
Nyanmisaka 75963d9181 enable cl-va p010 interop 2020-11-24 23:25:32 +08:00
Nyanmisaka 9c703a75ec disable graphical subs burn-in when tonemapping 2020-11-24 23:10:34 +08:00
Oatavandi f8229529ab Translated using Weblate (Tamil)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ta/
2020-11-24 09:56:04 -05:00
nyanmisaka bee69e409b add tonemapping for intel vaapi
hwdec->scale->tonemap->hwenc

hwdec->scale->tonemap->textsubs->hwenc

* grapical subs requires overlay_vaapi, but it's still in ffmpeg mailing list.
2020-11-24 22:09:13 +08:00
Mikko Puntanen eefb192584 Translated using Weblate (Finnish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fi/
2020-11-24 06:27:38 -05:00
CutterXYZ 9b14e7d6e4 Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-11-24 06:27:38 -05:00
hoanghuy309 29e686b042 Translated using Weblate (Vietnamese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/vi/
2020-11-24 05:33:59 -05:00
Claus Vium 4ce9bf3fcf Merge pull request #4568 from crobibero/guid-empty
Serialize Guid.Empty to null
2020-11-24 09:04:47 +01:00
BaronGreenback 50e375020a [Fix] NetworkManager binding to [::] (#4549)
* Autodiscovery enable/disable patch

* Fixed [::] issue on bind. Altered test.

* Update UdpServerEntryPoint.cs

* Update Jellyfin.Networking.Tests.csproj

* Update Jellyfin.Networking.Tests.csproj

* Update INetworkManager.cs
2020-11-24 06:11:02 +01:00
BaronGreenback 6676ca4d1b Remove ResourceFileManager (#4567) 2020-11-24 06:06:36 +01:00
crobibero c4925ad70b Serialize Guid.Empty to null 2020-11-23 16:07:15 -07:00
Antonio Sarro 41b3a7869e Translated using Weblate (Italian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/it/
2020-11-23 15:05:44 -05:00
Bill Thornton e428614d00 Merge pull request #4550 from crobibero/plugin-repo
Handle invalid plugins
2020-11-23 14:17:51 -05:00
Bill Thornton 2d415374d6 Merge pull request #4562 from crobibero/playback-stop-notification
Don't send activity event if notification type is null
2020-11-23 14:16:03 -05:00
Bill Thornton 4f96e2f256 Merge pull request #4554 from joshuaboniface/fix-restart
Run explicit service start if restart failed
2020-11-23 14:15:18 -05:00
Bill Thornton b187fe6fcb Merge pull request #4553 from joshuaboniface/enable-service-on-fedora
Enable jellyfin.service unit on Fedora fresh install
2020-11-23 14:14:01 -05:00
crobibero 1dafd70f51 Don't nest DeviceProfile 2020-11-23 10:50:18 -07:00
crobibero fafddfc45e Add TODO notice 2020-11-23 09:51:24 -07:00
crobibero f336d20b06 Fix sending PlaybackInfo 2020-11-23 09:49:42 -07:00
crobibero 5de8c249a0 Don't send activity event if notification type is null 2020-11-23 08:18:07 -07:00
dkanada 02c1879533 Merge pull request #4551 from crobibero/fix-name-cleaning
Only trim file name if folder name is shorter
2020-11-23 22:34:17 +09:00
dkanada 347d04efad Merge pull request #4557 from crobibero/client-dto-fix
Fix namespace and add attribute for ClientCapabilitiesDto
2020-11-23 17:49:57 +09:00
crobibero 3bff1ff8a2 Fix namespace and add attribute 2020-11-22 18:46:55 -07:00
Joshua M. Boniface 91dd95faa3 Add at to the dependencies on Fedora (as in Deb) 2020-11-22 18:32:34 -05:00
Joshua M. Boniface 6de79e03a2 Go back to at with lower sleep and start 2020-11-22 18:32:16 -05:00
Joshua M. Boniface 97665c9478 Remove the at now hack 2020-11-22 17:19:39 -05:00
Joshua M. Boniface 1079ddb46c Run explicit service start if restart failed
Should solve the occasional bugs with the restart in the WebUI.
Sometimes the service stops and then doesn't start again; this will run
an explicit start action afterwards. If this doesn't fix it I'm certain
there would be more tweaking that can be done.
2020-11-22 17:12:29 -05:00
Joshua M. Boniface 5f135a4b46 Use --now to the enable to start too 2020-11-22 17:01:13 -05:00
Joshua M. Boniface be4e485bd3 Make use of the $1 flag to set installed only 2020-11-22 16:58:07 -05:00
Joshua M. Boniface d88504c1d6 Set systemctl enabled on Jellyfin service
This was not set for Fedora; I do not recall if this was just an oversight or was
explicitly removed in the past; open to feedback there.

Reported in the LUP Bug-A-Thon
2020-11-22 16:49:12 -05:00
crobibero 20251e670f Fix tests 2020-11-22 14:39:34 -07:00
crobibero 2aefe9ed5a Only trim file name if folder name is shorter 2020-11-22 14:17:42 -07:00
crobibero c5f5633ec6 Handle invalid plugins 2020-11-22 12:35:45 -07:00
Joshua M. Boniface 3442dbbaf9 Merge pull request #4545 from BaronGreenback/17.0RC0---Fix1
[Fix] Null Pointer in TmdbMovieProvider
2020-11-22 13:49:58 -05:00
Joshua M. Boniface 8ec4dda9d1 Merge pull request #4544 from BaronGreenback/MinorFix
[Fix] Config option read from wrong place.
2020-11-22 13:49:26 -05:00
Joshua M. Boniface f39e55e2e5 Merge pull request #4548 from orryverducci/mkv-interlaced-fix
Revert "Fix frame rate probing for interlaced MKV files"
2020-11-22 13:06:10 -05:00
Orry Verducci 812300ad33 Revert "Fix frame rate probing for interlaced MKV files"
This reverts commit 84fd5a0953.
2020-11-22 16:54:41 +00:00
Greenback fe3e22be98 Null Pointer 2020-11-22 13:11:05 +00:00
BaronGreenback dfee591c2a Update Startup.cs
Late night
2020-11-22 12:06:39 +00:00
BaronGreenback a34fca6f8e Update Startup.cs 2020-11-22 11:40:50 +00:00
Joshua M. Boniface a57b99bffd Merge pull request #4125 from BaronGreenback/NetworkPR2
Networking 2 (Cumulative PR) - Swapping over to new NetworkManager
2020-11-22 01:11:02 -05:00
Joshua M. Boniface 2c9e355e42 Merge branch 'master' into NetworkPR2 2020-11-21 23:28:15 -05:00
hoanghuy309 c1db8869f0 Translated using Weblate (Vietnamese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/vi/
2020-11-21 23:08:01 -05:00
Joshua M. Boniface 09c7f98162 Merge pull request #4263 from cvium/defer_image_fetching
Defer image pre-fetching until the end of a refresh/scan
2020-11-21 18:54:08 -05:00
BaronGreenback 969b9e2a18 Update ImageFetcherPostScanTask.cs 2020-11-21 23:33:41 +00:00
BaronGreenback d3b0080a27 Update MetadataService.cs
added return Task.CompletedTask;
2020-11-21 23:29:52 +00:00
BaronGreenback 79855a76b1 Update MetadataService.cs
removed async line 232
2020-11-21 23:21:15 +00:00
BaronGreenback e8cb9cea7d Merge branch 'master' into library_scan_speed 2020-11-21 22:54:40 +00:00
Joshua M. Boniface 77dba0d06b Merge pull request #3053 from rigtorp/video-resolver
Add additional resolver tests
2020-11-21 17:47:05 -05:00
Joshua M. Boniface d5eb7e786f Merge pull request #4182 from ryanpetris/fix-hdhomerun
Fix HD Home Run streaming
2020-11-21 17:22:19 -05:00
Joshua M. Boniface bf54b5579c Merge branch 'master' into defer_image_fetching 2020-11-21 17:20:31 -05:00
Joshua M. Boniface b707d8e09d Merge pull request #4486 from crobibero/split-api
Remove api client generator errors
2020-11-21 17:19:08 -05:00
Joshua M. Boniface da96cbaf78 Merge pull request #4510 from crobibero/http-accept-header
Set default request accept headers
2020-11-21 17:18:49 -05:00
Joshua M. Boniface f6c842e7b3 Merge pull request #4513 from BaronGreenback/LatestPluginSelected
Multi-repository plugins
2020-11-21 17:18:19 -05:00
Joshua M. Boniface 509a4d0900 Merge pull request #4526 from crobibero/mark-played
Fix marking item as played
2020-11-21 17:17:44 -05:00
Claus Vium fab03942f5 Merge pull request #4537 from crobibero/session-caps-full
Convert ClientCapabilities to a Dto with JsonConverters
2020-11-21 21:34:58 +01:00
Greenback dc1ad3fe2a Better named tests methods. 2020-11-21 20:31:24 +00:00
Joshua M. Boniface 1e6539d0dc Merge pull request #4539 from crobibero/nullable-enum-model-binder
Add NullableEnumModelBinder and NullableEnumModelBinderProvider
2020-11-21 15:14:59 -05:00
Joshua M. Boniface eb90b20fe3 Merge pull request #4534 from Bond-009/bom
Remove UTF8 bom from some files
2020-11-21 15:14:27 -05:00
BaronGreenback 1e13627a94 Update tests/Jellyfin.Networking.Tests/NetworkTesting/NetworkParseTests.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-21 20:05:31 +00:00
BaronGreenback 3f2c331755 Update tests/Jellyfin.Networking.Tests/NetworkTesting/NetworkParseTests.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-21 20:05:11 +00:00
BaronGreenback c3fa9d00ae Update tests/Jellyfin.Networking.Tests/NetworkTesting/NetworkParseTests.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-21 20:04:58 +00:00
BaronGreenback e33200db71 Update tests/Jellyfin.Networking.Tests/NetworkTesting/NetworkParseTests.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-21 20:04:16 +00:00
BaronGreenback c14f468099 Update tests/Jellyfin.Networking.Tests/NetworkTesting/NetworkParseTests.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-21 20:04:02 +00:00
BaronGreenback acb79eb56a Update tests/Jellyfin.Networking.Tests/NetworkTesting/NetworkParseTests.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-21 20:02:36 +00:00
BaronGreenback b4e7032872 Update tests/Jellyfin.Networking.Tests/NetworkTesting/NetworkParseTests.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-21 20:02:19 +00:00
BaronGreenback 13162184f4 Update tests/Jellyfin.Networking.Tests/NetworkTesting/NetworkParseTests.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-21 20:01:58 +00:00
BaronGreenback 5ac25364db Update tests/Jellyfin.Networking.Tests/NetworkTesting/NetworkParseTests.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-21 20:01:01 +00:00
BaronGreenback ac03516f89 Update tests/Jellyfin.Networking.Tests/NetworkTesting/NetworkParseTests.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-21 20:00:37 +00:00
BaronGreenback 23fa9533af Update tests/Jellyfin.Networking.Tests/NetworkTesting/NetworkParseTests.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-21 20:00:17 +00:00
Greenback 5224200e8c Fixed baseurl in dlna. 2020-11-21 19:50:40 +00:00
Joshua M. Boniface a597673929 Merge pull request #4538 from mario-campos/master
Implement CodeQL Static Analysis
2020-11-21 14:42:36 -05:00
crobibero 40531db1ae Add NullableEnumModelBinder and NullableEnumModelBinderProvider 2020-11-21 11:58:35 -07:00
crobibero c8c5feacb6 Convert ClientCapabilities to a Dto with JsonConverters 2020-11-21 11:37:22 -07:00
Mario Campos f17e95abea Update codeql-analysis.yml 2020-11-21 12:21:58 -06:00
Mario Campos e2aa7635bd Update codeql-analysis.yml 2020-11-21 12:03:09 -06:00
Mario Campos 2f00d05eae Create codeql-analysis.yml 2020-11-21 11:49:52 -06:00
Greenback 9b5ae690c1 renamed file. 2020-11-21 16:17:26 +00:00
Greenback e41d1773ba changes 2020-11-21 16:14:03 +00:00
BaronGreenback 7403b9a9e5 Update tests/Jellyfin.Networking.Tests/NetworkTesting/UnitTesting.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-21 16:10:35 +00:00
BaronGreenback 46e6128f6c Update tests/Jellyfin.Networking.Tests/NetworkTesting/UnitTesting.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-21 16:08:19 +00:00
BaronGreenback 56754a2af2 Update tests/Jellyfin.Networking.Tests/NetworkTesting/UnitTesting.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-21 16:03:25 +00:00
BaronGreenback ead881d487 Update tests/Jellyfin.Networking.Tests/NetworkTesting/UnitTesting.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-21 16:03:16 +00:00
BaronGreenback 8f25eaeb9d Update Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-21 16:02:54 +00:00
Greenback 086e2fdaa1 Fixed a couple of merge errors. 2020-11-21 14:09:56 +00:00
Greenback 33f6b13d4f Moved INetworkManager 2020-11-21 14:05:28 +00:00
Greenback c4753cec6c Fixed merge. 2020-11-21 14:05:09 +00:00
Greenback 616caca2b7 Added more comments. 2020-11-21 13:27:27 +00:00
Bond_009 f5973d57e8 Remove UTF8 bom from some files 2020-11-21 14:26:03 +01:00
BaronGreenback 05bd1383c1 Null pointer fix. (#4527)
Co-authored-by: Patrick Barron <18354464+barronpm@users.noreply.github.com>
2020-11-21 14:22:23 +01:00
Claus Vium 937e2a84e8 Merge pull request #4533 from Bond-009/nullref3
Fix nullref
2020-11-21 14:14:12 +01:00
BaronGreenback 124bd4c2c0 Networking: 1 - Network Manager (#4124)
* NetworkManager

* Config file with additional options.

* Update Jellyfin.Networking/Manager/INetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update Jellyfin.Networking/Manager/INetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Model/Configuration/ServerConfiguration.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Model/Configuration/ServerConfiguration.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Model/Configuration/ServerConfiguration.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Split function.

* Update Jellyfin.Networking/Manager/INetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* fixed iterations

* Update Jellyfin.Networking.csproj

* Update NetworkManager.cs

* Updated to NetCollection 1.03.

* Update ServerConfiguration.cs

* Update StartupController.cs

* Update INetworkManager.cs

Removed public

* Update INetworkManager.cs

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Claus Vium <cvium@users.noreply.github.com>

* Updated comment

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Claus Vium <cvium@users.noreply.github.com>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Claus Vium <cvium@users.noreply.github.com>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Claus Vium <cvium@users.noreply.github.com>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Claus Vium <cvium@users.noreply.github.com>

* Update Jellyfin.Networking/Manager/INetworkManager.cs

Co-authored-by: Claus Vium <cvium@users.noreply.github.com>

* Remove mono code.
Removed forced chromecast option

* Inverted if

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Moved config into a separate container

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Changed sortedList to dictionary.

* Update INetworkManager.cs

Changed UpdateSettings param type

* Update NetworkManager.cs

* Update NetworkManager.cs

* Update NetworkManager.cs

* Update NetworkConfiguration.cs

* Update INetworkManager.cs

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Claus Vium <cvium@users.noreply.github.com>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Claus Vium <cvium@users.noreply.github.com>

* Update MediaBrowser.Model/Configuration/ServerConfiguration.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Model/Configuration/ServerConfiguration.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Updated changes github didn't update.

* Fixed compilation.

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Removed read locking.

* Update NetworkManager.cs

Changed configuration event to NamedConfigurationUpdated

* updated comment

* removed whitespace

* Updated NetCollection to 1.0.6
Updated DXCopAnalyser to 3.3.1

* removed NetCollection

* Update NetworkManager.cs

* Update NetworkExtensions.cs

* Update NetworkExtensions.cs

Removed function.

* Update NetworkExtensions.cs

* Update NetworkManager.cs

Changed ToString() to AsString() as native collection formats incorrectly.

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update NetworkExtensions.cs

* Update Jellyfin.Networking/Configuration/NetworkConfiguration.cs

Co-authored-by: h1dden-da3m0n <33120068+h1dden-da3m0n@users.noreply.github.com>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: h1dden-da3m0n <33120068+h1dden-da3m0n@users.noreply.github.com>

* Update Jellyfin.Networking/Configuration/NetworkConfiguration.cs

Co-authored-by: h1dden-da3m0n <33120068+h1dden-da3m0n@users.noreply.github.com>

* Update Jellyfin.Networking/Configuration/NetworkConfiguration.cs

Co-authored-by: h1dden-da3m0n <33120068+h1dden-da3m0n@users.noreply.github.com>

* Update MediaBrowser.Common/Net/IPObject.cs

Co-authored-by: h1dden-da3m0n <33120068+h1dden-da3m0n@users.noreply.github.com>

* updated

* Replaced NetCollection with Collection<IPObject>

* Update MediaBrowser.Common/Net/NetworkExtensions.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Model/Configuration/PathSubstitution.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Common/Net/NetworkExtensions.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Common/Net/IPObject.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Common/Net/IPObject.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Common/Net/IPObject.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Common/Net/IPHost.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Common/Net/IPHost.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Common/Net/IPHost.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Common/Net/IPHost.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Common/Net/IPHost.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Common/Net/IPHost.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Common/Net/IPHost.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Common/Net/IPObject.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* Update MediaBrowser.Common/Net/IPObject.cs

Co-authored-by: Cody Robibero <cody@robibe.ro>

* updated comments.

* Updated comments / changes as suggested by @crobibero.

* Split function as suggested

* Fixed null ref.

* Updated comment.

* Updated cs to .net5

* Fixed issue with PublishedServerUrl

* Fixes

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Claus Vium <cvium@users.noreply.github.com>

* Restored locking

* optimisation

* Added comment

* updates.

* updated.

* updates

* updated.

* Update IPHost.cs

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Claus Vium <cvium@users.noreply.github.com>

* Update NetworkManager.cs

* Removed whitespace.

* Added debug logging

* Added debug.

* Update Jellyfin.Networking/Manager/NetworkManager.cs

Co-authored-by: Bond-009 <bond.009@outlook.com>

* Replaced GetAddressBytes

Co-authored-by: Cody Robibero <cody@robibe.ro>
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
Co-authored-by: h1dden-da3m0n <33120068+h1dden-da3m0n@users.noreply.github.com>
Co-authored-by: Bond-009 <bond.009@outlook.com>
2020-11-21 13:59:14 +01:00
Bond_009 c01042b355 Fix nullref 2020-11-21 12:28:32 +01:00
BaronGreenback 7a6063ed41 Merge branch 'master' into NetworkPR2 2020-11-21 00:35:53 +00:00
Greenback 9a9b2bfb2e Updated to the latest 2020-11-21 00:34:09 +00:00
Greenback eed1a40b19 Fixed tests 2020-11-20 19:18:18 +00:00
Greenback 972ed3ccfe fix. 2020-11-20 18:56:36 +00:00
crobibero b0be434ba6 Revert unused change 2020-11-20 11:28:45 -07:00
crobibero f512d5167d Remove broken CleanDateTimes regex 2020-11-20 11:27:37 -07:00
crobibero 5b8e248d72 Merge remote-tracking branch 'upstream/master' into video-resolver 2020-11-20 11:21:24 -07:00
crobibero 20dcb7d5c3 Merge branch 'video-resolver' of github.com:rigtorp/jellyfin into video-resolver 2020-11-20 11:21:03 -07:00
crobibero b3d322f79f Fix build after merge 2020-11-20 10:50:11 -07:00
crobibero 8f58f63b08 Merge remote-tracking branch 'upstream/master' into split-api 2020-11-20 10:35:46 -07:00
Joshua M. Boniface d2cef78db3 Merge pull request #4339 from BaronGreenback/PluginConfigSave
Making default Plugin configurations accessible when developing.
2020-11-20 12:34:38 -05:00
Joshua M. Boniface 7457c4a95d Merge pull request #4499 from crobibero/more-param
Reduce RequestHelpers.Split usage and remove RequestHelpers.GetGuids
2020-11-20 12:34:18 -05:00
Joshua M. Boniface 799eb44005 Merge pull request #4514 from Artiume/patch-9
Update FFmpeg log
2020-11-20 12:34:10 -05:00
Joshua M. Boniface a1707739d6 Merge pull request #4515 from barronpm/dont-store-capabilities
Clean up DeviceManager and Don't Store Capabilities on Disk
2020-11-20 12:33:58 -05:00
Joshua M. Boniface c901f1da41 Merge pull request #4518 from crobibero/livetv-hls
Fix live tv hls playback
2020-11-20 12:33:48 -05:00
crobibero 2f75f84b6f Fix marking item as played 2020-11-20 10:22:40 -07:00
crobibero 7e7d027bb0 Merge remote-tracking branch 'upstream/master' into transcode-file-task-schedule 2020-11-20 08:25:45 -07:00
BaronGreenback b879fb615e Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-20 15:19:46 +00:00
Joshua M. Boniface de2f4967d1 Merge pull request #4524 from crobibero/test-5.0
Use sdk 5.x
2020-11-20 10:19:30 -05:00
crobibero bf66f57069 Set DeleteTranscodeFileTask to trigger every 24h 2020-11-20 08:12:38 -07:00
crobibero f727f5dd72 Use sdk 5.x 2020-11-20 07:52:10 -07:00
Joshua M. Boniface b15efc84ed Merge pull request #4523 from crobibero/test-5.0
Set sdk version to 5.0
2020-11-20 09:52:01 -05:00
crobibero 182a68f3dd Set sdk version to 5.0 2020-11-20 07:50:04 -07:00
Greenback d6b0a939f7 fixed 2020-11-20 14:14:00 +00:00
Csaba 2f9e549c35 Translated using Weblate (Hungarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hu/
2020-11-20 09:10:04 -05:00
Greenback 32b92641fb Get version info the manifest. 2020-11-20 14:03:27 +00:00
Decoy7 d630534615 Translated using Weblate (Greek)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/el/
2020-11-20 08:59:33 -05:00
BaronGreenback 47f3bb33f9 Update BasePlugin.cs 2020-11-20 09:03:11 +00:00
Claus Vium 84fe046226 Merge pull request #4432 from nyanmisaka/fmp4-hls
Add initial support for HEVC over FMP4-HLS
2020-11-20 08:17:05 +01:00
Claus Vium 44ff7a4843 Apply suggestions from code review 2020-11-20 08:06:28 +01:00
Claus Vium 8b23c4e241 Merge pull request #4519 from crobibero/datetime-iso8601
Write DateTimes in ISO8601 format for backwards compatibility.
2020-11-20 07:38:53 +01:00
Gary Wilber 4a22380565 Merge remote-tracking branch 'upstream/master' into library_scan_speed 2020-11-19 18:44:16 -08:00
Gary Wilber d6585e7ff2 Upgrade System.Threading.Tasks.Dataflow 2020-11-19 18:42:41 -08:00
nyanmisaka b4598bd71b Merge remote-tracking branch 'upstream/master' into fmp4-hls 2020-11-20 10:01:17 +08:00
nyanmisaka ca33ace3e9 rename 2020-11-20 09:57:28 +08:00
Marcin Woliński 90e4066b12 Translated using Weblate (Polish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pl/
2020-11-19 20:43:36 -05:00
artiume 6a751251e7 Update Jellyfin.Api/Helpers/TranscodingJobHelper.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-19 19:45:26 -05:00
crobibero f557a730bb Write DateTimes in ISO8601 format for backwards compatibility. 2020-11-19 17:33:51 -07:00
artiume a46b70b169 Truncate GUID to 8 char 2020-11-19 19:23:04 -05:00
crobibero d58e435409 Add response code documentation 2020-11-19 16:16:23 -07:00
crobibero fe8531f74e Fix live tv hls playback 2020-11-19 16:15:20 -07:00
Claus Vium c30e583201 Merge pull request #4501 from ferferga/no-scaling
Don't scale extracted images and ffmpeg improvements
2020-11-19 23:59:24 +01:00
Fernando Fernández e21e00cad5 Merge remote-tracking branch 'upstream/master' into no-scaling 2020-11-19 23:18:25 +01:00
artiume 3423bdf53a Update Jellyfin.Api/Helpers/TranscodingJobHelper.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-19 15:51:58 -05:00
Joshua M. Boniface b5ff91c281 Merge pull request #4298 from crobibero/bye-tvdb
Remove TheTVDB plugin from server source.
2020-11-19 14:25:12 -05:00
Greenback 084d21cade Updated contributors. 2020-11-19 18:27:30 +00:00
Greenback a3e47f3e4e Updated to latest Unstable. 2020-11-19 18:27:18 +00:00
BaronGreenback 9c3e484c0e Update BasePlugin.cs 2020-11-19 18:14:38 +00:00
Joshua M. Boniface 212c5318ae Merge pull request #4507 from BaronGreenback/Spelling
Corrects spelling in comments
2020-11-19 13:08:28 -05:00
Joshua M. Boniface 75d4a573a3 Merge pull request #4137 from BaronGreenback/Comment2
DLNA ConnectionManager - static and commented.
2020-11-19 13:03:37 -05:00
Greenback c4d8926426 Fixed notification 2020-11-19 17:55:31 +00:00
JoJoBot420 d8a3448a97 Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2020-11-19 12:50:00 -05:00
hoanghuy309 e71ab2afb1 Translated using Weblate (Vietnamese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/vi/
2020-11-19 11:00:13 -05:00
Oatavandi 28f8cb6ea5 Translated using Weblate (Tamil)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ta/
2020-11-19 11:00:13 -05:00
nyanmisaka b02ceea91b increase bitrate to 20Mbps for 1440p transcoding 2020-11-19 23:56:04 +08:00
Greenback 14fc7e6408 revert changes. 2020-11-19 15:40:20 +00:00
Greenback 452ca4565f reversing other PR 2020-11-19 15:39:00 +00:00
Fernando Fernández 2deda0437d Review suggestions 2020-11-19 16:36:19 +01:00
nyanmisaka 20d6999d8c minor changes 2020-11-19 23:04:44 +08:00
Nyanmisaka 5ff08338d5 Apply suggestions from code review
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-11-19 15:02:36 +00:00
Claus Vium 456ae32331 Merge pull request #4516 from oddstr13/fix-plugin-cleanup
Fix plugin old version cleanup
2020-11-19 15:54:36 +01:00
Odd Stråbø f8dd50fc1a Fix plugin old version cleanup 2020-11-19 15:50:34 +01:00
nyanmisaka 51dab0958d changes per suggestions 2020-11-19 22:46:02 +08:00
Greenback 31980e6f87 Fixed issue with plugins being deleted. 2020-11-19 14:40:06 +00:00
Patrick Barron 5790db05ba Clean up DeviceManager and don't store capabilities on disk 2020-11-19 09:38:54 -05:00
crobibero c53b4f5547 Add xml and quality 2020-11-19 07:35:34 -07:00
Greenback 1df58fbaa0 updated 2020-11-19 14:12:33 +00:00
Claus Vium 15b9f993c6 Merge pull request #4342 from crobibero/base-item-manager
Add BaseItemManager
2020-11-19 14:58:48 +01:00
artiume e6e7295320 oops 2020-11-19 08:58:16 -05:00
artiume 4e07d9d561 Update FFmpeg log 2020-11-19 08:49:21 -05:00
Greenback 18855a7884 Initialial upload 2020-11-19 13:34:09 +00:00
BaronGreenback ef05485243 Merge branch 'master' into PluginConfigSave 2020-11-19 09:04:49 +00:00
BaronGreenback 3ffdcfdb80 Update BasePlugin.cs 2020-11-19 09:03:03 +00:00
Claus Vium 49ebbcf87e Merge pull request #4509 from crobibero/plugin-save-null-ref
Fix null reference when saving plugin configuration
2020-11-19 09:02:58 +01:00
crobibero c2d2c571e7 Set default request accept headers 2020-11-18 18:20:31 -07:00
crobibero d608ab8042 Fix null reference when saving plugin configuration 2020-11-18 09:29:18 -07:00
Nyanmisaka fbcf3b750d Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2020-11-18 10:05:49 -05:00
BaronGreenback 4c394eec90 Update Jellyfin.Api/Controllers/LiveTvController.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-18 14:08:44 +00:00
BaronGreenback 7a26f64c7b Update Device.cs 2020-11-18 13:48:31 +00:00
Greenback 9a323f6df0 More spelling corrections. 2020-11-18 13:46:14 +00:00
Greenback e51ddd326c Fixes spelling. 2020-11-18 13:23:45 +00:00
Ionut Andrei Oanca 9c20701cf6 Correct typos 2020-11-18 13:28:35 +01:00
Fernando Fernández 38c3b6fcd3 Fix build and thread detection logic 2020-11-18 10:20:59 +01:00
dkanada 742966573d Merge pull request #4503 from jellyfin/cancellation
Pass cancellation where possible
2020-11-18 13:46:13 +09:00
crobibero 1831b6cbab Remove tvdb migration. 2020-11-17 16:39:47 -07:00
HDmaniac a8524be6be Translated using Weblate (Spanish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es/
2020-11-17 16:29:36 -05:00
danielxb-ar 316b18e8f2 Translated using Weblate (Spanish (Argentina))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_AR/
2020-11-17 16:29:36 -05:00
Moritz b91afdb56f Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2020-11-17 16:29:36 -05:00
Bill Thornton 26d95d19b4 Merge pull request #4504 from crobibero/startup-wiz
Fix Environment authorization policy
2020-11-17 15:56:12 -05:00
crobibero f6c6ee2008 Fix Environment authorization policy 2020-11-17 13:44:51 -07:00
Bond_009 4b1c9dc9ea Pass cancellation where possible 2020-11-17 19:43:00 +01:00
crobibero 5b62f70bc0 Update exception handle comment 2020-11-17 09:57:08 -07:00
Anthony Lavado 08c2c86bc7 Merge pull request #4490 from jellyfin/dependabot/nuget/Mono.Nat-3.0.1
Bump Mono.Nat from 3.0.0 to 3.0.1
2020-11-17 11:52:36 -05:00
Anthony Lavado 4a70bc72ab Merge pull request #4489 from jellyfin/dependabot/nuget/PlaylistsNET-1.1.3
Bump PlaylistsNET from 1.1.2 to 1.1.3
2020-11-17 11:52:20 -05:00
Anthony Lavado 28da945fe0 Merge pull request #4488 from jellyfin/dependabot/nuget/Moq-4.15.1
Bump Moq from 4.14.7 to 4.15.1
2020-11-17 11:52:06 -05:00
crobibero 7bf647bb94 Remove precondition checks 2020-11-17 09:38:50 -07:00
Fernando Fernández 94cae4f145 Specify threads to ffmpeg properly 2020-11-17 16:44:04 +01:00
Joshua M. Boniface ff57434d4b Merge pull request #4502 from crobibero/compres
Use ALL the decompression methods
2020-11-17 10:30:01 -05:00
Joshua M. Boniface e0f60847c0 Merge pull request #4361 from ssenart/feature/4360-transcoding_flac_downsampling
Add FLAC and define the corresponding target sample rate
2020-11-17 10:29:29 -05:00
Joshua M. Boniface f6ebdbc45e Merge pull request #4456 from martinek-stepan/emby-namig-nullable
Emby.Naming - nullable & code coverage
2020-11-17 10:28:39 -05:00
martinek-stepan 04a712ab1d Update Emby.Naming/Video/VideoFileInfo.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-11-17 15:11:32 +01:00
Cody Robibero 08279e91ba Update MediaBrowser.Controller/MediaEncoding/EncodingJobInfo.cs 2020-11-17 07:08:22 -07:00
crobibero 5fa4cce4cc Use ALL the decompression methods. 2020-11-17 06:57:25 -07:00
Fernando Fernández d7cdaeea7d Use all system cores when threads are set to auto or bigger than the amount of system's cores 2020-11-17 14:26:05 +01:00
Fernando Fernández a6ad36b57a Don't scale images extracted by ffmpeg 2020-11-17 14:20:18 +01:00
Stepan d481c35cad Merge fix 2020-11-17 13:06:56 +01:00
Thomas Schwery fc3d6278be Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-11-17 05:36:46 -05:00
Sverre 7cbcce0638 Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2020-11-17 05:04:26 -05:00
Lukáš Kucharczyk bb46f24bb3 Translated using Weblate (Czech)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/cs/
2020-11-17 05:04:26 -05:00
Anthony Lavado c8e41adfeb Merge pull request #4500 from oddstr13/nuget-bump-net5.0
Use .NET 5.0 in Nuget pipeline
2020-11-17 00:17:08 -05:00
Odd Stråbø c770b9e0c6 Use .NET 5.0 in the Nuget pipeline 2020-11-17 05:28:26 +01:00
crobibero 3b68ce1183 Fix build 2020-11-16 20:45:09 -07:00
crobibero 2a0578ce1a Add missing manual splits 2020-11-16 20:37:43 -07:00
crobibero 3cc0dd7e12 Reduce RequestHelpers.Split usage and remove RequestHelpers.GetGuids usage. 2020-11-16 20:29:46 -07:00
Anthony Lavado ad719b7ac6 Merge pull request #4460 from yodatak/patch-1
Bump dependencies to Fedora 33
2020-11-16 22:03:49 -05:00
Odd Stråbø 001bf95d10 Fedora: install systemd as build dependency 2020-11-17 03:56:17 +01:00
Bill Thornton be0ddf02b3 Merge pull request #4475 from crobibero/npm-ci-remove-v2
Fix api client ci condition
2020-11-16 20:16:38 -05:00
Joshua M. Boniface 47bfbb1377 Merge pull request #4497 from crobibero/docker-pls
Fix docker and centos builds
2020-11-16 19:44:49 -05:00
Cody Robibero be3c65d80f Merge branch 'master' into docker-pls 2020-11-16 17:07:06 -07:00
crobibero 1d96167e8d Fix builders 2020-11-16 17:05:31 -07:00
Ygor Lhano 7b42b7e8bd Translated using Weblate (Portuguese (Brazil))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_BR/
2020-11-16 18:45:58 -05:00
Joshua M. Boniface d7b42e47d1 Merge pull request #4493 from crobibero/hey-buster
Fix dockerfiles
2020-11-16 18:37:16 -05:00
Joshua M. Boniface e86db484ef Merge pull request #4136 from BaronGreenback/Comment1
DLNA Classes - No code change, just added commenting to classes.
2020-11-16 17:11:20 -05:00
Joshua M. Boniface 355c0c802f Merge pull request #4138 from BaronGreenback/Comment3
DLNA ContentManager - static and commented.
2020-11-16 17:09:22 -05:00
BaronGreenback 2bbfcc264d Merge branch 'master' into emby-namig-nullable 2020-11-16 19:47:36 +00:00
Greenback 60a6627140 Removing left over edits left from the acceptance of previous PR's. 2020-11-16 19:45:21 +00:00
Greenback 978aa38f3b Updated PR1 code. 2020-11-16 19:37:38 +00:00
Ionut Andrei Oanca 426e258f1f Improve locking logic in SyncPlay manager 2020-11-16 20:25:13 +01:00
Ionut Andrei Oanca a3ca36cb54 Review logging and minor changes in SyncPlay 2020-11-16 20:05:57 +01:00
Greenback 979de240cb Updated tests to .Net5 2020-11-16 17:30:27 +00:00
Greenback 9481fd0747 Upgraded to .Net5 2020-11-16 17:17:49 +00:00
BaronGreenback d66f88672c Merge branch 'master' into NetworkPR2 2020-11-16 16:27:37 +00:00
Claus Vium dc0e353b96 Merge pull request #4494 from nyanmisaka/hdr-title
Add video range info to the title
2020-11-16 16:48:26 +01:00
nyanmisaka 5fe4ea2f4a add video range info to title 2020-11-16 21:41:08 +08:00
Claus Vium d53f97d803 Merge pull request #4480 from crobibero/http-exception
Remove custom HttpException
2020-11-16 07:47:21 +01:00
Bill Thornton 84b0932cfe Merge pull request #4485 from crobibero/update-user-cache
Update user cache after updating user.
2020-11-16 00:49:53 -05:00
nyanmisaka 099563cd6b comply with dotnet-5 2020-11-16 12:56:37 +08:00
nyanmisaka 488dbdb31d Merge remote-tracking branch 'upstream/master' into fmp4-hls 2020-11-16 12:36:55 +08:00
crobibero e2e10e672f User buster-slim instead of non existent buster 2020-11-15 21:08:02 -07:00
Ryan Petris 8204b25a56 Merge branch 'master' into fix-hdhomerun 2020-11-15 19:55:30 -07:00
Ryan Petris 81d5eb4db5 Return a Task object and discard it instead of using async void. 2020-11-15 19:44:11 -07:00
Joshua M. Boniface 8d1d77db94 Merge pull request #4487 from crobibero/build-upgrade
Upgrade all netcore3.1 to net5.0
2020-11-15 20:04:58 -05:00
Joshua M. Boniface 8722c1b7f6 Merge pull request #4492 from Artiume/patch-5
update dotnet 5.0 buster image
2020-11-15 20:04:44 -05:00
artiume d76afb209f update dotnet 5.0 image
Step 5/23 : FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-buster as builder                             
manifest for mcr.microsoft.com/dotnet/sdk:5.0-buster not found: manifest unknown: manifest tagged by "5.0-buster" is not found

arm not tested
2020-11-15 18:48:59 -05:00
crobibero 3432db4998 dedup migration 2020-11-15 13:51:09 -07:00
dependabot[bot] 24839e6890 Bump Mono.Nat from 3.0.0 to 3.0.1
Bumps [Mono.Nat](https://github.com/mono/Mono.Nat) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/mono/Mono.Nat/releases)
- [Commits](https://github.com/mono/Mono.Nat/compare/release-v3.0.0...release-v3.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-15 20:47:33 +00:00
dependabot[bot] 809556eb98 Bump PlaylistsNET from 1.1.2 to 1.1.3
Bumps [PlaylistsNET](https://github.com/tmk907/PlaylistsNET) from 1.1.2 to 1.1.3.
- [Release notes](https://github.com/tmk907/PlaylistsNET/releases)
- [Commits](https://github.com/tmk907/PlaylistsNET/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-15 20:47:32 +00:00
dependabot[bot] cfb7523ea8 Bump Moq from 4.14.7 to 4.15.1
Bumps [Moq](https://github.com/moq/moq4) from 4.14.7 to 4.15.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/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-15 20:47:21 +00:00
crobibero 185fac0677 Upgrade all netcore3.1 to net5.0 2020-11-15 13:31:47 -07:00
crobibero 4b15284324 Merge remote-tracking branch 'upstream/master' into bye-tvdb 2020-11-15 13:12:43 -07:00
crobibero e66d79fc0c Merge remote-tracking branch 'upstream/master' into http-exception 2020-11-15 13:09:05 -07:00
Joshua M. Boniface 2f426dfc97 Merge pull request #4458 from crobibero/dotnet-5
Upgrade to Net5
2020-11-15 14:35:34 -05:00
crobibero 056c44010b Fix tests 2020-11-15 12:19:07 -07:00
crobibero dae4541bad Merge remote-tracking branch 'upstream/master' into dotnet-5 2020-11-15 11:56:35 -07:00
crobibero 3f313206c6 Suggestions from review 2020-11-15 11:35:36 -07:00
crobibero 53697ac39a revert 2020-11-15 10:59:56 -07:00
crobibero 547ee88561 Remove api client generator errors 2020-11-15 10:58:39 -07:00
nyanmisaka f953dd42be remove unused segment option 2020-11-16 01:09:14 +08:00
Ionut Andrei Oanca c7e53bce2f Patch data-races and minor changes in SyncPlay 2020-11-15 17:30:28 +01:00
crobibero c70710de32 Update user cache after updating user. 2020-11-15 09:30:04 -07:00
Claus Vium 7caf1662ec Merge pull request #4478 from Bond-009/chararray
Don't allocate single char arrays when possible
2020-11-15 13:48:43 +01:00
Bond-009 331c7f8481 Merge pull request #4253 from BaronGreenback/fordiscussion
DI in plugins
2020-11-15 13:29:04 +01:00
4d1m ce4787c7eb Translated using Weblate (Romanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ro/
2020-11-15 05:36:15 -05:00
Ionut Andrei Oanca 5d77f422f0 Hide some property setters, init null values, update namespaces 2020-11-14 23:40:01 +01:00
crobibero 95a2de757f remove custom HttpException 2020-11-14 14:30:34 -07:00
Bond_009 d4e568c8bf Replace Task.WaitAll with Task.Wait 2020-11-14 20:30:08 +01:00
Bond_009 ff49a3bb61 Missed some stuff 2020-11-14 20:28:15 +01:00
Bond_009 c4bb32f259 Access last element by index where possible 2020-11-14 20:28:14 +01:00
Bond_009 9041389f65 Use string.Trim(char) instead of string.Trim(char[]) where possible 2020-11-14 20:27:59 +01:00
Bond_009 bc7359f87d Use string.Split(char) where possible instead of string.Split(char[]) 2020-11-14 20:27:48 +01:00
Ionut Andrei Oanca fa69f6fd51 Handle ignore-wait request in waiting state in SyncPlay 2020-11-14 18:09:25 +01:00
Adam Bokor 6b4debb44e Translated using Weblate (Hungarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hu/
2020-11-14 11:38:39 -05:00
Claus Vium 569874a212 Merge pull request #4473 from crobibero/binder-no-throw
Don't throw exception when converting values using binder or JsonConv…
2020-11-14 17:31:52 +01:00
Claus Vium 121d79a395 Merge pull request #4477 from nyanmisaka/attachment-return-type
Fix return type for GetAttachment
2020-11-14 17:28:43 +01:00
crobibero 843847fc93 Remove extraneous newline 2020-11-14 09:16:08 -07:00
Ionut Andrei Oanca 83333e1fe8 Replace foreach loop with FindIndex 2020-11-14 17:07:52 +01:00
Cody Robibero 450cd614ac Update Jellyfin.Api/ModelBinders/CommaDelimitedArrayModelBinder.cs
Co-authored-by: Bond-009 <bond.009@outlook.com>
2020-11-14 08:13:53 -07:00
nyanmisaka e36725096a fix return type for GetAttachment 2020-11-14 22:28:22 +08:00
crobibero cfefcd988a Updated based on review feedback 2020-11-14 07:07:09 -07:00
Claus Vium c49b854295 Merge pull request #4476 from crobibero/plugin-update-exception
Fix plugin update exception
2020-11-14 12:45:07 +01:00
Ionut Andrei Oanca 1dbc91978e Address requested changes and fix some warnings 2020-11-14 12:33:54 +01:00
nyanmisaka 750eaa9d27 fix ci 2020-11-14 18:30:20 +08:00
Nyanmisaka 06670351ae Apply suggestions from code review
Co-authored-by: BaronGreenback <jimcartlidge@yahoo.co.uk>
2020-11-14 10:19:41 +00:00
nyanmisaka fc89b7e641 minor changes 2020-11-14 16:02:16 +08:00
nyanmisaka 32bb73acbb add aac_adtstoasc bitstream filter for mpegts to mp4 conversion 2020-11-14 14:23:00 +08:00
crobibero 73d2cb1c2a Updated based on review feedback 2020-11-13 18:04:06 -07:00
Oatavandi 722adda477 Translated using Weblate (Tamil)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ta/
2020-11-13 17:28:15 -05:00
Relja U 5d4144b8a6 Translated using Weblate (Serbian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sr/
2020-11-13 17:28:15 -05:00
crobibero 5845bf93cb Fix plugin update exception 2020-11-13 14:52:22 -07:00
Cody Robibero 24ac5cc353 Update Emby.Server.Implementations/AppBase/ConfigurationHelper.cs
Co-authored-by: BaronGreenback <jimcartlidge@yahoo.co.uk>
2020-11-13 13:18:31 -07:00
nyanmisaka 536b054873 add experimental flag for flac 2020-11-14 04:06:24 +08:00
nyanmisaka f1e129f17a minor changes 2020-11-14 03:57:37 +08:00
Ionut Andrei Oanca 563a6fb3c7 Minor changes to group-wait in SyncPlay 2020-11-13 20:55:14 +01:00
nyanmisaka 8c0778e827 switch ffmpeg to hls muxer for live streaming
segment muxer cannot make fMP4 init file.
'-strict -2' option doesn't work with segment muxer for flac remuxing.
2020-11-14 03:47:54 +08:00
crobibero 95ebb9a55a Use null coalescing when possible 2020-11-13 11:24:46 -07:00
crobibero 5f52a58e78 Convert NullReferenceException to ResourceNotFoundException 2020-11-13 11:14:44 -07:00
crobibero be312f992d Update to net5 2020-11-13 10:57:34 -07:00
crobibero e8b98265b0 Upgrade Jellyfin.Model.Tests to net5.0 2020-11-13 10:40:09 -07:00
crobibero ec5781504e Disable warning on AD0001 2020-11-13 10:29:26 -07:00
crobibero 1acbceaade Disable warning on AD0001 2020-11-13 10:24:40 -07:00
crobibero 3c8800604e Update test sdk 2020-11-13 09:48:26 -07:00
crobibero 7bf320922c Fix nullability errors in Emby.Server.Implementations 2020-11-13 09:41:18 -07:00
crobibero d5e2369dd6 Fix nullability errors in MediaBrowser.Model 2020-11-13 09:36:17 -07:00
crobibero 6353cb507d Fix nullability errors in Jellyfin.Server 2020-11-13 09:21:28 -07:00
crobibero 445eec7f5f Fix nullability errors in Jellyfin.Api.Tests 2020-11-13 09:21:22 -07:00
crobibero 01355e0498 Fix nullability errors in Jellyfin.Api (part 1) 2020-11-13 09:04:31 -07:00
crobibero e8675a6c24 Fix nullability errors in Jellyfin.Server 2020-11-13 09:03:44 -07:00
crobibero e82829c444 Fix nullability errors in MediaBrowser.MediaEncoding 2020-11-13 09:01:55 -07:00
crobibero f3e74cb421 Fix nullability errors in Emby.Notifications 2020-11-13 08:35:32 -07:00
crobibero a02514a114 Fix nullability errors in Jellyfin.Drawing.Skia 2020-11-13 08:34:34 -07:00
crobibero 57b1e93411 Fix nullability errors in Jellyfin.Server.Implementations 2020-11-13 08:32:24 -07:00
crobibero 38885ffd74 Fix nullability errors in MediaBrowser.LocalMetadata 2020-11-13 08:31:02 -07:00
crobibero 83ac7d2674 Fix ci condition 2020-11-13 08:02:45 -07:00
crobibero 5c40ad0530 Remove conditional access. 2020-11-12 09:44:10 -07:00
Bond-009 f45b4ac11f Merge pull request #4474 from crobibero/property-readonlylist
Convert array property to IReadOnlyList
2020-11-12 17:34:30 +01:00
martinek-stepan 4bfcc8b0d1 Update Emby.Naming/AudioBook/AudioBookListResolver.cs
Use StringComparison.OrdinalIgnoreCase when comparing names

Co-authored-by: BaronGreenback <jimcartlidge@yahoo.co.uk>
2020-11-12 16:51:52 +01:00
crobibero 73f9a6d7d0 Convert array property to IReadOnlyList 2020-11-12 08:29:42 -07:00
nyanmisaka d91a099c9e allow transcoding 8ch(7.1 layout) in aac 2020-11-12 23:10:57 +08:00
crobibero 0c23b8cadf Don't throw exception when converting values using binder or JsonConverter 2020-11-12 08:06:25 -07:00
Claus Vium 00c4055b6e Merge pull request #4463 from crobibero/fix-display-preferences-migration
Skip migration if user doesn't exist
2020-11-12 15:57:03 +01:00
Cody Robibero 1d059bc76b Update Jellyfin.Server/Migrations/Routines/MigrateDisplayPreferencesDb.cs 2020-11-12 07:33:12 -07:00
dkanada 660aa1b8a6 Merge pull request #4469 from cvium/fix_repository_endpoint
Change OPTIONS to POST and call SaveConfiguration in SetRepositories
2020-11-12 22:37:19 +09:00
Claus Vium a044622b15 Merge pull request #4468 from cvium/revert_similar_name_removal
Semi-revert removal of Name for /Similar in openapi
2020-11-12 14:10:32 +01:00
Stepan b66239fd52 One more missed suggestions (removing commented out code) 2020-11-12 13:18:22 +01:00
Stepan 3bca1181b3 Taken suggestions from code review and created test for ExtraRuleType.Regex instead of throwing exception there. 2020-11-12 13:16:33 +01:00
martinek-stepan 496923719c Apply suggestions from code review
Co-authored-by: BaronGreenback <jimcartlidge@yahoo.co.uk>
2020-11-12 12:54:55 +01:00
BaronGreenback 27bb17ef9d Merge branch 'master' into Comment1 2020-11-12 09:18:49 +00:00
cvium 8e0909ef6f Change OPTIONS to POST and call SaveConfiguration 2020-11-12 10:13:56 +01:00
cvium 0ac3af13ac Semi-revert removal of Name for /Similar in openapi 2020-11-12 09:21:46 +01:00
nyanmisaka 5bd0c2b69d add an option to disable hevc encoding 2020-11-12 11:02:56 +08:00
Claus Vium df2cb7f995 Merge pull request #4466 from kayila/display-clips
Fix #4465 by adding the missing extras folders.
2020-11-12 00:10:25 +01:00
BaronGreenback 51996cd34d Update BasePlugin.cs 2020-11-11 19:04:22 +00:00
Kayila d0cf60e145 Fixes #4465 by adding the missing extras folders. 2020-11-11 13:47:42 -05:00
BaronGreenback caea2bb862 Update Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs
Co-authored-by: Bond-009 <bond.009@outlook.com>
2020-11-11 17:00:19 +00:00
crobibero 7ff212576e Merge remote-tracking branch 'upstream/master' into bye-tvdb 2020-11-11 08:08:06 -07:00
crobibero 380359b495 Add migration to readd plugin. 2020-11-11 08:03:30 -07:00
crobibero 7375d70396 Skip migration if user doesn't exist 2020-11-11 07:17:19 -07:00
nyanmisaka 11c74cb65c fix for no audio stream video 2020-11-11 19:04:58 +08:00
Claus Vium 5669d1dad2 Merge pull request #4450 from cvium/fix_and_mildly_improve_similar
Remove duplicate /Similar endpoints
2020-11-11 11:06:47 +01:00
Claus Vium 0b954df7c2 Update Jellyfin.Api/Controllers/LibraryController.cs 2020-11-11 10:49:00 +01:00
Claus Vium a7b3880d0e Merge branch 'master' into fix_and_mildly_improve_similar 2020-11-11 10:47:18 +01:00
nyanmisaka 6987cb8357 fix ci 2020-11-11 17:25:14 +08:00
nyanmisaka 57e5b59b93 adjust bitrate limit for HLS audio codecs 2020-11-11 17:10:08 +08:00
Sam Cross 0c45faf100 Translated using Weblate (English (United Kingdom))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/en_GB/
2020-11-11 00:03:53 -05:00
Nyanmisaka 0b01acbe91 Apply suggestions from code review
Co-authored-by: BaronGreenback <jimcartlidge@yahoo.co.uk>
2020-11-11 02:03:53 +00:00
Ted van den Brink 51ddf038dc Translated using Weblate (Dutch)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/
2020-11-10 18:49:09 -05:00
Claus Vium a51ea55537 Merge pull request #4302 from crobibero/query-fields
Convert field string to enum.
2020-11-10 23:09:47 +01:00
yodatak 7104a37be1 Bump dependencies to Fedora 33
Fedora 33 is out so Fedora 31 is unmaintened so its time to migrate the build to Fedora 33 !
2020-11-10 22:52:20 +01:00
David John Corpuz dc3b3bcfb1 Translated using Weblate (Filipino)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fil/
2020-11-10 14:48:44 -05:00
crobibero f5b301dea6 Correct bad docs merge 2020-11-10 11:48:21 -07:00
Stepan 195a6261c4 Dummy test case explanation. 2020-11-10 19:28:03 +01:00
Stepan 158eff62d7 Xml-doc part2 2020-11-10 19:23:10 +01:00
crobibero 7fe8ca2b77 Merge remote-tracking branch 'upstream/master' into query-fields 2020-11-10 10:39:44 -07:00
crobibero 9b7c5cddae Update build ci, dockerfiles to .Net5.0 2020-11-10 10:03:21 -07:00
crobibero 83629ab6f2 Update packages to net5 2020-11-10 09:52:34 -07:00
Stepan 693760e38a Xml-doc part1 2020-11-10 17:11:48 +01:00
dkanada 7aaf9dbcc3 Merge pull request #4444 from crobibero/remove-unstable-npm-ci
Remove unstable npm ci task
2020-11-10 22:01:40 +09:00
dkanada 54d7fb0ff7 Merge pull request #4447 from jellyfin/dependabot/nuget/Serilog.Sinks.Graylog-2.2.2
Bump Serilog.Sinks.Graylog from 2.2.1 to 2.2.2
2020-11-10 22:00:09 +09:00
dkanada efad311df8 Merge pull request #4446 from jellyfin/dependabot/nuget/Microsoft.NET.Test.Sdk-16.8.0
Bump Microsoft.NET.Test.Sdk from 16.7.1 to 16.8.0
2020-11-10 21:59:51 +09:00
Stepan c0747512d6 Merge remote-tracking branch 'jellyfin/master' into emby-namig-nullable 2020-11-10 12:42:49 +01:00
Claus Vium cdf979efef Merge pull request #3196 from ferferga/images-advance
Remove "download images in advance" option
2020-11-10 10:54:23 +01:00
Claus Vium d3eab357e3 Merge pull request #4452 from crobibero/bind-image-type
Add ModelBinder to ImageType
2020-11-10 10:34:42 +01:00
Fernando Fernández 27a1337cf3 Remove underscore
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-11-10 10:24:05 +01:00
Fernando Fernández d6a04fd406 Remove setting from existing libraries with a migration 2020-11-10 02:12:50 +01:00
Fernando Fernández 103d503c15 Removed code as suggested by @cvium 2020-11-10 02:12:47 +01:00
Fardin 477e7f7898 Translated using Weblate (Spanish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es/
2020-11-09 19:04:37 -05:00
crobibero 2ce9a56cae Remove GetImageTypes 2020-11-09 15:01:30 -07:00
crobibero 0dd2b169a3 Add ModelBinder to ItemFilter 2020-11-09 14:59:04 -07:00
crobibero 6748ba287d Merge remote-tracking branch 'upstream/master' into query-fields 2020-11-09 14:57:02 -07:00
crobibero b22831f7e5 Add ModelBinder to ImageType 2020-11-09 14:53:23 -07:00
cvium b99519898d Remove duplicate /Similar endpoints and add poor matching for artists and albums 2020-11-09 20:15:15 +01:00
Claus Vium 296e534f67 Merge pull request #4448 from crobibero/regex-error
Don't throw exception if name is null
2020-11-09 15:49:56 +01:00
crobibero 78551d166a Don't throw exception if name is null 2020-11-09 06:10:16 -07:00
dependabot[bot] 3874f570ed Bump Serilog.Sinks.Graylog from 2.2.1 to 2.2.2
Bumps [Serilog.Sinks.Graylog](https://github.com/whir1/serilog-sinks-graylog) from 2.2.1 to 2.2.2.
- [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-11-09 12:00:50 +00:00
dependabot[bot] e15891df51 Bump Microsoft.NET.Test.Sdk from 16.7.1 to 16.8.0
Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.7.1 to 16.8.0.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Commits](https://github.com/microsoft/vstest/compare/v16.7.1...v16.8.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-09 12:00:39 +00:00
BaronGreenback 957b5df0f0 Update MediaBrowser.Common/Plugins/IPluginServiceRegistrator.cs
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-11-09 11:26:06 +00:00
BaronGreenback 429de72443 Update MediaBrowser.Common/Plugins/BasePlugin.cs
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-11-09 11:25:42 +00:00
BaronGreenback 11a5353810 Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-11-09 11:25:16 +00:00
BaronGreenback e340e755f2 Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-11-09 11:25:05 +00:00
BaronGreenback 69790ef6b8 Update Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-11-09 11:24:53 +00:00
BaronGreenback f63a706a86 Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-11-09 11:23:52 +00:00
Claus Vium ab285c2202 Merge pull request #4440 from neilsb/schedules-direct-fix
Perform hashing of Password for Schedules Direct on server
2020-11-09 08:15:23 +01:00
hoanghuy309 254c188f6c Translated using Weblate (Vietnamese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/vi/
2020-11-09 01:01:40 -05:00
Gary Wilber f680a0fbbe fix merge 2020-11-08 11:55:38 -08:00
Gary Wilber e6d8c02944 Merge remote-tracking branch 'upstream/master' into library_scan_speed 2020-11-08 11:51:40 -08:00
Kyle Yue 363d41f943 Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2020-11-08 12:52:56 -05:00
Ekrem KANGAL e5c0aaead2 Translated using Weblate (Turkish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/tr/
2020-11-08 12:52:56 -05:00
crobibero d2f439efd2 Remove unstable npm ci task 2020-11-08 10:22:38 -07:00
Neil Burrows e9d35cb2ca Switching to the more efficient Hex.Encode function 2020-11-08 17:16:51 +00:00
Claus Vium 3900976be5 Merge pull request #4247 from crobibero/update-plugin
Update all on-disk plugins
2020-11-08 18:00:49 +01:00
crobibero 73f923c8d5 Use class instead of struct 2020-11-08 09:31:53 -07:00
Bond-009 c8a320082f Merge pull request #4443 from cvium/fix_auth_again_again_again
Remove OriginalAuthenticationInfo and add IsAuthenticated property
2020-11-08 16:58:35 +01:00
Anthony Lavado 7971978081 Merge pull request #3683 from nyanmisaka/fonts
Allows to provide multiple fallback fonts for client to render subtitles
2020-11-08 10:26:20 -05:00
cvium e78c63c4dc Remove OriginalAuthenticationInfo and add IsAuthenticated property 2020-11-08 16:10:33 +01:00
Cody Robibero ce88815b3c Update MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs
Co-authored-by: BaronGreenback <jimcartlidge@yahoo.co.uk>
2020-11-08 06:42:54 -07:00
Cody Robibero 1996e08dd1 Update MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs
Co-authored-by: BaronGreenback <jimcartlidge@yahoo.co.uk>
2020-11-08 06:42:49 -07:00
Cody Robibero e06b33af83 Update MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs
Co-authored-by: BaronGreenback <jimcartlidge@yahoo.co.uk>
2020-11-08 06:42:40 -07:00
Cody Robibero e8b832ea18 Update MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs
Co-authored-by: BaronGreenback <jimcartlidge@yahoo.co.uk>
2020-11-08 06:42:33 -07:00
Neil Burrows 866c41519f Perform hashing of Password for Schedules Direct on server 2020-11-08 12:34:35 +00:00
BaronGreenback 802d37aac5 Update Emby.Naming/Common/NamingOptions.cs 2020-11-08 12:09:32 +00:00
nyanmisaka 2229ca38ac pascal case 2020-11-08 19:33:40 +08:00
nyanmisaka 737cb727f9 Merge remote-tracking branch 'upstream/master' into fonts 2020-11-08 19:11:54 +08:00
Claus Vium 96dcd9c87e Merge pull request #3086 from redSpoutnik/api-upload-subtitle
Add Post subtitle in API
2020-11-08 11:32:53 +01:00
Claus Vium 38185f8326 Apply suggestions from code review 2020-11-08 11:20:28 +01:00
nyanmisaka babb298b90 fix ci 2020-11-08 09:35:04 +00:00
Claus Vium 61f8e5f3c1 Merge pull request #4428 from crobibero/openapi-version
Add x-jellyfin-version to openapi spec
2020-11-08 10:24:25 +01:00
Claus Vium ec2538a1ba Merge pull request #4420 from cvium/fix_person_studio_genre_endpoints
Fix Persons, Genres and Studios endpoints
2020-11-08 10:22:18 +01:00
Claus Vium 1823cbb026 Merge pull request #4412 from cvium/fix_displaypreferences_creation
Save new display preferences
2020-11-08 10:22:05 +01:00
Claus Vium 9764b6b2df Merge pull request #4437 from crobibero/fix-dlna
Add missing dlna attributes.
2020-11-08 10:05:50 +01:00
nyanmisaka 5048719a64 minor changes per suggestions 2020-11-08 09:01:58 +00:00
Ricky Zhang 0d1d0d113e Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2020-11-08 04:00:51 -05:00
Claus Vium c17f84ae48 Merge pull request #4330 from crobibero/api-key-auth
Fix ApiKey authentication
2020-11-08 08:20:50 +01:00
nyanmisaka 1abd3d1bd8 fix the fmp4 header file generate on linux 2020-11-08 07:13:00 +00:00
johan456789 1bd5f78025 Translated using Weblate (Chinese (Traditional))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2020-11-08 00:22:51 -05:00
Tomislav ad1b08f2d6 Translated using Weblate (Croatian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hr/
2020-11-08 00:22:50 -05:00
Winnie dc3f24c112 Translated using Weblate (Spanish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es/
2020-11-08 00:22:50 -05:00
crobibero a7f2073c68 Add missing dlna attributes. 2020-11-07 17:30:56 -07:00
Tomislav 2afaa1fc5b Translated using Weblate (Croatian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hr/
2020-11-07 16:59:25 -05:00
Tomislav 826f58b461 Translated using Weblate (Croatian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hr/
2020-11-07 16:43:48 -05:00
Tomislav 7f4a3219ea Translated using Weblate (Croatian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hr/
2020-11-07 16:28:42 -05:00
Claus Vium 4bccff26f2 Merge pull request #4434 from BaronGreenback/4423
Fixes #4423 - Fixes DLNA in unstable;
2020-11-07 22:13:26 +01:00
BaronGreenback c6ff56a230 Update BaseControlHandler.cs 2020-11-07 18:59:32 +00:00
nyanmisaka 85965741f5 add initial support for HEVC over FMP4-HLS 2020-11-08 01:39:32 +08:00
Stepan 3d1076ae42 Rest of tests for Emby.Naming code coverage 2020-11-07 12:30:22 +01:00
Stepan f22e0800e2 Episode parsing coverage 2020-11-07 11:02:12 +01:00
Claus Vium 8c5e0ddae0 Merge pull request #4401 from nyanmisaka/respect-music-settings
Respect music quality settings when transcoding
2020-11-07 10:57:57 +01:00
Nikita Epifanov 6b5ba0f64a Translated using Weblate (Russian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ru/
2020-11-07 03:43:33 -05:00
Florian Schmidt 549d0bc27b Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2020-11-07 03:43:33 -05:00
tomwaits00 03d5a3d8e7 Translated using Weblate (Turkish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/tr/
2020-11-06 22:06:53 -05:00
Ludovico Besana a0699b6868 Translated using Weblate (Italian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/it/
2020-11-06 20:31:18 -05:00
JB 68f8ff678a Translated using Weblate (Korean)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2020-11-06 18:31:33 -05:00
crobibero 9056908bc7 Merge remote-tracking branch 'upstream/master' into video-resolver 2020-11-06 14:46:21 -07:00
crobibero fed37630db Add x-jellyfin-version to openapi spec 2020-11-06 13:00:14 -07:00
JB 4a5651e5b2 Translated using Weblate (Korean)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2020-11-06 14:58:03 -05:00
Joshua M. Boniface 8d66eff4fd Merge pull request #4427 from joshuaboniface/nohup-fix
Reverse order of sudo and nohup
2020-11-06 13:07:42 -05:00
Joshua M. Boniface a4e67dac80 Reverse order of sudo and nohup
Otherwise I'm forced to allow `sudo nohup` globally which is bad news
bears.
2020-11-06 13:00:59 -05:00
Bond-009 d27ff407ad Merge pull request #4426 from joshuaboniface/nohup-fix
Remove spurious argument to nohup
2020-11-06 18:33:38 +01:00
Joshua M. Boniface e2ab7af033 Remove spurious argument to nohup 2020-11-06 12:32:06 -05:00
Anthony Lavado 3774165d9d Merge pull request #4425 from joshuaboniface/fix-azure
Restore missing targetFolder
2020-11-06 12:01:56 -05:00
Joshua M. Boniface ca40eff83d Restore missing targetFolder 2020-11-06 12:00:00 -05:00
Claus Vium 6afd990986 Merge pull request #4424 from jellyfin/minor8
Minor perf improvements
2020-11-06 17:11:01 +01:00
Bond_009 134fd0d960 > -> < 2020-11-06 16:39:41 +01:00
lelamamalgache e6480066b1 Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-11-06 10:36:58 -05:00
Bond-009 2a5e53215c Merge pull request #4393 from crobibero/model-binder-readonly-list
Support IReadOnlyList in CommaDelimitedArrayModelBinder
2020-11-06 16:29:06 +01:00
Bond-009 082705c0d8 Merge pull request #4410 from crobibero/m3u-user-agent
Set UserAgent when getting M3u playlist
2020-11-06 16:28:50 +01:00
Bond-009 3e819eeb02 Merge pull request #4411 from crobibero/fix-auth
Fix endpoint authorization requirements
2020-11-06 16:27:51 +01:00
Bond_009 b21919c7f4 Minor perf improvements 2020-11-06 16:15:30 +01:00
Stepan e96e480f01 Add comment with match cases for weir EpisodeExpression and named group for some date EpisodeExpressions 2020-11-06 15:52:01 +01:00
Claus Vium 83d7e0a265 Merge pull request #4392 from crobibero/livetv-ts-fix
Fix LiveTV TS playback
2020-11-06 15:27:51 +01:00
Claus Vium f172b37401 Merge pull request #4391 from crobibero/converter-ireadonlylist
Support IReadOnlyList for JsonCommaDelimitedArrayConverter
2020-11-06 15:16:14 +01:00
crobibero 41b38c6735 Merge remote-tracking branch 'upstream/master' into livetv-ts-fix 2020-11-06 07:15:38 -07:00
cvium b693c52fe7 Make /MusicGenres obsolete 2020-11-06 09:42:59 +01:00
cvium de52c8a497 Revert "Make /MusicGenres obsolete" 2020-11-06 09:35:23 +01:00
cvium 6e6ecbc988 Make /MusicGenres obsolete 2020-11-06 08:34:20 +01:00
public_yusuke eeb3177cc3 Translated using Weblate (Japanese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ja/
2020-11-05 22:53:28 -05:00
Claus Vium 40453da089 Merge pull request #4422 from crobibero/users-me
Add /Users/Me endpoint
2020-11-06 00:57:01 +01:00
crobibero 3756611d01 Add /Users/Me endpoint 2020-11-05 13:23:22 -07:00
Lukáš Kucharczyk 3c6cbb6161 Translated using Weblate (Czech)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/cs/
2020-11-05 10:59:18 -05:00
Stepan 3466dc5581 Finish coverage for Emby.Naming.Video 2020-11-05 16:59:15 +01:00
SaddFox 8c461aff09 Translated using Weblate (Slovenian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sl/
2020-11-05 09:13:05 -05:00
Stepan 5741150367 Enable MultiVersion video tests and added support for naming based on tests 11 & 8 2020-11-05 14:51:27 +01:00
Stepan c96aa0551d Added NamingOptions tests 2020-11-05 13:25:29 +01:00
cvium 6fdcd12053 Fix build and clean up MusicGenres 2020-11-05 12:53:23 +01:00
cvium 584b4fa41f Fix Persons, Genres and Studios endpoints 2020-11-05 12:27:22 +01:00
Greenback e2769671a7 removed github merge introduced spaces. 2020-11-04 20:38:47 +00:00
Greenback 3e62557959 amended testing unit. 2020-11-04 20:30:06 +00:00
BaronGreenback ec245dce90 Merge branch 'master' into NetworkPR2 2020-11-04 20:17:41 +00:00
dkanada ad262fe8a6 Merge pull request #4416 from jellyfin/dkanada-patch-1
Disable compatibility checks until they work again
2020-11-04 14:32:00 +09:00
dkanada d9ea1ac12d disable two more tasks to fix the failures 2020-11-04 13:49:49 +09:00
crobibero b4d52d8009 Apply patch 2020-11-03 16:38:47 -07:00
Stepan aef1fe62c2 Complete test coverage for Emby.Naming.Subtitles 2020-11-03 16:25:33 +01:00
Stepan c060ed1a18 Added resolving of alternative files and extras for audibooks. 2020-11-03 16:24:04 +01:00
dkanada 25f93a9af4 disable compatibility checks until they work again 2020-11-03 23:18:30 +09:00
crobibero 5d88e61076 Merge remote-tracking branch 'upstream/master' into livetv-ts-fix 2020-11-03 07:05:58 -07:00
Bond-009 8fc16043c7 Merge pull request #4405 from nyanmisaka/aac-directstream
Fix AAC direct streaming
2020-11-03 10:59:43 +01:00
Bond-009 13c70c415a Merge pull request #4409 from crobibero/fix-separators
Fix API separators
2020-11-03 10:58:03 +01:00
Bond-009 53b2a2ee22 Merge pull request #4213 from cvium/progressivefilestream
Add ProgressiveFileStream
2020-11-03 09:47:17 +01:00
Stepan 7b6363b09a Update test for detecting audiobooks extras and alternative files 2020-11-02 23:07:46 +01:00
Stepan 1e71775688 Add Name and Year parsing for audiobooks 2020-11-02 20:03:12 +01:00
crobibero f8e6edbfeb Merge remote-tracking branch 'upstream/master' into query-fields 2020-11-02 10:29:18 -07:00
Anthony Lavado b1b43b8ad9 Merge pull request #4068 from barronpm/event-fixes
Fix Plugin Events and Clean Up InstallationManager.cs
2020-11-02 11:11:17 -05:00
Anthony Lavado 6205fb4b6a Merge pull request #4341 from Bond-009/minor6
Minor improvements
2020-11-02 11:10:39 -05:00
Anthony Lavado f23836c6a4 Merge pull request #4403 from Bond-009/http2
Http1AndHttp2 is the default, no need to explicitly enable it
2020-11-02 11:10:28 -05:00
Bond-009 51dc92c3a9 Merge pull request #4326 from crobibero/purge-activity-log
Automatically clean activity log database
2020-11-02 16:52:49 +01:00
Bond-009 95918d161e Merge pull request #4328 from crobibero/trigger-warning
Remove CommaDelimitedArrayModelBinderProvider
2020-11-02 16:52:05 +01:00
Bond-009 ea1a462a9d Merge pull request #4413 from cvium/fix_collection_endpoints
Rename itemIds to ids
2020-11-02 16:50:54 +01:00
cvium af56d5c2dc Rename itemIds to ids 2020-11-02 11:53:23 +01:00
Cody Robibero de36c8433e Update Emby.Server.Implementations/Localization/Core/en-US.json
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-11-02 03:52:14 -07:00
cvium 19d77c99ae Save new display preferences 2020-11-02 09:23:29 +01:00
crobibero 6a07e93ddd Fix endpoint auth 2020-11-01 20:37:03 -07:00
crobibero 6763d456ff Set UserAgent when getting M3u playlist 2020-11-01 19:23:28 -07:00
crobibero dd3507bbbf Fix OfficialRatings separator 2020-11-01 18:54:00 -07:00
crobibero c1ec46e92b Fix Tags separator 2020-11-01 18:53:27 -07:00
crobibero 826c24142e Fix Genres separator 2020-11-01 18:53:02 -07:00
crobibero ceecc80bb3 Allow configuration of ActivityLogRetention 2020-11-01 18:32:41 -07:00
Bond-009 5b1eb8b6e2 Merge pull request #4408 from crobibero/dep-dep-dep
Dependency catch up
2020-11-01 21:46:21 +01:00
crobibero e41e832495 Dependency catch up 2020-11-01 10:52:32 -07:00
Stepan 50a2ef9d8a Simplify Resolve_InvalidExtension Test and created tests for Alternative Versions parsing & Year Extraction for audiobooks 2020-11-01 17:41:47 +01:00
Stepan f39775dc3a Written test to finish coverage for AudioBookListResolver & AudioBookResolver and corrected some logical erros / unhandled exception 2020-11-01 17:10:48 +01:00
Stepan e7a37bedfc Simplify AudioBookResolver since there is no option of passing directories into it (AudioResolver.cs:179) and handling directories were not implemented anyway 2020-11-01 13:42:56 +01:00
Stepan 6437cf6950 Removed Success property from AudioBookFilePathParserResult, since it was unused and consider only audiobooks that have chapter/page number in name makes no sense 2020-11-01 13:28:43 +01:00
nyanmisaka 599e20ab9b fix music directplay on Gelli 2020-11-01 18:45:42 +08:00
Stepan 60b49e67ea Re-Sharper inspection issues 2020-11-01 11:19:22 +01:00
Stepan 59619b6ea7 Enable nullable in Emby.Naming 2020-11-01 10:47:31 +01:00
nyanmisaka e5237384d5 fix the route of audio containers 2020-11-01 04:20:25 +08:00
Joshua M. Boniface 6b3459f01b Merge pull request #4406 from joshuaboniface/remove-jfffmpeg-dep
Remove jellyfin-ffmpeg dep from server package
2020-10-31 16:13:45 -04:00
Joshua M. Boniface 0bcf4c02b4 Remove jellyfin-ffmpeg dep from server package
Being added to the metapackage instead.
2020-10-31 15:50:56 -04:00
Greenback f06e4826c7 Fixed testing units 2020-10-31 19:16:28 +00:00
Greenback 83af636c61 Updated with new NetManager 2020-10-31 18:21:46 +00:00
nyanmisaka d34be6faf4 fix aac directstreaming 2020-11-01 00:33:38 +08:00
Bond-009 26078e4df9 Merge pull request #4375 from crobibero/auth-dict-fix
Fix setting duplicate keys from auth header
2020-10-31 16:14:53 +01:00
BaronGreenback c54bdb4a0a Merge pull request #86 from jellyfin/master
Updating from master
2020-10-31 12:41:03 +00:00
Bond_009 7f8a73d8e9 Http1AndHttp2 is the default, no need to explicitly enable it 2020-10-31 12:54:28 +01:00
nyanmisaka 00f0c14d7b respect music quality settings when transcoding 2020-10-31 16:09:22 +08:00
Greenback c25ec72864 Updated libraries. 2020-10-30 14:48:33 +00:00
Greenback ec57eeff2b Updated to latest version of code. 2020-10-30 14:06:11 +00:00
Greenback 6dc2936d9c Merge remote-tracking branch 'upstream/master' into NetworkPR2 2020-10-30 13:54:46 +00:00
Greenback face3f8c65 Updating to latest network code. 2020-10-30 13:54:37 +00:00
Greenback c54eb2d2df Merge remote-tracking branch 'origin/master' into NetworkPR2 2020-10-30 13:54:02 +00:00
Bond-009 4f320308f3 Merge pull request #4395 from barronpm/users-async
Convert some code in UserManager to async
2020-10-30 13:19:59 +01:00
Patrick Barron 72263613d0 Convert some code in UserManager to async 2020-10-29 20:30:33 -04:00
Bond-009 e37805e82e Merge pull request #4378 from barronpm/fix-nullref
Fix possible null reference exception
2020-10-30 00:34:28 +01:00
Patrick Barron d887e42405 Fix possible NullReferenceException 2020-10-29 19:16:39 -04:00
crobibero ef43878bbc Support IReadOnlyList in CommaDelimitedArrayModelBinder 2020-10-29 16:11:40 -06:00
crobibero 0c674b496f Add stream disposal comment. 2020-10-29 13:58:47 -06:00
crobibero 3568c5f39b Fix early filestream close 2020-10-29 13:56:29 -06:00
crobibero 429e59fb81 Fix null reference 2020-10-29 13:55:57 -06:00
Oatavandi 2c6b31fc7b Translated using Weblate (Tamil)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ta/
2020-10-29 14:56:55 -04:00
crobibero 11d69fd3b1 Make MrLinter happy 2020-10-29 11:36:45 -06:00
crobibero 42c2ab97e7 Support IReadOnlyList for JsonCommaDelimitedArrayConverter 2020-10-29 11:32:02 -06:00
crobibero 372f0eb38a Remove AddItemFields 2020-10-29 11:17:13 -06:00
crobibero b9406e5444 Merge remote-tracking branch 'upstream/master' into query-fields 2020-10-29 11:11:50 -06:00
Bond-009 9bf2f4d8e0 Merge pull request #4377 from barronpm/user-caching
Add caching to users
2020-10-29 17:34:15 +01:00
dkanada 43bc850efb Merge pull request #4346 from jellyfin/dependabot/nuget/prometheus-net-4.0.0
Bump prometheus-net from 3.6.0 to 4.0.0
2020-10-29 14:59:20 +09:00
dkanada ec5fadc64e Merge pull request #4347 from jellyfin/dependabot/nuget/Moq-4.14.7
Bump Moq from 4.14.6 to 4.14.7
2020-10-29 14:59:01 +09:00
dkanada f2eda53a8b Merge pull request #4388 from crobibero/sneaky-sneaky
Add missing slashes in ffmpeg argument.
2020-10-29 14:58:09 +09:00
Cody Robibero 96071ef30d Move slash to correct location for quoting 2020-10-28 20:26:33 -06:00
crobibero c0383ba07d Add missing slashes in ffmpeg argument. 2020-10-28 20:23:39 -06:00
crobibero 8b83e4e972 Fix tests 2020-10-28 17:57:16 -06:00
Bond-009 9e9431d829 Merge pull request #4384 from nyanmisaka/ios-hls-bitrate
Fix HLS music playback on iOS
2020-10-28 16:29:34 +01:00
Bond-009 6d11a95ad5 Merge pull request #4305 from crobibero/query-image-type
Convert image type string to enum.
2020-10-28 15:40:56 +01:00
crobibero 981f000437 Use proper IsApiKey flag 2020-10-28 08:40:11 -06:00
nyanmisaka c91f42c7a0 Default output audio bitrate to 128k 2020-10-28 22:27:08 +08:00
Stan 3bb8884e16 Merge branch 'master' into bdiso-playback 2020-10-28 13:18:05 +01:00
crobibero 64b32d3290 Use BaseItemManager 2020-10-27 18:01:52 -06:00
crobibero 50558ffe3d Add BaseItemManager 2020-10-27 17:57:52 -06:00
crobibero 36bae6f030 Use JsonConverter 2020-10-27 13:38:21 -06:00
crobibero 4f7c13ecf4 Merge remote-tracking branch 'upstream/master' into query-fields 2020-10-27 13:35:46 -06:00
crobibero fd9d325fa8 Use JsonConverter 2020-10-27 13:32:59 -06:00
crobibero 4558c192c7 Merge remote-tracking branch 'upstream/master' into query-image-type 2020-10-27 13:25:57 -06:00
Bond-009 be2f27a069 Merge pull request #4312 from crobibero/json-array-converter
Add comma delimited string to array json converter
2020-10-27 19:36:37 +01:00
Bond-009 6cadbe8d9e Merge pull request #4371 from cvium/fix_scheduledtasks_endpoint
Fix GET ScheduledTasks return value
2020-10-27 19:36:21 +01:00
Patrick Barron 67f39ed54f Properly remove profile images 2020-10-27 12:28:37 -04:00
Patrick Barron f051590f14 Apply suggestions 2020-10-27 12:12:08 -04:00
Patrick Barron aff8684d2e Add caching to users 2020-10-26 20:36:31 -04:00
crobibero eee95336b5 Fix setting duplicate keys from auth header 2020-10-26 17:18:54 -06:00
Tomi e0045457f9 Translated using Weblate (Finnish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fi/
2020-10-26 16:30:35 -04:00
BaronGreenback 0b5ddc90ff Merge branch 'master' into NetworkPR2 2020-10-26 13:21:48 +00:00
BaronGreenback 2c5609b333 Merge branch 'master' into fordiscussion 2020-10-26 13:19:13 +00:00
cvium c11f19f090 Fix GET ScheduledTasks return value 2020-10-26 11:21:32 +01:00
kevin a814d01f8c Translated using Weblate (Albanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sq/
2020-10-25 16:56:24 -04:00
Bond-009 655a4f8600 Merge pull request #4369 from orryverducci/mkv-interlaced-fix
Fix frame rate probing for interlaced MKV files
2020-10-25 21:26:04 +01:00
Orry Verducci 84fd5a0953 Fix frame rate probing for interlaced MKV files 2020-10-25 16:35:03 +00:00
SHALMON ANANDAS a69397d714 Translated using Weblate (Hindi)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hi/
2020-10-23 00:07:56 -04:00
SHALMON ANANDAS 82ce8369c3 Added translation using Weblate (Hindi) 2020-10-22 22:57:00 -04:00
Ionut Andrei Oanca 019bc19aa4 Minor changes to play queue in Syncplay group 2020-10-22 16:32:15 +02:00
Ionut Andrei Oanca 0c735a0395 Address requested changes by review 2020-10-22 16:12:27 +02:00
Ionut Andrei Oanca 1cabe82b59 Rewrite play queue logic of SyncPlay group 2020-10-22 16:12:27 +02:00
Ionut Andrei Oanca 0b4c751657 Check for null sessions and requests in SyncPlay 2020-10-22 16:12:19 +02:00
BaronGreenback f6ab98507e Update MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs 2020-10-22 13:29:09 +01:00
BaronGreenback 1b8adf0f7c Update Emby.Server.Implementations/SyncPlay/GroupController.cs 2020-10-22 13:28:09 +01:00
Stéphane Senart 95ecedbce7 [AudioTranscoding] Add FLAC as supported target audio format and be able to define the corresponding target sample rate 2020-10-22 12:49:26 +02:00
Stéphane Senart 5979151f11 [AudioTranscoding] Add FLAC as supported target audio format and be able to define the corresponding target sample rate 2020-10-22 12:22:31 +02:00
Stéphane Senart 28ee4f0a7f [AudioTranscoding] Add FLAC as supported target audio format and be able to define the corresponding target sample rate 2020-10-22 11:09:59 +02:00
Ionut Andrei Oanca 36fee4e60a Minor fixes 2020-10-21 16:42:57 +02:00
Ionut Andrei Oanca 93cbf64f88 End comments with a period 2020-10-21 15:46:50 +02:00
Joshua M. Boniface 82d27e6461 Merge pull request #4350 from crobibero/why-ci-why
Fix .npmrc
2020-10-19 17:14:47 -04:00
crobibero 354e15a5f2 Fix .npmrc 2020-10-19 14:15:05 -06:00
Joshua M. Boniface e2ca3cb74f Merge pull request #4331 from crobibero/npm-ci
Add npmAuthenticate task
2020-10-19 14:56:23 -04:00
ferferga 9fd01fade6 Remove "download images in advance" option 2020-10-19 17:28:07 +02:00
dependabot[bot] ed8899da4c Bump Moq from 4.14.6 to 4.14.7
Bumps [Moq](https://github.com/moq/moq4) from 4.14.6 to 4.14.7.
- [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.6...v4.14.7)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-19 12:00:52 +00:00
dependabot[bot] eb00a59750 Bump prometheus-net from 3.6.0 to 4.0.0
Bumps [prometheus-net](https://github.com/prometheus-net/prometheus-net) from 3.6.0 to 4.0.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.6.0...v4.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-19 12:00:45 +00:00
Bond_009 5a9c218324 Fix build 2020-10-17 16:27:31 +02:00
Bond_009 49569ca0a0 Use nameof where possible 2020-10-17 16:19:57 +02:00
Bond_009 51dd3f1e19 Minor improvements 2020-10-17 16:01:36 +02:00
BaronGreenback 63be65dd91 Merge branch 'master' into Comment1 2020-10-17 15:00:43 +01:00
Gubb Jonas 49ac4c4044 Translated using Weblate (Swedish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sv/
2020-10-17 05:25:46 -04:00
BaronGreenback 3ae37deea8 Merge pull request #82 from jellyfin/master
Refreshing image
2020-10-17 09:54:09 +01:00
BaronGreenback 38da2ee26e Merge branch 'master' into update-plugin 2020-10-17 09:47:20 +01:00
BaronGreenback d42bb515ce Merge branch 'master' into video-resolver 2020-10-17 09:26:14 +01:00
Joshua M. Boniface 86090ab1f6 Merge pull request #4317 from jellyfin/tests7
Fix AudioBookListResolver test coverage
2020-10-17 01:58:57 -04:00
Joshua M. Boniface f9bd7be741 Merge pull request #4285 from cvium/fix_websocketlisteners
Fix IWebSocketListener service registration
2020-10-17 01:58:35 -04:00
Joshua M. Boniface 19c2abb50f Merge pull request #4261 from Spacetech/music_brainz_provider_thread_safe
Make MusicBrainzAlbumProvider thread safe and fix retry logic
2020-10-17 01:58:21 -04:00
Joshua M. Boniface b3bf07959c Merge pull request #4171 from nyanmisaka/amf-tonemap
Add tonemapping for AMD AMF
2020-10-17 01:55:27 -04:00
Joshua M. Boniface d454e8710d Merge pull request #3690 from MichaIng/patch-1
Fix left /usr/bin/jellyfin symlink on removal and typo
2020-10-17 01:51:53 -04:00
Gary Wilber b1f637684d Apply suggestions from code review (updating comments)
Co-authored-by: BaronGreenback <jimcartlidge@yahoo.co.uk>
2020-10-16 11:15:42 -07:00
crobibero b2662894cf Add whitespace handling and tests 2020-10-16 09:37:35 -06:00
BaronGreenback be4e5eff9c Update BasePlugin.cs 2020-10-16 14:58:37 +01:00
Ionut Andrei Oanca 8819a9d478 Add playlist-sync and group-wait to SyncPlay 2020-10-16 12:06:29 +02:00
gion ed2eabec16 Update CONTRIBUTORS.md 2020-10-16 11:38:50 +02:00
gion e10799e0e8 Rewrite syncplay using a state design pattern 2020-10-16 11:38:50 +02:00
gion 5487dfc145 Rename GroupInfoView to GroupInfoDto 2020-10-16 11:25:19 +02:00
crobibero d5c226b1c3 Move SecurityException 2020-10-15 08:02:59 -06:00
crobibero eca56dbe6a update scope 2020-10-15 07:31:42 -06:00
dkanada 5c2ecc0ca5 Merge pull request #4324 from crobibero/dotnet-3.1.9
Update to dotnet 3.1.9
2020-10-15 12:56:10 +09:00
crobibero 4b6889615b Fix tests 2020-10-14 18:21:15 -06:00
crobibero 58b82b886f Add npmAuthenticate task 2020-10-14 18:16:58 -06:00
crobibero c037d3536d clean up authorization handlers 2020-10-14 17:58:46 -06:00
crobibero 39924f9992 Allow apikey to authenticate as admin 2020-10-14 17:58:33 -06:00
Anthony Lavado 8ffa14e6d3 Merge pull request #4309 from nielsvanvelzen/publicsysteminfo-backward-compatible-openapi
Make StartupWizardCompleted nullable in PublicSystemInfo
2020-10-14 15:06:56 -04:00
crobibero f2a86d9c80 Remove CommaDelimitedArrayModelBinderProvider 2020-10-14 13:03:36 -06:00
BaronGreenback 5b8349b442 Merge branch 'master' into fordiscussion 2020-10-14 19:05:57 +01:00
BaronGreenback a8cee0bd36 Update Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-10-14 19:04:17 +01:00
BaronGreenback 002190f0a3 Update Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-10-14 19:04:09 +01:00
BaronGreenback 0e872ca65c Update Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-10-14 19:03:54 +01:00
crobibero 15a7f88e08 Automatically clean activity log database 2020-10-14 11:44:11 -06:00
Bond-009 d54de29485 Merge pull request #4315 from Jan-PieterBaert/fix-warnings
Fix some warnings
2020-10-14 14:04:13 +02:00
crobibero f998e52107 Update to dotnet 3.1.9 2020-10-13 18:50:04 -06:00
Anthony Lavado 8b419d9ea6 Merge pull request #4199 from ryanpetris/livetv-locking
Fix stream performance when opening/closing new streams.
2020-10-13 00:02:38 -04:00
Anthony Lavado 1f5ac19346 Merge pull request #3954 from Ullmie02/library-pictures
Use backdrop with library name as library thumbnail
2020-10-13 00:02:08 -04:00
dkanada 42fb04b084 Merge pull request #4254 from BaronGreenback/PluginConfigFix
Fix for #4241: Plugin config initialisation.
2020-10-13 12:19:42 +09:00
BaronGreenback 00b2539a70 Update IConfigurationManager.cs 2020-10-12 21:00:54 +01:00
BaronGreenback 5e5f1cc9c5 Update IConfigurationManager.cs 2020-10-12 20:56:37 +01:00
BaronGreenback c7364be743 Update IConfigurationManager.cs 2020-10-12 20:53:10 +01:00
BaronGreenback 63e514e6c4 Update ApplicationHost.cs 2020-10-12 20:34:18 +01:00
BaronGreenback 257acbc2c9 Update BasePlugin.cs 2020-10-12 20:33:08 +01:00
Bond-009 d81cb3d885 Merge pull request #4139 from BaronGreenback/Comment4
DLNA MediaRegistrar - static and commented.
2020-10-12 21:01:02 +02:00
Bond_009 74f4affcda Fix AudioBookListResolver test coverage 2020-10-12 20:09:15 +02:00
Jan-Pieter Baert ec91d3893d Fix SA 1116 warnings 2020-10-12 20:05:11 +02:00
Jan-Pieter Baert 6f9beef732 Fix SA1012 and SA1013 warnings 2020-10-12 19:22:33 +02:00
BaronGreenback 53bea919d0 Update IPluginServiceRegistrator.cs 2020-10-12 07:51:09 +01:00
BaronGreenback f7cc2f785c Rename IPluginRegistrar.cs to IPluginServiceRegistrator.cs 2020-10-12 07:48:53 +01:00
crobibero 7565ae22cb Add tests and switch to factory 2020-10-11 21:09:15 -06:00
crobibero 37f3852699 Add comma delimited string to array json converter 2020-10-11 17:45:45 -06:00
BaronGreenback 16a0357617 Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-10-11 23:51:56 +01:00
BaronGreenback 5c8015128f Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-10-11 23:51:03 +01:00
BaronGreenback d49ba96123 Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-10-11 23:50:48 +01:00
BaronGreenback 387fdb0f13 Update Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-10-11 23:50:36 +01:00
BaronGreenback ed05ae683e Update Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-10-11 23:49:51 +01:00
BaronGreenback ae8a3bc02c Update MediaBrowser.Common/Plugins/IPluginRegistrar.cs
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-10-11 23:49:34 +01:00
Cody Robibero ee976bb47a Update MediaBrowser.Common/Plugins/LocalPlugin.cs
Co-authored-by: BaronGreenback <jimcartlidge@yahoo.co.uk>
2020-10-11 15:27:11 -06:00
BaronGreenback 0f47b3ec2d Merge branch 'master' into Comment4 2020-10-11 21:30:57 +01:00
BaronGreenback d31178ab4b Update BasePlugin.cs 2020-10-11 20:00:46 +01:00
BaronGreenback 7e939fa2cb Update BasePlugin.cs
Plugins supporting di cannot be unloaded.
2020-10-11 19:56:05 +01:00
BaronGreenback 85d36a55a1 Update BasePlugin.cs
Removed trailing spaces
2020-10-11 18:26:59 +01:00
BaronGreenback 8c0748b677 Update BasePlugin.cs
Added ConfigurationChanged event.
2020-10-11 16:41:30 +01:00
Niels van Velzen 7072b4d926 Make StartupWizardCompleted nullable in PublicSystemInfo 2020-10-11 17:01:33 +02:00
Greenback 0b73a1d90f Added extra functionality to support registrar. 2020-10-11 13:19:14 +01:00
Cody Robibero 163d6b0f1d Update Jellyfin.Api/Helpers/RequestHelpers.cs
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-10-11 06:15:55 -06:00
dkanada 2375c35c4a Merge pull request #4292 from crobibero/missing-general-command
Add missing general commands
2020-10-11 18:34:48 +09:00
dkanada ddce3ef6be Merge pull request #4301 from crobibero/fix-array-binder
Fix comma delimited array model binder
2020-10-11 18:33:53 +09:00
dkanada 4fafa5796d Merge pull request #4304 from crobibero/query-location-type
Convert exclude location type string to enum.
2020-10-11 18:32:22 +09:00
dkanada 6e585ccfb2 Merge pull request #4303 from crobibero/query-filters
Convert filters string to enum.
2020-10-11 18:31:38 +09:00
dkanada 1a27d010ec Merge pull request #4243 from jlechem/RemoveHeaderCameraUploads
Removing string we don't use anymore.
2020-10-11 18:29:25 +09:00
Greenback 1ee1f9c8a7 Fixed web interface. 2020-10-10 15:27:02 +01:00
Greenback b34d6fec3d fixed tests 2020-10-10 14:08:26 +01:00
Greenback 6dc81ec8e8 Changes to support network config 2020-10-10 14:05:19 +01:00
dkanada 53515483b8 Merge pull request #4219 from Spacetech/music_scan_speed_2
Increase initial scan speed for music libraries
2020-10-10 15:59:13 +09:00
dkanada 6478e70f06 Merge pull request #4221 from Spacetech/tvdb_series_provider_InvalidOperationException
Fix InvalidOperationException in TvdbSeriesProvider.MapSeriesToResult
2020-10-10 15:55:11 +09:00
dkanada d9e7f1f75f Merge pull request #4212 from BaronGreenback/BaseControlHandlerFix
Null Pointer fix: BaseControlHandler.cs
2020-10-10 15:52:48 +09:00
Anthony Lavado 242b4b6827 Merge pull request #4286 from Bond-009/minor6
Minor improvements to tmdb code
2020-10-09 20:14:37 -04:00
Anthony Lavado 0cacdd20e0 Merge pull request #4284 from cvium/fix_playbackstart
Fix playbackstart not triggering in the new eventmanager
2020-10-09 20:12:34 -04:00
Anthony Lavado ecabcff8f0 Merge pull request #4274 from barronpm/activitylog-query
Rewrite Activity Log Backend
2020-10-09 20:12:26 -04:00
Anthony Lavado ea5c78ee21 Merge pull request #4259 from ConfusedPolarBear/imageFormat
Accept ImageFormat as API parameter
2020-10-09 20:12:11 -04:00
Anthony Lavado dd43af23a4 Merge pull request #4248 from crobibero/ws-document-filter
Manually register models used in websocket messages.
2020-10-09 20:11:57 -04:00
Anthony Lavado 85d4d0d072 Merge pull request #4306 from crobibero/legacy-windows
Remove references to legacy scripts
2020-10-09 20:08:15 -04:00
Anthony Lavado 2fe1f896ea Merge pull request #4300 from crobibero/ci-pls
Fix ci npm install order
2020-10-09 20:05:24 -04:00
crobibero 1bbd8df92b Remove references to legacy scripts 2020-10-09 18:02:53 -06:00
crobibero 2eafbc03e4 fix build 2020-10-09 18:01:12 -06:00
crobibero 27e753ddb4 Convert image type string to enum. 2020-10-09 17:52:39 -06:00
crobibero ed4b470397 Convert exclude location type string to enum. 2020-10-09 17:46:39 -06:00
crobibero 549f2284ad Convert filters string to enum. 2020-10-09 17:41:17 -06:00
crobibero 69360b749a Convert field string to enum. 2020-10-09 17:35:08 -06:00
shakesac 67722a2034 Translated using Weblate (Portuguese (Portugal))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_PT/
2020-10-09 19:10:37 -04:00
crobibero 6a3a193dbb Fix and clean tests 2020-10-09 17:10:06 -06:00
crobibero 17b20aa0c0 Fix comma delimited array model binder 2020-10-09 17:03:45 -06:00
crobibero 5109d558d9 fix npm install order 2020-10-09 09:52:05 -06:00
Anthony Lavado a9d9f24078 Merge pull request #4299 from crobibero/ci-pls
Fix api client CI
2020-10-09 11:40:06 -04:00
crobibero 60c0cc1d1c Fix feed name and url 2020-10-09 08:51:22 -06:00
crobibero 2a6ea45ee1 Run npm install task 2020-10-09 08:43:59 -06:00
crobibero 3119acd502 Remove tvdb plugin from server. 2020-10-09 07:43:02 -06:00
Greenback ebe650afa9 Merge remote-tracking branch 'upstream/master' into NetworkPR2 2020-10-09 14:12:41 +01:00
Greenback 8a4f81c9a7 Updated networkmanager to the lastest. 2020-10-09 14:04:55 +01:00
Anthony Lavado 10d48b0623 Merge pull request #4281 from crobibero/npm-registry
Fix registry name and link
2020-10-09 00:10:56 -04:00
Greenback 39754b840d minor fixes 2020-10-08 19:16:47 +01:00
Greenback deb4d27857 Moved all settings across to network.xml 2020-10-08 19:00:55 +01:00
Greenback a3f0843ac9 Updated NetworkManager to PR1 2020-10-08 19:00:30 +01:00
crobibero fe49ae7cb5 fix casing 2020-10-08 07:21:55 -06:00
crobibero e9f17f3cab Add missing general commands for Kodi 2020-10-07 17:26:02 -06:00
crobibero 508b7c0a4e Add missing general commands 2020-10-07 17:16:03 -06:00
cvium 4a81ee43dc Add try-catch to avoid crashing the whole thing 2020-10-06 23:36:48 +02:00
cvium 137baab0ac Remove websocketmanager from ApplicationHost 2020-10-06 20:19:36 +02:00
Bond-009 6def4b06a8 Minor improvements to tmdb code 2020-10-06 14:54:17 +02:00
cvium 38cb8fee8a Fix IWebSocketListener service registration 2020-10-06 14:44:07 +02:00
cvium 3d69bcd190 Fix playbackstart not triggering in the new eventmanager 2020-10-06 08:14:56 +02:00
dkanada 3a238de35e Merge pull request #4265 from KonH/remove_unnecessary_null_checks
Remove unnecessary null checks in some places
2020-10-06 13:04:54 +09:00
dkanada e11a2d4397 Merge pull request #4273 from joshuaboniface/fix-damn-rpm-spec-again-fuck
Fix RPM spec again
2020-10-06 12:30:22 +09:00
dkanada f8657d70ff Merge pull request #4277 from jellyfin/dependabot/nuget/Moq-4.14.6
Bump Moq from 4.14.5 to 4.14.6
2020-10-06 12:29:00 +09:00
Patrick Barron d4a492ef93 Fix activity log query. 2020-10-05 22:51:52 -04:00
Joshua M. Boniface 29e77d56ec Merge pull request #4279 from joshuaboniface/fix-bad-migration
Make MaxActiveSessions not nullable
2020-10-05 20:43:36 -04:00
Joshua M. Boniface b3249e849c Add default value of 0 2020-10-05 16:54:51 -04:00
crobibero 8bf560c41e fix registry name and link 2020-10-05 13:00:07 -06:00
Joshua M. Boniface 49c363751a Make MaxActiveSessions not nullable
Fixes a bad assumption with the previous migration.
2020-10-05 14:04:57 -04:00
Joshua M. Boniface 2d689f101b Merge pull request #4268 from Bond-009/groupinfo
Improve GroupInfo class
2020-10-05 13:18:17 -04:00
Joshua M. Boniface 72ad3b327f Merge pull request #4257 from Bond-009/tests3
Add tests for deserializing guids
2020-10-05 13:17:50 -04:00
Joshua M. Boniface 5e11eb0359 Merge pull request #4264 from Camc314/patch-1
Add missing properties to typescript axios generator
2020-10-05 10:22:15 -04:00
Cameron 7e7eb3a2f9 Add missing properties to typescript-axios gen 2020-10-05 14:30:35 +01:00
Bond-009 fe9d25c268 Merge pull request #4271 from joshuaboniface/fix-ci-script
Improve handling of apiclient generator
2020-10-05 15:11:06 +02:00
Bond-009 40bbcb63db Merge pull request #4275 from anthonylavado/tasktimer
Fix Transcode Cleanup Schedule
2020-10-05 14:15:11 +02:00
dependabot[bot] dba4df1977 Bump Moq from 4.14.5 to 4.14.6
Bumps [Moq](https://github.com/moq/moq4) from 4.14.5 to 4.14.6.
- [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.5...v4.14.6)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-05 12:00:58 +00:00
Bond-009 d22fe41c3c Merge pull request #4177 from cvium/remove_missing
Remove dummy season and missing episode provider
2020-10-05 12:59:39 +02:00
cvium 72cd6ab071 Remove dummy season and missing episode provider in a futile attempt to remove cruft 2020-10-05 12:13:41 +02:00
Bond-009 e011659186 Merge pull request #4210 from nielsvanvelzen/typed-websocket-message
Use enum for WebSocket message types
2020-10-05 10:40:52 +02:00
Bond-009 f1bf21cffd Merge pull request #4225 from Spacetech/save_image_check
Check response status code before saving images
2020-10-05 10:40:37 +02:00
Bond-009 14042d51b0 Merge pull request #4276 from cvium/fix_403
SecurityException should return 403
2020-10-05 10:34:10 +02:00
cvium df75c1cd9c SecurityException should return 403 2020-10-05 08:28:37 +02:00
Anthony Lavado 959d906c85 Just enable instead 2020-10-05 02:25:09 -04:00
Anthony Lavado 375f849b3e Simply trigger
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-10-05 02:14:43 -04:00
Anthony Lavado e77040a4fb Fix Transcode Cleanup Schedule
Sets the default time to midnight, and confirms to the same task
scheduling commands that other tasks use.
2020-10-05 00:15:25 -04:00
Joshua M. Boniface 2a575dd67e Merge pull request #4269 from joshuaboniface/session-limit
Add user max sessions options
2020-10-04 23:34:52 -04:00
Joshua M. Boniface d47284d59f Merge pull request #4202 from cvium/tmdblib_migration
Migrate the TMDb providers to the TMDbLib library
2020-10-04 20:59:14 -04:00
Joshua M. Boniface f2763a71e0 Rename migrations to match others 2020-10-04 20:31:24 -04:00
Patrick Barron 4d7e7d6331 Rewrite activity log backend to use a query class. 2020-10-04 20:29:28 -04:00
Joshua M. Boniface 1bfe9713af Make MaxSessions default 0 2020-10-04 20:24:35 -04:00
Joshua M. Boniface 88bc2fa3ec Just make everything under libdir/jf a wildcard
I don't know if this will actually work but maybe it will.
2020-10-04 19:50:54 -04:00
Joshua M. Boniface fc28ffea53 Improve handling of apiclient generator
1. Replace the separate stable/unstable scripts with a single script and
handle the difference with argument parsing.
2. Unify the calls and pass the Azure arguments in on the CLI.
2020-10-04 19:03:39 -04:00
Joshua M. Boniface 67e89dd525 Use nicer count comparitor 2020-10-04 17:00:13 -04:00
Bond-009 07be066180 Merge pull request #4252 from skyfrk/4214-supported-commands-enum
Convert supportedCommands strings to enums
2020-10-04 22:40:14 +02:00
Joshua M. Boniface df177b4752 Revert "Implement better count method"
This reverts commit 5aa519fd39.
2020-10-04 15:52:39 -04:00
Joshua M. Boniface 5aa519fd39 Implement better count method 2020-10-04 15:46:57 -04:00
Joshua M. Boniface 8dfa2015d0 Make the count an int for cleanliness 2020-10-04 14:14:42 -04:00
Joshua M. Boniface d0ec6872f3 Increase count check to 1
There's another way to disable a user anyways.
2020-10-04 14:06:20 -04:00
Joshua M. Boniface 725acb528a Add pragma warning disabled to migrations 2020-10-04 13:47:59 -04:00
Joshua M. Boniface cd328a0be3 Remove default set for MaxActiveSessions 2020-10-04 13:34:53 -04:00
Joshua M. Boniface 6e1d1eed23 Make log entry informational 2020-10-04 13:30:21 -04:00
Joshua M. Boniface b130af1b0c Remove variables from SecurityException 2020-10-04 13:29:18 -04:00
Joshua M. Boniface a9e5f6e770 Remove nullable from MaxActiveSessions 2020-10-04 13:25:07 -04:00
Joshua M. Boniface 2577595bac Remove obsolete getter 2020-10-04 13:23:20 -04:00
Joshua M. Boniface 975fca5158 Fix syntax error 2020-10-04 13:19:56 -04:00
Joshua M. Boniface b9d79d7635 Add DB migration for new MaxActiveSessions field 2020-10-04 13:14:32 -04:00
Joshua M. Boniface 5a7dda337f Add active session tracking
Adds a flag for a maximum number of user sessions, as well as an
authentication check to ensure that the user is not above this level.
2020-10-04 13:02:54 -04:00
Bond-009 d11adeb85e Merge pull request #4266 from Maxr1998/log-stream-info
Log stream type and codec for missing direct play profile
2020-10-04 17:06:59 +02:00
Bond-009 e93bb9aa8d Merge pull request #4267 from cvium/disable_invalidauthprovider
Disable invalid auth provider
2020-10-04 17:01:12 +02:00
Bond_009 e96d41d5ef Fix build 2020-10-04 16:45:00 +02:00
Bond_009 f0556c8ded Improve GroupInfo class
* Fixed docs
* Remove extra dictionary lookups
* change property to constant
2020-10-04 16:27:34 +02:00
Bond_009 d7dc15971e Add roundtrip test 2020-10-04 16:26:43 +02:00
BaronGreenback 2e3901252a Update UserManager.cs 2020-10-04 10:07:05 +01:00
BaronGreenback fae70bbbcf Update LocalAccessHandlerTests.cs 2020-10-04 10:05:38 +01:00
BaronGreenback 29133b6452 Update PathSubstitution.cs 2020-10-04 10:04:43 +01:00
BaronGreenback 7f1ec1b569 Update MediaInfoHelper.cs 2020-10-04 10:03:34 +01:00
BaronGreenback 5360f5a43d Update UserController.cs 2020-10-04 10:03:08 +01:00
BaronGreenback bb4c668650 Update LocalAccessHandler.cs 2020-10-04 10:02:52 +01:00
BaronGreenback eaf684a68c Update DynamicHlsHelper.cs 2020-10-04 10:02:35 +01:00
BaronGreenback b5ea16cf7b Update LocalAccessOrRequiresElevationHandler.cs 2020-10-04 10:02:13 +01:00
BaronGreenback 168a4ec2f2 Update IgnoreParentalControlHandler.cs 2020-10-04 10:01:56 +01:00
BaronGreenback 34ef6492ee Update FirstTimeOrIgnoreParentalControlSetupHandler.cs 2020-10-04 10:01:32 +01:00
BaronGreenback a3a2ca412b Update DownloadHandler.cs 2020-10-04 10:01:10 +01:00
BaronGreenback 04552e86fb Update DefaultAuthorizationHandler.cs 2020-10-04 10:00:51 +01:00
Jim Cartlidge 47f4639b84 Merge branch 'NetworkPR2' of https://github.com/BaronGreenback/jellyfin into NetworkPR2 2020-10-04 09:56:45 +01:00
Jim Cartlidge 53af1e3455 Updatig netcollection & re-inserting BOM 2020-10-04 09:56:33 +01:00
Matt Montgomery 7cec65b973 Update documentation 2020-10-03 14:35:57 -05:00
cvium a839b015f9 Disable invalid auth provider 2020-10-03 21:24:04 +02:00
cvium 24dfa097fa Update TMDbLib version 2020-10-03 19:53:26 +02:00
cvium a0862c933d Add image languages to collections 2020-10-03 19:53:07 +02:00
cvium d7cabb2e4e Add image languages 2020-10-03 19:53:07 +02:00
cvium e0f21afa62 Fix build 2020-10-03 19:53:07 +02:00
Claus Vium c0f4c90d57 Apply suggestions from code review
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-10-03 19:53:07 +02:00
cvium 9adbf4e9d8 Add keywords as tags to series + cleanup 2020-10-03 19:53:07 +02:00
cvium f4d49eff9b Add keywords as tags 2020-10-03 19:53:07 +02:00
cvium 3df2a95cac Cleanup in TmdbUtils 2020-10-03 19:53:07 +02:00
cvium f8c4f7c63e Fix inverted boolean statement 2020-10-03 19:53:07 +02:00
cvium 34d2716ce8 Remove TmdbSettingsResult which came back in the rebase 2020-10-03 19:53:07 +02:00
cvium 08e1f15add Cleanup in TmdbMovieProvider 2020-10-03 19:53:07 +02:00
cvium e9524f89d6 Migrate the TMDb providers to the TMDbLib library 2020-10-03 19:53:07 +02:00
Maxr1998 e01209a6f5 Log stream type and codec for missing direct play profile 2020-10-03 17:14:09 +02:00
KonH 211c9cd608 Remove unnecessary null checks in some places
Related to https://github.com/jellyfin/jellyfin/issues/2149
2020-10-03 22:03:23 +07:00
cvium 1b18f86c8b Add missing parameter comments. 2020-10-03 13:52:51 +02:00
cvium 5d3449e9dc Fix xml doc comment 2020-10-03 13:39:39 +02:00
cvium 763862cbd8 Defer image pre-fetching until the end of a refresh/scan 2020-10-03 13:36:53 +02:00
github@esslinger.dev ec0ff5d02f test: use descriptive test method names 2020-10-03 12:40:28 +02:00
Nyanmisaka 9fbf725a6d Enhance workload when tone mapping on some APUs 2020-10-03 17:53:10 +08:00
BaronGreenback 7459baac8b Update ApplicationHost.cs 2020-10-03 09:23:12 +01:00
BaronGreenback 2929ce6e0d Update ApplicationHost.cs 2020-10-03 09:18:00 +01:00
BaronGreenback 298a322ac1 Update ApplicationHost.cs 2020-10-03 09:13:04 +01:00
BaronGreenback ba685d8092 Update ApplicationHost.cs 2020-10-03 09:08:28 +01:00
Nyanmisaka 2124bc2e18 enhance workload when tone mapping with AMF
zscale filter is required.
2020-10-03 16:04:39 +08:00
Anthony Lavado c0be770681 Merge pull request #4262 from anthonylavado/remove-windows-legacy
Remove Windows legacy files
2020-10-02 23:00:23 -04:00
Gary Wilber a51adec836 fix parallelism when set to 0 2020-10-02 18:26:10 -07:00
Anthony Lavado 86cbefb059 Remove Windows legacy files 2020-10-02 20:32:52 -04:00
Gary Wilber 7841378506 cleaner 2020-10-02 17:27:43 -07:00
Gary Wilber db2e667936 expand try finally 2020-10-02 17:19:35 -07:00
Gary Wilber 04cdc89a5c Make MusicBrainzAlbumProvider thread safe 2020-10-02 17:14:57 -07:00
github@esslinger.dev 1bd80a634f test: add CommaDelimitedArrayModelBinder tests 2020-10-03 01:09:45 +02:00
github@esslinger.dev b3b98a5cc8 test: add TestType enum 2020-10-03 01:09:28 +02:00
github@esslinger.dev 33f80dc3c1 feat(CommaDelimitedArrayModelBinder): add none result check 2020-10-03 01:09:15 +02:00
Bond-009 1c6a45f7a3 Merge pull request #4260 from crobibero/api-data-file
Allow server to return .data files
2020-10-02 23:05:01 +02:00
Joshua M. Boniface cb94b5a944 Merge pull request #4070 from crobibero/ci-api-client
Add ci task to publish api client
2020-10-02 16:57:50 -04:00
Joshua M. Boniface 5f65fd93a1 Merge pull request #4249 from jellyfin/EraYaN-openapi-spec-fix
Publish OpenAPI spec for master and tagged releases
2020-10-02 16:57:07 -04:00
crobibero 6a32385588 Allow server to return .data files 2020-10-02 13:30:31 -06:00
Bond-009 b87db136cc Merge pull request #4255 from crobibero/ci-xml-docs
Generate document file for openapi spec in CI
2020-10-02 20:00:42 +02:00
Bond-009 c3655e0e2e Merge pull request #4217 from crobibero/json-nullable-struct-converter
Properly handle null structs in json
2020-10-02 19:57:47 +02:00
Bond_009 8535a718b7 Add tests for deserializing guids 2020-10-02 19:43:34 +02:00
Matt Montgomery 754e859f6e Convert strings to ImageFormat 2020-10-02 12:05:39 -05:00
github@esslinger.dev c3e7eb3a6f Merge branch '4214-supported-commands-enum' of https://github.com/skyfrk/jellyfin into 4214-supported-commands-enum 2020-10-02 18:29:59 +02:00
github@esslinger.dev 9aad772288 feat: implement CommaDelimitedArrayModelBinderProvider 2020-10-02 18:26:48 +02:00
Cody Robibero 0ffc58e255 Update .ci/azure-pipelines-api-client.yml
Co-authored-by: Cameron <Influence365@gmail.com>
2020-10-02 08:21:28 -06:00
crobibero b95533d6a9 there I go changing paths again 2020-10-02 08:06:06 -06:00
crobibero 86e06369a9 fix liniting errors 2020-10-02 08:00:57 -06:00
crobibero 3d20ff69d4 Fix repo connections 2020-10-02 07:50:38 -06:00
crobibero 75dada6308 add withSeparateModelsAndApi 2020-10-02 07:47:14 -06:00
crobibero 7d992798fd specify client specifically instead of through template 2020-10-02 07:40:44 -06:00
crobibero 520acc11e6 scope npm package name 2020-10-02 07:19:18 -06:00
crobibero fcc9482ff9 Generate document file for openapi spec in CI 2020-10-02 07:07:48 -06:00
crobibero 810ec0b672 Fix download api spec 2020-10-02 07:00:57 -06:00
Simon Eßlinger 21b39a207d refactor: simplify null check
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-10-02 01:33:15 +02:00
Gary Wilber ac6d51554c Fix lastProgressMessageTimes dictionary errors 2020-10-01 16:25:01 -07:00
Gary Wilber 8f2fbf7a99 Switch to TPL dataflow for subfolder scan 2020-10-01 16:24:35 -07:00
Simon Eßlinger d10090b394 fix: remove unused null check
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-10-01 22:48:42 +02:00
Stanislav Ionascu cd4641dca0 Remove PlayableStreamFileNames as unused
Since ffmpeg can play and transcode ISO files and BDMV folders directly,
there's no use of that property.
2020-10-01 22:20:34 +02:00
github@esslinger.dev 4b4c74bdcd feat: extend CommaDelimitedArrayModelBinder to support auto generated openAPI spec 2020-10-01 22:04:53 +02:00
Stanislav Ionascu 3ad6232973 Add probe / direct-stream / transcoding support for BluRays
This commit (and ffmpeg built with libbluray support), adds support
for playback of bluray images (bd-iso) and bluray folders.
2020-10-01 21:59:57 +02:00
BaronGreenback 02de44ec0c Update BaseAuthorizationHandler.cs 2020-10-01 20:54:39 +01:00
BaronGreenback 688d098d61 Update Emby.Server.Implementations.csproj 2020-10-01 20:51:25 +01:00
BaronGreenback dff2674b27 Update BasePlugin.cs 2020-10-01 20:42:48 +01:00
BaronGreenback a69731b5e3 Update BasePlugin.cs
Moved initialisation ApplicationHost.cs /LoadPlugin()
2020-10-01 20:30:12 +01:00
BaronGreenback d91a4f0c6d Update ApplicationHost.cs 2020-10-01 20:25:40 +01:00
BaronGreenback 0738a2dc4b Update ApplicationHost.cs 2020-10-01 19:22:58 +01:00
BaronGreenback ee40f21049 Update ApplicationHost.cs 2020-10-01 18:59:46 +01:00
github@esslinger.dev ba12ea7f4a feat: use CommaDelimitedArrayModelBinder to retain API 2020-10-01 19:57:31 +02:00
github@esslinger.dev 0655928ab1 feat: add CommaDelimitedArrayModelBinder 2020-10-01 19:56:59 +02:00
github@esslinger.dev f314be9d85 chore(CONTRIBUTORS.md): add skyfrk 2020-10-01 18:44:22 +02:00
github@esslinger.dev dd4f3a7c51 feat: convert supportedCommands strings to enums 2020-10-01 18:43:44 +02:00
crobibero 2b75af9873 set type of GroupUpdate 2020-10-01 10:40:58 -06:00
Erwin de Haan c0de26f69a Publish OpenAPI Spec to repository server 2020-10-01 17:57:40 +02:00
crobibero 4a3e0062f9 Add missing PlaystateRequest and remove additional GroupUpdate types 2020-10-01 09:39:57 -06:00
Erwin de Haan 9585fea51e Update azure-pipelines.yml 2020-10-01 17:38:36 +02:00
crobibero 5ee6f49204 Manually register models used in websocket messages. 2020-10-01 08:10:47 -06:00
Gary Wilber c2276b17cb Increase library scan and metadata refresh speed 2020-09-30 19:33:34 -07:00
Justin LeCheminant 3b0c6c660d Removing string we don't use anymore. 2020-09-30 20:26:59 -06:00
crobibero 53d8023def Update all on-disk plugins 2020-09-30 17:37:30 -06:00
Jim Cartlidge 3b64171cde Minor change to get it to compile. 2020-09-30 18:02:36 +01:00
Jim Cartlidge fcd1b2f0e4 Merged with latest master 2020-09-30 17:52:33 +01:00
Jim Cartlidge e15d6ed12e Merge branch 'NetworkPR2' of https://github.com/BaronGreenback/jellyfin into NetworkPR2 2020-09-30 17:51:41 +01:00
Jim Cartlidge bbe2400b59 Updating to NetCollection 1.03 2020-09-30 17:51:17 +01:00
Bond-009 c7b3d4a90c Merge pull request #4164 from spooksbit/remove-browser-auto-load
Removed browser auto-launch functionality
2020-09-29 18:24:58 +02:00
Bond-009 cbf9be9416 Merge pull request #3577 from crobibero/package-install-repo
Specify plugin repo on plugin installation
2020-09-29 18:24:11 +02:00
Gary Wilber 25d8d85740 Back to HttpException 2020-09-29 01:19:12 -07:00
dkanada 1f44785441 Merge pull request #4230 from jellyfin/dependabot/nuget/BlurHashSharp.SkiaSharp-1.1.1
Bump BlurHashSharp.SkiaSharp from 1.1.0 to 1.1.1
2020-09-29 16:34:10 +09:00
dkanada 0235f44b42 Merge pull request #4226 from jellyfin/dependabot/nuget/Swashbuckle.AspNetCore-5.6.3
Bump Swashbuckle.AspNetCore from 5.5.1 to 5.6.3
2020-09-29 16:33:50 +09:00
Bond-009 7775066475 Merge pull request #4236 from ConfusedPolarBear/warnings1
Fix some warnings
2020-09-29 09:18:52 +02:00
Gary Wilber fd7a36932d simplify EndDate query 2020-09-28 18:13:50 -07:00
Gary Wilber e9911b70dd Use EnsureSuccessStatusCode 2020-09-28 18:12:35 -07:00
spookbits c912093579 Created a separate API Docs profile to launch the browser at the API docs, and the nowebclient profile no longer launches the browser at all.
Don't point to web in the client because it won't redirect properly.

Modified the vscode launch.json to automatically launch the browser when debugging the first configuration. The
2020-09-28 16:34:48 -04:00
Matt Montgomery 53d5f64e03 Fix SA1513, SA1514, SA1507, and SA1508 2020-09-28 15:04:31 -05:00
dkanada 6cafc152b9 Merge pull request #4222 from Spacetech/directory_service_concurrent
Use ConcurrentDictionary's in DirectoryService
2020-09-28 23:56:36 +09:00
dkanada c94d774ee7 Merge pull request #4220 from Spacetech/TvdbEpisodeImageProvider_nullable_check
Fix invalid operation exception in TvdbEpisodeImageProvider.GetImages
2020-09-28 23:53:55 +09:00
dkanada 7030e925b7 Merge pull request #4200 from ryanpetris/hdhomerun-preemptive-livetv-conflict
HDHomeRun: Preemptively throw a LiveTvConflictException
2020-09-28 23:52:34 +09:00
dkanada 206c382b92 Merge pull request #4211 from BaronGreenback/NullPointerFix
Null Pointer Fix : PlayToController.cs
2020-09-28 23:51:24 +09:00
dependabot[bot] a26ff86553 Bump Swashbuckle.AspNetCore from 5.5.1 to 5.6.3
Bumps [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) from 5.5.1 to 5.6.3.
- [Release notes](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/releases)
- [Commits](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/compare/v5.5.1...v5.6.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-28 14:50:39 +00:00
dkanada 1bf527f8b4 Merge pull request #4227 from jellyfin/dependabot/nuget/Swashbuckle.AspNetCore.ReDoc-5.6.3
Bump Swashbuckle.AspNetCore.ReDoc from 5.5.1 to 5.6.3
2020-09-28 23:50:08 +09:00
dkanada c60f8979d4 Merge pull request #4228 from jellyfin/dependabot/nuget/IPNetwork2-2.5.226
Bump IPNetwork2 from 2.5.224 to 2.5.226
2020-09-28 23:49:49 +09:00
dkanada 1c17a531a9 Merge pull request #4233 from jellyfin/dependabot/nuget/Mono.Nat-3.0.0
Bump Mono.Nat from 2.0.2 to 3.0.0
2020-09-28 23:49:17 +09:00
dkanada a3d4a168d8 Merge pull request #4232 from jellyfin/dependabot/nuget/TvDbSharper-3.2.2
Bump TvDbSharper from 3.2.1 to 3.2.2
2020-09-28 23:48:48 +09:00
dependabot[bot] e84cfc688b Bump BlurHashSharp.SkiaSharp from 1.1.0 to 1.1.1
Bumps [BlurHashSharp.SkiaSharp](https://github.com/Bond-009/BlurHashSharp) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/Bond-009/BlurHashSharp/releases)
- [Commits](https://github.com/Bond-009/BlurHashSharp/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-28 14:48:34 +00:00
dkanada c8b3381d65 Merge pull request #4231 from jellyfin/dependabot/nuget/Serilog.Sinks.Graylog-2.2.1
Bump Serilog.Sinks.Graylog from 2.1.3 to 2.2.1
2020-09-28 23:48:31 +09:00
dkanada 049d7b1840 Merge pull request #4229 from jellyfin/dependabot/nuget/BlurHashSharp-1.1.1
Bump BlurHashSharp from 1.1.0 to 1.1.1
2020-09-28 23:47:35 +09:00
dependabot[bot] baa35cfc99 Bump Mono.Nat from 2.0.2 to 3.0.0
Bumps [Mono.Nat](https://github.com/mono/Mono.Nat) from 2.0.2 to 3.0.0.
- [Release notes](https://github.com/mono/Mono.Nat/releases)
- [Commits](https://github.com/mono/Mono.Nat/compare/release-v2.0.2...release-v3.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-28 12:00:47 +00:00
dependabot[bot] 5eb54be1e3 Bump TvDbSharper from 3.2.1 to 3.2.2
Bumps [TvDbSharper](https://github.com/HristoKolev/TvDbSharper) from 3.2.1 to 3.2.2.
- [Release notes](https://github.com/HristoKolev/TvDbSharper/releases)
- [Changelog](https://github.com/HristoKolev/TvDbSharper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/HristoKolev/TvDbSharper/compare/v3.2.1...v3.2.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-28 12:00:45 +00:00
dependabot[bot] 45faf56085 Bump Serilog.Sinks.Graylog from 2.1.3 to 2.2.1
Bumps [Serilog.Sinks.Graylog](https://github.com/whir1/serilog-sinks-graylog) from 2.1.3 to 2.2.1.
- [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-09-28 12:00:45 +00:00
dependabot[bot] 5b6b66f7b3 Bump BlurHashSharp from 1.1.0 to 1.1.1
Bumps [BlurHashSharp](https://github.com/Bond-009/BlurHashSharp) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/Bond-009/BlurHashSharp/releases)
- [Commits](https://github.com/Bond-009/BlurHashSharp/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-28 12:00:43 +00:00
dependabot[bot] c0afaef985 Bump IPNetwork2 from 2.5.224 to 2.5.226
Bumps [IPNetwork2](https://github.com/lduchosal/ipnetwork) from 2.5.224 to 2.5.226.
- [Release notes](https://github.com/lduchosal/ipnetwork/releases)
- [Commits](https://github.com/lduchosal/ipnetwork/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-28 12:00:42 +00:00
dependabot[bot] 61c1bdb6df Bump Swashbuckle.AspNetCore.ReDoc from 5.5.1 to 5.6.3
Bumps [Swashbuckle.AspNetCore.ReDoc](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) from 5.5.1 to 5.6.3.
- [Release notes](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/releases)
- [Commits](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/compare/v5.5.1...v5.6.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-28 12:00:38 +00:00
BaronGreenback ef737a4e8e Update Emby.Dlna/Configuration/DlnaOptions.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-09-28 07:49:36 +01:00
BaronGreenback bdfe7554e9 Update Emby.Dlna/Configuration/DlnaOptions.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-09-28 07:49:08 +01:00
Gary Wilber 722ec43e25 remove status code from exception message 2020-09-27 23:05:43 -07:00
Gary Wilber 3ca9b13f99 Check response status code before saving images 2020-09-27 21:47:30 -07:00
Gary Wilber eb04773c79 Use the get or add argument 2020-09-27 17:34:36 -07:00
Gary Wilber 50c9083bc0 remove unnecessary parentheses 2020-09-27 17:25:08 -07:00
Gary Wilber 449f7e1b1e update based on suggestions 2020-09-27 17:24:12 -07:00
Gary Wilber 89041982c2 Use ConcurrentDictionary's in DirectoryService 2020-09-27 17:02:10 -07:00
Gary Wilber 881a7fa908 update based on suggestions 2020-09-27 16:57:43 -07:00
Gary Wilber 303eccaffe Fix InvalidOperationException in TvdbSeriesProvider 2020-09-27 16:22:52 -07:00
Gary Wilber 12275e5e7b Fix invalid operation exception in TvdbEpisodeImageProvider.GetImages 2020-09-27 16:16:19 -07:00
Gary Wilber 3cfbe6e340 better audio file check 2020-09-27 13:28:19 -07:00
Gary Wilber 75041e7f39 interlocked increment 2020-09-27 12:56:12 -07:00
Bond-009 43add833cc Merge pull request #4162 from BaronGreenback/DlnaServerBaseUrlFix
Fix for #4161: BaseUrl in DLNA
2020-09-27 20:01:32 +02:00
crobibero ac790cd77b Properly handle null structs in json 2020-09-27 09:45:11 -06:00
dkanada 63b49ff4d8 Merge pull request #4204 from cvium/add_aspect_ratio_seriesprimary
Add series image aspect ratio when ep/season is missing an image
2020-09-27 19:07:57 +09:00
Niels van Velzen 72534f9d66 Use SessionMessageType for WebSocket messages 2020-09-27 10:00:20 +02:00
Gary Wilber 05fa95f149 Increase scan speed for music libraries 2020-09-26 19:33:59 -07:00
crobibero b7022e8dc1 Merge remote-tracking branch 'upstream/master' into package-install-repo 2020-09-26 16:57:53 -06:00
cvium 146cad6150 Remove EOF counter 2020-09-26 19:03:23 +02:00
BaronGreenback abfddba568 Merge pull request #74 from jellyfin/master
Updating from upstream
2020-09-26 11:37:00 +01:00
hoanghuy309 800c039612 Translated using Weblate (Vietnamese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/vi/
2020-09-25 23:54:00 -04:00
cvium 6ca313abc1 Add ProgressiveFileStream 2020-09-25 23:59:17 +02:00
Eben van Deventer 10556b16f8 Translated using Weblate (Afrikaans)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/af/
2020-09-25 16:54:31 -04:00
Eben van Deventer 3a79b9fc32 Translated using Weblate (Afrikaans)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/af/
2020-09-25 16:21:25 -04:00
Eben van Deventer 0c8692e337 Translated using Weblate (Afrikaans)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/af/
2020-09-25 15:57:16 -04:00
Eben van Deventer b66ff9a08c Translated using Weblate (Afrikaans)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/af/
2020-09-25 15:51:08 -04:00
BaronGreenback 7567779127 Update BaseControlHandler.cs 2020-09-25 19:51:37 +01:00
BaronGreenback 63571578ae Update BaseControlHandler.cs 2020-09-25 19:44:16 +01:00
Bond-009 b41da8e5d7 Merge pull request #4209 from cvium/fix_forgotpassword
Add Dto to ForgotPassword
2020-09-25 20:06:53 +02:00
radiusgreenhill 7ee57a07a7 Translated using Weblate (Thai)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/th/
2020-09-25 13:48:34 -04:00
BaronGreenback a52ab69e13 Update DescriptionXmlBuilder.cs 2020-09-25 18:47:24 +01:00
BaronGreenback f3a90bab47 Update DescriptionXmlBuilder.cs 2020-09-25 18:46:52 +01:00
BaronGreenback 12b5f1127e Update DescriptionXmlBuilder.cs 2020-09-25 18:46:20 +01:00
BaronGreenback 293237b714 Update BaseControlHandler.cs 2020-09-25 18:40:10 +01:00
BaronGreenback a9864368c4 Update PlayToController.cs 2020-09-25 17:25:50 +01:00
cvium fed58a0327 Add Dto to ForgotPassword 2020-09-25 12:56:47 +02:00
Joshua M. Boniface 66833b2d6b Merge pull request #4207 from joshuaboniface/update-readme
Revamp the main README
2020-09-25 03:00:46 -04:00
Bond-009 48e9162852 Merge pull request #4208 from cvium/fix_identify
Fix Identify by renaming route parameter to match function argument
2020-09-25 08:51:24 +02:00
cvium c92eda53c5 Fix Identify by renaming route parameter to match function argument 2020-09-25 08:49:44 +02:00
Bond-009 c67ffa417a Merge pull request #4205 from cvium/fix_aspectratio_calc
Fix aspect ratio calculation sometimes returning 0 or 1
2020-09-25 08:19:09 +02:00
hoanghuy309 18ab0c21b2 Translated using Weblate (Vietnamese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/vi/
2020-09-25 01:40:33 -04:00
hoanghuy309 4c0ec387e5 Translated using Weblate (Vietnamese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/vi/
2020-09-24 23:03:06 -04:00
Joshua M. Boniface 2274aa30ce Correct typo 2020-09-24 21:26:03 -04:00
Joshua M. Boniface 23a56a4a26 Fix bad line endings 2020-09-24 21:25:11 -04:00
Joshua M. Boniface 7b60872f2b Revamp the main README
1. Make the descriptions more consistent.
2. Link to the webpage first, then docs.
3. Make the Weblate reference similar to the others.
2020-09-24 21:21:58 -04:00
cvium ec5b738079 Fix aspect ratio calculation returning 0 or 1 when item has no default AR 2020-09-24 23:09:26 +02:00
cvium 9cdef5b57c Add series image aspect ratio when ep/season is missing an image 2020-09-24 22:27:17 +02:00
BaronGreenback f97bea53e5 Update Emby.Server.Implementations.csproj 2020-09-24 16:11:24 +01:00
Jim Cartlidge 8c85cfd01d Fixed build 2020-09-24 16:02:29 +01:00
BaronGreenback d617c0b8b0 Update SystemController.cs 2020-09-24 15:47:35 +01:00
BaronGreenback 28634d3b36 Update DlnaEntryPoint.cs 2020-09-24 15:43:06 +01:00
Jim Cartlidge fb1d452b59 fix conflict 2020-09-24 15:37:34 +01:00
Jim Cartlidge 37cb4dbca6 Removed package reference. 2020-09-24 15:34:49 +01:00
Jim Cartlidge 5edf24db5c Updated to master 2020-09-24 15:34:30 +01:00
BaronGreenback 89e67b2e7f Merge branch 'master' into NetworkPR2 2020-09-24 15:15:32 +01:00
Ryan Petris 3fa3a9d57a Preemptively throw a LiveTvConflictException when the tracked live streams for a given device/tuner will exceed the number of supported streams. 2020-09-23 14:23:04 -07:00
Ryan Petris 4db5700e18 Don't take a lock if there's no intention to manipulate the list of open streams. Instead, use a ConcurrentDictionary so that, in those situations, thread-safe access to the dictionary is ensured. 2020-09-23 14:12:26 -07:00
Anthony Lavado 226316a486 Merge pull request #4103 from Bond-009/warn30
Fix some warnings
2020-09-23 10:30:24 -04:00
Anthony Lavado 5aa743a6a2 Merge pull request #4163 from Bond-009/minor4
Minor improvements
2020-09-23 10:30:13 -04:00
Anthony Lavado 25bfef58fc Merge pull request #4187 from BaronGreenback/FFMPegErrorMsg
Fix for #4184 when no FFMPEG path set.
2020-09-23 10:05:14 -04:00
Anthony Lavado 2746e1fecc Merge pull request #4189 from Bond-009/minor5
Minor improvements
2020-09-23 09:58:19 -04:00
Anthony Lavado af24c43118 Merge pull request #4192 from nielsvanvelzen/generalcommand-sucks
Use GeneralCommandType enum in GeneralCommand
2020-09-23 09:57:45 -04:00
Oatavandi 9bcd81a5dd Translated using Weblate (Tamil)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ta/
2020-09-23 09:12:57 -04:00
dkanada 236dfe3ed8 Merge pull request #4170 from BaronGreenback/VersioningImprovement
Plugin versioning - amended for plugins without meta.json
2020-09-23 20:06:35 +09:00
dkanada 8a299ba7c0 Merge pull request #4178 from hoanghuy309/patch-1
Update LocalizationManager.cs
2020-09-23 20:04:09 +09:00
dkanada 028c681c15 Merge pull request #3928 from Mygod/patch-1
Add 1440p to the mix
2020-09-23 20:00:26 +09:00
dkanada 1657af482a Merge pull request #4082 from cromefire/patch-4
More expressive names for the VideoStream API
2020-09-23 19:58:06 +09:00
dkanada 3b19da9780 Merge pull request #4194 from nvllsvm/optimize
Optimize images
2020-09-23 19:53:08 +09:00
dkanada dfb2ef5cfe Merge pull request #4126 from crobibero/3.1.8
update to dotnet 3.1.8
2020-09-23 19:52:37 +09:00
Bond-009 7dc22bec7b Merge pull request #4173 from BaronGreenback/SessionControllerFix
Unstable: Various controller fixes.
2020-09-23 09:12:47 +02:00
hoanghuy309 a1511add06 Translated using Weblate (Vietnamese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/vi/
2020-09-22 21:47:09 -04:00
hoanghuy309 fa1df73d10 Translated using Weblate (Vietnamese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/vi/
2020-09-22 12:25:54 -04:00
Andrew Rabert 5a74710df3 Optimize images
Used:
- `oxipng --zopfli --opt max --strip all`
- `jpegoptim --all-progressive --strip-all`
2020-09-21 17:01:50 -04:00
Nelson Tham 03cbf5cfbf Translated using Weblate (Chinese (Traditional))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2020-09-21 15:21:58 -04:00
Niels van Velzen 891c538f81 Use GeneralCommandType in SessionController parameters 2020-09-21 17:49:45 +02:00
Niels van Velzen 3459655bb4 Use GeneralCommandType enum in GeneralCommand name 2020-09-21 16:56:22 +02:00
hoanghuy309 7da03d67a7 Translated using Weblate (Vietnamese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/vi/
2020-09-21 08:13:38 -04:00
장건 849835b486 Translated using Weblate (Korean)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2020-09-21 08:13:38 -04:00
Bond-009 bf815ef3e1 Merge pull request #4186 from BaronGreenback/versionMatchFix
Fixes #4185 : FFMPeg version match exception.
2020-09-21 12:28:51 +02:00
hoanghuy309 1f2e227610 Translated using Weblate (Vietnamese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/vi/
2020-09-21 06:22:51 -04:00
josteinh 983aa05e76 Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2020-09-21 04:26:11 -04:00
BaronGreenback f71812abc0 Update SessionController.cs 2020-09-20 14:36:46 +01:00
BaronGreenback d6f01d6503 Update DynamicHlsController.cs 2020-09-20 14:35:46 +01:00
Bond_009 228b33a23b Minor improvements 2020-09-20 14:02:41 +02:00
BaronGreenback 9cb37ae9c2 Update Jellyfin.Api/Controllers/SessionController.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-09-20 12:44:10 +01:00
jeremletrol81 d39b70de32 Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-09-20 07:09:22 -04:00
Ryan Petris 361f51ac94 Use TcpClient.Connect(). 2020-09-19 15:27:07 -07:00
Bond-009 3b006cd674 Merge pull request #4183 from Ullmie02/tmdb-fix
Fix TMDB Season Images
2020-09-19 21:51:23 +02:00
Anton Fernandez Príncipe 484cd88766 Translated using Weblate (Galician)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/gl/
2020-09-19 12:01:32 -04:00
BaronGreenback bbf196c7bd Update TranscodingJobHelper.cs 2020-09-19 16:44:35 +01:00
BaronGreenback 5464eaed4a Update EncoderValidator.cs 2020-09-19 16:40:39 +01:00
BaronGreenback 701d54260d Update SessionController.cs 2020-09-19 15:46:47 +01:00
BaronGreenback 7050525f6b Update SessionController.cs 2020-09-19 15:01:34 +01:00
BaronGreenback 50060175b1 Update DynamicHlsController.cs 2020-09-19 14:53:08 +01:00
BaronGreenback d8e8d298ea Update Jellyfin.Api/Controllers/SessionController.cs
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-09-19 13:58:56 +01:00
BaronGreenback eee977a77b Update Jellyfin.Api/Controllers/SessionController.cs
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-09-19 13:58:39 +01:00
BaronGreenback 4dae7d0521 Update Jellyfin.Api/Controllers/SessionController.cs
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-09-19 13:58:18 +01:00
David dc73d044de Fix TMDB Season Images 2020-09-19 13:58:35 +02:00
hoanghuy309 675fcab451 Translated using Weblate (Vietnamese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/vi/
2020-09-19 03:50:37 -04:00
Ryan Petris 0496e18179 Fix HD Home Run streaming.
* Use LocalEndPoint instead of RemoteEndPoint when determining local address.
* HdHomerunUdpStream.StartStreaming is meant to run until stream is closed, however HdHomerunUdpStream.Open needs to return as soon as stream is open to send stream url back to client. Therefore, StartStreaming should not be awaited on.
* TcpClient(IPEndPoint) treats endpoint as the local endpoint; use TcpClient(string, int) instead as it treats endpoint as the remote endpoint.
2020-09-18 22:29:09 -07:00
hoanghuy309 f363d8afd5 Update LocalizationManager.cs 2020-09-18 22:31:09 +07:00
dkanada e92d8dd195 Merge pull request #4176 from MrTimscampi/skiasharp-dependency-blunder
Update SkiaSharp.NativeAssets.Linux to 2.80.2
2020-09-18 21:10:28 +09:00
MrTimscampi 226e517f11 Update SkiaSharp.NativeAssets.Linux to 2.80.2 2020-09-18 10:02:15 +02:00
Joshua M. Boniface 1672972b41 Merge pull request #4114 from crobibero/rpm-packaging
Add new files to rpm build
2020-09-17 17:01:33 -04:00
BaronGreenback ea7b3699c2 Update SessionController.cs
removed space
2020-09-17 18:47:36 +01:00
BaronGreenback d428ca55cd Update DynamicHlsController.cs 2020-09-17 18:41:12 +01:00
BaronGreenback 8738fe570a Update SessionController.cs 2020-09-17 18:27:07 +01:00
BaronGreenback 604edea6a6 Update DynamicHlsController.cs
Removed container fields
2020-09-17 18:26:27 +01:00
BaronGreenback 9fc1a8b619 Inverted if statement 2020-09-17 18:20:27 +01:00
BaronGreenback 81db323f88 Update SessionController.cs 2020-09-17 17:54:09 +01:00
BaronGreenback 92b63db569 Update ApplicationHost.cs 2020-09-17 15:57:11 +01:00
nyanmisaka db07510017 add tonemap for AMD AMF 2020-09-17 19:16:23 +08:00
BaronGreenback 826148dc84 Added versioning to files without meta.json 2020-09-17 11:01:46 +01:00
BaronGreenback 4c6b60d69d Merge pull request #73 from jellyfin/master
Updating from upstream
2020-09-17 10:58:21 +01:00
Joshua M. Boniface bc5404cd6f Merge pull request #3401 from BaronGreenback/Plugins
Fix for windows plug-in upgrades issue: #1623
2020-09-16 17:22:58 -04:00
spookbits 246ab260f7 Do not implicitly reference ASP.NET Core Analyzers.
Also do not explicitly reference AspNetCore.App (fixes compiler warning).
2020-09-16 17:09:24 -04:00
spooksbit ac32b14012 Update Jellyfin.Server/Properties/launchSettings.json
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-09-16 15:11:35 -04:00
spookbits 5cca8bffea Removed browser auto-load functionality from the server.
Added profiles in launchSettings to start either the web client or the swagger API page.
Removed --noautorunwebapp as this is the default functionality.
2020-09-16 13:22:04 -04:00
Bond-009 6dd6961fd4 Merge pull request #4145 from jellyfin/dependabot/nuget/SkiaSharp-2.80.2
Bump SkiaSharp from 2.80.1 to 2.80.2
2020-09-16 15:00:27 +00:00
Bond_009 0007756a5e Fix 2020-09-16 15:35:37 +02:00
BaronGreenback ad00b93be5 Rename PlugInManifest.cs to PluginManifest.cs 2020-09-16 14:14:10 +01:00
Bond_009 2dbf73b989 Minor improvements 2020-09-16 14:16:44 +02:00
BaronGreenback d99db543da Update DescriptionXmlBuilder.cs 2020-09-16 12:08:37 +01:00
BaronGreenback a6400d12c9 Update DescriptionXmlBuilder.cs 2020-09-16 12:08:23 +01:00
BaronGreenback c2e2e5ac0c Update DescriptionXmlBuilder.cs 2020-09-16 12:03:17 +01:00
BaronGreenback 86ad04b657 Update DescriptionXmlBuilder.cs 2020-09-16 12:02:00 +01:00
Bond-009 4a9b7691c2 Merge pull request #4156 from androiddevnotesforks/master
Fix typos
2020-09-15 19:46:08 +00:00
Jim Cartlidge 0ec3633f9e removing whitespace & upgraded library version 2020-09-15 18:09:43 +01:00
Jim Cartlidge 0bc37c981d Merge branch 'NetworkPR2' of https://github.com/BaronGreenback/jellyfin into NetworkPR2 2020-09-15 18:05:53 +01:00
Jim Cartlidge e6a3518220 Uploading latest 2020-09-15 18:05:42 +01:00
BaronGreenback 96c3c4af42 Update IpBasedAccessValidationMiddleware.cs 2020-09-15 13:48:40 +01:00
BaronGreenback 40464a6fdd Update LanFilteringMiddleware.cs 2020-09-15 13:47:01 +01:00
BaronGreenback a2c50e8005 Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: h1dden-da3m0n <33120068+h1dden-da3m0n@users.noreply.github.com>
2020-09-14 21:02:13 +01:00
BaronGreenback 5baf87663f Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: h1dden-da3m0n <33120068+h1dden-da3m0n@users.noreply.github.com>
2020-09-14 20:57:49 +01:00
BaronGreenback 02951bb8ce Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: h1dden-da3m0n <33120068+h1dden-da3m0n@users.noreply.github.com>
2020-09-14 20:57:00 +01:00
BaronGreenback 69c4b44d24 Update ApplicationHost.cs 2020-09-14 20:52:18 +01:00
BaronGreenback 51c416c832 Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-09-14 20:23:35 +01:00
BaronGreenback e88d3ba8c2 Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-09-14 18:44:29 +01:00
BaronGreenback f80e181eda Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-09-14 18:44:17 +01:00
Jim Cartlidge d27d2a8990 Renamed file. 2020-09-14 18:23:50 +01:00
hoanghuy309 a626ce5bd0 Translated using Weblate (Vietnamese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/vi/
2020-09-14 13:09:18 -04:00
BaronGreenback f73e744785 Update Emby.Server.Implementations/Plugins/PlugInManifest.cs
Co-authored-by: dkanada <dkanada@users.noreply.github.com>
2020-09-14 17:58:10 +01:00
Android Dev Notes cdf96d2663 Fix typos 2020-09-14 21:30:20 +05:30
BaronGreenback 68d08e94fd Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-09-14 16:18:39 +01:00
Jim Cartlidge b04aed2f58 Merge remote-tracking branch 'upstream/master' into NetworkPR2 2020-09-14 16:01:23 +01:00
Jim Cartlidge c1bfba9081 Nullable added 2020-09-14 15:57:00 +01:00
Jim Cartlidge 38b8110a3e Removing blank lines. 2020-09-14 15:55:25 +01:00
Jim Cartlidge b44455ad0d Update based on PR1 changes. 2020-09-14 15:46:38 +01:00
hoanghuy309 9183688cab Translated using Weblate (Vietnamese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/vi/
2020-09-14 09:13:41 -04:00
hoanghuy309 fc827a7b25 Added translation using Weblate (Vietnamese) 2020-09-14 08:12:19 -04:00
dependabot[bot] b83b8f5267 Bump SkiaSharp from 2.80.1 to 2.80.2
Bumps SkiaSharp from 2.80.1 to 2.80.2.

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-14 12:02:19 +00:00
kevin 3a75365930 Translated using Weblate (Albanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sq/
2020-09-14 07:47:18 -04:00
kevin 17f66b4943 Added translation using Weblate (Albanian) 2020-09-14 06:39:06 -04:00
Bond-009 a72f2d3586 Merge pull request #4142 from olsh/master
Fix parameters validation in ImageProcessor.GetCachePath
2020-09-14 04:01:46 +00:00
Oleg Shevchenko 58924fd1da Fix parameters validation in ImageProcessor.GetCachePath 2020-09-13 22:38:31 +03:00
BaronGreenback 7b4b101eca Update ApplicationHost.cs 2020-09-13 18:06:13 +01:00
BaronGreenback 107d606a70 Update ApplicationHost.cs 2020-09-13 17:51:14 +01:00
BaronGreenback 6c2c2cb872 Update ApplicationHost.cs
Global jsonserializer added
2020-09-13 17:45:17 +01:00
BaronGreenback ea0eb9a6ff Update PlugInManifest.cs
Added comments.
2020-09-13 17:42:40 +01:00
BaronGreenback 12fb827405 Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-09-13 17:29:10 +01:00
BaronGreenback 008aa51eb7 Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-09-13 17:24:30 +01:00
BaronGreenback b4edb7c90d Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-09-13 17:24:02 +01:00
Jim Cartlidge 5f58d2c151 With method comments. 2020-09-13 16:37:20 +01:00
Jim Cartlidge 81f655803d Modified to work with manifests. 2020-09-13 16:30:04 +01:00
Jim Cartlidge c41ed13b3d Commenting. 2020-09-13 14:36:10 +01:00
Jim Cartlidge c1b3f2c136 ContentDirectory 2020-09-13 14:31:12 +01:00
Jim Cartlidge 3ad320175d ConnectionManager - static implementation 2020-09-13 14:18:15 +01:00
Jim Cartlidge 68de105dc2 Comments part 1 2020-09-13 13:49:11 +01:00
Bond-009 8102f4eb4e Merge pull request #4106 from Keridos/master
some testing for AudioBook
2020-09-13 08:45:37 +00:00
Bond-009 75ac226bd4 Merge pull request #4128 from derchu/tvdb_rating
Update content rating from thetvdb
2020-09-13 08:43:03 +00:00
derchu b88cfa802f Grab content rating from episode info 2020-09-12 14:46:29 -07:00
Jim Cartlidge 288d89493e Fixed testing units. 2020-09-12 17:21:03 +01:00
crobibero 46ae51bc9a update to dotnet 3.1.8 2020-09-12 10:19:04 -06:00
Jim Cartlidge 9ef79d190b Large number of files 2020-09-12 16:41:37 +01:00
crobibero dfbe4413ff Fix added warnings 2020-09-11 16:13:15 -06:00
crobibero 97e948bbf6 Fix added warnings 2020-09-11 16:11:19 -06:00
crobibero e3fb7f426c Migrate subtitle upload to Jellyfin.Api 2020-09-11 16:08:49 -06:00
crobibero f13b87afa3 Merge remote-tracking branch 'upstream/master' into api-upload-subtitle 2020-09-11 15:53:04 -06:00
Bond-009 6bf0acb854 Merge pull request #4121 from cvium/normalize_app_paths
Normalize application paths
2020-09-11 17:01:58 +00:00
Bond-009 ebdcff8b08 Merge pull request #4118 from SegiH/set-playlist-allow-duplicates-option-to-false-by-default
Change default value for allow duplicates in playlist option to False
2020-09-11 13:33:13 +00:00
Bond-009 6aa6e33f7d Merge pull request #4102 from cvium/fix_startup_lan_ip_validation
Skip startup message for /system/ping
2020-09-11 13:28:49 +00:00
Anthony Lavado b198c6f4d1 Merge pull request #4108 from Bond-009/PERFORMANCE
Minor performance improvements to item saving
2020-09-11 08:33:36 -04:00
Bond_009 edbd4e0db6 Remove extra return statement 2020-09-11 12:57:57 +02:00
Bond_009 441301069e Fix 2020-09-11 12:56:11 +02:00
Bond-009 1d633aac0a Merge pull request #4093 from crobibero/bad-route
Fix api routes
2020-09-11 09:10:16 +00:00
cvium 70aa7fe77d Normalize application paths 2020-09-11 10:34:47 +02:00
Hilman Maulana 50877761f6 Translated using Weblate (Indonesian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/id/
2020-09-11 03:14:25 -04:00
Segi Hovav 73bff9da9d Change default value for allow duplicates in playlist option to False 2020-09-10 10:03:08 -07:00
Bond-009 18fe328979 Merge pull request #4084 from BaronGreenback/PlayTo-url-corruption-fix
Unstable: PlayTo corruption url fix
2020-09-10 15:35:06 +00:00
Bond-009 4447589460 Merge pull request #4116 from cvium/add_known_proxies
Add Known Proxies to system configuration
2020-09-10 14:10:26 +00:00
cvium cb173d79e6 Fix the test 2020-09-10 14:30:33 +02:00
cvium 7576824cee Standardize use of IsLocal and RemoteIp 2020-09-10 14:16:41 +02:00
cvium 78cab77f81 Add Known Proxies to system configuration 2020-09-10 11:05:46 +02:00
crobibero 03d4e90728 add new files to rpm build 2020-09-09 18:52:12 -06:00
crobibero 63ebae2f9e Remove nullable from required 2020-09-09 14:28:30 -06:00
crobibero efce4d4bf3 Merge remote-tracking branch 'upstream/master' into bad-route 2020-09-09 14:23:53 -06:00
Bond-009 621f3b7050 Merge pull request #4037 from crobibero/api-stream-return
Set openapi schema type to file where possible
2020-09-09 20:20:35 +00:00
crobibero 25ac778a79 revert changes 2020-09-09 12:26:18 -06:00
crobibero 612e135c8c Merge remote-tracking branch 'upstream/master' into api-stream-return 2020-09-09 12:02:05 -06:00
crobibero 8e15142d82 Merge remote-tracking branch 'upstream/master' into bad-route 2020-09-09 11:44:53 -06:00
Bond_009 15be11fca8 Fix build 2020-09-09 14:22:27 +02:00
Bond_009 48e1cf9fd7 Minor performance improvements to item saving 2020-09-09 13:38:27 +02:00
Keridos ba777039ef remove unnecessary nullchecks 2020-09-09 02:43:06 +02:00
Keridos 8eb1eedc8d implement suggested changes 2020-09-09 02:33:59 +02:00
Keridos b9c7cce696 some testing for AudioBook
fix PartNumber detection
2020-09-09 02:24:17 +02:00
Bond_009 3b319d45c0 Fix build 2020-09-08 23:15:32 +02:00
BaronGreenback 60e8f47194 Update ApplicationHost.cs 2020-09-08 17:52:08 +01:00
BaronGreenback ddfb13f945 Update Emby.Server.Implementations/Updates/InstallationManager.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-09-08 17:50:37 +01:00
BaronGreenback f4eb34a966 Update Emby.Server.Implementations/Updates/InstallationManager.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-09-08 17:50:19 +01:00
BaronGreenback a9d8b53658 Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-09-08 17:49:55 +01:00
BaronGreenback 2eff0db804 Update Emby.Server.Implementations/ApplicationHost.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-09-08 17:49:38 +01:00
Bond_009 e11a57f19b Fix some warnings 2020-09-08 16:12:47 +02:00
crobibero b2c2746a27 Fix container routes 2020-09-08 07:47:49 -06:00
Bond-009 b76d4ba454 Merge pull request #4096 from crobibero/auth-ex
Fix catching authentication exception
2020-09-08 11:49:56 +00:00
Bond-009 5c7cdfe428 Merge pull request #4092 from crobibero/api-go-brrr
Add missing FromRoute, Required attribute
2020-09-08 11:48:24 +00:00
Bond-009 46c8a6c1e8 Merge pull request #4094 from crobibero/fix-redirect
Fix redirection
2020-09-08 11:04:15 +00:00
cvium 3ad176f8e2 Remove unused import 2020-09-08 12:41:59 +02:00
cvium 12bd9ea750 Skip startup message for /system/ping 2020-09-08 12:37:15 +02:00
BaronGreenback c84aabe954 Update PlayToManager.cs
Fixed name violation
2020-09-08 09:27:44 +01:00
BaronGreenback fde5afc36b Update PlayToManager.cs
removed tab
2020-09-08 09:26:52 +01:00
BaronGreenback 544db8cc06 Update PlayToManager.cs
made code more readable.
2020-09-08 07:53:53 +01:00
crobibero e772756328 Fix catching authentication exception 2020-09-07 20:51:12 -06:00
crobibero 68e5a95fdb Fix redirection 2020-09-07 19:10:14 -06:00
crobibero 14de45602b fix play command route 2020-09-07 18:59:55 -06:00
crobibero af2186ab83 add back optional for route param 2020-09-07 18:50:09 -06:00
crobibero 6d3e15dc31 fix attribute spacing 2020-09-07 18:46:14 -06:00
crobibero 7294dc103f Fix api routes 2020-09-07 18:45:06 -06:00
Anthony Lavado cd40688584 Merge pull request #4076 from Bond-009/warn29
Fix some warnings
2020-09-07 19:41:58 -04:00
Anthony Lavado d08ddbb8d2 Merge pull request #4013 from crobibero/dynamic-cors
Allow CORS domains to be configured
2020-09-07 19:41:45 -04:00
Anthony Lavado f43f72e6ce Merge pull request #4078 from Bond-009/minor3
Minor improvements
2020-09-07 19:40:07 -04:00
Anthony Lavado cc6b03296a Merge pull request #3899 from crobibero/plugin-install
Install specific plugin version if requested
2020-09-07 19:39:55 -04:00
Anthony Lavado 3aee338066 Merge pull request #4073 from Bond-009/useafterdispose
Fix ObjectDisposedException
2020-09-07 19:39:42 -04:00
Anthony Lavado 1b2f00715a Merge pull request #4071 from Bond-009/sln
Fix sln file
2020-09-07 19:39:17 -04:00
crobibero afc8a307c7 Add missing FromRoute, Required attribute 2020-09-07 17:17:26 -06:00
Bond-009 69d453e900 Merge pull request #4057 from crobibero/startup-complete
Add flag for startup completed
2020-09-07 21:55:17 +00:00
BaronGreenback ed9021f40b Update PlayToManager.cs 2020-09-07 21:43:48 +01:00
crobibero a2e90170da Use existing configuration manager 2020-09-07 14:21:30 -06:00
crobibero 7de0fcfc94 Merge remote-tracking branch 'upstream/master' into startup-complete 2020-09-07 14:07:15 -06:00
Bond-009 386ffd1b65 Merge pull request #4079 from jellyfin/dependabot/nuget/SQLitePCLRaw.bundle_e_sqlite3-2.0.4
Bump SQLitePCLRaw.bundle_e_sqlite3 from 2.0.3 to 2.0.4
2020-09-07 20:03:49 +00:00
Bond-009 a88a4164d7 Merge pull request #4067 from barronpm/displaypreferences-fixes
DisplayPreferences fixes
2020-09-07 20:00:30 +00:00
Bond-009 c585af3177 Merge pull request #4063 from BaronGreenback/FilestreamResponse
Our of Memory fix when streaming large files
2020-09-07 20:00:23 +00:00
Cromefire_ 95265288a6 More expressive name for the VideoStream API 2020-09-07 21:46:19 +02:00
linzack 23f6616e63 Translated using Weblate (Chinese (Traditional))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2020-09-07 11:34:39 -04:00
linzack b711e78fe2 Translated using Weblate (Chinese (Traditional))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2020-09-07 11:28:54 -04:00
linzack 5751d4765a Translated using Weblate (Chinese (Traditional))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2020-09-07 11:25:41 -04:00
BaronGreenback d4004bcaf5 Merge pull request #62 from jellyfin/master
Updating from master
2020-09-07 13:40:40 +01:00
Bond-009 c750632cfc Merge pull request #4065 from BaronGreenback/dlna_serverfix
Bug Fix : DLNA Server advertising
2020-09-07 12:36:03 +00:00
Bond-009 1894239fee Merge pull request #4077 from BaronGreenback/simplified_advertising
Simplified Code: Removed code which was never used.
2020-09-07 12:16:08 +00:00
Bond-009 106949f828 Merge pull request #4075 from BaronGreenback/simplified_dlnamanager
Simplified Code: Removed code which was never used.
2020-09-07 12:15:51 +00:00
Bond-009 4c2d2af569 Merge pull request #4074 from cvium/fix_tmdb_null
Fix null exception in tmdb episode provider
2020-09-07 12:13:19 +00:00
dependabot[bot] 37a8be5db2 Bump SQLitePCLRaw.bundle_e_sqlite3 from 2.0.3 to 2.0.4
Bumps [SQLitePCLRaw.bundle_e_sqlite3](https://github.com/ericsink/SQLitePCL.raw) from 2.0.3 to 2.0.4.
- [Release notes](https://github.com/ericsink/SQLitePCL.raw/releases)
- [Commits](https://github.com/ericsink/SQLitePCL.raw/compare/v2.0.3...v2.0.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-07 12:02:16 +00:00
Bond_009 5d9e2903d2 Minor improvements 2020-09-07 13:31:05 +02:00
BaronGreenback a2687fac5e Merge branch 'master' into simplified_dlnamanager 2020-09-07 12:29:31 +01:00
BaronGreenback cf87b3afb7 Remove excess code. 2020-09-07 12:28:48 +01:00
BaronGreenback 03d8f6f43b Update DlnaManager.cs
removed space.
2020-09-07 12:27:55 +01:00
BaronGreenback b673f5bcde Update DlnaManager.cs 2020-09-07 12:27:26 +01:00
Bond-009 bf2dc0cfeb Merge pull request #4061 from BaronGreenback/#4060
Fix for #4060
2020-09-07 11:21:06 +00:00
Bond_009 384ab39f5b Fix some warnings 2020-09-07 13:20:39 +02:00
BaronGreenback eedb520af1 Removed code that wasn't used. 2020-09-07 12:14:02 +01:00
BaronGreenback 6a5df73151 Update DlnaManager.cs
Changed function name to IsRegexOrSubstringMatch
2020-09-07 12:09:15 +01:00
BaronGreenback 12d0f29dea Update Emby.Dlna/DlnaManager.cs
Co-authored-by: Bond-009 <bond.009@outlook.com>
2020-09-07 12:07:57 +01:00
BaronGreenback 268af7dac3 Merge pull request #60 from jellyfin/master
Updating to JF/master
2020-09-07 11:59:37 +01:00
cvium 57db856fd8 Fix null exception in other tmdb providers 2020-09-07 12:42:41 +02:00
cvium f85ab53bd9 Fix null exception in tmdb episode provider 2020-09-07 12:39:16 +02:00
Bond_009 343fc8c668 Fix ObjectDisposedException
```
System.Net.Http.HttpRequestException: An error occurred while sending the request.
 ---> System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'System.Net.Http.StringContent'.
   at System.Net.Http.HttpContent.CheckDisposed()
   at System.Net.Http.HttpContent.CopyToAsync(Stream stream, TransportContext context, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnection.SendRequestContentAsync(HttpRequestMessage request, HttpContentWriteStream stream, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection connection, HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at Emby.Dlna.PlayTo.SsdpHttpClient.SendCommandAsync(String baseUrl, DeviceService service, String command, String postData, String header, CancellationToken cancellationToken) in /home/loma/dev/jellyfin/Emby.Dlna/PlayTo/SsdpHttpClient.cs:line 41
   at Emby.Dlna.PlayTo.Device.GetTransportInfo(TransportCommands avCommands, CancellationToken cancellationToken) in /home/loma/dev/jellyfin/Emby.Dlna/PlayTo/Device.cs:line 629
   at Emby.Dlna.PlayTo.Device.TimerCallback(Object sender) in /home/loma/dev/jellyfin/Emby.Dlna/PlayTo/Device.cs:line 445
```
2020-09-07 12:22:33 +02:00
crobibero eab92a0b01 Merge remote-tracking branch 'upstream/master' into api-stream-return 2020-09-06 14:34:31 -06:00
crobibero 26c432b564 Rename StartupCompleted to StartupWizardCompleted 2020-09-06 14:27:31 -06:00
Bond-009 99bbbea9e2 Merge pull request #4069 from crobibero/api-route-required
Make all FromRoute required
2020-09-06 21:31:08 +02:00
crobibero 29fc882037 merge all attributes 2020-09-06 09:07:27 -06:00
crobibero 6ffffa95a7 Use jar directly 2020-09-06 08:26:36 -06:00
Bond_009 b99446f27a Fix sln file 2020-09-06 13:35:22 +02:00
crobibero 320e3b98ab Add ci task to publish api client 2020-09-05 23:32:21 -06:00
crobibero db9bcdcdc9 Use proper StartupCompleted flag 2020-09-05 18:48:19 -06:00
crobibero b64108923a Add missing references 2020-09-05 17:11:44 -06:00
crobibero 59d47ec3f5 Make all FromRoute required 2020-09-05 17:07:25 -06:00
Patrick Barron 8a15ad160b Fix plugin events not being called and clean up InstallationManager.cs 2020-09-05 18:58:16 -04:00
Patrick Barron 46c705b545 Generate migration for display preferences fix. 2020-09-05 18:11:03 -04:00
Patrick Barron db46a9e7c8 Clean up JellyfinDb and fix display preferences index. 2020-09-05 17:54:34 -04:00
BaronGreenback 15e064cb73 Update StreamingHelpers.cs 2020-09-05 22:09:21 +01:00
BaronGreenback babdd30a46 Renamed IsRegExMatch to IsPropertyMatch 2020-09-05 21:49:30 +01:00
BaronGreenback f7a56f70c6 Update StreamingHelpers.cs 2020-09-05 21:31:23 +01:00
BaronGreenback 3c13489cb9 Update StreamingHelpers.cs 2020-09-05 21:31:05 +01:00
BaronGreenback ebad504f3b Fixed profile 2020-09-05 21:25:47 +01:00
BaronGreenback 0f6ea123ea Update ApplicationHost.cs 2020-09-05 20:55:42 +01:00
BaronGreenback 8439860b2a Merge branch 'master' into Plugins 2020-09-05 20:49:04 +01:00
BaronGreenback 25e965b85c Update FileStreamResponseHelpers.cs 2020-09-05 20:33:18 +01:00
Bond-009 9cffa66a01 Merge pull request #4062 from BaronGreenback/#4059
Fix for #4059
2020-09-05 21:26:55 +02:00
BaronGreenback e33824d286 Changed to named tuples 2020-09-05 20:20:15 +01:00
BaronGreenback d3e8834e80 Removed memoryStream 2020-09-05 20:03:21 +01:00
crobibero 342de39d78 Move CorsPolicyProvider to Jellyfin.Server.Configuration 2020-09-05 13:02:53 -06:00
BaronGreenback ac7636ea1e added dlnaheaders
fix for #4059
2020-09-05 19:54:48 +01:00
BaronGreenback e3fdea2ec9 Update DlnaManager.cs
Fix for #4060
2020-09-05 19:48:37 +01:00
crobibero 9a74ace84b Add flag for startup completed 2020-09-05 09:20:58 -06:00
crobibero 527ffaa90c clean docs 2020-09-05 09:12:50 -06:00
crobibero 2c05d53b06 Convert to ICorsPolicyProvider 2020-09-05 09:10:05 -06:00
crobibero 8a08111adc Merge remote-tracking branch 'upstream/master' into dynamic-cors 2020-09-05 09:00:55 -06:00
Bond-009 6d154041b9 Merge pull request #3880 from DirtyRacer1337/datetime
Fix year parsing
2020-09-05 16:09:05 +02:00
Bond-009 573f4af32e Merge pull request #4051 from crobibero/mad-stylez
Replace swagger logo with jellyfin logo
2020-09-05 15:46:16 +02:00
Bond-009 43e360ab7f Merge pull request #4054 from lmaonator/fix_tvdb_absolute_order
Fix TVDB plugin not handling absolute display order
2020-09-05 15:45:56 +02:00
Bond-009 e6c22a9707 Merge pull request #4034 from barronpm/jellyfin-data-warnings
Fix all warnings in Jellyfin.Data
2020-09-05 14:37:36 +02:00
Bond-009 1f431323f3 Merge pull request #4046 from jellyfin/EraYaN-ci-publish-openapi-spec
Enable code coverage and upload OpenAPI spec.
2020-09-05 14:36:50 +02:00
Bond-009 4500452674 Merge pull request #4055 from Ullmie02/seeking
Enable HTTP Range Processing (Fix seeking)
2020-09-05 11:55:17 +02:00
David 4836f14aff Enable HTTP Range Processing 2020-09-05 10:38:16 +02:00
lmaonator 76172f76d9 Fix TVDB plugin not handling absolute display order 2020-09-05 02:34:57 +02:00
crobibero d5eb246557 Merge remote-tracking branch 'upstream/master' into api-stream-return 2020-09-04 16:42:40 -06:00
Anthony Lavado d8c6d29182 Merge pull request #4053 from thornbill/fix-aac-mime-type
Fix aac mime-type
2020-09-04 18:39:04 -04:00
Anthony Lavado 6152d40303 Merge pull request #4030 from crobibero/http-client-migrate
Remove IHttpClient
2020-09-04 18:38:39 -04:00
Bill Thornton b065f5db1d Fix aac mime-type 2020-09-04 17:41:31 -04:00
crobibero becd3b1542 Merge remote-tracking branch 'upstream/master' into mad-stylez 2020-09-04 08:49:06 -06:00
Joshua M. Boniface 376e4793e6 Merge pull request #4035 from crobibero/api-doc-base-url
Fix apidoc routes with base url
2020-09-04 10:30:13 -04:00
crobibero 23df4991b6 Use proper buffer size 2020-09-04 08:24:21 -06:00
crobibero 2a8653b309 Merge remote-tracking branch 'upstream/master' into http-client-migrate 2020-09-04 08:16:49 -06:00
Joshua M. Boniface 559a7fc336 Merge pull request #3442 from nyanmisaka/tonemap
Tonemapping function relying on OpenCL filter and NVENC HEVC decoder
2020-09-04 10:06:15 -04:00
crobibero 021e218f75 Remove MvcRoutePrefix 2020-09-04 07:58:27 -06:00
crobibero 9f97c47936 Merge remote-tracking branch 'upstream/master' into api-doc-base-url 2020-09-04 07:57:59 -06:00
Joshua M. Boniface 945be64ad6 Merge pull request #4048 from crobibero/xml-docs
Remove GenerateDocumentationFile
2020-09-04 09:35:45 -04:00
crobibero 583f47ea28 Remove GenerateDocumentationFile 2020-09-04 07:04:06 -06:00
Bond-009 7a03e6d2c6 Merge pull request #3946 from crobibero/output-formatters
Clean up output formatters
2020-09-04 13:15:16 +02:00
Bond-009 5e76d5fd56 Merge pull request #3879 from cvium/fix_theme_songs
Populate ThemeVideoIds and ThemeSongIds
2020-09-04 13:13:39 +02:00
Claus Vium 81c764e87f Merge branch 'master' into output-formatters 2020-09-04 11:44:15 +02:00
crobibero 3be12a9d38 replace swagger logo 2020-09-03 21:39:50 -06:00
Bond-009 250216cc53 Merge pull request #4047 from crobibero/health-2.0
Use efcore library for health check
2020-09-04 02:24:26 +02:00
crobibero c404660f67 Remove double listener 2020-09-03 18:19:27 -06:00
crobibero ca6dfd7c45 move metrics to end of pipeline 2020-09-03 17:14:50 -06:00
crobibero 4e52fe1060 Wrap application in baseurl 2020-09-03 17:11:12 -06:00
crobibero 7504f067ef fix merge 2020-09-03 16:19:03 -06:00
crobibero 21a5692626 Merge remote-tracking branch 'upstream/master' into api-doc-base-url 2020-09-03 16:18:36 -06:00
Erwin de Haan 1c71ddc426 Merge MediaBrowser.Api.Tests into Jellyfin.Api.Tests 2020-09-03 23:13:46 +02:00
Erwin de Haan 7ced6d1c8c Enable code coverage and upload OpenAPI spec.
Add basic test to write out the actual openapi spec.
2020-09-03 22:44:31 +02:00
Vijay Raghav 1cbe4896e2 Translated using Weblate (Tamil)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ta/
2020-09-03 15:58:15 -04:00
crobibero 4fc611bf29 fix merge 2020-09-03 13:50:02 -06:00
crobibero a26063f775 fix merge 2020-09-03 13:48:48 -06:00
crobibero eb2dcbddc0 Merge remote-tracking branch 'upstream/master' into api-stream-return 2020-09-03 13:47:00 -06:00
crobibero 4df47dea47 Use efcore library for health check 2020-09-03 13:44:49 -06:00
Anthony Lavado f02bcd9cf8 Merge pull request #3849 from barronpm/scoped-displaypreferences
Make DisplayPreferencesManager Scoped
2020-09-03 15:23:49 -04:00
Patrick Barron d814302707 Merge branch 'master' into scoped-displaypreferences 2020-09-03 15:15:43 -04:00
Nyanmisaka 4cb0a57e46 Merge branch 'master' into tonemap 2020-09-04 02:55:57 +08:00
Joshua M. Boniface 53703566b5 Merge pull request #4008 from crobibero/publish-with-docs
Include xml docs when publishing
2020-09-03 14:46:35 -04:00
Joshua M. Boniface 52aea85e7f Merge pull request #4031 from Bond-009/warn28
Fix some warnings
2020-09-03 14:40:29 -04:00
Bond-009 9cbc016b0a Merge pull request #3877 from orryverducci/deinterlace-improvements
Deinterlacing improvements
2020-09-03 20:38:54 +02:00
Bond-009 7582e17377 Merge pull request #3907 from crobibero/dlna
Fix DLNA Routes
2020-09-03 20:38:09 +02:00
Bond-009 388fe236c5 Merge pull request #3932 from crobibero/api-doc-css
Add support for custom api-doc css
2020-09-03 20:37:54 +02:00
Bond-009 42f22a8e55 Merge pull request #3976 from nyanmisaka/muxer
Expose max_muxing_queue_size to user
2020-09-03 20:36:17 +02:00
crobibero 1d3303fa0a Move json profiles to constant strings. 2020-09-03 12:15:24 -06:00
crobibero a523ff840c Merge remote-tracking branch 'upstream/master' into output-formatters 2020-09-03 12:14:11 -06:00
josteinh 22ac6b9a48 Translated using Weblate (Norwegian Nynorsk)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nn/
2020-09-03 12:40:22 -04:00
josteinh a013d3f4f8 Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2020-09-03 12:40:22 -04:00
crobibero 82f30a35db Merge remote-tracking branch 'upstream/master' into http-client-migrate 2020-09-03 10:40:08 -06:00
crobibero b035a642d2 Merge remote-tracking branch 'upstream/master' into plugin-install 2020-09-03 10:37:35 -06:00
crobibero 1be84e8873 Merge remote-tracking branch 'upstream/master' into api-stream-return 2020-09-03 10:37:05 -06:00
Bond-009 645db0524f Merge pull request #4045 from crobibero/health
Add db health check
2020-09-03 18:34:25 +02:00
Patrick Barron 15135dc3b8 Merge branch 'master' into jellyfin-data-warnings 2020-09-03 15:57:16 +00:00
crobibero 99b2bc8e06 ? 2020-09-03 09:49:08 -06:00
crobibero 12c3039185 Merge remote-tracking branch 'upstream/master' into health 2020-09-03 09:48:19 -06:00
Anthony Lavado 0712a7ef11 Merge pull request #3886 from crobibero/3.1.7
bump deps
2020-09-03 11:47:13 -04:00
crobibero 5ad81f7fe6 Merge remote-tracking branch 'upstream/master' into 3.1.7 2020-09-03 09:29:07 -06:00
crobibero d6594a8a70 Add db health check 2020-09-03 09:26:22 -06:00
crobibero bebb0afb52 Merge remote-tracking branch 'upstream/master' into api-doc-css 2020-09-03 08:06:40 -06:00
crobibero 1de22af646 Merge remote-tracking branch 'upstream/master' into dynamic-cors 2020-09-03 07:48:34 -06:00
Anthony Lavado 3711a1978e Merge pull request #3874 from danieladov/master
Fix MergeVersions()
2020-09-03 09:47:19 -04:00
crobibero fb422ff741 Merge remote-tracking branch 'upstream/master' into http-client-migrate 2020-09-03 07:46:52 -06:00
Anthony Lavado a2d6ea2eed Merge pull request #4043 from cvium/remove_shit_and_shit_adjacent_shit
Split HttpListenerHost into middlewares
2020-09-03 09:45:17 -04:00
crobibero ae8ff1ca54 last time I swear 2020-09-03 07:30:34 -06:00
crobibero 4d4dc0b555 Remove ResponseHeadersRead in SchedulesDirect 2020-09-03 07:22:32 -06:00
crobibero d8a0edc511 Revert "Remove ResponseHeadersRead where applicable"
This reverts commit 85844a84b6.
2020-09-03 07:20:33 -06:00
Claus Vium 2f9b482555 Merge branch 'master' into master 2020-09-03 14:54:00 +02:00
Claus Vium abc527329d Sort by SortName after scanning 2020-09-03 14:49:02 +02:00
crobibero 85844a84b6 Remove ResponseHeadersRead where applicable 2020-09-03 06:48:19 -06:00
crobibero 9c6d0117b5 Add missing image return types 2020-09-03 06:42:56 -06:00
Claus Vium 993c46f98d Remove custom CORS OPTIONS handling 2020-09-03 14:05:16 +02:00
Bond-009 8c28824c88 Merge pull request #4042 from jellyfin/ci-packaging-fixes
Fixes for CI Nuget package pushing and CI triggers
2020-09-03 12:56:04 +02:00
Claus Vium 2f79c3095b Fix startup message 2020-09-03 11:54:38 +02:00
Claus Vium 571d0570f5 Kill HttpListenerHost 2020-09-03 11:32:22 +02:00
Claus Vium 6ff372a550 Add Https port to service collection 2020-09-03 00:38:52 +02:00
Claus Vium 5813f8073c Move HttpListenerHost middleware up the pipeline 2020-09-03 00:32:56 +02:00
Bond-009 52b34eb407 Merge pull request #4039 from cvium/remove_shit_and_shit_adjacent_shit
Remove ServiceStack and related stuff
2020-09-02 23:18:32 +02:00
crobibero 932c4d25a4 Clean api return types 2020-09-02 15:06:13 -06:00
Erwin de Haan 424f53c966 Only trigger on v* tags and also run Main build on master commits. 2020-09-02 22:54:24 +02:00
Erwin de Haan 3a649fa45b Add SourceLink to Jellyfin.Data 2020-09-02 22:46:18 +02:00
Erwin de Haan 346581bb2a Fixes for CI Nuget package pushing and CI triggers
Also adds SourceLink support and symbols that are pushed to Nuget.
Add symbols to main nuget packages for unstable builds (Azure Artifacts does not support symbols outside of the main package)
SourceLink will enable stepping during debugging.
2020-09-02 22:42:00 +02:00
Joshua M. Boniface dcef8636d5 Merge pull request #3863 from jellyfin/EraYaN-artifacts-nohup
Add nohup and continueOnError to the Collect Artifacts task
2020-09-02 15:43:41 -04:00
Anthony Lavado f6622c835f Merge pull request #4041 from jellyfin/path-itemlookupinfo
Add the item path to the ItemLookupInfo class
2020-09-02 15:05:31 -04:00
Airichan 59597b6c7f Translated using Weblate (Thai)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/th/
2020-09-02 14:51:51 -04:00
Sverre 9383ae6061 Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2020-09-02 14:51:50 -04:00
Erwin de Haan 208b00fbb1 Add the item path to the ItemLookupInfo class.
This is important for the Shoko Anime Meatdata provider plugin.
2020-09-02 20:11:31 +02:00
crobibero a698dab66f Specify image file return for GetItemImage2 2020-09-02 11:14:59 -06:00
Airichan 191f109da9 Translated using Weblate (Thai)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/th/
2020-09-02 13:07:44 -04:00
crobibero 1feee6f95e Properly host static files and set base url 2020-09-02 08:03:15 -06:00
Claus Vium b9cd6a125b Update MediaBrowser.Common/Extensions/HttpContextExtensions.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-09-02 15:27:54 +02:00
Claus Vium 38be506849 Fix xml doc 2020-09-02 13:29:20 +02:00
Claus Vium 12710cdf42 More fixes 2020-09-02 13:06:14 +02:00
Claus Vium bde8c00306 Don't call tostring twice 2020-09-02 12:49:48 +02:00
Claus Vium e337756428 Remove ServiceStack and related stuff 2020-09-02 12:22:14 +02:00
crobibero ec2a5e4fb0 Simplify file returns 2020-09-01 19:27:57 -06:00
crobibero 65d05f92ac Merge remote-tracking branch 'upstream/master' into dynamic-cors 2020-09-01 18:27:55 -06:00
crobibero f443c534bf Merge remote-tracking branch 'upstream/master' into package-install-repo 2020-09-01 18:24:42 -06:00
crobibero c473645f9d Set openapi schema type to file where possible 2020-09-01 17:31:31 -06:00
crobibero c98952937e Fix ValidatePath response code 2020-09-01 17:29:08 -06:00
crobibero 2f33bee2a9 Set openapi schema type to file where possible 2020-09-01 17:26:49 -06:00
Bond-009 506fc7cbae Merge pull request #4033 from crobibero/empty-string-nullable-number
Readd nullable number converters
2020-09-01 21:41:46 +02:00
crobibero b398c35068 use UserAgent.ParseAdd where possible 2020-09-01 13:16:19 -06:00
crobibero 0b38ac9a8a Fix apidoc routes with base url 2020-09-01 12:53:19 -06:00
Nyanmisaka 12dcd809f9 minor changes
Co-authored-by: Bond-009 <bond.009@outlook.com>
2020-09-01 23:53:59 +08:00
crobibero 9ddf550b43 Simplify json converters 2020-09-01 09:42:59 -06:00
Nyanmisaka 5c83dbd0c4 update as per suggestions 2020-09-01 23:39:19 +08:00
Patrick Barron 602e746af0 Treat all warnings as errors in Jellyfin.Data 2020-09-01 11:38:53 -04:00
Patrick Barron a5f75a2d1a Rename Metadata to ItemMetadata 2020-09-01 11:38:09 -04:00
Patrick Barron 1f2e7e47ce Suppress CA2227 2020-09-01 11:36:45 -04:00
Patrick Barron 70b87a3e72 Add periods to documentation in CollectionItem.cs 2020-09-01 11:30:37 -04:00
crobibero 471e760057 remove unused declaration 2020-09-01 09:20:32 -06:00
crobibero eb400f7292 Fallback to base jsonconverter 2020-09-01 09:19:22 -06:00
Patrick Barron cab45db228 Include shared version in Jellyfin.Data 2020-09-01 11:17:46 -04:00
Patrick Barron d0f07d7ddd Clean up Group.cs 2020-09-01 11:16:09 -04:00
Patrick Barron b24221b40f Clean up ActivityLog.cs 2020-09-01 11:12:31 -04:00
Patrick Barron 732ec7a462 Clean up User.cs 2020-09-01 11:09:08 -04:00
Patrick Barron e56e2632d1 Clean up Preference.cs 2020-09-01 11:05:21 -04:00
Patrick Barron 617df5e0e6 Clean up and document Permission.cs 2020-09-01 11:04:32 -04:00
Patrick Barron 4a05943327 Document ItemDisplayPreferences.cs 2020-09-01 11:02:57 -04:00
crobibero 1f2d73af8e Only handle empty string or null case 2020-09-01 08:52:50 -06:00
crobibero 9b2359a453 readd nullable number converters 2020-09-01 08:12:36 -06:00
crobibero b111b9e2c9 Fix styling 2020-09-01 07:58:05 -06:00
crobibero 39041019e7 Remove CacheMode, CompressionMethods, HttpResponseInfo 2020-09-01 07:53:57 -06:00
crobibero e1d0b430d9 Remove HttpRequestOptions 2020-09-01 07:51:55 -06:00
crobibero 4038d15c83 Properly migrate all HttpCompletionOption 2020-09-01 07:51:06 -06:00
Patrick Barron 0fc1810c41 Document ImageInfo.cs 2020-09-01 09:35:12 -04:00
Patrick Barron 81d03383e3 Delete ProviderMapping.cs 2020-09-01 09:31:45 -04:00
fernando012 2d198292a3 Translated using Weblate (Spanish (Dominican Republic))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_DO/
2020-09-01 00:18:27 -04:00
Patrick Barron b1b2d399f8 Document UnratedItem.cs 2020-08-31 23:21:05 -04:00
Patrick Barron 65bce98ec5 Document SubtitlePlaybackMode.cs 2020-08-31 23:17:33 -04:00
Patrick Barron 0110b2472d Document PersonRoleType.cs 2020-08-31 23:15:13 -04:00
Patrick Barron a1aece1299 Document MediaFileKind.cs 2020-08-31 23:11:58 -04:00
Patrick Barron 4e439652da Document IndexingKind.cs 2020-08-31 23:08:34 -04:00
Patrick Barron 8124e6fddf Document DynamicDayOfWeek.cs 2020-08-31 23:07:15 -04:00
Patrick Barron 367aa26ab5 Document ArtKind.cs 2020-08-31 23:04:49 -04:00
Bond-009 8ee042483a Merge pull request #2888 from ConfusedPolarBear/quickconnect
Add quick connect (login without typing password)
2020-08-31 23:01:27 +02:00
Bond_009 e653eef44f Fix some warnings 2020-08-31 22:20:19 +02:00
Anthony Lavado 43a81366a6 Merge pull request #4022 from Bond-009/arraypool
Fix incorrect usage of ArrayPool
2020-08-31 15:58:53 -04:00
crobibero 8d592777c4 change to using declaration 2020-08-31 12:46:42 -06:00
crobibero c02d0ceb57 Add missing using 2020-08-31 12:45:23 -06:00
crobibero f498e1ee59 remove IHttpClient 🎉 2020-08-31 12:10:49 -06:00
crobibero 6ae4da709e migrate to IHttpClientFactory in M3UTunerHost 2020-08-31 12:08:45 -06:00
crobibero 5b93b3b15e migrate to IHttpClientFactory in M3uParser 2020-08-31 12:08:37 -06:00
crobibero af9ebef577 migrate to IHttpClientFactory in SharedHttpStream 2020-08-31 12:06:42 -06:00
crobibero 96fdee38cb migrate to IHttpClientFactory in HdHomerunHost 2020-08-31 12:03:41 -06:00
crobibero 97cc3d54bb migrate to IHttpClientFactory in XmlTvListingsProvider 2020-08-31 12:00:09 -06:00
crobibero 652e688cc1 migrate to IHttpClientFactory in SchedulesDirect 2020-08-31 11:57:11 -06:00
crobibero 50a1e35765 migrate to IHttpClientFactory in EmbyTV 2020-08-31 11:39:40 -06:00
crobibero 804b0fc034 migrate to IHttpClientFactory in DirectRecorder 2020-08-31 11:38:47 -06:00
crobibero 6d19adbecf migrate to IHttpClientFactory in ApplicationHost 2020-08-31 11:36:29 -06:00
crobibero 533b981668 migrate to IHttpClientFactory in InstallationManager 2020-08-31 11:30:05 -06:00
crobibero 8215f15c45 migrate to IHttpClientFactory in Emby.Dlna 2020-08-31 11:26:42 -06:00
crobibero 30ba35a33b Use HttpClientFactory in SubtitleEncoder 2020-08-31 11:07:40 -06:00
Bond-009 5c50d5356c Merge pull request #3935 from crobibero/default-http-client
Add Default Http Client
2020-08-31 19:07:10 +02:00
crobibero dd078e7b82 use named client 2020-08-31 11:05:21 -06:00
crobibero 95402df884 Merge remote-tracking branch 'upstream/master' into default-http-client 2020-08-31 10:32:28 -06:00
Bond-009 95142643f6 Merge pull request #3871 from Ullmie02/plugins-api
Allow plugins to define their own api endpoints
2020-08-31 18:28:11 +02:00
David Ullmer b37cc7bfaf Don't evaluate twice 2020-08-31 18:03:13 +02:00
David Ullmer 7f79f2ee0e Use .Distinct on assembly 2020-08-31 17:53:55 +02:00
crobibero e48df7da5e Only create product header once 2020-08-31 09:15:20 -06:00
crobibero 808d180be4 Fix user agent comment 2020-08-31 08:52:21 -06:00
crobibero 64a811d783 use named http clients 2020-08-31 08:47:38 -06:00
David Ullmer 2a84d5a693 Enable nullable for interface 2020-08-31 16:35:37 +02:00
David Ullmer b7c07f6821 Merge branch 'master' into library-pictures 2020-08-31 16:16:01 +02:00
crobibero b216b91e21 Bump Microsoft.NET.Test.Sdk and add missing reference 2020-08-31 08:14:22 -06:00
crobibero 5d528e202f Merge remote-tracking branch 'upstream/master' into 3.1.7 2020-08-31 08:10:15 -06:00
Bond-009 4cc7406fe9 Merge pull request #4026 from jellyfin/dependabot/nuget/prometheus-net.DotNetRuntime-3.4.0
Bump prometheus-net.DotNetRuntime from 3.3.1 to 3.4.0
2020-08-31 16:05:55 +02:00
Bond-009 5286bc251a Merge pull request #4024 from jellyfin/dependabot/nuget/IPNetwork2-2.5.224
Bump IPNetwork2 from 2.5.211 to 2.5.224
2020-08-31 16:05:26 +02:00
Bond-009 1b1de4026d Merge pull request #4028 from crobibero/cache-duration
Properly verify cache duration
2020-08-31 16:04:04 +02:00
crobibero bd66fd25df Merge remote-tracking branch 'upstream/master' into 3.1.7 2020-08-31 08:00:05 -06:00
Bond-009 1f4deccfa4 Merge pull request #4027 from cvium/fix_update_libraryoptions
Fix model binding in UpdateLibraryOptions
2020-08-31 15:44:47 +02:00
crobibero db99903c35 Properly verify cache duration 2020-08-31 07:24:23 -06:00
crobibero e97ccd87fb Remove DynamicCorsMiddleware 2020-08-31 07:21:07 -06:00
Claus Vium 7103e764a4 Fix model binding in UpdateLibraryOptions 2020-08-31 14:47:57 +02:00
dependabot[bot] 5804f9a55f Bump prometheus-net.DotNetRuntime from 3.3.1 to 3.4.0
Bumps [prometheus-net.DotNetRuntime](https://github.com/djluck/prometheus-net.DotNetRuntime) from 3.3.1 to 3.4.0.
- [Release notes](https://github.com/djluck/prometheus-net.DotNetRuntime/releases)
- [Commits](https://github.com/djluck/prometheus-net.DotNetRuntime/compare/3.3.1...3.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-31 12:02:24 +00:00
dependabot[bot] 5d557927b5 Bump IPNetwork2 from 2.5.211 to 2.5.224
Bumps [IPNetwork2](https://github.com/lduchosal/ipnetwork) from 2.5.211 to 2.5.224.
- [Release notes](https://github.com/lduchosal/ipnetwork/releases)
- [Commits](https://github.com/lduchosal/ipnetwork/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-31 12:02:07 +00:00
Bond-009 b6cc1e1620 Merge pull request #4010 from cromefire/patch-3
Fix wrong OpenAPI auth header value
2020-08-31 11:22:22 +02:00
Bond-009 32f8b46040 Fix incorrect usage of ArrayPool 2020-08-31 11:09:41 +02:00
Bond-009 9a2f2aac22 Merge pull request #4018 from barronpm/library-entity-cleanup
Library Entity Cleanup
2020-08-31 11:00:28 +02:00
Patrick Barron acb213e4b8 First pass at cleaning entity classes.
- Documents all library entities
- Fixes styling warnings for library entities
- Updates library entities to inherit from interfaces
- Makes library entites no longer partial.
2020-08-30 18:51:31 -04:00
Patrick Barron 414bedbde4 Move library entities to folder. 2020-08-30 18:51:28 -04:00
Joshua M. Boniface ed756dfe96 Merge pull request #3999 from PrplHaz4/patch-3
[Permissions] Fix for individual channel plugins #2858
2020-08-30 16:04:16 -04:00
crobibero eba0d9e387 Always allow set credentials header 2020-08-30 10:05:21 -06:00
crobibero 3c0484cc97 Allow for dynamic cors response 2020-08-30 09:32:14 -06:00
Cromefire_ 3453b65444 Fixed wrong openapi auth header value 2020-08-30 00:44:33 +02:00
crobibero 44fb76bbcf include xml docs when publishing 2020-08-29 10:42:12 -06:00
Joshua M. Boniface 0424d09b8d Merge pull request #4001 from brianjmurrell/patch-1
Add an empty %files section to main package

(cherry picked from commit c3ef1f56f6)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
2020-08-28 10:46:21 -04:00
Hilman Maulana b0a8c31e0f Translated using Weblate (Indonesian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/id/
2020-08-28 02:24:38 -04:00
Bond-009 521027b2c0 Merge pull request #4002 from crobibero/partial-access
Fix partial library and channel access
2020-08-27 18:09:25 +02:00
crobibero ec8967b8e6 Fix partial library and channel access 2020-08-27 10:00:06 -06:00
PrplHaz4 34219e2831 Fix permissions for individual channel plugins #2858
Without this change, the only Channel (plugin, not Live TV) permission that works is "Enable All Channels".

Fixes #2858
2020-08-27 10:12:32 -04:00
Kraisorn Thongsuk ba7bdbc494 Translated using Weblate (Thai)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/th/
2020-08-27 03:54:08 -04:00
Matt Montgomery df0d197dc8 Apply suggestions from code review 2020-08-26 15:24:24 -05:00
Anthony Lavado 8510333bcc Merge pull request #3983 from Bond-009/useragent
Fix incorrect adding of user agent
2020-08-26 13:00:51 -04:00
Bond-009 4f6c98b325 Merge pull request #3984 from crobibero/json-prerelease
Use Prerelease System.Text.Json
2020-08-26 18:59:46 +02:00
Matt Montgomery 2974a0248a Merge remote-tracking branch 'upstream/master' into quickconnect 2020-08-26 10:29:37 -05:00
crobibero de4cfa2234 Apply suggestions from code review 2020-08-26 08:45:59 -06:00
crobibero 78ae86b86a Apply suggestions from code review 2020-08-26 08:23:35 -06:00
crobibero 8b96881aa1 Clean up json Converters 2020-08-26 08:22:48 -06:00
Joshua M. Boniface 4e3f26b647 Merge pull request #3988 from crobibero/pack-license
Use proper SPDX Identifier
2020-08-26 09:46:41 -04:00
crobibero b02650ec2f use proper spdx 2020-08-26 07:39:01 -06:00
crobibero 4e175adf49 revert rename 2020-08-26 07:37:17 -06:00
crobibero 5f60da29c7 switch to spdx 2020-08-26 07:36:57 -06:00
crobibero 670c41ee89 Properly pack project license 2020-08-25 21:33:19 -06:00
crobibero 582c016d3b bump to preview8 and remove extra references 2020-08-25 21:19:55 -06:00
Joshua M. Boniface e83f6d6ec7 Merge pull request #3889 from Ullmie02/nuget-versioning
Build Unstable NuGet packages
2020-08-25 17:08:06 -04:00
Joshua M. Boniface cf6ef9958d Merge pull request #3910 from barronpm/event-rewrite-1
Event Rewrite (Part 1)
2020-08-25 16:59:35 -04:00
crobibero acd88dae45 fix build 2020-08-25 08:11:50 -06:00
crobibero 5f64ab02a0 bump System.Text.Json 2020-08-25 07:33:58 -06:00
Bond-009 5be87753d6 Fix incorrect adding of user agent 2020-08-25 13:03:07 +02:00
David bcdae0c5a7 Use array, remove VS code line 2020-08-25 10:08:05 +02:00
Bond-009 25be1a9b20 Merge pull request #3977 from barronpm/librarycontroller-getdownload-async
Make LibraryController.GetDownload async
2020-08-25 08:41:42 +02:00
Patrick Barron b5bbbb9cef Document SubtitleDownloadFailureEventArgs 2020-08-24 20:34:53 -04:00
Patrick Barron 2eb9a3670b Document PlaybackStartEventArgs 2020-08-24 20:34:42 -04:00
Patrick Barron 71c33d09c4 Document IEventConsumer 2020-08-24 20:34:33 -04:00
Patrick Barron fa8892fde4 Make LibraryController.GetDownload async 2020-08-24 20:27:10 -04:00
Patrick Barron 9fa4fff15d Merge branch 'master' into event-rewrite-1
# Conflicts:
#	Emby.Dlna/Emby.Dlna.csproj
#	Emby.Dlna/Eventing/DlnaEventManager.cs
#	Emby.Dlna/Service/BaseService.cs
#	Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
#	MediaBrowser.Controller/Subtitles/SubtitleDownloadEventArgs.cs
2020-08-24 20:04:13 -04:00
nyanmisaka d7caf88df6 expose max_muxing_queue_size to user 2020-08-25 02:20:46 +08:00
Bond-009 ec3104d2d2 Merge pull request #3975 from nyanmisaka/muxer
Increase the max muxing queue size for ffmpeg
2020-08-24 19:32:38 +02:00
nyanmisaka 6462ca0036 increase the max muxing queue size for ffmpeg 2020-08-24 22:54:14 +08:00
crobibero 9626101c9f Merge remote-tracking branch 'upstream/master' into 3.1.7 2020-08-24 07:39:16 -06:00
Bond-009 7ce21d436b Merge pull request #3961 from crobibero/api-json-null
Ignore null json values
2020-08-23 16:27:24 +02:00
crobibero cb44f16068 Merge remote-tracking branch 'upstream/master' into output-formatters 2020-08-23 07:53:33 -06:00
crobibero 340f83c3f5 Ignore null json values 2020-08-23 07:48:12 -06:00
Joshua M. Boniface f9bb79285b Merge pull request #3959 from Bond-009/warn27
Enable TreatWarningsAsErrors for Emby.Data in Release
2020-08-22 23:50:52 -04:00
Joshua M. Boniface 3a99a4770c Merge pull request #3958 from Bond-009/warn26
Enable TreatWarningsAsErrors for MediaBrowser.Controller in Release
2020-08-22 23:50:43 -04:00
Hilman Maulana e88b7b8d0e Translated using Weblate (Indonesian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/id/
2020-08-22 18:45:59 -04:00
Bond_009 c4d8275fc1 Fix duplicate 2020-08-23 00:26:32 +02:00
Bond_009 4243a17c86 Enable TreatWarningsAsErrors for Emby.Data in Release 2020-08-22 23:29:54 +02:00
Bond_009 5ec1a979b2 Remove extra newline 2020-08-22 21:57:28 +02:00
Bond_009 404bb4f835 Enable TreatWarningsAsErrors for MediaBrowser.Controller in Release 2020-08-22 21:56:24 +02:00
David 9165dc3b3a Scale down text if too long 2020-08-22 14:31:28 +02:00
Bond-009 92c491397e Merge pull request #3941 from crobibero/no-more-form
Conver all remaining form request to body
2020-08-22 13:06:12 +02:00
Joshua M. Boniface 3e65cae70e Merge pull request #3955 from Bond-009/async3
Make some methods async
2020-08-21 18:03:07 -04:00
Bond-009 4d64041a92 Merge pull request #3951 from crobibero/json-nullable-number
Add nullable int32, int64 json converters
2020-08-21 23:42:47 +02:00
Bond-009 1073d41c4d Merge pull request #3950 from crobibero/dlna-play-to
Fix dlna play to
2020-08-21 23:42:40 +02:00
Bond_009 4916bfb024 Address comment 2020-08-21 22:59:47 +02:00
crobibero 33f6e410ac Merge remote-tracking branch 'upstream/master' into json-nullable-number 2020-08-21 14:38:32 -06:00
crobibero d951554779 fix copy-pasta 2020-08-21 14:37:51 -06:00
Bond-009 03c89fa717 Merge pull request #3953 from crobibero/dotnetglob
bump DotNet.Glob
2020-08-21 22:32:47 +02:00
Bond_009 2b832de289 Fix build 2020-08-21 22:19:16 +02:00
Bond_009 6329a36a27 Make method async 2020-08-21 22:06:06 +02:00
Bond_009 119f64f5e7 Make some methods async 2020-08-21 22:01:19 +02:00
Anthony Lavado 72115c91e0 Merge pull request #3943 from Bond-009/ffmpeg
Simplify FFmpeg detection code
2020-08-21 15:04:58 -04:00
David d740e7aee6 Increase font size, center text 2020-08-21 20:36:56 +02:00
David a3020f2917 Use backdrop with library name as library thumbnail 2020-08-21 19:53:55 +02:00
crobibero 89c9ca68f9 bump DotNet.Glob 2020-08-21 11:50:45 -06:00
crobibero 4a64819277 Fix dlna produces type 2020-08-21 11:10:29 -06:00
crobibero 384a62dc08 Add nullable int32, int64 json converters 2020-08-21 10:23:47 -06:00
crobibero 07e7125d07 Fix dlna play to 2020-08-21 07:24:44 -06:00
Anthony Lavado cd49beb7ad Merge pull request #3947 from Bond-009/warn25
Fix all warnings in Emby.Dlna
2020-08-20 17:34:40 -04:00
Bond_009 170e434f92 Fix all warnings in Emby.Dlna 2020-08-20 21:04:57 +02:00
crobibero 2ca8d31b20 clean up output formatters 2020-08-20 11:17:27 -06:00
Anthony Lavado ac58d07e0e Merge pull request #3939 from Bond-009/warn24
Make MediaBrowser.MediaEncoding warnings free
2020-08-20 12:50:30 -04:00
Bond-009 6292a9e4e9 Merge branch 'master' into warn24 2020-08-20 18:50:15 +02:00
Bond-009 8cbefdd561 Merge pull request #3942 from Ullmie02/dlna-warnings
Reduce warnings in Emby.Dlna
2020-08-20 18:38:38 +02:00
David 1337a0dcec Code review 2020-08-20 17:59:27 +02:00
Bond_009 301e029d42 Add unsupported ffmpeg version to tests 2020-08-20 17:45:40 +02:00
Bond_009 cb5cb075a9 Simplify FFmpeg detection code 2020-08-20 17:16:09 +02:00
David ca2b36bdb0 Reduce warnings in Emby.Dlna 2020-08-20 17:08:33 +02:00
Nyanmisaka 05e78ee78c Apply suggestions from code review
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-08-20 22:53:36 +08:00
Bond-009 eda29dbccb Merge pull request #3216 from rotvel/feature/ffmpeg-version-check
Try harder at detecting ffmpeg version and enable the validation
2020-08-20 16:40:35 +02:00
Bond-009 5160e627f1 Merge branch 'master' into feature/ffmpeg-version-check 2020-08-20 16:40:03 +02:00
crobibero d63f4bce5d Conver all remaining form request to body 2020-08-20 07:53:53 -06:00
nyanmisaka 54349fc945 fix outputSize 2020-08-20 19:08:36 +08:00
Bond_009 6123e2e848 Fix build 2020-08-20 12:24:34 +02:00
Bond_009 ab2147751f Make MediaBrowser.MediaEncoding warnings free 2020-08-20 12:16:24 +02:00
Bond-009 250e351613 Merge pull request #3938 from crobibero/fix-audio-routes
Fix conflicting audio routes
2020-08-20 10:52:28 +02:00
nyanmisaka dd3b48f203 fix lint 2020-08-20 15:17:42 +08:00
IR0NCaT 3d84047320 Translated using Weblate (Russian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ru/
2020-08-20 02:30:38 -04:00
Patrick Barron 98ed90c4a2 Merge branch 'master' into event-rewrite-1 2020-08-19 18:11:17 -04:00
Anthony Lavado 660882c261 Merge pull request #3841 from Bond-009/warn23
Fix warnings
2020-08-19 17:51:46 -04:00
crobibero 11e3cdb3cb Fix conflicting audio routes 2020-08-19 15:08:28 -06:00
crobibero abb79bf810 remove OS and email from default UserAgent 2020-08-19 13:41:00 -06:00
Bond_009 5d0a17fd42 More fixes 2020-08-19 18:57:47 +02:00
Nyanmisaka 16658c92fe fix SubtitlesOctopus 2020-08-20 00:08:44 +08:00
Bond_009 ce352e4a1d Address comments 2020-08-19 18:06:27 +02:00
Nyanmisaka 53861db451 Apply suggestions from code review
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-08-20 00:04:55 +08:00
Bond_009 68edccd9f4 More warn 2020-08-19 18:02:34 +02:00
Bond_009 e77a45adcf Minor change 2020-08-19 17:52:14 +02:00
Bond_009 2b400c99ef Fix warnings 2020-08-19 17:50:50 +02:00
crobibero f6b8cd4b46 Fix build 2020-08-19 07:09:07 -06:00
crobibero ac5c0866f3 P E R F O R M A N C E 2020-08-19 06:52:18 -06:00
crobibero 0db0e8b944 Remove unused configure 2020-08-19 06:39:29 -06:00
crobibero c5a9e8f831 Merge remote-tracking branch 'upstream/master' into default-http-client 2020-08-19 06:37:06 -06:00
crobibero 7578dfac25 Remove unused directives 2020-08-19 06:36:10 -06:00
crobibero 076e17f355 Add default http client 2020-08-19 06:31:45 -06:00
Anthony Lavado 634ee2d1e9 Merge pull request #3861 from crobibero/fixes
API Fixes
2020-08-19 08:17:03 -04:00
Cody Robibero 3a722740ce Update Jellyfin.Api/Helpers/MediaInfoHelper.cs
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-08-19 04:53:25 -06:00
nyanmisaka 988e76d4c7 update endpoints as AspNet controllers 2020-08-19 17:30:22 +08:00
nyanmisaka aa75755480 Merge remote-tracking branch 'upstream/master' into fonts 2020-08-19 16:56:53 +08:00
crobibero 852213d90c resolve merge conflicts 2020-08-18 20:23:34 -06:00
crobibero 50a9c8c8a7 resolve merge conflicts 2020-08-18 20:22:15 -06:00
crobibero b43a8fb9d3 Merge remote-tracking branch 'upstream/master' into package-install-repo 2020-08-18 20:20:32 -06:00
crobibero 1d9285c594 add support for custom doc css 2020-08-18 15:52:42 -06:00
Anthony Lavado 93fe595e5e Merge pull request #3925 from crobibero/httpclient
Remove IHttpClient from Providers
2020-08-18 14:12:28 -04:00
millallo 684d9856b1 Translated using Weblate (Italian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/it/
2020-08-18 10:34:00 -04:00
crobibero b90e240af6 rename clientCapabilities 2020-08-18 07:29:39 -06:00
crobibero 287baa4965 remove unused directives 2020-08-18 07:29:12 -06:00
Hilman Maulana 9e8f0cf26d Translated using Weblate (Indonesian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/id/
2020-08-18 09:00:57 -04:00
millallo 34be17a4e8 Translated using Weblate (Italian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/it/
2020-08-18 09:00:56 -04:00
Hilman Maulana 7c2e01a70b Translated using Weblate (Indonesian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/id/
2020-08-18 06:20:50 -04:00
Mygod 8b9a380466 Add 1440p to the mix
Partially addresses #3112.
2020-08-18 01:24:24 -04:00
Patrick Barron ee7beed804 Comment and reorder service registration. 2020-08-17 21:48:44 -04:00
Patrick Barron 6f88087fa9 Use index access instead of LINQ. 2020-08-17 21:42:59 -04:00
Matt Montgomery 1ff4f8e6c6 Get userId from claim 2020-08-17 18:55:16 -05:00
Matt Montgomery 5f1a863241 Apply suggestions from code review 2020-08-17 17:13:11 -05:00
crobibero 4ec1341c8f Fix conflicts 2020-08-17 15:54:51 -06:00
crobibero 29d8e38161 Merge remote-tracking branch 'upstream/master' into fixes 2020-08-17 15:54:40 -06:00
crobibero be67528958 add disposal docs 2020-08-17 15:03:45 -06:00
crobibero 3a91047413 P E R F O R M A N C E 2020-08-17 14:59:00 -06:00
crobibero 9c6b4f033a revert lastordefault 2020-08-17 14:55:14 -06:00
crobibero 01ed5d5407 Fix adding accept headers 2020-08-17 13:59:29 -06:00
crobibero 898ccab222 oop 2020-08-17 13:41:16 -06:00
crobibero 767c73e5c1 fix usings 2020-08-17 13:22:42 -06:00
crobibero 1325815182 Remove IHttpClient from Providers 2020-08-17 13:10:02 -06:00
crobibero 188166d6eb Remove IHttpClient from ArtistImageProvider 2020-08-17 11:56:49 -06:00
crobibero 14f57dddcb Remove IHttpClient from AlbumImageProvider 2020-08-17 11:55:58 -06:00
crobibero 10ac32569e Remove IHttpClient from ItemImageProvider 2020-08-17 11:54:55 -06:00
crobibero 7a0fa34162 Remove IHttpClient from StudiosImageProvider 2020-08-17 11:52:09 -06:00
crobibero 2e0c2336cc Remove IHttpClient from IRemoteImageProvider 2020-08-17 11:51:53 -06:00
crobibero f7dc124b5e Remove IHttpClient from ProviderManager 2020-08-17 11:50:07 -06:00
crobibero aee72aefb0 Remove IHttpClient from StudiosImageProvider 2020-08-17 11:46:40 -06:00
Bond-009 d0f49b3994 Merge pull request #3895 from crobibero/httpclient
Remove IHttpClient from Jellyfin.Api
2020-08-17 10:47:45 +02:00
Matt Montgomery c49a357f85 Fix compile errors 2020-08-16 17:45:53 -05:00
ConfusedPolarBear eaa5711534 Apply suggestions from code review
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-08-16 17:21:08 -05:00
Patrick Barron a77cf53573 Allow plugins to register services. 2020-08-16 17:25:14 -04:00
Matt Montgomery 035d29fb35 Migrate to new API standard 2020-08-16 14:45:39 -05:00
Bond-009 57cc08691a Merge pull request #3908 from crobibero/xml-formatter
Use proper mediatypename
2020-08-16 21:15:05 +02:00
crobibero 21cc308ec9 Use proper mediatypename 2020-08-16 11:48:54 -06:00
crobibero 7861c72754 Revert "Fix audio stream routes"
This reverts commit 0c50015400.
2020-08-16 11:47:26 -06:00
crobibero 0c50015400 Fix audio stream routes 2020-08-16 11:34:41 -06:00
crobibero 8da646e12b Dispose httpclient response 2020-08-16 10:57:01 -06:00
crobibero 3c395814fd fix dlna routes again 2020-08-16 10:53:57 -06:00
crobibero 8ddcd12348 Remove all using for HttpClient 2020-08-16 09:47:08 -06:00
Bond-009 ec12675feb Merge pull request #3891 from barronpm/remove-unused-methods
Remove unused methods in IDtoService
2020-08-16 17:06:47 +02:00
Bond-009 357b72fb81 Merge pull request #3903 from crobibero/xml-formatter
Add xml output formatter
2020-08-16 17:03:19 +02:00
crobibero 09c8597461 inheritdoc 2020-08-16 08:40:43 -06:00
crobibero 7fe372749e fix dlna server routes 2020-08-16 08:32:13 -06:00
crobibero 7d2ad3e0fc Fix DlnaControlResponse string return 2020-08-16 08:32:03 -06:00
Patrick Barron 075ae53d83 Register new IEventConsumer services. 2020-08-15 23:27:51 -04:00
Patrick Barron dcf97efaf8 Rename PackageInstallationFailedLogger to have more consistent naming. 2020-08-15 23:22:26 -04:00
Patrick Barron a40064a146 Migrate ServerEventNotifier.OnPackageInstallationCancelled to IEventConsumer 2020-08-15 23:20:41 -04:00
Patrick Barron e82dd8b70e Migrate ServerEventNotifier.OnPackageInstallationCompleted to IEventConsumer 2020-08-15 23:16:15 -04:00
Patrick Barron 25437af594 Migrate ServerEventNotifier.OnPackageInstallationFailed to IEventConsumer 2020-08-15 23:12:34 -04:00
Patrick Barron 4478945e20 Migrate ServerEventNotifier.OnPluginUninstalled to IEventConsumer 2020-08-15 23:12:01 -04:00
Patrick Barron b7ceb40d6e Migrate ServerEventNotifier.OnPackageInstalling to IEventConsumer 2020-08-15 18:57:46 -04:00
Patrick Barron 8c9cd5f6d7 Make EventArgs documentation more consistent. 2020-08-15 18:54:00 -04:00
Patrick Barron b2f734efd1 Gracefully handle exceptions in IEventConsumers 2020-08-15 18:36:37 -04:00
Patrick Barron dc88e93504 Migrate ServerEventNotifier.OnHasPendingRestartChanged to IEventConsumer 2020-08-15 18:33:30 -04:00
Patrick Barron 5282a5c8c2 Migrate ServerEventNotifier.OnTaskCompleted to IEventConsumer 2020-08-15 18:16:41 -04:00
Patrick Barron a0453a0fe6 Migrate ServerEventNotifier.OnUserUpdated to IEventConsumer 2020-08-15 18:16:20 -04:00
Patrick Barron ee5d4b1146 Register event services 2020-08-15 15:56:56 -04:00
Patrick Barron 8b90e0205c Add EventingServiceCollectionExtensions 2020-08-15 15:56:47 -04:00
Patrick Barron 6f7d289feb Create EventManager 2020-08-15 15:55:58 -04:00
Patrick Barron adabb4b842 Use IEventManager in SessionManager 2020-08-15 15:55:31 -04:00
Patrick Barron 816c80525a Use IEventManager in UserManager 2020-08-15 15:55:15 -04:00
Patrick Barron d39e236dfe Migrates ServerEventNotifier.OnUserDeleted to IEventConsumer 2020-08-15 15:49:11 -04:00
Patrick Barron 93c00c1440 Rename to SessionEndedLogger 2020-08-15 13:48:12 -04:00
Oatavandi 0f85e66962 Translated using Weblate (Tamil)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ta/
2020-08-15 13:16:31 -04:00
crobibero 2d4e91c5a2 Add xml output formatter 2020-08-15 10:39:24 -06:00
Orry Verducci 396148599a Fix indentation in deinterlace if block
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-08-15 12:55:58 +01:00
Oatavandi f505f48e85 Translated using Weblate (Tamil)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ta/
2020-08-15 07:33:14 -04:00
Patrick Barron 4d18dbf9de Document UserDeletedLogger 2020-08-15 03:35:42 -04:00
Patrick Barron 665f58dfbd Document TaskCompletedLogger 2020-08-15 03:34:52 -04:00
Patrick Barron 8570cfdba6 Migrate ActivityLogEntryPoint.OnSessionEnded to IEventConsumer 2020-08-15 02:07:28 -04:00
Patrick Barron ca3a8bdb98 Migrate ActivityLogEntryPoint.OnSessionStarted to IEventConsumer 2020-08-15 02:02:58 -04:00
Patrick Barron 98cbf1c2de Migrate ActivityLogEntryPoint.OnPackageInstallationFailed to IEventConsumer 2020-08-14 15:56:54 -04:00
Patrick Barron e924444880 Migrate ActivityLogEntryPoint.OnPluginUpdated to IEventConsumer 2020-08-14 15:50:17 -04:00
Patrick Barron 0da7c0568d Migrate ActivityLogEntryPoint.OnPluginUninstalled to IEventConsumer 2020-08-14 15:22:12 -04:00
Patrick Barron b7f21971f4 Migrate ActivityLogEntryPoint.OnPluginInstalled to IEventConsumer 2020-08-14 15:21:17 -04:00
Bond-009 af78b9c2e8 Merge pull request #3898 from crobibero/fix-int64
Return int64 in json as number
2020-08-14 20:58:48 +02:00
David 025ee2163f Change log message, load assembly only once 2020-08-14 20:42:26 +02:00
nothing things a43383b9ac Translated using Weblate (Bengali)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bn/
2020-08-14 13:19:43 -04:00
nothing things 6d883bbbe9 Translated using Weblate (Bengali)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bn/
2020-08-14 12:57:51 -04:00
crobibero 5e6cdc8842 Install specific plugin version if requested 2020-08-14 08:54:21 -06:00
crobibero 64ace58ef5 fix docs 2020-08-14 08:34:32 -06:00
crobibero 64658a0bd0 Return int64 in json as number 2020-08-14 08:23:23 -06:00
Oatavandi 42a9feb2f3 Translated using Weblate (Tamil)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ta/
2020-08-14 07:13:56 -04:00
Bond-009 3b47218cf6 Merge pull request #3894 from barronpm/remove-listextensions
Remove ListHelper.cs
2020-08-14 08:17:29 +02:00
Patrick Barron f4275adfcb Migrate ActivityLogEntryPoint.OnAuthenticationSucceeded to IEventConsumer 2020-08-13 21:38:24 -04:00
Patrick Barron bff05d7186 Migrate ActivityLogEntryPoint.OnAuthenticationFailed to IEventConsumer 2020-08-13 21:33:28 -04:00
Patrick Barron 8a4bdaed6b Migrate ActivityLogEntryPoint.OnUserLockedOut to IEventConsumer 2020-08-13 21:11:38 -04:00
Patrick Barron a1ecafb40d Migrate ActivityLogEntryPoint.OnUserPasswordChanged to IEventConsumer 2020-08-13 21:07:08 -04:00
Patrick Barron 737a86d0cb Migrate ActivityLogEntryPoint.OnUserDeleted to IEventConsumer 2020-08-13 21:01:35 -04:00
Patrick Barron 18d34f953b Migrate ActivityLogEntryPoint.OnUserCreated to IEventConsumer 2020-08-13 20:57:13 -04:00
Patrick Barron ca1f15af19 Move GenericEventArgs to Jellyfin.Data.Events 2020-08-13 20:52:55 -04:00
Patrick Barron ade40a4c42 Migrate ActivityLogEntryPoint.OnSubtitleDownloadFailure to IEventConsumer 2020-08-13 20:40:18 -04:00
Patrick Barron fdd73f1186 Migrate ActivityLogEntryPoint.OnTaskCompleted to IEventConsumer 2020-08-13 20:34:28 -04:00
Patrick Barron 5c29b8982d Migrate ActivityLogEntryPoint.OnPlaybackStopped to IEventConsumer 2020-08-13 20:33:16 -04:00
Patrick Barron 3e5fe04427 Migrate ActivityLogEntryPoint.OnPlaybackStart to IEventConsumer 2020-08-13 20:32:54 -04:00
Patrick Barron 57e2f7248d Remove unused class and rename file. 2020-08-13 20:30:43 -04:00
Patrick Barron 285af300f5 Create IEventConsumer and IEventManager 2020-08-13 20:29:14 -04:00
Patrick Barron 3ee940f7b3 Clean up GenericEventArgs 2020-08-13 19:14:03 -04:00
crobibero 97fd11c9a4 Remove httpclient from Jellyfin.Api 2020-08-13 15:50:19 -06:00
Patrick Barron 27139709e5 Remove ListHelper.cs 2020-08-13 17:05:55 -04:00
Orry Verducci 9438a50976 Correct parentheses 2020-08-13 21:23:12 +01:00
Bond-009 2f05f3099b Merge pull request #3892 from barronpm/livetv-provider-fixes
Minor fixes to LiveTvMediaSourceProvider
2020-08-13 22:20:16 +02:00
Patrick Barron e0c6172d23 Add ServiceProvider to IServerApplicationHost 2020-08-13 16:10:26 -04:00
Patrick Barron da9bcc5fb3 Rename IEventManager to IDlnaEventManager 2020-08-13 15:47:31 -04:00
Oatavandi 1ce4b70104 Translated using Weblate (Tamil)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ta/
2020-08-13 13:32:39 -04:00
Patrick Barron 70e56314d7 Minor fixes to LiveTvMediaSourceProvider 2020-08-13 13:11:30 -04:00
David 2b32ebb3cc Build Unstable Nuget packages 2020-08-13 19:03:47 +02:00
David b92fbe4d69 Use VersionPrefix 2020-08-13 19:03:24 +02:00
Anthony Lavado 27c8cf0431 Merge pull request #3824 from barronpm/tunerhost-cleanup
Clean up TunerHost Classes
2020-08-13 13:02:17 -04:00
Anthony Lavado dbc1435a9e Merge pull request #3671 from Bond-009/unixsocket
Make UNIX socket configurable
2020-08-13 13:02:02 -04:00
Anthony Lavado 5480674c4f Merge pull request #3838 from Bond-009/memorystream
MemoryStream optimizations
2020-08-13 13:01:43 -04:00
Patrick Barron 2be1865b42 Remove unused methods in IDtoService 2020-08-13 12:50:04 -04:00
Oatavandi 32d4657429 Translated using Weblate (Tamil)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ta/
2020-08-13 12:38:43 -04:00
Oatavandi 7cbf75839a Translated using Weblate (Tamil)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ta/
2020-08-13 11:30:19 -04:00
David f92efc7f9b Add Publish Artifacts task 2020-08-13 15:35:56 +02:00
David a61f6e3308 Fix nuget ci 2020-08-13 15:22:12 +02:00
crobibero ef0a7c3e2a update docker dotnet sdk 2020-08-12 15:57:06 -06:00
crobibero 6709645ec9 bump deps 2020-08-12 15:52:29 -06:00
crobibero 687b008d59 fix livetv id check 2020-08-12 14:41:10 -06:00
Matt Montgomery 4fa3d3f4f3 Merge remote-tracking branch 'upstream/master' into quickconnect 2020-08-12 15:38:07 -05:00
cvium e10693cbe0 Remove some LINQ queries 2020-08-12 22:14:14 +02:00
crobibero ae1593b590 fix route method 2020-08-12 13:14:42 -06:00
crobibero afeba4dae7 simplify datetime parsing 2020-08-12 13:07:11 -06:00
crobibero 09bcc38feb Merge remote-tracking branch 'upstream/master' into fixes 2020-08-12 12:47:25 -06:00
crobibero eb7ab31b5a add support for GetActivityLogs 2020-08-12 12:43:57 -06:00
crobibero bb08e25f86 userid isn't actually required 2020-08-12 12:43:43 -06:00
DirtyRacer1337 6ac8955715 Add tests 2020-08-12 22:20:31 +07:00
DirtyRacer1337 f5d90949cf Replace \d to [0-9] 2020-08-12 22:02:19 +07:00
Konctantin 741ab4301c Translated using Weblate (Ukrainian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/uk/
2020-08-12 10:23:29 -04:00
David d296a1f6d0 Add logging, cleanup 2020-08-12 14:00:48 +02:00
DirtyRacer1337 1259fe2d50 Add date filter 2020-08-12 09:08:09 +07:00
DirtyRacer1337 c2f901acfe Fix year parsing 2020-08-12 07:56:01 +07:00
Gualdimar 07d10436e0 Translated using Weblate (Ukrainian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/uk/
2020-08-11 17:42:52 -04:00
cvium 1ae3dc202c Populate ThemeVideoIds and ThemeSongIds 2020-08-11 22:04:41 +02:00
Gualdimar f1e52c4449 Translated using Weblate (Ukrainian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/uk/
2020-08-11 16:02:03 -04:00
Gualdimar 63eab824e7 Translated using Weblate (Ukrainian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/uk/
2020-08-11 16:02:03 -04:00
Konctantin df00ef91bb Translated using Weblate (Ukrainian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/uk/
2020-08-11 16:02:03 -04:00
David 9e95fe8f9d Add plugin assemblies to mvc builder 2020-08-11 18:20:16 +02:00
Orry Verducci d7b0f68eab Add myself to contributors 2020-08-11 15:44:18 +01:00
Bond-009 b307e0fe09 Merge pull request #3872 from crobibero/user-policy
Fix setting user policy
2020-08-11 10:12:07 +02:00
Orry Verducci 2d6699fd47 Merge remote-tracking branch 'upstream/master' into deinterlace-improvements 2020-08-10 22:17:13 +01:00
Orry Verducci ce51775e74 Apply double rate option to hardware deinterlacers 2020-08-10 22:16:46 +01:00
Orry Verducci 9dc95074a3 Add bwdif and simplify software deinterlacing 2020-08-10 22:16:23 +01:00
Orry Verducci 7df2affb23 Add double rate deinterlacing option 2020-08-10 22:14:47 +01:00
Bond-009 b82a3fee85 Merge pull request #3851 from barronpm/librarychangednotifier-cleanup
Clean up LibraryChangedNotifier.
2020-08-10 21:19:36 +02:00
Moritz 72176ab2ca Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2020-08-10 15:00:16 -04:00
Mister Rajoy c7b5bc55a1 Fix MergeVersions() 2020-08-10 20:33:11 +02:00
crobibero 3ba1f4c901 add proper converter for legacy datetime 2020-08-10 12:02:14 -06:00
crobibero b0532c549a add proper converter for legacy datetime 2020-08-10 11:58:06 -06:00
crobibero 4b87bbf53d fix route 2020-08-10 11:38:02 -06:00
crobibero 2f853b902a fix datetime parsing 2020-08-10 11:33:42 -06:00
crobibero 2e3ef18a11 fix route typo 2020-08-10 10:09:27 -06:00
crobibero 314728195c Fix setting user policy 2020-08-10 09:31:01 -06:00
David 98d1d2325d Prepare plugin Api migration 2020-08-10 16:12:22 +02:00
dkanada 168160d9a3 Merge pull request #3868 from jellyfin/dependabot/nuget/ServiceStack.Text.Core-5.9.2
Bump ServiceStack.Text.Core from 5.9.0 to 5.9.2
2020-08-10 22:54:55 +09:00
dkanada 4c2d1e712c Merge pull request #3867 from jellyfin/dependabot/nuget/TvDbSharper-3.2.1
Bump TvDbSharper from 3.2.0 to 3.2.1
2020-08-10 22:54:42 +09:00
dkanada 6e1d34453f Merge pull request #3866 from jellyfin/dependabot/nuget/Microsoft.NET.Test.Sdk-16.7.0
Bump Microsoft.NET.Test.Sdk from 16.6.1 to 16.7.0
2020-08-10 22:54:29 +09:00
dkanada aeea7dcb3d Merge pull request #3865 from jellyfin/dependabot/nuget/Swashbuckle.AspNetCore.ReDoc-5.5.1
Bump Swashbuckle.AspNetCore.ReDoc from 5.3.3 to 5.5.1
2020-08-10 22:54:09 +09:00
crobibero c5e9cf15f6 Use proper IHttpContextAccessor 2020-08-10 07:53:32 -06:00
dependabot[bot] 40dc4472e3 Bump ServiceStack.Text.Core from 5.9.0 to 5.9.2
Bumps [ServiceStack.Text.Core](https://github.com/ServiceStack/ServiceStack.Text) from 5.9.0 to 5.9.2.
- [Release notes](https://github.com/ServiceStack/ServiceStack.Text/releases)
- [Commits](https://github.com/ServiceStack/ServiceStack.Text/compare/v5.9...v5.9.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-10 12:01:58 +00:00
dependabot[bot] c65275b239 Bump TvDbSharper from 3.2.0 to 3.2.1
Bumps [TvDbSharper](https://github.com/HristoKolev/TvDbSharper) from 3.2.0 to 3.2.1.
- [Release notes](https://github.com/HristoKolev/TvDbSharper/releases)
- [Changelog](https://github.com/HristoKolev/TvDbSharper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/HristoKolev/TvDbSharper/compare/v3.2.0...v3.2.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-10 12:01:48 +00:00
dependabot[bot] 4fd2b7a879 Bump Microsoft.NET.Test.Sdk from 16.6.1 to 16.7.0
Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.6.1 to 16.7.0.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Commits](https://github.com/microsoft/vstest/compare/v16.6.1...v16.7.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-10 12:01:45 +00:00
dependabot[bot] a6e6f378e1 Bump Swashbuckle.AspNetCore.ReDoc from 5.3.3 to 5.5.1
Bumps [Swashbuckle.AspNetCore.ReDoc](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) from 5.3.3 to 5.5.1.
- [Release notes](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/releases)
- [Commits](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/compare/v5.3.3...v5.5.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-10 12:01:45 +00:00
Bond-009 75f119b57f Merge pull request #3810 from AlfHou/fix_readme_links
Fix README links and note about setup wizard
2020-08-10 12:52:59 +02:00
Erwin de Haan 900101de62 Re-enable the ABI checks. 2020-08-10 12:26:25 +02:00
Erwin de Haan 47cb4a1547 Add nohup and continueOnError to the Collect Artifacts task 2020-08-10 12:24:56 +02:00
Alf Sebastian Houge f98e751d18 Update README.md
Fix spelling mistake

Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-08-10 11:03:48 +02:00
Bond-009 bacfbbbd58 Merge pull request #3835 from cvium/fix_tvdb_404_shit_nginx_failure
Throw HttpException when tvdb sends us crap data
2020-08-10 10:50:21 +02:00
crobibero 460c3dd351 convert dependent controller functions to di helper class 2020-08-09 17:20:14 -06:00
Mario Michel c43721f27f Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2020-08-09 17:27:17 -04:00
Bond-009 f2b87c0954 Merge pull request #3860 from cvium/fix_collages
Fix collages
2020-08-09 23:02:22 +02:00
cvium 1dcc678a6a Fix collages 2020-08-09 22:59:31 +02:00
crobibero 7b864e3a3c parameter isn't actually required 2020-08-09 14:12:39 -06:00
Bond-009 023f52362d Merge pull request #3859 from crobibero/fix-auth-policy
Fix Requirement assigned to Handler
2020-08-09 22:12:03 +02:00
crobibero e7f55c5110 Fix Requirement assigned to Handler 2020-08-09 13:51:25 -06:00
Bond-009 e9c9fc4369 Merge pull request #3858 from cvium/fix_wizard_redirect
Fix startup wizard redirect
2020-08-09 20:02:15 +02:00
cvium fc01bdb91d Use GetEncodedPathAndQuery since ASP.NET Request.Path does not contain query parameters 2020-08-09 19:26:06 +02:00
Patrick Barron 7462a0a9e8 Make event methods private. 2020-08-09 11:50:52 -04:00
Bond-009 f4302822f0 Merge pull request #3846 from YouKnowBlom/fix-cc-hls
Avoid including stray commas in HLS codecs field
2020-08-09 16:51:48 +02:00
Andreas B 542185fba4 Avoid including stray commas in HLS codecs field 2020-08-09 17:00:14 +02:00
Bond_009 593dbcabff Fix docs 2020-08-09 14:08:56 +02:00
Bond_009 4a4dff1973 Fix 2020-08-09 14:08:56 +02:00
Bond_009 371a09c60b MemoryStream optimizations 2020-08-09 14:08:55 +02:00
Bond-009 6c92154a9b Update MediaBrowser.Controller/Extensions/ConfigurationExtensions.cs
Co-authored-by: David <davidullmer@outlook.de>
2020-08-09 13:55:57 +02:00
Bond-009 75bb127599 Merge pull request #3854 from danieladov/master
Fix Split versions
2020-08-09 12:09:00 +02:00
Mister Rajoy 3ea4d9303e Fix Split versions 2020-08-08 21:21:32 +02:00
Patrick Barron 750d8a989f Clean up LibraryChangedNotifier. 2020-08-08 14:23:17 -04:00
Patrick Barron 229a5d9e0b Make DisplayPreferencesManager scoped 2020-08-08 13:39:49 -04:00
Patrick Barron d886532258 Add DbContext Pool 2020-08-08 13:32:17 -04:00
Anthony Lavado b9fdbaeef3 Merge pull request #3812 from jellyfin/api-migration
Merge API Migration into master
2020-08-08 13:22:36 -04:00
Patrick Barron a15be774ac Merge pull request #3833 from crobibero/api-cleanup-v3
api-migration review fixes
2020-08-07 18:08:12 +00:00
Patrick Barron 8373d6297c Fix MemoryCache usage 2020-08-07 14:05:47 -04:00
Bond-009 7e49358ba9 Merge pull request #3840 from barronpm/fix-memorycache
Fix MemoryCache Usage.
2020-08-07 19:27:34 +02:00
Patrick Barron bea519de5b Fix MemoryCache Usage. 2020-08-07 13:22:18 -04:00
crobibero e735ab6cc0 Remove extra Required 2020-08-07 06:39:20 -06:00
Bond-009 c82b26a4b1 Merge pull request #3837 from cvium/fix_memorycache
Fix BaseItems not being cached in-memory
2020-08-07 11:58:23 +02:00
cvium 0cf75992a8 Use MemoryCache.Set since SetValue does not flush to cache automatically. 2020-08-07 11:55:22 +02:00
crobibero 05f9473544 Apply fixes from review 2020-08-06 17:59:48 -06:00
Bond-009 796eeb2cda Merge pull request #3836 from cvium/remove_tmdb_api_rate_limit
Remove rate limit from TMDb provider
2020-08-06 23:53:29 +02:00
Bond-009 8964697d8b Merge pull request #3834 from cvium/fix_tmdb_external_ids
Make external ids nullable in TMDb
2020-08-06 23:52:39 +02:00
cvium 268139c435 Remove rate limit from TMDb provider 2020-08-06 23:47:30 +02:00
cvium 23dfadd430 Throw HttpException when tvdb sends us crap data 2020-08-06 23:43:19 +02:00
cvium f871087645 Make external ids nullable in TMDb 2020-08-06 23:37:11 +02:00
sumantrabhattacharya bd0ad4196a Translated using Weblate (Bengali)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bn/
2020-08-06 17:22:48 -04:00
millallo 57585273e3 Translated using Weblate (Italian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/it/
2020-08-06 14:25:35 -04:00
Joshua M. Boniface 751affa50a Merge pull request #3831 from joshuaboniface/newer-docker-dotnet
Bump to .NET Core SDK 3.1.302
2020-08-06 13:40:18 -04:00
crobibero fffa94fc33 Apply fixes from review 2020-08-06 08:17:45 -06:00
Joshua M. Boniface 7a1f140e5b Bump to .NET Core SDK 3.1.302 2020-08-06 02:04:41 -04:00
Patrick Barron 34cf1b1757 Merge pull request #3829 from Ullmie02/api-migration
Small fix to api-migration
2020-08-05 22:24:01 +00:00
David 4ea412f2ab Fix remote images 2020-08-05 21:57:01 +02:00
sharkykh 1eee0fc922 Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2020-08-05 15:35:05 -04:00
David 8bb9909660 Fix photo viewer 2020-08-05 21:19:38 +02:00
sharkykh b23446721c Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2020-08-05 14:21:13 -04:00
Joshua M. Boniface 3e974c0351 Merge pull request #3825 from crobibero/api-merge-again
Merge master into api-migration
2020-08-05 00:00:15 -04:00
crobibero 393666efcf fix merge conflicts 2020-08-04 20:30:45 -06:00
crobibero e65ecb5687 Merge remote-tracking branch 'upstream/master' into api-merge-again 2020-08-04 20:29:06 -06:00
Anthony Lavado c12a49361c Merge pull request #3820 from Bond-009/warn22
Fix some warnings
2020-08-04 17:35:50 -07:00
Anthony Lavado da14c306b8 Merge pull request #3809 from Bond-009/minor4
Minor improvements
2020-08-04 17:35:12 -07:00
Anthony Lavado c2799fe4d3 Merge pull request #3784 from barronpm/add-sync
Minor fixes to ActivityManager
2020-08-04 17:34:56 -07:00
Anthony Lavado c5bc046c40 Merge pull request #3782 from Bond-009/websocket2
Minor fixes for websocket code
2020-08-04 17:34:14 -07:00
Patrick Barron 5c65abcd94 Clean up TunerHost classes 2020-08-04 18:58:14 -04:00
Patrick Barron ff4489575b Merge pull request #3819 from crobibero/api-migration-cleanup
Api migration cleanup
2020-08-04 22:28:52 +00:00
Joshua M. Boniface 560a099473 Merge pull request #3822 from jellyfin/EraYaN-artifact-collection
Merge the args and commands item for the artifact collection
2020-08-04 16:42:45 -04:00
Erwin de Haan 25daa7db42 Merge the args and commands item for the artifact collection 2020-08-04 22:35:23 +02:00
crobibero 858aecd409 Fix all route for base url support 2020-08-04 12:48:53 -06:00
Bond-009 7368cbbd2f Merge pull request #3774 from jellyfin/ci-CollectArtifacts-timeout
Add a much shorter timeout to the CollectArtifacts job
2020-08-04 19:58:20 +02:00
Bond-009 d9f6953416 Minor fixes 2020-08-04 17:14:07 +02:00
Bond-009 53f99d5d4b Add some analyzers to MediaBrowser.MediaEncoding 2020-08-04 17:08:09 +02:00
crobibero 2b7cefdf15 Remove references to MediaBrowser.Api 2020-08-04 08:42:09 -06:00
crobibero e1226f12f2 fix attribute ordering 2020-08-04 08:30:03 -06:00
crobibero 8f6c2e7679 Remove leading slash from route attributes 2020-08-04 08:27:54 -06:00
Bond-009 18efa25a6f Enable TreatWarningsAsErrors for MediaBrowser.MediaEncoding 2020-08-04 16:20:52 +02:00
Bond-009 237cb4e383 Merge pull request #3816 from cvium/onrefresh_logging
Change OnRefreshStart and OnRefreshComplete logging levels to debug
2020-08-04 11:30:10 +02:00
cvium 52d409101b Change OnRefreshStart and OnRefreshComplete logging levels to debug 2020-08-04 09:05:51 +02:00
Anthony Lavado b7f3906446 Merge pull request #3806 from jellyfin/dkanada-patch-1
Disable compatibility checks for now
2020-08-03 15:14:22 -07:00
Patrick Barron 8385c54591 Merge pull request #3811 from crobibero/api-cleanup
Clean up api-migration branch
2020-08-03 21:45:15 +00:00
crobibero dee7bdddb6 fix build 2020-08-03 14:49:24 -06:00
crobibero e64924f4d3 actually remove MediaBrowser.Api 2020-08-03 14:42:46 -06:00
crobibero 9e00aa3014 fix openapi validation errors 2020-08-03 14:38:51 -06:00
crobibero 1535f363b2 Fix some request parameters 2020-08-03 13:33:43 -06:00
crobibero 8bb510a9f6 Specify Logger type 2020-08-03 13:16:29 -06:00
crobibero 0f32beb75f Properly use DI to reference other controllers. 2020-08-03 13:15:21 -06:00
crobibero db36b9d501 Delete MediaBrowser.Api 2020-08-03 13:09:49 -06:00
crobibero cfce1dba08 move WebSocket listeners to Jellyfin.Api 2020-08-03 13:09:32 -06:00
Alf Sebastian Houge 676f000286 Remove comments from json file in .vscode/launch.json 2020-08-03 20:45:50 +02:00
Bond_009 4980db1594 Fix spelling 2020-08-03 20:42:01 +02:00
dkanada b9d1d1c6b5 Merge pull request #3801 from michael9dk/patch-1
Update README.md (fix broken links)
2020-08-04 03:37:00 +09:00
Bond_009 2b355c36ff Minor improvements
OFC I reduced some allocations
2020-08-03 20:32:45 +02:00
Alf Sebastian Houge b2badb9906 Fix links in README and note about setup wizard
Fix some of the web client links in the README and add a note about
hosting the web client seperately, and how the setup wizard can only be
run if the web client is not hosted separate
2020-08-03 20:28:01 +02:00
Alf Sebastian Houge d53f7dd0c2 Add vscode launch configuration for launching without hosting webclient 2020-08-03 20:27:22 +02:00
David a28d00eeba Merge pull request #3808 from crobibero/api-migration-merge
Merge master into api-migration
2020-08-03 20:22:21 +02:00
crobibero dbeeb7cf4a fix merge conflicts 2020-08-03 12:01:24 -06:00
crobibero f915c3e5d9 Merge remote-tracking branch 'upstream/master' into api-migration 2020-08-03 11:24:13 -06:00
Patrick Barron 6a42a48c09 Merge pull request #3528 from Ullmie02/api-entrypoint
Make TranscodingJobHelper an IDisposable (api-migration)
2020-08-03 17:11:24 +00:00
Patrick Barron cd515bdbfd Merge pull request #3783 from Ullmie02/api-universal-audio
Move UniversalAudioService to Jellyfin.Api
2020-08-03 17:09:18 +00:00
Patrick Barron 3a0bccb941 Merge pull request #2957 from crobibero/api-dlna-server
Migrate DlnaServerController to Jellyfin.Api
2020-08-03 17:00:46 +00:00
Patrick Barron 97c95d3a6b Merge pull request #2956 from crobibero/api-dlna
Move Emby.Dlna DlnaService.cs to Jellyfin.Api
2020-08-03 16:59:44 +00:00
dkanada b4c6ae9aba disable compatibility checks for now 2020-08-04 01:02:02 +09:00
Bond-009 5b4863c65b Merge pull request #3803 from jellyfin/dependabot/nuget/sharpcompress-0.26.0
Bump sharpcompress from 0.25.1 to 0.26.0
2020-08-03 15:36:46 +02:00
dependabot[bot] d09fb5c535 Bump sharpcompress from 0.25.1 to 0.26.0
Bumps [sharpcompress](https://github.com/adamhathcock/sharpcompress) from 0.25.1 to 0.26.0.
- [Release notes](https://github.com/adamhathcock/sharpcompress/releases)
- [Commits](https://github.com/adamhathcock/sharpcompress/compare/0.25.1...0.26)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-03 13:22:11 +00:00
Bond-009 3b49ed1b37 Merge pull request #3802 from jellyfin/dependabot/nuget/PlaylistsNET-1.1.2
Bump PlaylistsNET from 1.0.6 to 1.1.2
2020-08-03 15:05:00 +02:00
Bond-009 e3f6ef6080 Merge pull request #3804 from jellyfin/dependabot/nuget/Serilog.AspNetCore-3.4.0
Bump Serilog.AspNetCore from 3.2.0 to 3.4.0
2020-08-03 15:04:10 +02:00
Bond-009 4a11a9b879 Merge pull request #3805 from jellyfin/dependabot/nuget/Mono.Nat-2.0.2
Bump Mono.Nat from 2.0.1 to 2.0.2
2020-08-03 15:03:24 +02:00
dependabot[bot] 96817fca07 Bump Mono.Nat from 2.0.1 to 2.0.2
Bumps [Mono.Nat](https://github.com/mono/Mono.Nat) from 2.0.1 to 2.0.2.
- [Release notes](https://github.com/mono/Mono.Nat/releases)
- [Commits](https://github.com/mono/Mono.Nat/compare/Mono.Nat-2.0.1...release-v2.0.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-03 12:04:27 +00:00
dependabot[bot] be277e74d7 Bump Serilog.AspNetCore from 3.2.0 to 3.4.0
Bumps [Serilog.AspNetCore](https://github.com/serilog/serilog-aspnetcore) from 3.2.0 to 3.4.0.
- [Release notes](https://github.com/serilog/serilog-aspnetcore/releases)
- [Commits](https://github.com/serilog/serilog-aspnetcore/compare/v3.2.0...v3.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-03 12:04:18 +00:00
dependabot[bot] 17ba459638 Bump PlaylistsNET from 1.0.6 to 1.1.2
Bumps [PlaylistsNET](https://github.com/tmk907/PlaylistsNET) from 1.0.6 to 1.1.2.
- [Release notes](https://github.com/tmk907/PlaylistsNET/releases)
- [Commits](https://github.com/tmk907/PlaylistsNET/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-03 12:04:12 +00:00
michael9dk e7af1185eb Update README.md
Fix broken link to Azure DevOps pipeline.
2020-08-03 13:21:44 +02:00
Nyanmisaka c23d991c95 Merge branch 'master' into tonemap 2020-08-03 14:58:44 +08:00
Nyanmisaka 7b3f76b81f resolve conflicts 2020-08-03 14:55:28 +08:00
Joshua M. Boniface 47e63def20 Merge pull request #3728 from jellyfin/qsv-cutter
Adjust priority in outputSizeParam cutter
2020-08-02 20:30:33 -04:00
Joshua M. Boniface 612d513d86 Merge pull request #3772 from EraYaN/master
Updated SkiaSharp to 2.80.1 and replace resize code to fix bad quality
2020-08-02 20:28:42 -04:00
dkanada 714a6f04ef Merge pull request #3795 from anthonylavado/master
Update to newer Jellyfin.XMLTV
2020-08-03 09:00:29 +09:00
Anthony Lavado 705c0f93f6 Update to newer Jellyfin.XMLTV 2020-08-02 19:56:54 -04:00
dkanada 254ef6bc0d Merge pull request #3792 from cvium/fix_tmdb_deserialize
TMDb: Change Budget and Revenue to long to avoid overflow
2020-08-03 07:02:17 +09:00
cvium e7d9d8f7c5 Change Budget and Revenue to long to avoid overflow 2020-08-02 23:54:58 +02:00
Bond-009 43fa983414 Merge pull request #3790 from cvium/fewer_string_allocs
Remove some unnecessary string allocations
2020-08-02 23:39:03 +02:00
Claus Vium 996d0c07d0 Update Emby.Server.Implementations/Data/SqliteItemRepository.cs 2020-08-02 23:34:28 +02:00
Claus Vium 85e43d657f Update Emby.Server.Implementations/Data/SqliteItemRepository.cs
Co-authored-by: Bond-009 <bond.009@outlook.com>
2020-08-02 23:33:45 +02:00
cvium aa32aba0f8 Remove some unnecessary string allocations. 2020-08-02 23:30:34 +02:00
Erwin de Haan 0f43780c8c Apply suggestions from code review
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2020-08-02 12:43:25 +02:00
Patrick Barron 6f306f0a17 Minor fixes to ActivityManager 2020-08-01 16:20:08 -04:00
Bond-009 b7421db5fe Merge pull request #3578 from barronpm/displaypreferences-efcore
Migrate Display Preferences to EF Core
2020-08-01 21:51:49 +02:00
Patrick Barron ad32800504 Switch to unstable chromecast version. 2020-08-01 14:56:32 -04:00
Patrick Barron a6bc4c688d Add using statement to DisplayPreferences migration 2020-08-01 14:52:45 -04:00
David d2dd847b60 Remove duplicate code 2020-08-01 19:25:53 +02:00
David a7eee4f4e5 Remove duplicate code 2020-08-01 19:25:20 +02:00
David 8e05b22645 Use correct MediaInfo method 2020-08-01 19:03:11 +02:00
David 24c5016f48 Fix parameters 2020-08-01 18:22:40 +02:00
David 74b3416963 Merge remote-tracking branch 'jellyfin/api-migration' into api-universal-audio 2020-08-01 18:07:03 +02:00
David 91f2a7d9a8 Revert changes 2020-08-01 18:04:46 +02:00
David d50a022036 Merge pull request #3775 from crobibero/api-dynamic-hls
Move DynamicHlsService to Jellyfin.Api
2020-08-01 17:42:33 +02:00
crobibero 52ba54a71b PERFORMANCE 2020-08-01 08:58:18 -06:00
David 3f0c0e2d0d Implement IDisposable 2020-08-01 16:21:48 +02:00
David b717ecd5e0 Move methods to the right class 2020-08-01 16:12:22 +02:00
David 9be20cfaa6 Add jellyfin api entry point 2020-08-01 16:05:26 +02:00
Cody Robibero afe8208746 Update Jellyfin.Api/Controllers/DynamicHlsController.cs
Co-authored-by: David <daullmer@gmail.com>
2020-08-01 07:52:31 -06:00
David d3dc9da5d6 Prepare DynamicHlsController merge 2020-08-01 15:10:57 +02:00
Bond_009 d191fec3ac Minor fixes for websocket code 2020-08-01 15:03:33 +02:00
David a3dcca3826 Move UniversalAudioService to Jellyfin.Api 2020-08-01 14:40:02 +02:00
Bond-009 7621c8b806 Merge pull request #3769 from jellyfin/dkanada-patch-1
Remove useless order step for intros
2020-08-01 12:42:15 +02:00
Erwin de Haan 3ee28c016a Switch to sudo -n 2020-08-01 00:32:25 +02:00
Erwin de Haan 7c60510bc9 Experiment for the SSH task. 2020-08-01 00:20:47 +02:00
crobibero f645e2f884 Move DynamicHlsService to Jellyfin.Api 2020-07-31 15:09:17 -06:00
Erwin de Haan 44aca4dc6f Formatting in SkiaEncoder.cs 2020-07-31 22:12:20 +02:00
Erwin de Haan 526eea41f0 Add a note on the convolutional matrix filter. 2020-07-31 22:02:16 +02:00
Erwin de Haan a6d80f557d Add a much shorter timeout to the CollectArtifacts job 2020-07-31 21:40:09 +02:00
Erwin de Haan af38e5469f Update Jellyfin.Drawing.Skia/SkiaEncoder.cs indentation.
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-07-31 21:33:25 +02:00
Erwin de Haan 7ce99aaf78 Update SkiaSharp to 2.80.1 and replace resize code.
This fixed the blurry resized images in the Web UI.
2020-07-31 21:20:05 +02:00
Patrick Barron 2cb6eb984b Merge pull request #3764 from Ullmie02/api-videohls
Move VideoHlsService to Jellyfin.Api
2020-07-31 18:25:54 +00:00
dkanada e0d2eb8eec remove useless order step for intros 2020-08-01 02:03:23 +09:00
crobibero 4bb1e1c292 Fix docs, params, return values 2020-07-31 11:01:30 -06:00
crobibero 3d5f89ebf9 Merge remote-tracking branch 'upstream/api-migration' into api-dlna-server 2020-07-31 10:17:51 -06:00
crobibero 32c0ac96a1 fix route params 2020-07-31 10:17:01 -06:00
crobibero 6051df0c47 Fix response codes, documentation, and auth 2020-07-31 10:14:09 -06:00
crobibero f516cf9c4c Merge remote-tracking branch 'upstream/api-migration' into api-dlna 2020-07-31 10:05:27 -06:00
Cody Robibero cb31aba5dd Merge pull request #3691 from crobibero/api-video
move VideoService.cs to Jellyfin.Api
2020-07-31 09:27:31 -06:00
Anthony Lavado 9ec787e954 Merge pull request #3759 from AlfHou/readme_flag_fix
Change 'nowebcontent' flag to 'nowebclient' flag in readme
2020-07-31 08:27:23 -07:00
Anthony Lavado 06db5f8bca Merge pull request #3727 from K900/patch-1
Fix #3624
2020-07-31 08:26:59 -07:00
Anthony Lavado 4bad529fcb Merge pull request #3760 from thornbill/true-or-false
Fix inverted logic for LAN IP detection
2020-07-31 08:26:19 -07:00
David d6c428e998 Update Jellyfin.Api/Controllers/VideoHlsController.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-07-31 17:26:14 +02:00
Anthony Lavado 0c0b47029a Merge pull request #3740 from Bond-009/alloc3
Optimize Substring and StringBuilder usage
2020-07-31 08:25:01 -07:00
David c994060794 Remove response code doc because it got added elsewhere 2020-07-31 17:23:52 +02:00
crobibero c97372a133 Add missing docs and remove duplicate function 2020-07-31 09:21:33 -06:00
crobibero 9171e904de Merge remote-tracking branch 'upstream/api-migration' into api-video 2020-07-31 09:19:02 -06:00
David 8a016e31f7 Move VideoHlsService to Jellyfin.Api 2020-07-31 17:09:10 +02:00
Joshua M. Boniface 9bf6222597 Merge pull request #3761 from cvium/fix_mem_leak
Fix DI memory leak
2020-07-31 09:23:55 -04:00
cvium 5f03fb0ef7 Use factory pattern to instantiate jellyfindb context to avoid disposed contexts piling up in DI container 2020-07-31 10:13:54 +02:00
Bill Thornton d886941927 Fix inverted logic for LAN IP detection 2020-07-30 17:18:44 -04:00
Alf Sebastian Houge 2d3da0f1a6 There is no 'nowebcontent' flag, the correct flag is 'nowebclient' 2020-07-30 23:03:31 +02:00
Bond-009 ee3fae497c Merge pull request #3757 from jellyfin/update_blurhashsharp
Update BlurHashSharp and set max size to 128x128
2020-07-30 23:01:30 +02:00
cvium af274de77e Update BlurHashSharp and set max size to 128x128 2020-07-30 22:50:13 +02:00
crobibero f543a17d1b Apply review fixes 2020-07-30 06:29:06 -06:00
Nyanmisaka 8165c3bb21 total font size limit 20M 2020-07-30 17:36:38 +08:00
Bond-009 44dbee6ef2 Merge pull request #3747 from barronpm/memorycache
Use Memory Cache
2020-07-30 11:12:12 +02:00
Nyanmisaka 893bc7400b update as per suggestions 2020-07-30 16:30:49 +08:00
Patrick Barron a97f98fbd5 Use MemoryCache in DeviceManager 2020-07-29 19:25:47 -04:00
crobibero bb1fec9da1 remove extra using 2020-07-29 16:43:53 -06:00
crobibero df5d43132c Fix PlaybackInfo endpoint 2020-07-29 16:42:01 -06:00
Patrick Barron c77abca31a Use MemoryCache in ChannelManager 2020-07-29 17:33:40 -04:00
Patrick Barron e5c6eec642 Use MemoryCache in LibraryManager 2020-07-29 17:28:15 -04:00
crobibero 5c4b342323 fix boolean 2020-07-29 14:21:32 -06:00
crobibero d0ce239e3e Use ArrayPool and reduce duplicate code 2020-07-29 12:12:54 -06:00
crobibero 03f15fc0ef use proper os comparison 2020-07-29 09:28:53 -06:00
Bond_009 d4092846e4 Optimize Substring and StringBuilder usage 2020-07-29 13:17:01 +02:00
Joshua M. Boniface 8c1dab146c Merge pull request #3725 from joshuaboniface/fix-ci-docker
Flip quoting in variable set command
2020-07-28 20:01:25 -04:00
Joshua M. Boniface dc0f1788f4 Merge pull request #3720 from joshuaboniface/fix-bump-version
Fix bump_version so it works properly
2020-07-28 20:00:46 -04:00
Joshua M. Boniface 27289929c0 Merge pull request #3724 from joshuaboniface/bump-master-version
Bump master version to 10.7.0 for next release
2020-07-28 19:59:59 -04:00
Patrick Barron 995c8fadb7 Update MediaBrowser.Api/DisplayPreferencesService.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-07-28 21:17:11 +00:00
tmechen 164eb3e9a2 Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2020-07-28 16:57:59 -04:00
nyanmisaka 45a97056ea allows to provide multiple fonts 2020-07-29 02:44:11 +08:00
Patrick Barron c094916df0 Migrate default library display preferences. 2020-07-28 09:19:25 -04:00
Nyanmisaka 2139e9f8d1 adjust priority in outputSizeParam cutter 2020-07-28 17:07:10 +08:00
K900 3ed9463d25 Fix #3624
It doesn't really make sense to throw an error when creating the default user, because the error is completely non-actionable. Instead, if the autodetected username is not valid, just fall back to a sane default.
2020-07-28 12:03:08 +03:00
Joshua M. Boniface 2d8d3ba826 Flip quoting in variable set command
The quoting as-is was broken and would result in a junk output. This
way, the proper value is obtained.
2020-07-28 00:21:30 -04:00
Patrick Barron c3a36485b6 Recreate display preferences migration. 2020-07-27 23:41:16 -04:00
Anthony Lavado b207907e1b Merge pull request #3723 from joshuaboniface/fix-ci-docker
Get and tag with the actual release version in CI
2020-07-27 18:58:28 -07:00
Joshua M. Boniface 0798ab3945 Get and tag with the actual release version in CI 2020-07-27 21:41:51 -04:00
Patrick Barron 4b8ab1a803 Set default value of SortBy during migrations. 2020-07-27 21:01:08 -04:00
Patrick Barron 754837f16f Add tv home. 2020-07-27 20:50:58 -04:00
Patrick Barron 7d6c1befe5 Add Dashboard theme. 2020-07-27 20:44:46 -04:00
Patrick Barron 68a185fd02 Serialize/deserialize new entities properly. 2020-07-27 20:40:21 -04:00
Patrick Barron 592d2480ca Make adjustments to display preference entities. 2020-07-27 19:22:34 -04:00
Joshua M. Boniface a511e0ac0b Bump master version to 10.7.0 for next release 2020-07-27 19:10:40 -04:00
Joshua M. Boniface 965c447c63 Fix bump_version so it works properly 2020-07-27 19:01:33 -04:00
Matt Montgomery 31d3b1b83a Cleanup interfaces 2020-07-27 15:40:14 -05:00
Anthony Lavado ff6d102872 Merge pull request #3679 from barronpm/json-1
Use System.Text.Json in DefaultPasswordResetProvider
2020-07-27 13:07:35 -07:00
crobibero b8d327889b Add missing functions 2020-07-27 13:42:40 -06:00
Patrick Barron 62fa72114c Merge pull request #3718 from Ullmie02/api-hlsegment
Move HlsSegmentService to Jellyfin.Api
2020-07-27 15:51:09 +00:00
David Ullmer 4aa0bd064f Move HlsSegmentService to Jellyfin.Api 2020-07-27 09:47:19 +02:00
Nyanmisaka 17527d68df fix build 2020-07-27 14:11:05 +08:00
Nyanmisaka df6b303da7 Merge branch 'master' into tonemap 2020-07-27 13:57:40 +08:00
Joshua M. Boniface d7287a05ad Merge pull request #3684 from Bond-009/warn22
Fix warnings
2020-07-27 00:16:09 -04:00
Matt Montgomery 3c91aa0c3d Code cleanup 2020-07-26 23:13:14 -05:00
gnehs 749c961872 Translated using Weblate (Chinese (Traditional))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2020-07-26 20:02:17 -04:00
Matt Montgomery 0945659cb5 Apply suggestions from code review 2020-07-26 18:14:35 -05:00
Anthony Lavado ea0489a98e Merge pull request #3711 from yrjyrj123/fix_hw_decoder_for_macos
Fix the problem that hardware decoding cannot be used on macOS.
2020-07-26 15:37:13 -07:00
Anthony Lavado bfecfab538 Merge pull request #3699 from oddstr13/pr-embedded-subs-1
Fix embedded subtitles
2020-07-26 15:36:29 -07:00
Anthony Lavado 468a7fea4c Merge pull request #3660 from crobibero/plugin-config-location
Force plugin config location
2020-07-26 15:36:08 -07:00
Anthony Lavado 6eb3e736c6 Merge pull request #3704 from oddstr13/pr-dotdir-sample-1
Don't ignore dot directories or movies/episodes with sample in their name.
2020-07-26 15:34:15 -07:00
Anthony Lavado 2f315bb0dd Merge pull request #3597 from barronpm/jellyfin-drawing-skia-cleanup
Jellyfin.Drawing.Skia Cleanup
2020-07-26 15:32:06 -07:00
Odd Stråbø 9314a4fcc9 . 2020-07-26 23:28:25 +02:00
Matt Montgomery a40fe86776 Merge remote-tracking branch 'upstream/master' into quickconnect 2020-07-26 16:14:58 -05:00
Odd Stråbø 7fa80ac3e0 Add more tests, update comment 2020-07-26 23:03:16 +02:00
Nyanmisaka 3e55632807 remove spaces 2020-07-27 01:41:27 +08:00
不帅你报警 30bfa5536f Update MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs
Co-authored-by: Nyanmisaka <nst799610810@gmail.com>
2020-07-27 01:34:36 +08:00
Patrick Barron 6015ceb731 Merge pull request #3693 from crobibero/api-library
Fix LibraryStructure API parameters
2020-07-26 16:09:31 +00:00
不帅你报警 d5dcb12407 Update EncodingHelper.cs
Fix the problem that hardware decoding cannot be used on macOS.
2020-07-26 23:47:29 +08:00
dkanada 8ab800508b Merge pull request #3703 from oddstr13/pr-username-space-1
Allow space in username
2020-07-27 00:11:56 +09:00
Odd Stråbø de708d2fca Comment 2020-07-26 17:11:43 +02:00
Odd Stråbø 27e12798bc Update comment to include space 2020-07-26 13:57:22 +02:00
Nyanmisaka 95b961c864 remove unused line 2020-07-26 12:38:57 +08:00
crobibero 7bb34fc9e7 use proper HttpClient DI 2020-07-25 17:21:40 -06:00
Odd Stråbø 800260af43 Yep. I failed at copy-pasting. 2020-07-26 00:19:24 +02:00
Odd Stråbø 11d5410dbb Don't ignore dot directories.
Use `.ignore` file to hide directory from library scan.

Also, please tell me we handle sample matching somewhere else? This is a mess.
2020-07-25 23:50:49 +02:00
Odd Stråbø 2da2f1b20b Allow space in username 2020-07-25 22:19:27 +02:00
Patrick Barron 1aa853067a Use async json serialization. 2020-07-25 13:07:12 -04:00
Odd Stråbø 591fcf7ff2 Fix formating 2020-07-25 13:41:04 +02:00
Odd Stråbø 27709c9bb3 Fix embedded subtitles 2020-07-25 12:44:31 +02:00
crobibero 259b5d7f0a Fix request parameters 2020-07-24 17:46:17 -06:00
crobibero 5924a81eeb Fix request parameters 2020-07-24 17:31:11 -06:00
crobibero d801621cfc Fix request parameters 2020-07-24 17:22:32 -06:00
crobibero 37496e958f move VideoService.cs to Jellyfin.Api 2020-07-24 16:49:43 -06:00
Patrick Barron 44acb9f7d9 Merge pull request #3592 from Ullmie02/api-audio
Migrate AudioService to Jellyfin.Api
2020-07-24 20:53:06 +00:00
MichaIng 1883ecd817 Fix left /usr/bin/jellyfin symlink on removal and typo
After removal of the symlink target file "/usr/lib/jellyfin/bin/jellyfin", file existence check on the symlink "[[ -f /usr/bin/jellyfin ]]" returns false. As a result the symlink is left in place on package purge. The correct check would be "[[ -L /usr/bin/jellyfin ]]", but since it could be a file in cases, e.g. manual fix on file systems with no symlink support or for any other reason, it is easiest to use "rm -f" to assure that it is removed in both cases and not return false even if it does not exist at all.

Additionally this fixes a typo on upstart script check.

Signed-off-by: MichaIng <micha@dietpi.com>
2020-07-24 22:43:32 +02:00
Patrick Barron 13d919f236 Read EnableNextVideoInfoOverlay from database. 2020-07-24 16:35:20 -04:00
Patrick Barron 9fcf23bd21 Migrate EnableNextVideoInfoOverlay 2020-07-24 16:34:19 -04:00
Patrick Barron ff7105982a Read skip lengths from server. 2020-07-24 16:32:24 -04:00
Patrick Barron 0d13d830bb Migrate skip lengths. 2020-07-24 16:30:54 -04:00
Nyanmisaka a78c8e3854 change loglevels 2020-07-25 01:50:18 +08:00
David ca3dcc3db0 Fix suggestions from review 2020-07-24 19:14:53 +02:00
nyanmisaka 5716453542 minor changes 2020-07-25 01:03:34 +08:00
nyanmisaka 4bdb870d16 Merge remote-tracking branch 'upstream/master' into tonemap 2020-07-25 00:58:14 +08:00
nyanmisaka 7b862bba5a add Tonemapping relaying on nvdec and ocl 2020-07-25 00:57:34 +08:00
Joshua M. Boniface e3db0ac400 Merge pull request #3657 from Bond-009/readonlyspan
Review usage of string.Substring (part 1)
2020-07-24 12:21:25 -04:00
Bond_009 928bc6c787 Fix build 2020-07-24 16:42:28 +02:00
Bond_009 01e781035f Fix warnings 2020-07-24 16:37:54 +02:00
nyanmisaka c888b34a62 add a method to use custom fallback fonts for subtitle rendering 2020-07-24 21:19:56 +08:00
Bond-009 3ff110984a Merge branch 'master' into readonlyspan 2020-07-24 09:40:44 +02:00
Bond-009 f5a3cc654f Merge pull request #3678 from barronpm/remove-unused-dependencies
Remove Unused Dependencies.
2020-07-24 09:37:43 +02:00
Bond-009 1cc62d6afa Update MediaBrowser.Controller/Extensions/ConfigurationExtensions.cs
Co-authored-by: David Mouse <dmouse10462@gmail.com>
2020-07-24 09:36:18 +02:00
Patrick Barron 1ee8790189 Use System.Text.Json in DefaultPasswordResetProvider 2020-07-23 21:50:41 -04:00
Patrick Barron 0aa349fe40 Remove unused dependencies. 2020-07-23 21:42:36 -04:00
dkanada 837741d0f7 Merge pull request #3677 from barronpm/fix-master-compilation
Fixed compilation error on master.
2020-07-24 10:36:26 +09:00
Patrick Barron a59bc5c6a8 Fixed compilation error. 2020-07-23 20:57:59 -04:00
Anthony Lavado 0cb2cd9456 Merge pull request #3576 from HelloWorld017/fix/sami-utf16
Fix SAMI UTF-16 Encoding Bug
2020-07-23 17:48:04 -07:00
Anthony Lavado 83509e99cb Merge pull request #2788 from ThatNerdyPikachu/more-track-titles
Use embedded title for other track types
2020-07-23 17:47:54 -07:00
Patrick Barron 629ffe395f Fixed build errors. 2020-07-23 20:36:36 -04:00
Patrick Barron 583e4ef97f Merge pull request #3385 from crobibero/api-image-service
Move ImageService.cs to Jellyfin.Api
2020-07-24 00:35:34 +00:00
Patrick Barron 3d69cea1c9 Merge branch 'master' into displaypreferences-efcore 2020-07-23 23:50:12 +00:00
Pika 7331c02a21 Update MediaBrowser.Model/Entities/MediaStream.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-07-23 19:22:56 -04:00
Pika ea4aa5ed8e Update MediaBrowser.Model/Entities/MediaStream.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-07-23 19:13:19 -04:00
Pika 262daa6650 Update MediaBrowser.Model/Entities/MediaStream.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-07-23 19:13:02 -04:00
Pika f5a3408c89 Update MediaBrowser.Model/Entities/MediaStream.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-07-23 19:12:52 -04:00
Pika 3b21abd879 Merge branch 'master' into more-track-titles 2020-07-23 18:59:25 -04:00
Joshua M. Boniface 845ee21ddc Merge pull request #3664 from Bond-009/createuserasync
Make CreateUser async
2020-07-23 18:08:29 -04:00
Joshua M. Boniface 8960d6256f Merge pull request #3659 from Bond-009/stringbuilder
Optimize StringBuilder.Append calls
2020-07-23 18:08:09 -04:00
Joshua M. Boniface 6f2b23b3df Merge pull request #3613 from Bond-009/regex
Replace \d with [0-9] in ffmpeg detection and scan code
2020-07-23 18:07:01 -04:00
Joshua M. Boniface 0d446c8755 Merge pull request #3609 from Bond-009/warn21
Fix warnings
2020-07-23 18:06:34 -04:00
Joshua M. Boniface fd82ecd18e Merge pull request #3595 from Bond-009/xml
Improve DescriptionXmlBuilder
2020-07-23 18:06:15 -04:00
Joshua M. Boniface 22cc602117 Merge pull request #3366 from barronpm/remove-usermanager-addparts
Remove UserManager.AddParts
2020-07-23 18:05:57 -04:00
Joshua M. Boniface 1a9adf283a Merge pull request #3675 from ferferga/fix-typo
Fix typo in debian config file
2020-07-23 18:00:41 -04:00
Fernando Fernández 722f6f5a26 fix typo in debian's config file 2020-07-23 20:53:04 +02:00
Bond-009 323fc576a5 Merge pull request #3521 from sachk/master
Fix support for mixed-protocol subtitles
2020-07-23 14:22:41 +02:00
Bond_009 d006f4301a Disable unix socket by default 2020-07-23 13:20:10 +02:00
Bond_009 cbe47325b3 Make UNIX socket configurable 2020-07-23 13:18:47 +02:00
David d39f481a5c Apply suggestions from review 2020-07-23 12:46:54 +02:00
Bond-009 9ffe74d979 Merge pull request #3532 from Ullmie02/socket-binding
Add support for binding to Unix socket
2020-07-23 12:30:25 +02:00
David 0e855953a2 Update Jellyfin.Server/Program.cs
Co-authored-by: Bond-009 <bond.009@outlook.com>
2020-07-23 12:03:46 +02:00
Bond-009 7686f53f52 Merge pull request #3632 from azlm8t/log-path-on-error
tvdb: Log path on lookup errors
2020-07-23 10:44:44 +02:00
Bond-009 ab9c1295ce Merge pull request #3538 from Ullmie02/api-fix
Fix value parsing in Jellyfin.Api
2020-07-23 10:37:30 +02:00
Bond-009 944fdb4c62 Merge pull request #3552 from BaronGreenback/NotificationFix
Fixes #3551 (Notifications Serialization error)
2020-07-23 10:34:32 +02:00
Bond-009 6de6583cbd Merge pull request #3615 from jellyfin/qsv-comet-lake
Fix QSV device creation on Comet Lake
2020-07-23 10:33:08 +02:00
Bond-009 e9758bde2a Merge pull request #3649 from thornbill/fix-epg-update-maybe
Skip image processing for live tv sources
2020-07-23 10:31:31 +02:00
Bond-009 6b11cccb7f Merge pull request #3663 from crobibero/efcore-leak
Add missing usings to UserManager
2020-07-23 10:30:45 +02:00
Bond-009 3a9698de54 Merge pull request #3665 from barronpm/use-interfaces
Use interfaces in app host constructors
2020-07-23 10:29:32 +02:00
Bond-009 b6017d3d4c Merge pull request #3666 from barronpm/livetvmanager-system-text-json
Use System.Text.Json in LiveTvManager
2020-07-23 10:28:37 +02:00
Anthony Lavado f23e119a68 Merge pull request #3634 from crobibero/plugin-config
fix built in plugin js
2020-07-22 21:47:02 -07:00
Patrick Barron 7adac7561a Use System.Text.Json in LiveTvManager 2020-07-22 19:52:14 -04:00
Patrick Barron 200f369596 Use interfaces in app host constructors 2020-07-22 19:34:14 -04:00
Patrick Barron 5f67ba4d70 Restructure query to avoid extra database access. 2020-07-22 15:21:50 -04:00
Patrick Barron 8a9ec7809f Wrap context creation with using 2020-07-22 15:19:18 -04:00
Bond_009 941f326c0b Don't AddAsync 2020-07-22 21:07:13 +02:00
Bond_009 6cbfae209d Make CreateUser async 2020-07-22 20:57:29 +02:00
Patrick Barron 52ebf6ae8f Move DisplayPreferencesManager.cs to Users namespace 2020-07-22 14:53:32 -04:00
Patrick Barron 9f323e5579 Add missing chromecast version serialization/deserialization. 2020-07-22 14:37:17 -04:00
David cff9772e14 Fix build part 2 2020-07-22 20:13:51 +02:00
David 1cb20f9181 Fix build 2020-07-22 19:44:17 +02:00
crobibero b4532ad3a2 add missing using 2020-07-22 11:35:31 -06:00
E.Smith f50348ca0b Log path on lookup errors
If the lookup fails (due to a bad id in an nfo file for example), then
we had no indication of which directory failed, so the user can not
fix the problem.

Now we include the path in the error message such as:

MediaBrowser.Providers.TV.SeriesMetadataService: Error in
DummySeasonProvider for /media/x/y/z

and

MediaBrowser.Providers.Manager.ProviderManager:
TvdbSeriesImageProvider failed in GetImageInfos for type Series at
/media/x/y/z
2020-07-22 18:22:52 +01:00
Bond-009 89ff865d40 Merge pull request #3508 from BaronGreenback/nullable
Part 1: nullable Emby.DLNA
2020-07-22 18:41:58 +02:00
Patrick Barron 968922e920 Merge pull request #3564 from Ullmie02/api-syncplay
Move SyncPlay api to Jellyfin.Api
2020-07-22 16:18:53 +00:00
Bill Thornton e973757485 Simplify logic 2020-07-22 11:32:29 -04:00
David 2ce97c022e Move AudioService to Jellyfin.Api 2020-07-22 16:57:06 +02:00
David 69e6dd2747 Update Jellyfin.Api/Controllers/SyncPlayController.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-07-22 16:53:56 +02:00
David 15ac8095b4 Apply suggestions from code review
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-07-22 16:49:52 +02:00
crobibero a1511e430c implement change properly 2020-07-22 08:23:56 -06:00
crobibero 939b95907b Force plugin config location 2020-07-22 08:19:26 -06:00
crobibero b006fd1b8f apply review suggestions 2020-07-22 08:03:45 -06:00
Bond_009 b9004a0246 Fix build 2020-07-22 14:56:58 +02:00
Bond_009 4d681e3cad Optimize StringBuilder.Append calls 2020-07-22 14:34:51 +02:00
Bond-009 a86d8d1757 Merge pull request #3642 from crobibero/plugin-repo-x2
Try adding plugin repository again
2020-07-22 13:54:27 +02:00
Bond-009 3c1b2f11e5 Merge pull request #3646 from barronpm/incrementcount-async
Make IncrementInvalidLoginAttemptCount async.
2020-07-22 13:53:10 +02:00
Bond_009 a23292f363 Address comments 2020-07-22 13:52:31 +02:00
Bond_009 febb6bced6 Review usage of string.Substring (part 1)
Reduced allocations by replacing string.Substring with ReadOnlySpan<char>.Slice
2020-07-22 13:39:24 +02:00
David 5580df38e6 Cleanup after merge 2020-07-22 11:05:41 +02:00
David 90039e1ad3 Merge remote-tracking branch 'remotes/jellyfin/api-migration' into api-audio
# Conflicts:
#	Emby.Server.Implementations/ApplicationHost.cs
#	Jellyfin.Api/Helpers/TranscodingJobHelper.cs
2020-07-22 11:02:44 +02:00
David eae665a9c4 Add properties to StreamState to fix some errors 2020-07-22 10:57:27 +02:00
David 07e56850be Remove caching and content length 2020-07-22 10:39:48 +02:00
David 9996afbf25 Add response code documentation 2020-07-22 10:20:51 +02:00
Bill Thornton 2fa2952791 Skip image processing for live tv sources 2020-07-21 16:40:38 -04:00
David cbf5c682e9 Change enum values 2020-07-21 22:06:07 +02:00
David be8cf1e9ef Merge branch 'api-migration' into api-syncplay
# Conflicts:
#	MediaBrowser.Api/SyncPlay/SyncPlayService.cs
2020-07-21 21:56:24 +02:00
crobibero 6602b0dfb6 Move ImageService.cs to Jellyfin.Api 2020-07-21 13:17:08 -06:00
Patrick Barron 0c5ac10a68 Make IncrementInvalidLoginAttemptCount async. 2020-07-21 14:27:09 -04:00
crobibero 9787b2fe8a Detach tracked entries on dispose 2020-07-21 10:19:53 -06:00
crobibero 6c076b2162 Try adding plugin repository again 2020-07-21 08:27:12 -06:00
crobibero 230c54721d update post profile image 2020-07-21 08:05:21 -06:00
crobibero b040d89e5c Merge remote-tracking branch 'upstream/api-migration' into api-image-service 2020-07-21 08:03:09 -06:00
David 5b57c81ee1 Merge pull request #3629 from crobibero/api-migration-merge
Api migration merge
2020-07-21 10:32:05 +02:00
Nyanmisaka d4c6415f99 minor changes 2020-07-21 11:41:28 +08:00
crobibero 05f743480d fully remove jquery 2020-07-20 17:31:20 -06:00
crobibero f4cafc2f31 fix built in plugin js 2020-07-20 17:23:36 -06:00
crobibero 5c66f9e471 changes from merge 2020-07-20 14:43:54 -06:00
crobibero 1385064497 Merge remote-tracking branch 'upstream/master' into api-migration-merge 2020-07-20 14:28:33 -06:00
Bond-009 0750357916 Merge pull request #3620 from BaronGreenback/IPFix
Fix for #3607 and #3515
2020-07-20 18:41:01 +02:00
Bond-009 61a602adb6 Merge pull request #3598 from barronpm/providermanager-cleanup
Clean up ProviderManager.cs
2020-07-20 18:19:09 +02:00
BaronGreenback f983ea95d1 Update Emby.Server.Implementations/Networking/NetworkManager.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-07-20 17:18:50 +01:00
BaronGreenback bde1a38a88 Two fixes 2020-07-20 16:59:04 +01:00
dkanada 107cf21f26 Merge pull request #3616 from crobibero/migration-new-install
Allow migration to optionally run on fresh install
2020-07-20 23:38:28 +09:00
crobibero 9343e73b26 Allow migration to optionally run on fresh install 2020-07-20 07:45:24 -06:00
Nyanmisaka 5f89e81306 fix qsv device creation on Comet Lake
reddit: https://www.reddit.com/r/jellyfin/comments/huct4x/jellyfin_1060_released/fyn30ds
2020-07-20 20:48:20 +08:00
Bond-009 41c4cfe0af Merge pull request #3604 from joshuaboniface/fix-bad-deps
Fix bad Debuntu dependencies
2020-07-20 14:20:57 +02:00
Bond_009 e98351b912 Replace \d with [0-9] in ffmpeg detection and scan code 2020-07-20 14:14:15 +02:00
Bond-009 8f11e057a2 Merge pull request #3602 from crobibero/user-change-case
Fix username case change
2020-07-20 11:47:47 +02:00
Bond_009 7324b44c43 Fix warnings 2020-07-20 11:01:37 +02:00
Joshua M. Boniface b1fe20aac5 Readd sed'd out dotnet-sdk dependency 2020-07-19 23:36:48 -04:00
Joshua M. Boniface 4966ca3616 Remove the old Emby conflicts
It's been long enough that this is no longer an issue. We still conflict
on the ports 8096 and 8190, but this will simply result in a failure to
start; allow users to get themselves into that situation if they wish.
2020-07-19 23:28:25 -04:00
Joshua M. Boniface 4ecedb2a12 Fix bad dependency handling in 10.6.0-1
Fixes the incorrect dependency handling from 10.6.0, which was missing
the Replaces and Breaks entries on jellyfin-server. Thus apt would
complain about /etc/default/jellyfin being in two packages and fail to
upgrade. With this configuration, I've verified that apt now handles
this situation properly.
2020-07-19 23:26:59 -04:00
Patrick Barron 6e11f77922 Add missing documentation. 2020-07-19 22:30:25 -04:00
crobibero d1e351a00a Fix username case change 2020-07-19 20:21:30 -06:00
Patrick Barron 3fdbdf4078 Clean up ProviderManager.cs 2020-07-19 20:54:57 -04:00
Patrick Barron 36b05157f0 Rewrite CropWhitespace 2020-07-19 18:06:12 -04:00
Patrick Barron 4a356efa2c Make constructor one line 2020-07-19 17:59:54 -04:00
Patrick Barron b51a10948a Rewrite OrientImage 2020-07-19 17:59:33 -04:00
BaronGreenback 301ddc1dac Update HttpContextExtensions.cs 2020-07-19 22:19:17 +01:00
Bond_009 65453c0a84 Fix build and more Append calls 2020-07-19 21:32:54 +02:00
Bond_009 39be99504f Improve DescriptionXmlBuilder
* Replace XML escape code with SecurityElement.Escape
* Optimize StringBuilder.Append calls
2020-07-19 21:20:18 +02:00
Patrick Barron 2569793ff0 Reuse paint objects. 2020-07-19 14:39:11 -04:00
Patrick Barron d983d65d8a Simplify return statements 2020-07-19 14:18:23 -04:00
Patrick Barron a9806d8f4a Convert to switch expressions 2020-07-19 14:16:33 -04:00
Patrick Barron 1be3e1e037 Remove unnecessary base constructor calls. 2020-07-19 14:14:44 -04:00
Patrick Barron 87b8a8d7c7 Simplify arithmetic 2020-07-19 14:13:56 -04:00
Patrick Barron bd77f1e84f Remove redundant casts 2020-07-19 14:13:18 -04:00
Patrick Barron 196e8e131a Convert to using declarations 2020-07-19 14:12:53 -04:00
David 3514813eb4 Continute work 2020-07-19 19:03:48 +02:00
BaronGreenback 7becef73df Update MediaBrowser.Common/Extensions/HttpContextExtensions.cs
Co-authored-by: Mark Monteiro <marknr.monteiro@protonmail.com>
2020-07-19 17:54:29 +01:00
BaronGreenback 672a35db94 Update DlnaServerService.cs 2020-07-19 17:54:09 +01:00
David 0e1bf316b5 Merge branch 'master' of github.com:jellyfin/jellyfin into socket-binding 2020-07-18 19:21:43 +02:00
BaronGreenback 69ba385782 Corrected comment 2020-07-18 16:55:46 +01:00
BaronGreenback f9b0816b80 Changes a suggested. 2020-07-18 16:54:23 +01:00
Khinenw 6e069f925b Fix SAMI UTF-16 Encoding Bug 2020-07-18 04:53:05 +00:00
Patrick Barron 5993a4ac2d Fix ChromecastVersion numbering 2020-07-17 23:36:13 -04:00
Patrick Barron 10f531bbe4 Manually specify enum order. 2020-07-17 20:03:17 -04:00
Patrick Barron 1ac1186312 Add pragmas to DisplayPreferences migration files 2020-07-17 20:01:17 -04:00
Patrick Barron 27eefd49f1 Add missing fields 2020-07-17 19:36:55 -04:00
Patrick Barron d806084937 Remove superfluous annotations. 2020-07-17 16:27:34 -04:00
Patrick Barron 2831062a3f Add max length for SortBy 2020-07-17 16:11:54 -04:00
Patrick Barron 9e17db59cd Reorder HomeSectionType 2020-07-17 16:11:54 -04:00
Patrick Barron fcfe227537 Updated documentation to indicate required elements. 2020-07-17 16:11:54 -04:00
Patrick Barron 817e06813e Remove unused using 2020-07-17 16:11:54 -04:00
Patrick Barron f3263c7d8e Remove limit of 7 home sections 2020-07-17 16:11:54 -04:00
Patrick Barron 3c7eb6b324 Document HomeSection.cs 2020-07-17 16:11:54 -04:00
Patrick Barron e96a36512a Document DisplayPreferences.cs 2020-07-17 16:11:53 -04:00
Patrick Barron ab396225ea Migrate Display Preferences to EF Core 2020-07-17 16:11:53 -04:00
BaronGreenback 0f696104ac using missing. 2020-07-17 16:23:47 +01:00
BaronGreenback 6b4cea604c Suggested changes and removed some intellisense messages. 2020-07-17 16:19:06 +01:00
crobibero 2b5d515de7 specify plugin repo on install 2020-07-17 09:08:29 -06:00
BaronGreenback c7c28db17b Update DlnaServerService.cs 2020-07-17 16:08:26 +01:00
BaronGreenback 24c1776ff6 Add files via upload 2020-07-17 16:06:52 +01:00
BaronGreenback fd2f18899b Update ServiceHandler.cs 2020-07-17 16:06:32 +01:00
BaronGreenback 62eb1b1a38 Update ServiceController.cs 2020-07-17 12:59:16 +01:00
BaronGreenback d9f9412955 Update DlnaServerService.cs 2020-07-17 12:58:23 +01:00
BaronGreenback 06beecc4f8 Update ServiceHandler.cs 2020-07-17 12:56:52 +01:00
BaronGreenback e33c6f6b29 Update IApplicationHost.cs 2020-07-17 12:54:55 +01:00
BaronGreenback 912847ae8c Update ServiceController.cs 2020-07-17 12:54:28 +01:00
BaronGreenback 7cd4ae3b6e Update HttpListenerHost.cs 2020-07-17 12:54:13 +01:00
BaronGreenback a44309f56f Update HttpListenerHost.cs 2020-07-17 12:53:50 +01:00
BaronGreenback 02d3bb7588 Update ApplicationHost.cs 2020-07-17 12:53:20 +01:00
BaronGreenback 31ffd00dbd Update ApplicationHost.cs 2020-07-17 12:51:55 +01:00
David fa4e0a73d5 Update Jellyfin.Server/Program.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-07-16 11:21:46 +02:00
Patrick Barron 352dab7018 Merge pull request #3556 from Ullmie02/api-slow
Add X-Response-Time-ms header and log slow server response time (Jellyfin.Api)
2020-07-15 22:50:05 +00:00
Patrick Barron 9ed9bbb7a0 Merge pull request #3565 from Ullmie02/api-remove
Remove unused MediaBrowser.Api files (api-migration)
2020-07-15 16:05:37 +00:00
David bb2e90c1e1 Remove unused api files 2020-07-15 16:40:58 +02:00
David 9a2bcd6266 Move SyncPlay api to Jellyfin.Api 2020-07-15 16:15:17 +02:00
David c6a0306a34 Move field to the controller 2020-07-14 20:20:24 +02:00
David 262e19b691 Add X-Response-Time-ms header and log slow server response time 2020-07-14 13:40:18 +02:00
David 9f567e6471 Don't recreate JsonSerializerOptions every time 2020-07-14 12:39:58 +02:00
Patrick Barron 303c175714 Fix circular dependency 2020-07-13 17:25:50 -04:00
Patrick Barron 3b085f6a03 Remove UserManager.AddParts 2020-07-13 17:25:50 -04:00
BaronGreenback 12478c7196 Update NotificationOption.cs
Fixes serialisation bug
2020-07-13 17:54:06 +01:00
David ee03b919f9 Fix parsing 2020-07-12 20:11:59 +02:00
Patrick Barron f7c7b1e7e1 Merge pull request #3524 from crobibero/api-migration-nullable
Make query parameters nullable or set default value
2020-07-11 15:48:52 +00:00
David 7367e667f7 Add socket support 2020-07-11 12:43:30 +02:00
David 2328ec59c9 Migrate AudioService to Jellyfin.Api 2020-07-11 11:15:04 +02:00
crobibero 5d34b07d1f Make query parameters nullable or set default value 2020-07-07 09:10:51 -06:00
Sacha Korban 29c4220227 Fix support for mixed-protocol external subtitles 2020-07-07 19:54:11 +10:00
Patrick Barron 2eef7d4913 Merge pull request #3504 from Ullmie02/api-genres
Move GenresService to Jellyfin.Api
2020-07-06 16:38:13 +00:00
Patrick Barron 48438e828c Merge pull request #3507 from Ullmie02/api-musicgenres
Move MusicGenresService to Jellyfin.Api
2020-07-06 16:36:23 +00:00
Patrick Barron d80eb91ba1 Merge pull request #2967 from crobibero/api-channel
Move ChannelService to Jellyfin.Api
2020-07-06 16:34:59 +00:00
Patrick Barron 940dee57d7 Merge pull request #3493 from Ullmie02/api-items
Move ItemsService and TrailersService to Jellyfin.Api
2020-07-06 16:31:35 +00:00
crobibero 1bf131c109 remove duplicate functions 2020-07-06 10:02:16 -06:00
crobibero b2e7a4a1cb Merge remote-tracking branch 'upstream/api-migration' into api-channel 2020-07-06 10:00:23 -06:00
David c2ae0b492c Add missing using 2020-07-06 17:43:34 +02:00
David 95ea9dad00 Change route parameter name 2020-07-06 17:41:02 +02:00
David c71234f4d9 Add authorization attribute 2020-07-06 17:39:45 +02:00
David 87f3326ffb Add authorization attribute 2020-07-06 17:36:24 +02:00
crobibero 068725cded Fix documentation and authorize attribute 2020-07-06 08:02:23 -06:00
BaronGreenback 70c638d1d4 Updated code as per jellyfin/master as version i amended didn't execute. 2020-07-05 18:12:56 +01:00
BaronGreenback ab10f21027 Part 1 of a multi-PR change for Emby.DLNA 2020-07-05 17:47:23 +01:00
David 5a74a7d3c7 Add additional userId query parameter 2020-07-05 11:10:09 +02:00
David 57fab9035f Move MusicGenresService to Jellyfin.Api 2020-07-05 11:04:14 +02:00
David 589add1654 Change nullable behavior to fix web client 2020-07-04 19:05:42 +02:00
David 94ccb3ee98 Move GenresService to Jellyfin.Api 2020-07-04 18:50:16 +02:00
Patrick Barron 613444a152 Merge pull request #2976 from crobibero/api-environment
Transfer EnvironmentService to Jellyfin.Api
2020-07-04 13:13:20 +00:00
David c675a9bec9 Merge pull request #3405 from crobibero/api-livetv
Move LiveTvService.cs to Jellyfin.Api
2020-07-03 19:12:44 +02:00
David 68cc075dda Update LiveTvController.cs 2020-07-03 19:04:45 +02:00
David 31a492b2b9 Move TrailersService to Jellyfin.Api 2020-07-03 19:02:07 +02:00
David 121de44ad0 Move ItemsService to Jellyfin.Api 2020-07-03 18:39:50 +02:00
Cody Robibero 0830d381c4 Add missing endpoint 2020-07-03 10:25:26 -06:00
Max Git 3588ee5229 Merge branch 'master' into feature/ffmpeg-version-check 2020-07-02 23:50:13 +02:00
Patrick Barron 3306639c9b Merge pull request #3487 from crobibero/api-persons
Move PersonsService.cs to Jellyfin.Api
2020-07-01 15:14:08 +00:00
crobibero 1aaee5cf8f Move PersonsService.cs to Jellyfin.Api 2020-06-30 18:26:53 -06:00
crobibero 13c4cb628f add missing function after merge 2020-06-30 18:03:04 -06:00
crobibero 14faebc7fe Merge remote-tracking branch 'upstream/api-migration' into api-livetv 2020-06-30 17:53:20 -06:00
Patrick Barron d300d80479 Merge pull request #3484 from Ullmie02/api-artists
Move ArtistsService to Jellyfin.Api
2020-06-30 23:10:17 +00:00
David 5dfe1ed9b3 Fix using ordering 2020-06-30 15:01:08 +02:00
David 6385e1ba46 Fix Build 2020-06-30 14:36:45 +02:00
David 94e792e0d7 Merge branch 'api-migration' of github.com:Ullmie02/jellyfin into api-migration 2020-06-30 14:34:48 +02:00
David 603b1693c0 Update Jellyfin.Api/Controllers/ArtistsController.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-06-30 14:15:17 +02:00
Patrick Barron a9dad2b04e Merge pull request #3451 from crobibero/api-studios
Move StudiosService.cs to Jellyfin.Api
2020-06-29 18:56:21 +00:00
crobibero da40572979 Merge remote-tracking branch 'upstream/api-migration' into api-studios 2020-06-29 12:54:47 -06:00
Patrick Barron 1b34919a60 Merge pull request #3381 from crobibero/api-movies
Move MoviesService.cs to Jellyfin.Api
2020-06-29 18:43:12 +00:00
David 45e034e9a1 Move ArtistsService to Jellyfin.Api 2020-06-29 16:34:00 +02:00
Cody Robibero 8459d486de Update Jellyfin.Api/Controllers/MoviesController.cs
Co-authored-by: David <davidullmer@outlook.de>
2020-06-29 07:35:00 -06:00
Patrick Barron dbf939467f Merge pull request #3466 from crobibero/api-migration-nullable
Make all optional strings nullable
2020-06-28 23:59:21 +00:00
Patrick Barron 9b6daec3ad Merge pull request #3462 from Ullmie02/api-playbackinfo
Move MediaInfoService to Jellyfin.Api
2020-06-28 18:11:58 +00:00
David 68dd31d00e Remove routes in old service 2020-06-28 12:44:17 +02:00
Patrick Barron 37e2405638 Merge pull request #3460 from crobibero/api-playstate
Move PlaystateService.cs to Jellyfin.Api
2020-06-27 18:40:28 +00:00
crobibero 73bcda7eac Make all optional strings nullable 2020-06-27 10:50:44 -06:00
David bcd3cddad8 Move MediaInfoService to Jellyfin.Api 2020-06-27 12:26:43 +02:00
crobibero f45d44f321 Move PlaystateService.cs to Jellyfin.Api 2020-06-26 21:04:02 -06:00
Patrick Barron 90c01327aa Merge pull request #3433 from crobibero/api-years
Move YearsService to Jellyfin.Api
2020-06-26 20:09:54 +00:00
Patrick Barron ac646494e5 Merge pull request #3447 from crobibero/api-user-views
move UserViewsService.cs to Jellyfin.Api
2020-06-26 20:08:30 +00:00
Patrick Barron b9b73178f5 Merge pull request #3449 from crobibero/api-user-library
Move UserLibraryService.cs to Jellyfin.Api
2020-06-26 20:06:53 +00:00
Patrick Barron 67a0f7180c Merge pull request #3453 from Ullmie02/api-instantmix
Move InstantMixService to Jellyfin.Api
2020-06-26 20:01:38 +00:00
David 1e80be30a9 Add response code documentation 2020-06-26 17:45:07 +02:00
David ea855c3a75 Merge branch 'api-migration' of github.com:jellyfin/jellyfin into api-instantmix 2020-06-26 13:48:56 +02:00
David fb9654e783 Correct Library routing 2020-06-26 13:43:31 +02:00
David 778634b41b Move InstantMixService to Jellyfin.Api 2020-06-26 13:42:21 +02:00
dkanada 3b99e691a6 Merge pull request #3450 from crobibero/api-fix-swagger-order
Fix docs endpoint order
2020-06-26 19:21:48 +09:00
crobibero 325808d271 Move StudiosService.cs to Jellyfin.Api 2020-06-25 18:22:55 -06:00
Patrick Barron fe02c6e863 Merge pull request #2929 from crobibero/api-scheduled-tasks
Scheduled Tasks to Jellyfin.Api
2020-06-25 23:46:03 +00:00
crobibero 8d7b39a36e fix endpoint order 2020-06-25 17:44:11 -06:00
crobibero 8074c47d29 Move UserLibraryService.cs to Jellyfin.Api 2020-06-25 17:28:12 -06:00
crobibero 54d666d7c9 move UserViewsService.cs to Jellyfin.Api 2020-06-25 16:46:09 -06:00
crobibero 0179293c24 fix build 2020-06-25 16:23:31 -06:00
crobibero 18f7f5aec7 Merge remote-tracking branch 'upstream/api-migration' into api-environment 2020-06-25 16:22:04 -06:00
crobibero 0740ec6112 Merge remote-tracking branch 'upstream/api-migration' into api-image-service 2020-06-25 16:05:15 -06:00
Patrick Barron 7bd9172779 Merge pull request #3434 from crobibero/api-unused
remove unused query parameters
2020-06-25 21:45:44 +00:00
dkanada f11ca0ba94 Merge pull request #3446 from crobibero/api-missing-route
Add missing route
2020-06-26 06:12:26 +09:00
crobibero 835bda7be3 Add missing route 2020-06-25 13:01:41 -06:00
Patrick Barron 45f195aca9 Merge pull request #3440 from Ullmie02/api-collection
Move CollectionService to Jellyfin.Api
2020-06-25 17:33:40 +00:00
Patrick Barron 7c96018410 Merge pull request #3441 from Ullmie02/api-albums
Move AlbumsService to Jellyfin.Api
2020-06-25 17:30:34 +00:00
David 53f4a8ce58 Add missing response code documentation 2020-06-25 17:15:08 +02:00
David 2cc5b1ab94 Add response code docs 2020-06-25 17:07:12 +02:00
David fa98013621 Move AlbumsService to Jellyfin.Api 2020-06-25 13:23:54 +02:00
David dad6f12b10 Move CollectionService to Jellyfin.Api 2020-06-25 12:51:18 +02:00
crobibero 7a32d03101 remove unused parameters 2020-06-24 14:43:28 -06:00
crobibero 1228d6711e remove unused parameters 2020-06-24 14:35:57 -06:00
crobibero e72a22c564 Move YearsService.cs to Jellyfin.Api 2020-06-24 13:48:22 -06:00
Cody Robibero 7c1020cfc1 Merge pull request #2984 from crobibero/api-library
Move Library Service to Jellyfin.API
2020-06-24 12:57:39 -06:00
crobibero fb81f95ae8 fix duplicate function 2020-06-24 12:49:09 -06:00
crobibero 289605c07f Merge remote-tracking branch 'upstream/api-migration' into api-library 2020-06-24 12:36:13 -06:00
crobibero 60ab4cd7b1 move YearsService.cs to Jellyfin.Api 2020-06-24 12:23:46 -06:00
crobibero fee07219d0 fix merge 2020-06-24 10:54:25 -06:00
crobibero cbcf3bfaff Merge remote-tracking branch 'upstream/api-migration' into api-channel 2020-06-24 10:52:39 -06:00
Patrick Barron 6ad50f2e02 Merge pull request #3421 from Ullmie02/api-tvshows
Move TvShowsService to Jellyfin.Api
2020-06-24 14:27:47 +00:00
crobibero 32881c6b22 add missing docs and attributes 2020-06-24 08:01:12 -06:00
David d64770bcdb Finish TvShowsController 2020-06-24 14:40:37 +02:00
crobibero 7e94bb7864 fix controller attribute 2020-06-23 11:53:08 -06:00
crobibero b4a773fde8 Merge remote-tracking branch 'upstream/api-migration' into api-livetv 2020-06-23 11:50:42 -06:00
crobibero c4f9112b0d Move LiveTvService.cs to Jellyfin.Api 2020-06-23 11:48:37 -06:00
Patrick Barron cdba45fc3c Merge pull request #3285 from Ullmie02/api-system
Move SystemService to Jellyfin.Api
2020-06-23 14:02:21 +00:00
Max Git 1c84a31b22 Merge branch 'master' into feature/ffmpeg-version-check 2020-06-23 10:24:34 +02:00
Max Git c35c401d65 Merge branch 'master' into feature/ffmpeg-version-check 2020-06-23 09:20:50 +02:00
Patrick Barron 57bf8c17d6 Merge pull request #3420 from Ullmie02/api-missing-policy
Add missing authorization policies (new Web Api)
2020-06-23 01:33:13 +00:00
Patrick Barron 68e89be349 Merge pull request #3419 from crobibero/api-branding
move BrandingService.cs to Jellyfin.Api
2020-06-22 21:50:12 +00:00
David 293d96f27c Move TvShowsService to Jellyfin.Api started 2020-06-22 18:02:57 +02:00
crobibero 1d7d480efe fix tests 2020-06-22 08:14:07 -06:00
David 6b72fb8631 Add missing default authorization policy 2020-06-22 15:49:15 +02:00
crobibero d2f7cb0442 Merge branch 'api-branding' of github.com:crobibero/jellyfin into api-branding 2020-06-22 07:47:48 -06:00
crobibero 0fa316c9e4 move BrandingService.cs to Jellyfin.Api 2020-06-22 07:47:22 -06:00
Cody Robibero 263d925e4f Update launchSettings.json 2020-06-22 07:46:47 -06:00
David 5c6e9f4db5 Add missing authorization policies 2020-06-22 15:44:11 +02:00
crobibero a50738e88d move BrandingService.cs to Jellyfin.Api 2020-06-22 07:37:29 -06:00
BaronGreenback ba3a9f7d46 removing stray < character from description. 2020-06-22 12:14:31 +01:00
BaronGreenback a25a233b75 Using Version class. 2020-06-22 11:57:46 +01:00
crobibero f35774170f Move LiveTvService.cs to Jellyfin.Api 2020-06-21 16:12:21 -06:00
Patrick Barron 743032f1e1 Merge pull request #3393 from Ullmie02/api-dashboard
Move DashboardController to Jellyfin.Api
2020-06-21 19:41:11 +00:00
Patrick Barron a6664b8335 Merge pull request #3275 from crobibero/api-playlist
Move PlaylistService to Jellyfin.Api
2020-06-21 18:54:38 +00:00
Patrick Barron 87734b8647 Merge pull request #3399 from Ullmie02/api-videos
Move VideosService to Jellyfin.Api
2020-06-21 18:51:30 +00:00
BaronGreenback bf1bbbdd3e Changed sorting to case insensitive 2020-06-21 18:46:48 +01:00
BaronGreenback 2255bc9872 Changed padding in version numbers based up how they are stored in the repository. 2020-06-21 18:42:50 +01:00
crobibero 38788a1f1d Merge remote-tracking branch 'upstream/api-migration' into api-library 2020-06-21 11:34:05 -06:00
crobibero ccd7b3f524 WIP GetImage endpoints 2020-06-21 11:31:44 -06:00
Patrick Barron 3bf19d1e93 Merge pull request #3395 from crobibero/api-routes-fix
Add missing attributes, fix response codes, fix route parameter casing
2020-06-21 17:21:02 +00:00
David 4eb94b8fb1 Update Jellyfin.Api/Controllers/DashboardController.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-06-21 18:22:17 +02:00
BaronGreenback d89c46f1a9 fixes 2020-06-21 17:11:21 +01:00
David fae510308e Add try catch block 2020-06-21 18:00:04 +02:00
David f736b43f97 Merge pull request #3271 from crobibero/api-item-lookup
Move ItemLookupService to Jellyfin.Api
2020-06-21 17:47:16 +02:00
crobibero cffba00f51 Fix response code 2020-06-21 09:35:38 -06:00
Cody Robibero f211a6c17b Update Jellyfin.Api/Controllers/PluginsController.cs
Co-authored-by: David <davidullmer@outlook.de>
2020-06-21 09:33:52 -06:00
Cody Robibero f6972cdab8 Update Jellyfin.Api/Controllers/ItemRefreshController.cs
Co-authored-by: David <davidullmer@outlook.de>
2020-06-21 09:33:46 -06:00
Cody Robibero 857eb0c397 Update Jellyfin.Api/Controllers/PluginsController.cs
Co-authored-by: David <davidullmer@outlook.de>
2020-06-21 09:33:40 -06:00
Cody Robibero c492c09b25 Update Jellyfin.Api/Controllers/DisplayPreferencesController.cs
Co-authored-by: David <davidullmer@outlook.de>
2020-06-21 09:33:34 -06:00
BaronGreenback 99410f3c97 fixes 2020-06-21 16:15:55 +01:00
David 8f9c985988 Move VideosService to Jellyfin.Api 2020-06-21 16:00:16 +02:00
BaronGreenback a041fe8a2d Add versioning to plugin folders 2020-06-21 13:29:35 +01:00
David 9a223b7359 Fix suggestions 2020-06-21 12:35:06 +02:00
David d7ae666ef0 Merge pull request #3273 from crobibero/api-item-update
Move ItemUpdateService to Jellyfin.Api
2020-06-21 12:10:55 +02:00
crobibero 10ddbc34ec Add missing attributes, fix response codes, fix route parameter casing 2020-06-20 18:02:07 -06:00
crobibero 9a8deadc21 implement all non image get endpoints 2020-06-20 17:06:33 -06:00
crobibero b603742a77 Merge remote-tracking branch 'upstream/api-migration' into api-image-service 2020-06-20 16:26:42 -06:00
crobibero f017f5c97f clean up 2020-06-20 16:07:53 -06:00
crobibero 472fd5217f clean up 2020-06-20 16:07:09 -06:00
crobibero d1ca0cb4c7 Use proper DtoOptions extensions 2020-06-20 16:03:19 -06:00
crobibero 3329b08b40 Merge remote-tracking branch 'upstream/api-migration' into api-playlist 2020-06-20 15:56:42 -06:00
Patrick Barron deac459b62 Merge pull request #3382 from Ullmie02/api-suggestions
Move SuggestionsService to Jellyfin.Api
2020-06-20 21:42:27 +00:00
crobibero 81c0451b5e Fix response code & docs 2020-06-20 15:16:30 -06:00
crobibero 8c38644fca Fix response code & docs 2020-06-20 15:15:59 -06:00
crobibero 95bae56640 Fix response code & docs 2020-06-20 15:14:43 -06:00
crobibero 0c98bc42a8 Fix response code & docs 2020-06-20 15:11:10 -06:00
David 576ffeb2a9 Merge pull request #3324 from Ullmie02/api-sessionservice
Move SessionService to Jellyfin.Api
2020-06-20 20:55:09 +02:00
David Ullmer d4c86b82e0 Merge remote-tracking branch 'remotes/upstream/api-migration' into api-sessionservice
# Conflicts:
#	Jellyfin.Api/Helpers/RequestHelpers.cs
2020-06-20 20:45:16 +02:00
Patrick Barron 804764e1fb Merge pull request #3363 from Ullmie02/api-user
Move UserService to Jellyfin.Api
2020-06-20 16:52:58 +00:00
David 64fb173dad Move DashboardController to Jellyfin.Api 2020-06-20 15:59:41 +02:00
David 33de0ac108 Use RequestHelpers.Split 2020-06-20 12:10:45 +02:00
ConfusedPolarBear e2f16fc255 Merge remote-tracking branch 'upstream/master' into quickconnect 2020-06-19 23:33:43 -05:00
ConfusedPolarBear 329980c727 API cleanup 2020-06-19 23:33:07 -05:00
ConfusedPolarBear 4be476ec53 Move all settings into the main server configuration
Decreased the timeout from 30 minutes to 5.
Public lookup values have been replaced with the short code.
2020-06-19 23:32:24 -05:00
Patrick Barron e26f487fc8 Merge pull request #3377 from crobibero/api-pragma
Convert pragma to SuppressMessage
2020-06-20 00:49:35 +00:00
Patrick Barron c3915cdb78 Merge pull request #2926 from crobibero/api-display-preferences
DisplayPreferences to Jellyfin.Api
2020-06-20 00:47:55 +00:00
crobibero cd273c4e98 Start move ImageService.cs to Jellyfin.Api 2020-06-19 15:08:35 -06:00
David f17d198eb5 Move SuggestionsService to Jellyfin.Api 2020-06-19 22:18:46 +02:00
crobibero 7c79ee0cd5 Move MoviesService.cs to Jellyfin.Api 2020-06-19 13:51:01 -06:00
crobibero 45234e5ecd Add movie support to existing GetSimilarItemsResult 2020-06-19 13:29:14 -06:00
crobibero e2a7e8d97e Move LibraryService.cs to Jellyfin.Api 2020-06-19 13:10:10 -06:00
Bond-009 f8459502d8 Merge pull request #3379 from Ullmie02/api-nullable
Remove #nullable enable in Jellyfin.Api
2020-06-19 19:09:32 +02:00
crobibero 494f697072 Merge remote-tracking branch 'upstream/api-migration' into api-library 2020-06-19 10:49:49 -06:00
David Ullmer 7e91ded587 Remove #nullable enable 2020-06-19 18:20:49 +02:00
David Ullmer 68ea589f1a Use direct return instead of Ok() 2020-06-19 18:11:46 +02:00
crobibero d53a2899b1 remove #nullable 2020-06-19 09:03:04 -06:00
crobibero e4a13f0e1e remove #nullable 2020-06-19 09:02:41 -06:00
crobibero 8f1505cdf5 remove #nullable 2020-06-19 09:02:10 -06:00
crobibero 6767c47ccd remove #nullable 2020-06-19 09:01:37 -06:00
crobibero 97ce641242 remove #nullable 2020-06-19 09:00:50 -06:00
crobibero d820c0fff5 Convert pragma to supresswarning 2020-06-19 08:49:42 -06:00
David 08401f923d Change swagger dictionary type mapping 2020-06-19 15:49:44 +02:00
Patrick Barron 305808dd0a Merge pull request #3373 from crobibero/api-dto
Add DtoExtensions
2020-06-19 13:38:14 +00:00
David b51b9653ac Add missing authorization policies 2020-06-19 14:29:32 +02:00
David d63c0e4228 Merge remote-tracking branch 'remotes/upstream/api-migration' into api-system 2020-06-19 14:13:40 +02:00
David a5bd7f2d6e Use new authorization and session functions 2020-06-19 13:03:53 +02:00
David 42385a14f0 Merge remote-tracking branch 'remotes/upstream/api-migration' into api-sessionservice
# Conflicts:
#	MediaBrowser.Api/Sessions/SessionService.cs
2020-06-19 12:32:38 +02:00
David 6651cb8d24 Add JsonInto32Converter
Add additional swagger type mapping
2020-06-19 12:24:39 +02:00
David 77bea56708 Add request body models 2020-06-18 19:35:29 +02:00
David 762eeb51e6 Merge remote-tracking branch 'remotes/upstream/api-migration' into api-user 2020-06-18 18:52:01 +02:00
crobibero 69e1047bf3 Add DtoExtensions.cs 2020-06-18 10:42:48 -06:00
David 522e44de59 Merge pull request #3357 from crobibero/api-authorization
Add Authorization handlers
2020-06-18 18:37:08 +02:00
David 713ae7ae36 Add xml comments; Add status codes; Use return instead of exception 2020-06-18 18:09:58 +02:00
Patrick Barron 1da044e0eb Merge pull request #3369 from crobibero/api-cleanup
Remove #nullable, make Task.Run async
2020-06-18 13:22:52 +00:00
crobibero 9a51f484af Remove nullable, add async task 2020-06-18 07:11:46 -06:00
Patrick Barron 116284fe99 Merge pull request #3321 from Ullmie02/api-librarystructure
Move LibraryStructureService to Jellyfin.Api
2020-06-17 23:27:47 +00:00
Max Git cd8d04f055 Merge branch 'master' into feature/ffmpeg-version-check 2020-06-17 22:31:10 +02:00
David f2d7eac418 [WIP] Move UserService to Jellyfin.Api 2020-06-17 21:08:58 +02:00
Patrick Barron b4da357db2 Merge pull request #2944 from crobibero/api-image
ImageNameService to Jellyfin.Api
2020-06-17 17:15:32 +00:00
David 226a9d5d2e Merge pull request #2946 from crobibero/api-image2
Move RemoteImageService to Jellyfin.API
2020-06-17 19:07:20 +02:00
David bf133d044a Merge pull request #3269 from crobibero/api-filter
Move FilterService to Jellyfin.Api
2020-06-17 18:53:03 +02:00
crobibero 9b45ee440c User proper File constructor 2020-06-17 10:51:50 -06:00
crobibero 0d1298e851 User proper File constructor 2020-06-17 10:49:34 -06:00
crobibero 90fe8f0cbc Merge branch 'api-filter' of github.com:crobibero/jellyfin into api-filter 2020-06-17 10:43:26 -06:00
crobibero 444605703c Merge remote-tracking branch 'upstream/api-migration' into api-filter 2020-06-17 10:43:04 -06:00
Cody Robibero f181cb3746 Update Jellyfin.Api/Controllers/FilterController.cs
Co-authored-by: David <davidullmer@outlook.de>
2020-06-17 10:41:40 -06:00
Cody Robibero f27f977f01 Merge pull request #3333 from crobibero/api-item-refresh
Move ItemRefreshService.cs to Jellyfin.Api
2020-06-17 09:12:41 -06:00
Cody Robibero 5a7ad6b2dc Merge pull request #3274 from crobibero/api-localization
Move LocalizationService to Jellyfin.Api
2020-06-17 09:12:33 -06:00
David efe998ecf4 Merge pull request #3280 from crobibero/api-plugin
Move PluginService to Jellyfin.Api
2020-06-17 17:07:37 +02:00
crobibero 0c01b6817b Add X-Forward-(For/Proto) support 2020-06-17 08:05:30 -06:00
crobibero 4962e230af revert adding Jellyfin to auth header 2020-06-17 06:52:15 -06:00
Max Git 000768f56c Merge branch 'master' into feature/ffmpeg-version-check 2020-06-17 10:17:50 +02:00
Max Git 33f78df051 Merge branch 'master' into feature/ffmpeg-version-check 2020-06-17 02:52:38 +02:00
crobibero 29917699f0 Further cleanup and add final tests 2020-06-16 16:55:02 -06:00
Cody Robibero b451eb0bdc Update Emby.Server.Implementations/HttpServer/Security/AuthorizationContext.cs
Co-authored-by: Patrick Barron <18354464+barronpm@users.noreply.github.com>
2020-06-16 16:45:17 -06:00
crobibero b22fdbf59e Add tests and cleanup 2020-06-16 16:42:10 -06:00
crobibero c24666253c Add Default authorization policy 2020-06-16 14:15:58 -06:00
crobibero 774fdbd031 Fix tests. 2020-06-16 14:12:40 -06:00
David a952d15670 Await Task from _libraryManager 2020-06-16 16:08:31 +02:00
Max Git e6c197b969 Cleanup 2020-06-16 01:09:41 +02:00
Max Git a57d664c7d Merge branch 'master' into feature/ffmpeg-version-check 2020-06-16 00:53:10 +02:00
crobibero a8adbef74f Add GetAuthorizationInfo for netcore HttpRequest 2020-06-15 13:21:18 -06:00
crobibero 4aac936721 Add more authorization handlers, actually authorize requests 2020-06-15 12:49:54 -06:00
Max Git ef3200e178 Remove redundant cast 2020-06-15 19:50:09 +02:00
Max Git 11f3a0dc58 Use Version instead of double. Use correct version number for libavdevice. 2020-06-15 15:10:59 +02:00
Max Git 3fbc387257 Fix stylecop error like on master. 2020-06-15 12:15:05 +02:00
Max Git 37e737e012 Merge from master & fix conflict 2020-06-15 12:12:03 +02:00
Anthony Lavado cf9223b8cb Merge pull request #3340 from crobibero/api-migration-merge
Merge master into api-migration
2020-06-14 22:50:49 -04:00
crobibero 524243a934 fix merge conflict 2020-06-14 20:18:06 -06:00
crobibero 589735f60c Merge remote-tracking branch 'upstream/master' into HEAD 2020-06-14 20:15:26 -06:00
dkanada e2b2f74b47 Merge pull request #3319 from Ullmie02/api-204
Use Http status code 204 instead of 200
2020-06-15 10:51:28 +09:00
Patrick Barron 293187480f Merge pull request #3288 from Ullmie02/api-subtitles
Move SubtitleService to Jellyfin.Api
2020-06-14 19:06:01 -04:00
David edc5611ec7 Fix null reference to fix CI 2020-06-14 13:50:51 +02:00
David 8a8bf4b686 Merge remote-tracking branch 'upstream/api-migration' into api-sessionservice 2020-06-14 12:49:43 +02:00
David ac0a3180d7 Merge remote-tracking branch 'upstream/api-migration' into api-librarystructure 2020-06-14 12:49:19 +02:00
David 9bedd9ac3c Merge remote-tracking branch 'upstream/api-migration' into api-204 2020-06-14 12:48:17 +02:00
David d01f56bc42 Merge remote-tracking branch 'upstream/api-migration' into api-subtitles 2020-06-14 12:45:49 +02:00
David cf3d0f8d51 Merge remote-tracking branch 'remotes/upstream/api-migration' into api-system 2020-06-14 12:43:10 +02:00
crobibero 276750f310 Move ItemRefreshService.cs to Jellyfin.Api 2020-06-13 15:33:42 -06:00
crobibero 13b53db4ef fix build 2020-06-13 15:31:22 -06:00
crobibero 2d4998c578 fix build 2020-06-13 15:28:04 -06:00
crobibero ae514da840 Merge remote-tracking branch 'upstream/api-migration' into api-environment 2020-06-13 15:27:03 -06:00
crobibero 8a834fb728 Merge remote-tracking branch 'upstream/api-migration' into api-filter 2020-06-13 15:25:02 -06:00
crobibero 81030a0a5a Merge remote-tracking branch 'upstream/api-migration' into api-plugin 2020-06-13 15:24:34 -06:00
crobibero ce37c40749 Merge remote-tracking branch 'upstream/api-migration' into api-item-lookup 2020-06-13 15:23:42 -06:00
crobibero 50f6d8029d Merge remote-tracking branch 'upstream/api-migration' into api-item-update 2020-06-13 15:21:50 -06:00
crobibero 9ee6ea86ea Merge remote-tracking branch 'upstream/api-migration' into api-localization 2020-06-13 15:21:13 -06:00
crobibero bcce8190ff Merge remote-tracking branch 'upstream/api-migration' into api-channel 2020-06-13 15:20:13 -06:00
crobibero 3c18745f53 Remove RemoteImageService.cs 2020-06-13 15:15:27 -06:00
crobibero 552a74eb6e Fix build 2020-06-13 15:13:57 -06:00
crobibero 6c7cc92a09 Merge remote-tracking branch 'upstream/api-migration' into api-image2 2020-06-13 15:09:02 -06:00
crobibero bd09753976 Merge remote-tracking branch 'upstream/api-migration' into api-image 2020-06-13 15:07:04 -06:00
crobibero 39376bace3 Merge remote-tracking branch 'upstream/api-migration' into api-scheduled-tasks 2020-06-13 15:06:07 -06:00
crobibero 7666a1201f Merge remote-tracking branch 'upstream/api-migration' into api-display-preferences 2020-06-13 15:03:43 -06:00
Joshua M. Boniface 0011e8df47 Merge pull request #3332 from crobibero/api-migration
Merge master into api-migration
2020-06-13 16:28:37 -04:00
crobibero ec3e15db57 Fix merge and build 2020-06-13 13:11:41 -06:00
crobibero 829eb1a849 merge master into api-migration 2020-06-13 13:03:09 -06:00
dkanada d975ad155e Merge pull request #3220 from crobibero/api-swagger-auth
Add Authentication to openapi generation.
2020-06-13 13:48:33 +09:00
crobibero 6d5c09c499 Remove duplicate swaggerdoc 2020-06-12 14:40:06 -06:00
crobibero 720fff30a4 readd swagger version 2020-06-12 14:37:55 -06:00
crobibero 2fe65d99f6 Merge remote-tracking branch 'upstream/api-migration' into api-swagger-auth 2020-06-12 14:35:51 -06:00
David fff3c789b9 Move SessionService to Jellyfin.Api 2020-06-12 18:54:25 +02:00
David 618b893c48 Move LibraryStructureService to Jellyfin.Api 2020-06-12 15:39:06 +02:00
David 043d76bd6e Use Http status code 204 instead of 200 2020-06-12 12:38:13 +02:00
Patrick Barron 6429e60c40 Merge pull request #2931 from crobibero/api-attachment
AttachmentsService to Jellyfin.Api
2020-06-11 23:56:16 -04:00
Patrick Barron 6a62c3c628 Merge pull request #3281 from Ullmie02/api-activitylog
Move ActivityLogService to Jellyfin.Api
2020-06-11 23:00:41 -04:00
Patrick Barron a6573e015f Merge pull request #2983 from bruceCoelho/api-migration
PackageService to Jellyfin.API
2020-06-11 22:52:35 -04:00
Max Git 0f69ca8fa9 Merge branch 'master' into feature/ffmpeg-version-check 2020-06-11 20:47:12 +02:00
David a47ff4043f Disable CA1801 2020-06-11 16:01:41 +02:00
David fcbae95d19 Use 'await using Stream' instead of 'using Stream' 2020-06-11 15:57:31 +02:00
Max Git 620a1a106d Merge branch 'master' into feature/ffmpeg-version-check 2020-06-11 14:50:29 +02:00
David 8178b19470 Fix suggestions 2020-06-11 12:29:56 +02:00
David f64e8e8757 Move SubtitleService to Jellyfin.Api 2020-06-10 18:20:54 +02:00
Cody Robibero 355682620d Update Jellyfin.Api/Controllers/FilterController.cs
Co-authored-by: Patrick Barron <18354464+barronpm@users.noreply.github.com>
2020-06-10 09:23:27 -06:00
Cody Robibero 393f5f0c25 Update Jellyfin.Api/Controllers/FilterController.cs
Co-authored-by: Patrick Barron <18354464+barronpm@users.noreply.github.com>
2020-06-10 09:23:20 -06:00
Cody Robibero c61efba0c6 Merge pull request #3286 from Ullmie02/api-apikey
Move ApiKeyService to Jellyfin.Api
2020-06-10 09:22:59 -06:00
David 6a70081643 Move ApiKeyService to Jellyfin.Api 2020-06-10 15:57:31 +02:00
David b16da09549 Move /System Endpoint to Jellyfin.Api 2020-06-10 15:18:13 +02:00
David 1bf6c085ed Move File; Move Route; use DateTime? in Query 2020-06-10 13:09:23 +02:00
Cody Robibero 647b78a3c0 Merge pull request #3226 from Ullmie02/api-searchservice
Move SearchService to new API endpoint
2020-06-09 20:43:03 -06:00
dkanada ac9bef9465 Merge pull request #3227 from crobibero/api-first-user
Add second endpoint for Startup/User
2020-06-10 11:03:35 +09:00
ConfusedPolarBear 82887ec710 Add IDisposable 2020-06-09 18:40:35 -05:00
ConfusedPolarBear 86624e92d3 Finish addressing review comments 2020-06-09 15:18:26 -05:00
ConfusedPolarBear 7d9b552403 Apply suggestions from code review
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-06-09 13:28:40 -05:00
David dc190e5683 Move ActivityLogService to Jellyfin.Api 2020-06-09 18:56:17 +02:00
crobibero 0b778b8851 Move PluginService to Jellyfin.Api 2020-06-09 09:57:01 -06:00
David Ullmer 1491e93d84 Add response code documentation 2020-06-09 11:00:37 +02:00
dkanada b3f8928fbb Merge pull request #3218 from crobibero/api-cors
Enable CORS and Authentation
2020-06-09 14:29:52 +09:00
dkanada 26f937c369 Merge pull request #3260 from crobibero/api-css-formatter
Api css formatter
2020-06-09 14:23:11 +09:00
Erik Rigtorp 75efb8f52d Use additional unicode chars for year extraction 2020-06-08 16:35:20 -07:00
Erik Rigtorp 82ff3fa75d Add additional resolver tests 2020-06-08 16:35:20 -07:00
ConfusedPolarBear 001c78573e Add XML documentation 2020-06-08 17:14:20 -05:00
ConfusedPolarBear 0d6a63bf84 Make all properties nullable 2020-06-08 15:48:18 -05:00
ConfusedPolarBear 35ff2be9d7 Merge remote-tracking branch 'upstream/master' into quickconnect 2020-06-08 14:43:58 -05:00
crobibero 7a77b9928f Move PlaylistService to Jellyfin.Api 2020-06-08 13:14:55 -06:00
crobibero d97e306cda Move PlaylistService to Jellyfin.Api 2020-06-08 13:14:41 -06:00
crobibero a4455af3e9 Move LocalizationService to Jellyfin.Api 2020-06-08 12:34:17 -06:00
crobibero 81d3ec7205 Move ItemUpdateService to Jellyfin.Api 2020-06-08 12:20:33 -06:00
crobibero 6f64e48c54 Add response codes 2020-06-08 07:37:16 -06:00
crobibero 16e26be87f Move ItemLookupService to Jellyfin.Api 2020-06-08 07:22:40 -06:00
dkanada e153214e76 Merge pull request #3219 from crobibero/api-config-json
Switch Config controller to System.Text.Json
2020-06-08 15:24:15 +09:00
crobibero dd5579e0eb Move FilterService to Jellyfin.Api 2020-06-07 22:04:59 -06:00
David cefa9d3c08 Add default values for parameters and fix spelling 2020-06-07 18:10:08 +02:00
David 7fa374f8a2 Move Split method from BaseJellyfinApiController.cs to RequestHelpers.cs 2020-06-07 15:41:49 +02:00
David f3029428cd Fix suggestions 2020-06-07 15:33:54 +02:00
dkanada f7f59fe9a3 Merge branch 'api-migration' into api-config-json 2020-06-07 15:34:31 +09:00
crobibero 6be862545a Merge remote-tracking branch 'upstream/api-migration' into api-cors 2020-06-06 17:07:29 -06:00
crobibero 48cbac934b Don't clear media types 2020-06-06 16:53:49 -06:00
crobibero 04abb281c0 Add CSS output formatter. 2020-06-06 16:52:23 -06:00
crobibero 598cd94c4d Add CSS output formatter. 2020-06-06 16:51:21 -06:00
Max Git 268e87bbf2 Merge branch 'master' into feature/ffmpeg-version-check 2020-06-05 00:57:35 +02:00
crobibero 6c53e36ccf Fix Api Routing 2020-06-04 15:17:05 -06:00
crobibero a787efc660 Merge remote-tracking branch 'upstream/api-migration' into api-scheduled-tasks 2020-06-04 15:16:04 -06:00
crobibero fd913d73e3 Revert authorized endpoints to legacy api 2020-06-04 10:10:36 -06:00
crobibero 22f56842bd Apply review suggestions 2020-06-04 07:59:11 -06:00
Cody Robibero 601e4a88c9 Merge pull request #2933 from crobibero/api-device
DeviceService to Jellyfin.Api
2020-06-04 07:29:23 -06:00
crobibero 3e749eabdf Fix doc errors 2020-06-04 07:29:00 -06:00
dkanada 35366772b2 Merge pull request #3186 from Ullmie02/asp-api-exception
Don't send Exception message in Production Environment
2020-06-04 14:49:36 +09:00
Max Git beb8a58643 Merge branch 'master' into feature/ffmpeg-version-check 2020-06-03 23:21:12 +02:00
crobibero 88b6c26472 Merge remote-tracking branch 'remotes/upstream/api-migration' into api-channel
# Conflicts:
#	Jellyfin.Server/Extensions/ApiServiceCollectionExtensions.cs
2020-06-03 09:38:49 -06:00
Cody Robibero ab4597958a Merge pull request #3232 from crobibero/api-json-dictionary
Add Dictionary with non-string keys to System.Text.Json
2020-06-03 09:13:37 -06:00
crobibero 8b59934ccb remove extra Clear call 2020-06-03 09:12:12 -06:00
Max Git 5df00cb2b8 Merge branch 'master' into feature/ffmpeg-version-check 2020-06-03 12:26:50 +02:00
Max Git e81140be20 Merge branch 'feature/ffmpeg-version-check' of https://github.com/rotvel/jellyfin into feature/ffmpeg-version-check 2020-06-02 20:18:02 +02:00
Max Git 5577cc375e Merge branch 'master' into feature/ffmpeg-version-check 2020-06-02 20:17:13 +02:00
crobibero 01a5103fef Add Dictionary with non-string keys to System.Text.Json 2020-06-02 11:47:33 -06:00
Cody Robibero 93bca7ab50 Merge pull request #3153 from crobibero/api-json-enum
Fix Json Enum conversion, map all JsonDefaults properties to API
2020-06-02 11:15:08 -06:00
crobibero 2476848dd3 Fix tests 2020-06-02 10:12:55 -06:00
crobibero cf9cbfff56 Add second endpoint for Startup/User 2020-06-02 08:28:37 -06:00
crobibero 0e41c4727d revert to System.Text.JsonSerializer 2020-06-02 08:23:12 -06:00
crobibero 4fe0beec16 Fix Json Enum conversion, map all JsonDefaults properties to API 2020-06-02 08:23:12 -06:00
David 638cfa32ab Move SearchService to new API endpoint 2020-06-02 15:07:07 +02:00
David 6d9f564a94 Remove duplicate code
Co-authored-by: Vasily <JustAMan@users.noreply.github.com>
2020-06-02 15:04:55 +02:00
crobibero aed6f57f11 Remove invalid docs and null check 2020-06-01 20:54:02 -06:00
crobibero e30a85025f Remove log spam when using legacy api 2020-06-01 12:42:59 -06:00
crobibero dfe873fc29 Add Authentication to openapi generation. 2020-06-01 11:12:33 -06:00
crobibero 9f0b5f347a Switch Config controller to System.Text.Json 2020-06-01 11:06:15 -06:00
crobibero b944b8f8c5 Enable CORS and Authentication. 2020-06-01 11:03:08 -06:00
Cody Robibero 297ab2e423 Merge pull request #2962 from crobibero/api-config
Move ConfigurationService to Jellyfin.Api
2020-06-01 09:29:34 -06:00
rotvel 480fd0a66a Update MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-06-01 16:00:58 +02:00
Max Git e103d087d3 Try harder at detecting FFmpeg version and enable the validation 2020-06-01 07:10:15 +02:00
ConfusedPolarBear 5d281adedd Merge remote-tracking branch 'upstream/master' into quickconnect 2020-05-29 17:42:42 -05:00
ferferga ba03ed65fe Remove "download images in advance" option 2020-05-27 19:13:41 +02:00
David a5a39300bc Don't send Exception message in Production Environment 2020-05-26 16:55:27 +02:00
Bond-009 5c95037234 Merge pull request #2953 from crobibero/api-startup
Convert StartupController to ActionResult
2020-05-25 15:17:42 +02:00
crobibero e02cc8da53 Add Swashbuckle TODO note 2020-05-24 16:04:47 -06:00
crobibero 483e24607b Fix optional parameter binding 2020-05-24 16:01:53 -06:00
crobibero 40762f13c6 Fix route parameter casing 2020-05-24 15:54:34 -06:00
crobibero 62ea9b2821 Merge upstream/api-migration 2020-05-24 12:33:16 -06:00
crobibero 1f9cda6a66 Add ImageTags to SwaggerGenTypes 2020-05-24 12:19:37 -06:00
crobibero 70c42eb0ac Apply review suggestions 2020-05-24 12:19:26 -06:00
crobibero a4b3f2e32b Add missing route attribute 2020-05-23 18:19:49 -06:00
crobibero 341b947cde Move int64 converter to JsonDefaults location 2020-05-22 10:48:01 -06:00
crobibero fb068b76a1 Use correct MediaTypeName 2020-05-20 07:18:51 -06:00
crobibero 5f0c37d574 Fix DefaultDirectoryBrowserInfo naming 2020-05-19 13:22:09 -06:00
crobibero 070edd9e5b Fix MediaType usage 2020-05-19 13:13:07 -06:00
crobibero 2689865858 Remove unused using 2020-05-19 13:02:35 -06:00
crobibero 51d54a8ca4 Fix return content type 2020-05-19 13:02:02 -06:00
crobibero b28dd47a0f implement review suggestions 2020-05-19 12:58:09 -06:00
crobibero 2f2bceb110 Remove default parameter values 2020-05-19 12:56:57 -06:00
Bruce 24543b04c1 Applying review suggestion to documentation 2020-05-19 18:13:42 +01:00
crobibero cdb25e355c Fix return value 2020-05-19 10:06:25 -06:00
crobibero cf78edc979 Fix Authorize attributes 2020-05-19 10:05:23 -06:00
crobibero a11a193439 Remove CameraUpload endpoints 2020-05-19 10:04:09 -06:00
crobibero e03c97d7cd update xml docs 2020-05-19 10:02:52 -06:00
crobibero 6c376f18f7 update xml docs 2020-05-19 09:47:02 -06:00
crobibero 6dbbfcbfbe update xml docs 2020-05-19 09:29:59 -06:00
crobibero 839de72f9a Fix authentication attribute 2020-05-19 09:24:04 -06:00
crobibero 2923013c6e Clean Remote Image Controller. 2020-05-19 09:23:28 -06:00
crobibero 98bd61e364 Clean up routes 2020-05-19 09:14:37 -06:00
crobibero c998935d29 Apply review suggestions 2020-05-19 09:06:37 -06:00
crobibero 1c471d5855 Clean UpdateDisplayPreferences endpoint 2020-05-19 09:01:00 -06:00
crobibero a7a725173d Rename to AttachmentsController -> VideoAttachmentsController 2020-05-19 08:55:15 -06:00
crobibero 26a2bea179 Update endpoint docs 2020-05-19 08:55:15 -06:00
crobibero 177339e8d5 Fix Authorize attributes 2020-05-19 08:55:15 -06:00
crobibero 15e9fbb923 move to ActionResult<T> 2020-05-19 08:55:15 -06:00
crobibero 84fcb4926c Remove exception handler 2020-05-19 08:55:15 -06:00
crobibero 8eac528815 nullable 2020-05-19 08:55:15 -06:00
crobibero 45d750f106 Move AttachmentsService to AttachmentsController 2020-05-19 08:55:15 -06:00
crobibero c4f8ba55f2 Rename to AttachmentsController -> VideoAttachmentsController 2020-05-19 08:28:02 -06:00
crobibero 37f55b5c21 apply doc suggestions 2020-05-17 19:56:02 -06:00
dkanada ebc24470e3 Merge pull request #3075 from crobibero/api-operationid
Add OperationId to SwaggerGen
2020-05-17 00:08:54 +09:00
redSpoutnik 2363ad5449 Add Post subtitle in API 2020-05-08 21:56:29 +02:00
crobibero 2b1b9a64b6 Add OperationId to SwaggerGen 2020-05-08 08:40:37 -06:00
Mark Monteiro 6e1120c623 Merge pull request #3048 from jellyfin/api-notification-docs
Fix XML doc generation
2020-05-03 16:45:57 -04:00
crobibero d7d8118b42 Fix xml docs 2020-05-03 14:02:15 -06:00
Bond-009 f2bace2a07 Merge pull request #2925 from crobibero/redoc
Enhance Swagger Generation
2020-05-03 19:36:42 +02:00
Bond-009 b1a2fb60f2 Merge pull request #2876 from ZadenRB/asp-net-notifications-service
Migrates the notifications service to use ASP.NET API framework
2020-05-03 17:33:01 +02:00
crobibero 35dbcea931 Return array -> ienumerable 2020-05-02 18:47:05 -06:00
crobibero cbd4a64e67 Update endpoint docs 2020-05-02 18:46:27 -06:00
crobibero 25002483a3 Update endpoint docs 2020-05-02 17:23:02 -06:00
crobibero 7516e3ebbe Update endpoint docs 2020-05-02 17:12:56 -06:00
crobibero f67daa84b0 Update endpoint docs 2020-05-02 17:10:59 -06:00
crobibero 0017163f39 Update endpoint docs 2020-05-02 17:06:29 -06:00
Bruce 0d8253d8e2 Updated documentation according to discussion in jellyfin#2872 2020-05-01 15:17:40 +01:00
ZadenRB 82231b4393 Update to return IEnumerable directly where possible 2020-04-29 15:53:29 -06:00
crobibero 7a3925b863 Fix docs 2020-04-29 09:41:12 -06:00
crobibero 97ecffceb7 Add response code descriptions 2020-04-29 08:59:34 -06:00
crobibero 806ae1bc07 Remove versioned API 2020-04-29 08:04:05 -06:00
Cody Robibero d491b1b45f Merge branch 'api-migration' into redoc 2020-04-29 07:38:18 -06:00
dkanada 2cb0f6f126 Merge pull request #2952 from crobibero/api-exception-middleware
Add Exception Middleware
2020-04-29 22:36:41 +09:00
ZadenRB c61a200c9d Revise documentation based on discussion in #2872 2020-04-28 09:30:59 -06:00
crobibero 068368df63 Order actions by route, then http method 2020-04-26 23:28:32 -06:00
crobibero 000088f8f9 init 2020-04-25 18:18:33 -06:00
crobibero 890e659cd3 Fix autolaunch & redirect of swagger. 2020-04-25 15:12:18 -06:00
Bruce Coelho 5aced0ea0f Apply suggestions from code review
Co-Authored-By: Cody Robibero <cody@robibe.ro>
2020-04-25 21:41:56 +01:00
Bruce Coelho f66714561e Update Jellyfin.Api/Controllers/PackageController.cs
Applying requested changes to PackageController

Co-Authored-By: Cody Robibero <cody@robibe.ro>
2020-04-25 21:32:49 +01:00
Bruce c7fe8b04cc PackageService to Jellyfin.API 2020-04-25 19:59:31 +01:00
Bond-009 383bc45372 Merge pull request #2932 from crobibero/api-casing
Add optional camelCase formatter
2020-04-25 11:09:38 +02:00
crobibero 714aaefbcc Transfer EnvironmentService to Jellyfin.Api 2020-04-24 18:20:36 -06:00
ConfusedPolarBear 70e50dfa90 Apply suggestions from code review 2020-04-24 18:51:19 -05:00
ZadenRB 85853f9ce3 Add back in return type documentation 2020-04-24 17:11:11 -06:00
ConfusedPolarBear 33390153fd Minor fix 2020-04-23 23:44:15 -05:00
crobibero 0765ef8bda Apply suggestions, fix warning 2020-04-23 21:41:10 -06:00
crobibero b8508a57d8 oop 2020-04-23 21:38:40 -06:00
crobibero be50fae38a Address comments 2020-04-23 21:24:40 -06:00
crobibero 3c34d95608 Address comments 2020-04-23 21:23:29 -06:00
crobibero 311f2e2bc3 Fix Authorize attributes 2020-04-23 10:07:21 -06:00
crobibero f3da5dc8b7 Fix Authorize attributes 2020-04-23 10:04:37 -06:00
crobibero bb8e738a08 Fix Authorize attributes 2020-04-23 10:03:54 -06:00
crobibero 5ca7e1fd79 Move ChannelService to Jellyfin.Api 2020-04-23 08:54:28 -06:00
crobibero 1223eb5a22 Remove unneeded Ok calls. 2020-04-23 08:03:41 -06:00
crobibero 4d894c4344 Remove unneeded Ok calls. 2020-04-23 07:55:47 -06:00
crobibero c7c2f9da90 Apply suggestions 2020-04-23 07:51:04 -06:00
crobibero c6eebca335 Apply suggestions and add URL to log message 2020-04-23 07:29:28 -06:00
crobibero a06d271725 Move ConfigurationService to Jellyfin.Api 2020-04-22 13:07:21 -06:00
ZadenRB 7693cc0db0 Use ActionResult return type for all endpoints 2020-04-22 10:00:10 -06:00
ZadenRB 2a49b19a7c Update documentation of startIndex
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2020-04-22 00:21:37 -06:00
crobibero 461b298be7 Migrate DlnaServerController to Jellyfin.Api 2020-04-21 19:15:27 -06:00
crobibero f5385e4735 Move Emby.Dlna DlnaService.cs to Jellyfin.Api 2020-04-21 18:12:46 -06:00
crobibero 041d674eb6 Fix swagger ui Document Title 2020-04-21 16:19:26 -06:00
crobibero 2542a27bd5 Fix documentation endpoint for use with baseUrl 2020-04-21 16:15:31 -06:00
crobibero 3ab61dbdc2 bump swashbuckle 2020-04-21 15:49:04 -06:00
crobibero 14c94b4e5f Merge branch 'api-migration' of https://github.com/jellyfin/jellyfin into redoc 2020-04-21 15:12:04 -06:00
crobibero 7db3b035a6 move to ActionResult<T> 2020-04-21 14:25:03 -06:00
crobibero 88b856796a move to ActionResult<T> 2020-04-21 14:23:08 -06:00
crobibero 9ae895ba21 move to ActionResult<T> 2020-04-21 14:09:06 -06:00
crobibero 02a78aaae9 move to ActionResult<T> 2020-04-21 14:07:11 -06:00
crobibero 98224dee9e move to ActionResult<T> 2020-04-21 14:01:47 -06:00
crobibero 927696c403 move to ActionResult<T> 2020-04-21 13:59:43 -06:00
crobibero 466e20ea8c move to ActionResult<T> 2020-04-21 13:57:11 -06:00
ZadenRB 69d9bfb233 Make documentation of parameters clearer
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2020-04-21 12:10:34 -06:00
crobibero 3ef8448a51 Return to previous exception handle implementation 2020-04-21 09:09:05 -06:00
crobibero b8fd9c785e Convert StartupController to IActionResult 2020-04-21 08:42:48 -06:00
crobibero 14361c68cf Add ProducesResponseType to base controller 2020-04-21 08:38:31 -06:00
crobibero fe632146dc Move Json Options to static class for easier access. 2020-04-21 08:17:13 -06:00
crobibero 8ab9949db5 Remove exception handler 2020-04-21 08:02:07 -06:00
crobibero a6cd852675 Remove exception handler 2020-04-21 07:58:54 -06:00
crobibero 30609236ab Remove exception handler 2020-04-21 07:57:45 -06:00
crobibero 04119c0d40 Remove exception handler 2020-04-21 07:55:57 -06:00
crobibero 5ef71d592b Remove exception handler 2020-04-21 07:55:01 -06:00
crobibero 08eba82bb7 Remove exception handler 2020-04-21 07:52:33 -06:00
crobibero 1175ce3f97 Add Exception Middleware 2020-04-21 07:36:22 -06:00
ZadenRB dae6965710 Remove documentation of void return type 2020-04-21 00:24:35 -06:00
ZadenRB 6c8e1d37bd Remove more unnecessary IActionResult 2020-04-20 23:53:09 -06:00
ZadenRB 67efcbee05 Remove error handlers, to be implemented at a global level in a separate PR 2020-04-20 20:16:58 -06:00
crobibero 766d2ee413 Move RemoteImageService to Jellyfin.API 2020-04-20 14:21:06 -06:00
crobibero 376619369d fix build 2020-04-20 13:12:54 -06:00
crobibero e151d539f2 Move ImageByNameService to Jellyfin.Api 2020-04-20 13:06:29 -06:00
crobibero fff2a40ffc Remove StringEnumConverter 2020-04-20 07:24:13 -06:00
ZadenRB 688240151b Enable nullable reference types on new class, remove unnecessary documenation and return types 2020-04-20 00:00:00 -06:00
ZadenRB 16cae23bbe Add response type annotations, return IActionResult to handle errors 2020-04-19 21:06:28 -06:00
crobibero 440f060da6 Fix Authenticated Roles 2020-04-19 19:36:18 -06:00
crobibero 21b54b4ad8 Move DeviceService to DevicesController 2020-04-19 19:33:55 -06:00
crobibero c89dc8921f Fix PascalCase 2020-04-19 18:10:59 -06:00
crobibero ad67081840 add camelCase formatter 2020-04-19 18:04:36 -06:00
crobibero 1fc6825410 nullable 2020-04-19 17:37:15 -06:00
crobibero a41d5fcea4 Move AttachmentsService to AttachmentsController 2020-04-19 17:36:05 -06:00
crobibero c5d709f77e remove todo 2020-04-19 16:35:31 -06:00
crobibero a96db5f48e Remove old scheduled tasks service 2020-04-19 16:32:03 -06:00
crobibero 4a960892c2 Add Authorize and BindRequired 2020-04-19 16:31:09 -06:00
crobibero d8fc4f91db burn ToOptimizedResult 2020-04-19 16:29:29 -06:00
crobibero 5d9c40ec72 move scheduled tasks to Jellyfin.Api 2020-04-19 16:26:20 -06:00
ZadenRB 7c8188194b Address PR comments, and revert changes that changed the API schema 2020-04-19 13:19:15 -06:00
crobibero e6b873f2ae Fix missing attributes 2020-04-19 12:56:16 -06:00
crobibero 60607ab60c Fix saving DisplayPreferences 2020-04-19 12:34:34 -06:00
crobibero c31b9f5169 Fix build & runtime errors 2020-04-19 12:30:10 -06:00
crobibero a282fbe966 Move DisplayPreferences to Jellyfin.Api 2020-04-19 12:26:38 -06:00
crobibero 86d68e23e7 Add DisplayPreferencesController 2020-04-19 12:06:18 -06:00
crobibero 72745f4722 fix formatting 2020-04-19 11:28:56 -06:00
crobibero 5da88fac4d Enable string enum converter 2020-04-19 11:24:32 -06:00
crobibero e72a543570 Add Redoc, move docs to api-docs/ 2020-04-19 11:24:03 -06:00
crobibero 8a7e4cd639 add redoc 2020-04-19 10:51:51 -06:00
ConfusedPolarBear 387a07c6dd Add persistent setting configuration and temporary activation 2020-04-19 01:33:09 -05:00
ConfusedPolarBear 36f3e933a2 Add quick connect 2020-04-15 14:49:20 -05:00
ZadenRB 558b50a094 Remove unnecessary assembly, update casing, enable nullable reference types on notification DTOs. 2020-04-15 09:29:29 -06:00
ZadenRB ad1c880751 Lowercase parameters 2020-04-15 00:34:50 -06:00
ZadenRB 1180b9746f Migrates the notifications service to use ASP.NET MVC framework 2020-04-15 00:01:31 -06:00
Pika 7aba10eff6 Forgot one 2020-04-08 18:50:25 -04:00
Pika d85ca5276b Port changes from #2773 2020-04-08 18:40:38 -04:00
Pika 1cf31229d8 Use embedded title for other track types 2020-04-06 13:49:35 -04:00
1578 changed files with 72227 additions and 59059 deletions
+17 -13
View File
@@ -7,15 +7,17 @@ parameters:
default: "ubuntu-latest"
- name: DotNetSdkVersion
type: string
default: 3.1.100
default: 5.0.103
jobs:
- job: CompatibilityCheck
displayName: Compatibility Check
dependsOn: Build
condition: and(succeeded(), variables['System.PullRequest.PullRequestNumber'])
pool:
vmImage: "${{ parameters.LinuxImage }}"
# only execute for pull requests
condition: and(succeeded(), variables['System.PullRequest.PullRequestNumber'])
strategy:
matrix:
${{ each Package in parameters.Packages }}:
@@ -23,7 +25,7 @@ jobs:
NugetPackageName: ${{ Package.value.NugetPackageName }}
AssemblyFileName: ${{ Package.value.AssemblyFileName }}
maxParallel: 2
dependsOn: Build
steps:
- checkout: none
@@ -34,32 +36,33 @@ jobs:
version: ${{ parameters.DotNetSdkVersion }}
- task: DotNetCoreCLI@2
displayName: 'Install ABI CompatibilityChecker tool'
displayName: 'Install ABI CompatibilityChecker Tool'
inputs:
command: custom
custom: tool
arguments: 'update compatibilitychecker -g'
- task: DownloadPipelineArtifact@2
displayName: "Download New Assembly Build Artifact"
displayName: 'Download New Assembly Build Artifact'
inputs:
source: "current"
source: 'current'
artifact: "$(NugetPackageName)"
path: "$(System.ArtifactsDirectory)/new-artifacts"
runVersion: "latest"
- task: CopyFiles@2
displayName: "Copy New Assembly Build Artifact"
displayName: 'Copy New Assembly Build Artifact'
inputs:
sourceFolder: $(System.ArtifactsDirectory)/new-artifacts
contents: "**/*.dll"
contents: '**/*.dll'
targetFolder: $(System.ArtifactsDirectory)/new-release
cleanTargetFolder: true
overWrite: true
flattenFolders: true
- task: DownloadPipelineArtifact@2
displayName: "Download Reference Assembly Build Artifact"
displayName: 'Download Reference Assembly Build Artifact'
enabled: false
inputs:
source: "specific"
artifact: "$(NugetPackageName)"
@@ -70,18 +73,19 @@ jobs:
runBranch: "refs/heads/$(System.PullRequest.TargetBranch)"
- task: CopyFiles@2
displayName: "Copy Reference Assembly Build Artifact"
displayName: 'Copy Reference Assembly Build Artifact'
enabled: false
inputs:
sourceFolder: $(System.ArtifactsDirectory)/current-artifacts
contents: "**/*.dll"
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'
enabled: false
inputs:
command: custom
custom: compat
+5 -5
View File
@@ -1,7 +1,7 @@
parameters:
LinuxImage: 'ubuntu-latest'
RestoreBuildProjects: 'Jellyfin.Server/Jellyfin.Server.csproj'
DotNetSdkVersion: 3.1.100
DotNetSdkVersion: 5.0.103
jobs:
- job: Build
@@ -64,28 +64,28 @@ jobs:
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: false
- task: PublishPipelineArtifact@0
- task: PublishPipelineArtifact@1
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
- task: PublishPipelineArtifact@1
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
- task: PublishPipelineArtifact@1
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
- task: PublishPipelineArtifact@1
displayName: 'Publish Artifact Common'
condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
inputs:
+120 -24
View File
@@ -22,6 +22,12 @@ jobs:
BuildConfiguration: ubuntu.armhf
Linux.amd64:
BuildConfiguration: linux.amd64
Linux.amd64-musl:
BuildConfiguration: linux.amd64-musl
Linux.arm64:
BuildConfiguration: linux.arm64
Linux.armhf:
BuildConfiguration: linux.armhf
Windows.amd64:
BuildConfiguration: windows.amd64
MacOS:
@@ -42,7 +48,7 @@ jobs:
- 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')
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/v')
- task: PublishPipelineArtifact@1
displayName: 'Publish Release'
@@ -65,6 +71,38 @@ jobs:
contents: '**'
targetFolder: '/srv/repository/incoming/azure/$(Build.BuildNumber)/$(BuildConfiguration)'
- job: OpenAPISpec
dependsOn: Test
condition: or(startsWith(variables['Build.SourceBranch'], 'refs/heads/master'),startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
displayName: 'Push OpenAPI Spec to repository'
pool:
vmImage: 'ubuntu-latest'
steps:
- task: DownloadPipelineArtifact@2
displayName: 'Download OpenAPI Spec'
inputs:
source: 'current'
artifact: "OpenAPI Spec"
path: "$(System.ArtifactsDirectory)/openapispec"
runVersion: "latest"
- task: SSH@0
displayName: 'Create target directory on repository server'
inputs:
sshEndpoint: repository
runOptions: 'inline'
inline: 'mkdir -p /srv/repository/incoming/azure/$(Build.BuildNumber)'
- task: CopyFilesOverSSH@0
displayName: 'Upload artifacts to repository server'
inputs:
sshEndpoint: repository
sourceFolder: '$(System.ArtifactsDirectory)/openapispec'
contents: 'openapi.json'
targetFolder: '/srv/repository/incoming/azure/$(Build.BuildNumber)'
- job: BuildDocker
displayName: 'Build Docker'
@@ -80,7 +118,15 @@ jobs:
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/v')
- task: Docker@2
displayName: 'Push Unstable Image'
condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/master')
@@ -96,7 +142,7 @@ jobs:
- task: Docker@2
displayName: 'Push Stable Image'
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags')
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/v')
inputs:
repository: 'jellyfin/jellyfin-server'
command: buildAndPush
@@ -105,14 +151,15 @@ jobs:
containerRegistry: Docker Hub
tags: |
stable-$(Build.BuildNumber)-$(BuildConfiguration)
stable-$(BuildConfiguration)
$(JellyfinVersion)-$(BuildConfiguration)
- job: CollectArtifacts
timeoutInMinutes: 20
displayName: 'Collect Artifacts'
continueOnError: true
dependsOn:
- BuildPackage
- BuildDocker
condition: and(succeeded('BuildPackage'), succeeded('BuildDocker'))
pool:
vmImage: 'ubuntu-latest'
@@ -120,44 +167,93 @@ jobs:
steps:
- task: SSH@0
displayName: 'Update Unstable Repository'
continueOnError: true
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
runOptions: 'commands'
commands: nohup sudo /srv/repository/collect-server.azure.sh /srv/repository/incoming/azure $(Build.BuildNumber) unstable &
- task: SSH@0
displayName: 'Update Stable Repository'
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags')
continueOnError: true
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/v')
inputs:
sshEndpoint: repository
runOptions: 'inline'
inline: |
sudo /srv/repository/collect-server.azure.sh /srv/repository/incoming/azure $(Build.BuildNumber)
rm $0
exit
runOptions: 'commands'
commands: nohup sudo /srv/repository/collect-server.azure.sh /srv/repository/incoming/azure $(Build.BuildNumber) &
- job: PublishNuget
displayName: 'Publish NuGet packages'
dependsOn:
- BuildPackage
condition: and(succeeded('BuildPackage'), startsWith(variables['Build.SourceBranch'], 'refs/tags'))
pool:
vmImage: 'ubuntu-latest'
variables:
- name: JellyfinVersion
value: $[replace(variables['Build.SourceBranch'],'refs/tags/v','')]
steps:
- task: NuGetCommand@2
- task: UseDotNet@2
displayName: 'Use .NET 5.0 sdk'
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)'
packageType: 'sdk'
version: '5.0.x'
- task: DotNetCoreCLI@2
displayName: 'Build Stable Nuget packages'
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/v')
inputs:
command: 'custom'
projects: |
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
custom: 'pack'
arguments: -o $(Build.ArtifactStagingDirectory) -p:Version=$(JellyfinVersion)
- task: DotNetCoreCLI@2
displayName: 'Build Unstable Nuget packages'
condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/master')
inputs:
command: 'custom'
projects: |
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
custom: 'pack'
arguments: '--version-suffix $(Build.BuildNumber) -o $(Build.ArtifactStagingDirectory) -p:Stability=Unstable'
- task: PublishBuildArtifacts@1
displayName: 'Publish Nuget packages'
inputs:
pathToPublish: $(Build.ArtifactStagingDirectory)
artifactName: Jellyfin Nuget Packages
- task: NuGetCommand@2
displayName: 'Push Nuget packages to stable feed'
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/v')
inputs:
command: 'push'
packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg'
includeNugetOrg: 'true'
nuGetFeedType: 'external'
publishFeedCredentials: 'NugetOrg'
allowPackageConflicts: true # This ignores an error if the version already exists
- task: NuGetAuthenticate@0
displayName: 'Authenticate to unstable Nuget feed'
condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/master')
- task: NuGetCommand@2
displayName: 'Push Nuget packages to unstable feed'
condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/master')
inputs:
command: 'push'
packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg' # No symbols since Azure Artifact does not support it
nuGetFeedType: 'internal'
publishVstsFeed: '7cce6c46-d610-45e3-9fb7-65a6bfd1b671/a5746b79-f369-42db-93ff-59cd066f9327'
allowPackageConflicts: true # This ignores an error if the version already exists
+11 -6
View File
@@ -10,7 +10,7 @@ parameters:
default: "tests/**/*Tests.csproj"
- name: DotNetSdkVersion
type: string
default: 3.1.100
default: 5.0.103
jobs:
- job: Test
@@ -30,11 +30,11 @@ jobs:
# This is required for the SonarCloud analyzer
- task: UseDotNet@2
displayName: "Install .NET Core SDK 2.1"
displayName: "Install .NET SDK 5.x"
condition: eq(variables['ImageName'], 'ubuntu-latest')
inputs:
packageType: sdk
version: '2.1.805'
version: '5.x'
- task: UseDotNet@2
displayName: "Update DotNet"
@@ -56,7 +56,7 @@ jobs:
inputs:
command: "test"
projects: ${{ parameters.TestProjects }}
arguments: '--configuration Release --collect:"XPlat Code Coverage" --settings tests/coverletArgs.runsettings --verbosity minimal "-p:GenerateDocumentationFile=False"'
arguments: '--configuration Release --collect:"XPlat Code Coverage" --settings tests/coverletArgs.runsettings --verbosity minimal'
publishTestResults: true
testRunTitle: $(Agent.JobName)
workingDirectory: "$(Build.SourcesDirectory)"
@@ -74,7 +74,6 @@ jobs:
- 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/"
@@ -84,10 +83,16 @@ jobs:
- 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
- task: PublishPipelineArtifact@1
displayName: 'Publish OpenAPI Artifact'
condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))
inputs:
targetPath: "tests/Jellyfin.Api.Tests/bin/Release/net5.0/openapi.json"
artifactName: 'OpenAPI Spec'
+17 -5
View File
@@ -6,30 +6,42 @@ variables:
- name: RestoreBuildProjects
value: 'Jellyfin.Server/Jellyfin.Server.csproj'
- name: DotNetSdkVersion
value: 3.1.100
value: 5.0.103
pr:
autoCancel: true
trigger:
batch: true
branches:
include:
- '*'
tags:
include:
- 'v*'
jobs:
- ${{ if not(or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master'))) }}:
- ${{ if not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v')) }}:
- template: azure-pipelines-main.yml
parameters:
LinuxImage: 'ubuntu-latest'
RestoreBuildProjects: $(RestoreBuildProjects)
- ${{ if not(or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master'))) }}:
- ${{ if not(or(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master'))) }}:
- template: azure-pipelines-test.yml
parameters:
ImageNames:
Linux: 'ubuntu-latest'
Windows: 'windows-latest'
macOS: 'macos-latest'
- ${{ if or(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master')) }}:
- template: azure-pipelines-test.yml
parameters:
ImageNames:
Linux: 'ubuntu-latest'
- ${{ if not(or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master'))) }}:
- ${{ if not(or(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master'))) }}:
- template: azure-pipelines-abi.yml
parameters:
Packages:
@@ -47,5 +59,5 @@ jobs:
AssemblyFileName: MediaBrowser.Common.dll
LinuxImage: 'ubuntu-latest'
- ${{ if or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master')) }}:
- ${{ if or(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master')) }}:
- template: azure-pipelines-package.yml
+36
View File
@@ -0,0 +1,36 @@
name: "CodeQL"
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
schedule:
- cron: '24 2 * * 4'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: [ 'csharp' ]
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: '5.0.x'
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
queries: +security-extended
- name: Autobuild
uses: github/codeql-action/autobuild@v1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
+1
View File
@@ -276,3 +276,4 @@ BenchmarkDotNet.Artifacts
web/
web-src.*
MediaBrowser.WebDashboard/jellyfin-web
apiclient/generated
+3
View File
@@ -0,0 +1,3 @@
registry=https://registry.npmjs.org/
@jellyfin:registry=https://pkgs.dev.azure.com/jellyfin-project/jellyfin/_packaging/unstable/npm/registry/
always-auth=true
+17 -3
View File
@@ -6,11 +6,25 @@
"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/netcoreapp3.1/jellyfin.dll",
"program": "${workspaceFolder}/Jellyfin.Server/bin/Debug/net5.0/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
"console": "internalConsole",
"stopAtEntry": false,
"internalConsoleOptions": "openOnSessionStart",
"serverReadyAction": {
"action": "openExternally",
"pattern": "Overriding address\\(es\\) \\'(https?:\\S+)\\'",
}
},
{
"name": ".NET Core Launch (nowebclient)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/Jellyfin.Server/bin/Debug/net5.0/jellyfin.dll",
"args": ["--nowebclient"],
"cwd": "${workspaceFolder}/Jellyfin.Server",
"console": "internalConsole",
"stopAtEntry": false,
"internalConsoleOptions": "openOnSessionStart"
+1 -1
View File
@@ -17,7 +17,7 @@
"type": "process",
"args": [
"test",
"${workspaceFolder}/tests/MediaBrowser.Api.Tests/MediaBrowser.Api.Tests.csproj"
"${workspaceFolder}/tests/Jellyfin.Api.Tests/Jellyfin.Api.Tests.csproj"
],
"problemMatcher": "$msCompile"
}
+14
View File
@@ -7,6 +7,7 @@
- [anthonylavado](https://github.com/anthonylavado)
- [Artiume](https://github.com/Artiume)
- [AThomsen](https://github.com/AThomsen)
- [barongreenback](https://github.com/BaronGreenback)
- [barronpm](https://github.com/barronpm)
- [bilde2910](https://github.com/bilde2910)
- [bfayers](https://github.com/bfayers)
@@ -16,6 +17,7 @@
- [bugfixin](https://github.com/bugfixin)
- [chaosinnovator](https://github.com/chaosinnovator)
- [ckcr4lyf](https://github.com/ckcr4lyf)
- [ConfusedPolarBear](https://github.com/ConfusedPolarBear)
- [crankdoofus](https://github.com/crankdoofus)
- [crobibero](https://github.com/crobibero)
- [cromefire](https://github.com/cromefire)
@@ -47,6 +49,7 @@
- [h1nk](https://github.com/h1nk)
- [hawken93](https://github.com/hawken93)
- [HelloWorld017](https://github.com/HelloWorld017)
- [ikomhoog](https://github.com/ikomhoog)
- [jftuga](https://github.com/jftuga)
- [joern-h](https://github.com/joern-h)
- [joshuaboniface](https://github.com/joshuaboniface)
@@ -56,6 +59,7 @@
- [Larvitar](https://github.com/Larvitar)
- [LeoVerto](https://github.com/LeoVerto)
- [Liggy](https://github.com/Liggy)
- [lmaonator](https://github.com/lmaonator)
- [LogicalPhallacy](https://github.com/LogicalPhallacy)
- [loli10K](https://github.com/loli10K)
- [lostmypillow](https://github.com/lostmypillow)
@@ -76,7 +80,9 @@
- [Nickbert7](https://github.com/Nickbert7)
- [nvllsvm](https://github.com/nvllsvm)
- [nyanmisaka](https://github.com/nyanmisaka)
- [OancaAndrei](https://github.com/OancaAndrei)
- [oddstr13](https://github.com/oddstr13)
- [orryverducci](https://github.com/orryverducci)
- [petermcneil](https://github.com/petermcneil)
- [Phlogi](https://github.com/Phlogi)
- [pjeanjean](https://github.com/pjeanjean)
@@ -98,8 +104,11 @@
- [shemanaev](https://github.com/shemanaev)
- [skaro13](https://github.com/skaro13)
- [sl1288](https://github.com/sl1288)
- [Smith00101010](https://github.com/Smith00101010)
- [sorinyo2004](https://github.com/sorinyo2004)
- [sparky8251](https://github.com/sparky8251)
- [spookbits](https://github.com/spookbits)
- [ssenart] (https://github.com/ssenart)
- [stanionascu](https://github.com/stanionascu)
- [stevehayles](https://github.com/stevehayles)
- [SuperSandro2000](https://github.com/SuperSandro2000)
@@ -132,6 +141,10 @@
- [YouKnowBlom](https://github.com/YouKnowBlom)
- [KristupasSavickas](https://github.com/KristupasSavickas)
- [Pusta](https://github.com/pusta)
- [nielsvanvelzen](https://github.com/nielsvanvelzen)
- [skyfrk](https://github.com/skyfrk)
- [ianjazz246](https://github.com/ianjazz246)
- [peterspenler](https://github.com/peterspenler)
# Emby Contributors
@@ -195,3 +208,4 @@
- [tikuf](https://github.com/tikuf/)
- [Tim Hobbs](https://github.com/timhobbs)
- [SvenVandenbrande](https://github.com/SvenVandenbrande)
- [olsh](https://github.com/olsh)
+26 -5
View File
@@ -1,20 +1,20 @@
ARG DOTNET_VERSION=3.1
ARG DOTNET_VERSION=5.0
FROM node:alpine as web-builder
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 \
RUN apk add curl git zlib zlib-dev autoconf g++ make libpng-dev gifsicle alpine-sdk automake libtool make gcc musl-dev nasm python3 \
&& curl -L https://github.com/jellyfin/jellyfin-web/archive/${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
&& cd jellyfin-web-* \
&& yarn install \
&& mv dist /dist
FROM mcr.microsoft.com/dotnet/core/sdk:${DOTNET_VERSION}-buster as builder
FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-buster-slim as builder
WORKDIR /repo
COPY . .
ENV DOTNET_CLI_TELEMETRY_OPTOUT=1
# 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"
RUN dotnet publish Jellyfin.Server --disable-parallel --configuration Release --output="/jellyfin" --self-contained --runtime linux-x64 "-p:DebugSymbols=false;DebugType=none"
FROM debian:buster-slim
@@ -27,8 +27,15 @@ ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility"
COPY --from=builder /jellyfin /jellyfin
COPY --from=web-builder /dist /jellyfin/jellyfin-web
# https://github.com/intel/compute-runtime/releases
ARG GMMLIB_VERSION=20.3.2
ARG IGC_VERSION=1.0.5435
ARG NEO_VERSION=20.46.18421
ARG LEVEL_ZERO_VERSION=1.0.18421
# Install dependencies:
# mesa-va-drivers: needed for AMD VAAPI
# mesa-va-drivers: needed for AMD VAAPI. Mesa >= 20.1 is required for HEVC transcoding.
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 - \
@@ -39,6 +46,20 @@ RUN apt-get update \
jellyfin-ffmpeg \
openssl \
locales \
# Intel VAAPI Tone mapping dependencies:
# Prefer NEO to Beignet since the latter one doesn't support Comet Lake or newer for now.
# Do not use the intel-opencl-icd package from repo since they will not build with RELEASE_WITH_REGKEYS enabled.
&& mkdir intel-compute-runtime \
&& cd intel-compute-runtime \
&& wget https://github.com/intel/compute-runtime/releases/download/${NEO_VERSION}/intel-gmmlib_${GMMLIB_VERSION}_amd64.deb \
&& wget https://github.com/intel/intel-graphics-compiler/releases/download/igc-${IGC_VERSION}/intel-igc-core_${IGC_VERSION}_amd64.deb \
&& wget https://github.com/intel/intel-graphics-compiler/releases/download/igc-${IGC_VERSION}/intel-igc-opencl_${IGC_VERSION}_amd64.deb \
&& wget https://github.com/intel/compute-runtime/releases/download/${NEO_VERSION}/intel-opencl_${NEO_VERSION}_amd64.deb \
&& wget https://github.com/intel/compute-runtime/releases/download/${NEO_VERSION}/intel-ocloc_${NEO_VERSION}_amd64.deb \
&& wget https://github.com/intel/compute-runtime/releases/download/${NEO_VERSION}/intel-level-zero-gpu_${LEVEL_ZERO_VERSION}_amd64.deb \
&& dpkg -i *.deb \
&& cd .. \
&& rm -rf intel-compute-runtime \
&& apt-get remove gnupg wget apt-transport-https -y \
&& apt-get clean autoclean -y \
&& apt-get autoremove -y \
+3 -3
View File
@@ -2,7 +2,7 @@
#####################################
# Requires binfm_misc registration
# https://github.com/multiarch/qemu-user-static#binfmt_misc-register
ARG DOTNET_VERSION=3.1
ARG DOTNET_VERSION=5.0
FROM node:alpine as web-builder
@@ -14,14 +14,14 @@ RUN apk add curl git zlib zlib-dev autoconf g++ make libpng-dev gifsicle alpine-
&& mv dist /dist
FROM mcr.microsoft.com/dotnet/core/sdk:${DOTNET_VERSION} as builder
FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION} as builder
WORKDIR /repo
COPY . .
ENV DOTNET_CLI_TELEMETRY_OPTOUT=1
# 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-arm "-p:GenerateDocumentationFile=false;DebugSymbols=false;DebugType=none"
RUN dotnet publish Jellyfin.Server --configuration Release --output="/jellyfin" --self-contained --runtime linux-arm "-p:DebugSymbols=false;DebugType=none"
FROM multiarch/qemu-user-static:x86_64-arm as qemu
+3 -3
View File
@@ -2,7 +2,7 @@
#####################################
# Requires binfm_misc registration
# https://github.com/multiarch/qemu-user-static#binfmt_misc-register
ARG DOTNET_VERSION=3.1
ARG DOTNET_VERSION=5.0
FROM node:alpine as web-builder
@@ -14,14 +14,14 @@ RUN apk add curl git zlib zlib-dev autoconf g++ make libpng-dev gifsicle alpine-
&& mv dist /dist
FROM mcr.microsoft.com/dotnet/core/sdk:${DOTNET_VERSION} as builder
FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION} as builder
WORKDIR /repo
COPY . .
ENV DOTNET_CLI_TELEMETRY_OPTOUT=1
# 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"
RUN dotnet publish Jellyfin.Server --configuration Release --output="/jellyfin" --self-contained --runtime linux-arm64 "-p:DebugSymbols=false;DebugType=none"
FROM multiarch/qemu-user-static:x86_64-aarch64 as qemu
FROM arm64v8/debian:buster-slim
+1 -1
View File
@@ -10,7 +10,7 @@
</ItemGroup>
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<TargetFramework>net5.0</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
+1 -1
View File
@@ -31,7 +31,7 @@ namespace DvdLib.Ifo
continue;
}
var nums = ifo.Name.Split(new[] { '_' }, StringSplitOptions.RemoveEmptyEntries);
var nums = ifo.Name.Split('_', StringSplitOptions.RemoveEmptyEntries);
if (nums.Length >= 2 && ushort.TryParse(nums[1], out var ifoNumber))
{
ReadVTS(ifoNumber, ifo.FullName);
-383
View File
@@ -1,383 +0,0 @@
#pragma warning disable CS1591
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
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;
namespace Emby.Dlna.Api
{
[Route("/Dlna/{UuId}/description.xml", "GET", Summary = "Gets dlna server info")]
[Route("/Dlna/{UuId}/description", "GET", Summary = "Gets dlna server info")]
public class GetDescriptionXml
{
[ApiMember(Name = "UuId", Description = "Server UuId", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")]
public string UuId { get; set; }
}
[Route("/Dlna/{UuId}/contentdirectory/contentdirectory.xml", "GET", Summary = "Gets dlna content directory xml")]
[Route("/Dlna/{UuId}/contentdirectory/contentdirectory", "GET", Summary = "Gets dlna content directory xml")]
public class GetContentDirectory
{
[ApiMember(Name = "UuId", Description = "Server UuId", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")]
public string UuId { get; set; }
}
[Route("/Dlna/{UuId}/connectionmanager/connectionmanager.xml", "GET", Summary = "Gets dlna connection manager xml")]
[Route("/Dlna/{UuId}/connectionmanager/connectionmanager", "GET", Summary = "Gets dlna connection manager xml")]
public class GetConnnectionManager
{
[ApiMember(Name = "UuId", Description = "Server UuId", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")]
public string UuId { get; set; }
}
[Route("/Dlna/{UuId}/mediareceiverregistrar/mediareceiverregistrar.xml", "GET", Summary = "Gets dlna mediareceiverregistrar xml")]
[Route("/Dlna/{UuId}/mediareceiverregistrar/mediareceiverregistrar", "GET", Summary = "Gets dlna mediareceiverregistrar xml")]
public class GetMediaReceiverRegistrar
{
[ApiMember(Name = "UuId", Description = "Server UuId", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")]
public string UuId { get; set; }
}
[Route("/Dlna/{UuId}/contentdirectory/control", "POST", Summary = "Processes a control request")]
public class ProcessContentDirectoryControlRequest : IRequiresRequestStream
{
[ApiMember(Name = "UuId", Description = "Server UuId", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")]
public string UuId { get; set; }
public Stream RequestStream { get; set; }
}
[Route("/Dlna/{UuId}/connectionmanager/control", "POST", Summary = "Processes a control request")]
public class ProcessConnectionManagerControlRequest : IRequiresRequestStream
{
[ApiMember(Name = "UuId", Description = "Server UuId", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")]
public string UuId { get; set; }
public Stream RequestStream { get; set; }
}
[Route("/Dlna/{UuId}/mediareceiverregistrar/control", "POST", Summary = "Processes a control request")]
public class ProcessMediaReceiverRegistrarControlRequest : IRequiresRequestStream
{
[ApiMember(Name = "UuId", Description = "Server UuId", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")]
public string UuId { get; set; }
public Stream RequestStream { get; set; }
}
[Route("/Dlna/{UuId}/mediareceiverregistrar/events", "SUBSCRIBE", Summary = "Processes an event subscription request")]
[Route("/Dlna/{UuId}/mediareceiverregistrar/events", "UNSUBSCRIBE", Summary = "Processes an event subscription request")]
public class ProcessMediaReceiverRegistrarEventRequest
{
[ApiMember(Name = "UuId", Description = "Server UuId", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "SUBSCRIBE,UNSUBSCRIBE")]
public string UuId { get; set; }
}
[Route("/Dlna/{UuId}/contentdirectory/events", "SUBSCRIBE", Summary = "Processes an event subscription request")]
[Route("/Dlna/{UuId}/contentdirectory/events", "UNSUBSCRIBE", Summary = "Processes an event subscription request")]
public class ProcessContentDirectoryEventRequest
{
[ApiMember(Name = "UuId", Description = "Server UuId", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "SUBSCRIBE,UNSUBSCRIBE")]
public string UuId { get; set; }
}
[Route("/Dlna/{UuId}/connectionmanager/events", "SUBSCRIBE", Summary = "Processes an event subscription request")]
[Route("/Dlna/{UuId}/connectionmanager/events", "UNSUBSCRIBE", Summary = "Processes an event subscription request")]
public class ProcessConnectionManagerEventRequest
{
[ApiMember(Name = "UuId", Description = "Server UuId", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "SUBSCRIBE,UNSUBSCRIBE")]
public string UuId { get; set; }
}
[Route("/Dlna/{UuId}/icons/{Filename}", "GET", Summary = "Gets a server icon")]
[Route("/Dlna/icons/{Filename}", "GET", Summary = "Gets a server icon")]
public class GetIcon
{
[ApiMember(Name = "UuId", Description = "Server UuId", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string UuId { get; set; }
[ApiMember(Name = "Filename", Description = "The icon filename", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
public string Filename { get; set; }
}
public class DlnaServerService : IService, IRequiresRequest
{
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 IContentDirectory ContentDirectory => DlnaEntryPoint.Current.ContentDirectory;
private IConnectionManager ConnectionManager => DlnaEntryPoint.Current.ConnectionManager;
private IMediaReceiverRegistrar MediaReceiverRegistrar => DlnaEntryPoint.Current.MediaReceiverRegistrar;
public DlnaServerService(
IDlnaManager dlnaManager,
IHttpResultFactory httpResultFactory,
IServerConfigurationManager configurationManager)
{
_dlnaManager = dlnaManager;
_resultFactory = httpResultFactory;
_configurationManager = configurationManager;
}
private string GetHeader(string name)
{
return Request.Headers[name];
}
public object Get(GetDescriptionXml request)
{
var url = Request.AbsoluteUri;
var serverAddress = url.Substring(0, url.IndexOf("/dlna/", StringComparison.OrdinalIgnoreCase));
var xml = _dlnaManager.GetServerDescriptionXml(Request.Headers, request.UuId, serverAddress);
var cacheLength = TimeSpan.FromDays(1);
var cacheKey = Request.RawUrl.GetMD5();
var bytes = Encoding.UTF8.GetBytes(xml);
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();
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();
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();
return _resultFactory.GetResult(Request, xml, XMLContentType);
}
public async Task<object> Post(ProcessMediaReceiverRegistrarControlRequest request)
{
var response = await PostAsync(request.RequestStream, MediaReceiverRegistrar).ConfigureAwait(false);
return _resultFactory.GetResult(Request, response.Xml, XMLContentType);
}
public async Task<object> Post(ProcessContentDirectoryControlRequest request)
{
var response = await PostAsync(request.RequestStream, ContentDirectory).ConfigureAwait(false);
return _resultFactory.GetResult(Request, response.Xml, XMLContentType);
}
public async Task<object> Post(ProcessConnectionManagerControlRequest request)
{
var response = await PostAsync(request.RequestStream, ConnectionManager).ConfigureAwait(false);
return _resultFactory.GetResult(Request, response.Xml, XMLContentType);
}
private Task<ControlResponse> PostAsync(Stream requestStream, IUpnpService service)
{
var id = GetPathValue(2).ToString();
return service.ProcessControlRequestAsync(new ControlRequest
{
Headers = Request.Headers,
InputXml = requestStream,
TargetServerUuId = id,
RequestedUrl = Request.AbsoluteUri
});
}
// 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)
{
static void ThrowIndexOutOfRangeException()
=> throw new IndexOutOfRangeException("Path doesn't contain enough segments.");
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)
{
path = path.Slice(pos + 3);
}
// Remove the query string
pos = path.LastIndexOf('?');
if (pos != -1)
{
path = path.Slice(0, pos);
}
// Remove the domain
pos = path.IndexOf('/');
if (pos != -1)
{
path = path.Slice(pos);
}
// 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)
{
var contentType = "image/" + Path.GetExtension(request.Filename)
.TrimStart('.')
.ToLowerInvariant();
var cacheLength = TimeSpan.FromDays(365);
var cacheKey = Request.RawUrl.GetMD5();
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);
}
private object ProcessEventRequest(IEventManager eventManager)
{
var subscriptionId = GetHeader("SID");
if (string.Equals(Request.Verb, "SUBSCRIBE", StringComparison.OrdinalIgnoreCase))
{
var notificationType = GetHeader("NT");
var callback = GetHeader("CALLBACK");
var timeoutString = GetHeader("TIMEOUT");
if (string.IsNullOrEmpty(notificationType))
{
return GetSubscriptionResponse(eventManager.RenewEventSubscription(subscriptionId, notificationType, timeoutString, callback));
}
return GetSubscriptionResponse(eventManager.CreateEventSubscription(notificationType, timeoutString, callback));
}
return GetSubscriptionResponse(eventManager.CancelEventSubscription(subscriptionId));
}
private object GetSubscriptionResponse(EventSubscriptionResponse response)
{
return _resultFactory.GetResult(Request, response.Content, response.ContentType, response.Headers);
}
}
}
-88
View File
@@ -1,88 +0,0 @@
#pragma warning disable CS1591
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using MediaBrowser.Controller.Dlna;
using MediaBrowser.Controller.Net;
using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Services;
namespace Emby.Dlna.Api
{
[Route("/Dlna/ProfileInfos", "GET", Summary = "Gets a list of profiles")]
public class GetProfileInfos : IReturn<DeviceProfileInfo[]>
{
}
[Route("/Dlna/Profiles/{Id}", "DELETE", Summary = "Deletes a profile")]
public class DeleteProfile : IReturnVoid
{
[ApiMember(Name = "Id", Description = "Profile Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")]
public string Id { get; set; }
}
[Route("/Dlna/Profiles/Default", "GET", Summary = "Gets the default profile")]
public class GetDefaultProfile : IReturn<DeviceProfile>
{
}
[Route("/Dlna/Profiles/{Id}", "GET", Summary = "Gets a single profile")]
public class GetProfile : IReturn<DeviceProfile>
{
[ApiMember(Name = "Id", Description = "Profile Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
public string Id { get; set; }
}
[Route("/Dlna/Profiles/{Id}", "POST", Summary = "Updates a profile")]
public class UpdateProfile : DeviceProfile, IReturnVoid
{
}
[Route("/Dlna/Profiles", "POST", Summary = "Creates a profile")]
public class CreateProfile : DeviceProfile, IReturnVoid
{
}
[Authenticated(Roles = "Admin")]
public class DlnaService : IService
{
private readonly IDlnaManager _dlnaManager;
public DlnaService(IDlnaManager dlnaManager)
{
_dlnaManager = dlnaManager;
}
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "request", Justification = "Required for ServiceStack")]
public object Get(GetProfileInfos request)
{
return _dlnaManager.GetProfileInfos().ToArray();
}
public object Get(GetProfile request)
{
return _dlnaManager.GetProfile(request.Id);
}
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "request", Justification = "Required for ServiceStack")]
public object Get(GetDefaultProfile request)
{
return _dlnaManager.GetDefaultProfile();
}
public void Delete(DeleteProfile request)
{
_dlnaManager.DeleteProfile(request.Id);
}
public void Post(UpdateProfile request)
{
_dlnaManager.UpdateProfile(request);
}
public void Post(CreateProfile request)
{
_dlnaManager.CreateProfile(request);
}
}
}
+15 -5
View File
@@ -1,13 +1,23 @@
#pragma warning disable CS1591
namespace Emby.Dlna.Common
{
/// <summary>
/// DLNA Query parameter type, used when querying DLNA devices via SOAP.
/// </summary>
public class Argument
{
public string Name { get; set; }
/// <summary>
/// Gets or sets name of the DLNA argument.
/// </summary>
public string Name { get; set; } = string.Empty;
public string Direction { get; set; }
/// <summary>
/// Gets or sets the direction of the parameter.
/// </summary>
public string Direction { get; set; } = string.Empty;
public string RelatedStateVariable { get; set; }
/// <summary>
/// Gets or sets the related DLNA state variable for this argument.
/// </summary>
public string RelatedStateVariable { get; set; } = string.Empty;
}
}
+22 -10
View File
@@ -1,29 +1,41 @@
#pragma warning disable CS1591
using System.Globalization;
namespace Emby.Dlna.Common
{
/// <summary>
/// Defines the <see cref="DeviceIcon" />.
/// </summary>
public class DeviceIcon
{
public string Url { get; set; }
/// <summary>
/// Gets or sets the Url.
/// </summary>
public string Url { get; set; } = string.Empty;
public string MimeType { get; set; }
/// <summary>
/// Gets or sets the MimeType.
/// </summary>
public string MimeType { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the Width.
/// </summary>
public int Width { get; set; }
/// <summary>
/// Gets or sets the Height.
/// </summary>
public int Height { get; set; }
public string Depth { get; set; }
/// <summary>
/// Gets or sets the Depth.
/// </summary>
public string Depth { get; set; } = string.Empty;
/// <inheritdoc />
public override string ToString()
{
return string.Format(
CultureInfo.InvariantCulture,
"{0}x{1}",
Height,
Width);
return string.Format(CultureInfo.InvariantCulture, "{0}x{1}", Height, Width);
}
}
}
+24 -9
View File
@@ -1,21 +1,36 @@
#pragma warning disable CS1591
namespace Emby.Dlna.Common
{
/// <summary>
/// Defines the <see cref="DeviceService" />.
/// </summary>
public class DeviceService
{
public string ServiceType { get; set; }
/// <summary>
/// Gets or sets the Service Type.
/// </summary>
public string ServiceType { get; set; } = string.Empty;
public string ServiceId { get; set; }
/// <summary>
/// Gets or sets the Service Id.
/// </summary>
public string ServiceId { get; set; } = string.Empty;
public string ScpdUrl { get; set; }
/// <summary>
/// Gets or sets the Scpd Url.
/// </summary>
public string ScpdUrl { get; set; } = string.Empty;
public string ControlUrl { get; set; }
/// <summary>
/// Gets or sets the Control Url.
/// </summary>
public string ControlUrl { get; set; } = string.Empty;
public string EventSubUrl { get; set; }
/// <summary>
/// Gets or sets the EventSubUrl.
/// </summary>
public string EventSubUrl { get; set; } = string.Empty;
/// <inheritdoc />
public override string ToString()
=> ServiceId;
public override string ToString() => ServiceId;
}
}
+15 -8
View File
@@ -1,24 +1,31 @@
#pragma warning disable CS1591
using System.Collections.Generic;
namespace Emby.Dlna.Common
{
/// <summary>
/// Defines the <see cref="ServiceAction" />.
/// </summary>
public class ServiceAction
{
/// <summary>
/// Initializes a new instance of the <see cref="ServiceAction"/> class.
/// </summary>
public ServiceAction()
{
ArgumentList = new List<Argument>();
}
public string Name { get; set; }
/// <summary>
/// Gets or sets the name of the action.
/// </summary>
public string Name { get; set; } = string.Empty;
public List<Argument> ArgumentList { get; set; }
/// <summary>
/// Gets the ArgumentList.
/// </summary>
public List<Argument> ArgumentList { get; }
/// <inheritdoc />
public override string ToString()
{
return Name;
}
public override string ToString() => Name;
}
}
+20 -12
View File
@@ -1,26 +1,34 @@
#pragma warning disable CS1591
using System;
using System.Collections.Generic;
namespace Emby.Dlna.Common
{
/// <summary>
/// Defines the <see cref="StateVariable" />.
/// </summary>
public class StateVariable
{
public StateVariable()
{
AllowedValues = Array.Empty<string>();
}
/// <summary>
/// Gets or sets the name of the state variable.
/// </summary>
public string Name { get; set; } = string.Empty;
public string Name { get; set; }
public string DataType { get; set; }
/// <summary>
/// Gets or sets the data type of the state variable.
/// </summary>
public string DataType { get; set; } = string.Empty;
/// <summary>
/// Gets or sets a value indicating whether it sends events.
/// </summary>
public bool SendsEvents { get; set; }
public string[] AllowedValues { get; set; }
/// <summary>
/// Gets or sets the allowed values range.
/// </summary>
public IReadOnlyList<string> AllowedValues { get; set; } = Array.Empty<string>();
/// <inheritdoc />
public override string ToString()
=> Name;
public override string ToString() => Name;
}
}
+64 -5
View File
@@ -2,8 +2,14 @@
namespace Emby.Dlna.Configuration
{
/// <summary>
/// The DlnaOptions class contains the user definable parameters for the dlna subsystems.
/// </summary>
public class DlnaOptions
{
/// <summary>
/// Initializes a new instance of the <see cref="DlnaOptions"/> class.
/// </summary>
public DlnaOptions()
{
EnablePlayTo = true;
@@ -11,23 +17,76 @@ namespace Emby.Dlna.Configuration
BlastAliveMessages = true;
SendOnlyMatchedHost = true;
ClientDiscoveryIntervalSeconds = 60;
BlastAliveMessageIntervalSeconds = 1800;
AliveMessageIntervalSeconds = 1800;
}
/// <summary>
/// Gets or sets a value indicating whether gets or sets a value to indicate the status of the dlna playTo subsystem.
/// </summary>
public bool EnablePlayTo { get; set; }
/// <summary>
/// Gets or sets a value indicating whether gets or sets a value to indicate the status of the dlna server subsystem.
/// </summary>
public bool EnableServer { get; set; }
/// <summary>
/// Gets or sets a value indicating whether detailed dlna server logs are sent to the console/log.
/// If the setting "Emby.Dlna": "Debug" msut be set in logging.default.json for this property to work.
/// </summary>
public bool EnableDebugLog { get; set; }
public bool BlastAliveMessages { get; set; }
public bool SendOnlyMatchedHost { get; set; }
/// <summary>
/// Gets or sets a value indicating whether whether detailed playTo debug logs are sent to the console/log.
/// If the setting "Emby.Dlna.PlayTo": "Debug" msut be set in logging.default.json for this property to work.
/// </summary>
public bool EnablePlayToTracing { get; set; }
/// <summary>
/// Gets or sets the ssdp client discovery interval time (in seconds).
/// This is the time after which the server will send a ssdp search request.
/// </summary>
public int ClientDiscoveryIntervalSeconds { get; set; }
public int BlastAliveMessageIntervalSeconds { get; set; }
/// <summary>
/// Gets or sets the frequency at which ssdp alive notifications are transmitted.
/// </summary>
public int AliveMessageIntervalSeconds { get; set; }
/// <summary>
/// Gets or sets the frequency at which ssdp alive notifications are transmitted. MIGRATING - TO BE REMOVED ONCE WEB HAS BEEN ALTERED.
/// </summary>
public int BlastAliveMessageIntervalSeconds
{
get
{
return AliveMessageIntervalSeconds;
}
set
{
AliveMessageIntervalSeconds = value;
}
}
/// <summary>
/// Gets or sets the default user account that the dlna server uses.
/// </summary>
public string DefaultUserId { get; set; }
/// <summary>
/// Gets or sets a value indicating whether playTo device profiles should be created.
/// </summary>
public bool AutoCreatePlayToProfiles { get; set; }
/// <summary>
/// Gets or sets a value indicating whether to blast alive messages.
/// </summary>
public bool BlastAliveMessages { get; set; } = true;
/// <summary>
/// gets or sets a value indicating whether to send only matched host.
/// </summary>
public bool SendOnlyMatchedHost { get; set; } = true;
}
}
-16
View File
@@ -1,7 +1,6 @@
#nullable enable
#pragma warning disable CS1591
using System.Collections.Generic;
using Emby.Dlna.Configuration;
using MediaBrowser.Common.Configuration;
@@ -14,19 +13,4 @@ namespace Emby.Dlna
return manager.GetConfiguration<DlnaOptions>("dlna");
}
}
public class DlnaConfigurationFactory : IConfigurationFactory
{
public IEnumerable<ConfigurationStore> GetConfigurations()
{
return new ConfigurationStore[]
{
new ConfigurationStore
{
Key = "dlna",
ConfigurationType = typeof (DlnaOptions)
}
};
}
}
}
@@ -1,45 +0,0 @@
#pragma warning disable CS1591
using System.Threading.Tasks;
using Emby.Dlna.Service;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Dlna;
using Microsoft.Extensions.Logging;
namespace Emby.Dlna.ConnectionManager
{
public class ConnectionManager : BaseService, IConnectionManager
{
private readonly IDlnaManager _dlna;
private readonly ILogger _logger;
private readonly IServerConfigurationManager _config;
public ConnectionManager(
IDlnaManager dlna,
IServerConfigurationManager config,
ILogger<ConnectionManager> logger,
IHttpClient httpClient)
: base(logger, httpClient)
{
_dlna = dlna;
_config = config;
_logger = logger;
}
/// <inheritdoc />
public string GetServiceXml()
{
return new ConnectionManagerXmlBuilder().GetXml();
}
/// <inheritdoc />
public Task<ControlResponse> ProcessControlRequestAsync(ControlRequest request)
{
var profile = _dlna.GetProfile(request.Headers) ??
_dlna.GetDefaultProfile();
return new ControlHandler(_config, _logger, profile).ProcessControlRequestAsync(request);
}
}
}
@@ -0,0 +1,53 @@
#pragma warning disable CS1591
using System.Net.Http;
using System.Threading.Tasks;
using Emby.Dlna.Service;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Dlna;
using Microsoft.Extensions.Logging;
namespace Emby.Dlna.ConnectionManager
{
/// <summary>
/// Defines the <see cref="ConnectionManagerService" />.
/// </summary>
public class ConnectionManagerService : BaseService, IConnectionManager
{
private readonly IDlnaManager _dlna;
private readonly IServerConfigurationManager _config;
/// <summary>
/// Initializes a new instance of the <see cref="ConnectionManagerService"/> class.
/// </summary>
/// <param name="dlna">The <see cref="IDlnaManager"/> for use with the <see cref="ConnectionManagerService"/> instance.</param>
/// <param name="config">The <see cref="IServerConfigurationManager"/> for use with the <see cref="ConnectionManagerService"/> instance.</param>
/// <param name="logger">The <see cref="ILogger{ConnectionManagerService}"/> for use with the <see cref="ConnectionManagerService"/> instance..</param>
/// <param name="httpClientFactory">The <see cref="IHttpClientFactory"/> for use with the <see cref="ConnectionManagerService"/> instance..</param>
public ConnectionManagerService(
IDlnaManager dlna,
IServerConfigurationManager config,
ILogger<ConnectionManagerService> logger,
IHttpClientFactory httpClientFactory)
: base(logger, httpClientFactory)
{
_dlna = dlna;
_config = config;
}
/// <inheritdoc />
public string GetServiceXml()
{
return ConnectionManagerXmlBuilder.GetXml();
}
/// <inheritdoc />
public Task<ControlResponse> ProcessControlRequestAsync(ControlRequest request)
{
var profile = _dlna.GetProfile(request.Headers) ??
_dlna.GetDefaultProfile();
return new ControlHandler(_config, Logger, profile).ProcessControlRequestAsync(request);
}
}
}
@@ -6,45 +6,57 @@ using Emby.Dlna.Service;
namespace Emby.Dlna.ConnectionManager
{
public class ConnectionManagerXmlBuilder
/// <summary>
/// Defines the <see cref="ConnectionManagerXmlBuilder" />.
/// </summary>
public static class ConnectionManagerXmlBuilder
{
public string GetXml()
/// <summary>
/// Gets the ConnectionManager:1 service template.
/// See http://upnp.org/specs/av/UPnP-av-ConnectionManager-v1-Service.pdf.
/// </summary>
/// <returns>An XML description of this service.</returns>
public static string GetXml()
{
return new ServiceXmlBuilder().GetXml(new ServiceActionListBuilder().GetActions(), GetStateVariables());
return new ServiceXmlBuilder().GetXml(ServiceActionListBuilder.GetActions(), GetStateVariables());
}
/// <summary>
/// Get the list of state variables for this invocation.
/// </summary>
/// <returns>The <see cref="IEnumerable{StateVariable}"/>.</returns>
private static IEnumerable<StateVariable> GetStateVariables()
{
var list = new List<StateVariable>();
list.Add(new StateVariable
var list = new List<StateVariable>
{
Name = "SourceProtocolInfo",
DataType = "string",
SendsEvents = true
});
new StateVariable
{
Name = "SourceProtocolInfo",
DataType = "string",
SendsEvents = true
},
list.Add(new StateVariable
{
Name = "SinkProtocolInfo",
DataType = "string",
SendsEvents = true
});
new StateVariable
{
Name = "SinkProtocolInfo",
DataType = "string",
SendsEvents = true
},
list.Add(new StateVariable
{
Name = "CurrentConnectionIDs",
DataType = "string",
SendsEvents = true
});
new StateVariable
{
Name = "CurrentConnectionIDs",
DataType = "string",
SendsEvents = true
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_ConnectionStatus",
DataType = "string",
SendsEvents = false,
new StateVariable
{
Name = "A_ARG_TYPE_ConnectionStatus",
DataType = "string",
SendsEvents = false,
AllowedValues = new string[]
AllowedValues = new[]
{
"OK",
"ContentFormatMismatch",
@@ -52,55 +64,56 @@ namespace Emby.Dlna.ConnectionManager
"UnreliableChannel",
"Unknown"
}
});
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_ConnectionManager",
DataType = "string",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_ConnectionManager",
DataType = "string",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_Direction",
DataType = "string",
SendsEvents = false,
new StateVariable
{
Name = "A_ARG_TYPE_Direction",
DataType = "string",
SendsEvents = false,
AllowedValues = new string[]
AllowedValues = new[]
{
"Output",
"Input"
}
});
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_ProtocolInfo",
DataType = "string",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_ProtocolInfo",
DataType = "string",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_ConnectionID",
DataType = "ui4",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_ConnectionID",
DataType = "ui4",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_AVTransportID",
DataType = "ui4",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_AVTransportID",
DataType = "ui4",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_RcsID",
DataType = "ui4",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_RcsID",
DataType = "ui4",
SendsEvents = false
}
};
return list;
}
@@ -11,10 +11,19 @@ using Microsoft.Extensions.Logging;
namespace Emby.Dlna.ConnectionManager
{
/// <summary>
/// Defines the <see cref="ControlHandler" />.
/// </summary>
public class ControlHandler : BaseControlHandler
{
private readonly DeviceProfile _profile;
/// <summary>
/// Initializes a new instance of the <see cref="ControlHandler"/> class.
/// </summary>
/// <param name="config">The <see cref="IServerConfigurationManager"/> for use with the <see cref="ControlHandler"/> instance.</param>
/// <param name="logger">The <see cref="ILogger"/> for use with the <see cref="ControlHandler"/> instance.</param>
/// <param name="profile">The <see cref="DeviceProfile"/> for use with the <see cref="ControlHandler"/> instance.</param>
public ControlHandler(IServerConfigurationManager config, ILogger logger, DeviceProfile profile)
: base(config, logger)
{
@@ -33,6 +42,10 @@ namespace Emby.Dlna.ConnectionManager
throw new ResourceNotFoundException("Unexpected control request name: " + methodName);
}
/// <summary>
/// Builds the response to the GetProtocolInfo request.
/// </summary>
/// <param name="xmlWriter">The <see cref="XmlWriter"/>.</param>
private void HandleGetProtocolInfo(XmlWriter xmlWriter)
{
xmlWriter.WriteElementString("Source", _profile.ProtocolInfo);
@@ -5,9 +5,16 @@ using Emby.Dlna.Common;
namespace Emby.Dlna.ConnectionManager
{
public class ServiceActionListBuilder
/// <summary>
/// Defines the <see cref="ServiceActionListBuilder" />.
/// </summary>
public static class ServiceActionListBuilder
{
public IEnumerable<ServiceAction> GetActions()
/// <summary>
/// Returns an enumerable of the ConnectionManagar:1 DLNA actions.
/// </summary>
/// <returns>An <see cref="IEnumerable{ServiceAction}"/>.</returns>
public static IEnumerable<ServiceAction> GetActions()
{
var list = new List<ServiceAction>
{
@@ -21,6 +28,10 @@ namespace Emby.Dlna.ConnectionManager
return list;
}
/// <summary>
/// Returns the action details for "PrepareForConnection".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction PrepareForConnection()
{
var action = new ServiceAction
@@ -80,6 +91,10 @@ namespace Emby.Dlna.ConnectionManager
return action;
}
/// <summary>
/// Returns the action details for "GetCurrentConnectionInfo".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetCurrentConnectionInfo()
{
var action = new ServiceAction
@@ -146,7 +161,11 @@ namespace Emby.Dlna.ConnectionManager
return action;
}
private ServiceAction GetProtocolInfo()
/// <summary>
/// Returns the action details for "GetProtocolInfo".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetProtocolInfo()
{
var action = new ServiceAction
{
@@ -170,7 +189,11 @@ namespace Emby.Dlna.ConnectionManager
return action;
}
private ServiceAction GetCurrentConnectionIDs()
/// <summary>
/// Returns the action details for "GetCurrentConnectionIDs".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetCurrentConnectionIDs()
{
var action = new ServiceAction
{
@@ -187,7 +210,11 @@ namespace Emby.Dlna.ConnectionManager
return action;
}
private ServiceAction ConnectionComplete()
/// <summary>
/// Returns the action details for "ConnectionComplete".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction ConnectionComplete()
{
var action = new ServiceAction
{
@@ -2,11 +2,11 @@
using System;
using System.Linq;
using System.Net.Http;
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;
@@ -19,7 +19,10 @@ using Microsoft.Extensions.Logging;
namespace Emby.Dlna.ContentDirectory
{
public class ContentDirectory : BaseService, IContentDirectory
/// <summary>
/// Defines the <see cref="ContentDirectoryService" />.
/// </summary>
public class ContentDirectoryService : BaseService, IContentDirectory
{
private readonly ILibraryManager _libraryManager;
private readonly IImageProcessor _imageProcessor;
@@ -33,15 +36,31 @@ namespace Emby.Dlna.ContentDirectory
private readonly IMediaEncoder _mediaEncoder;
private readonly ITVSeriesManager _tvSeriesManager;
public ContentDirectory(
/// <summary>
/// Initializes a new instance of the <see cref="ContentDirectoryService"/> class.
/// </summary>
/// <param name="dlna">The <see cref="IDlnaManager"/> to use in the <see cref="ContentDirectoryService"/> instance.</param>
/// <param name="userDataManager">The <see cref="IUserDataManager"/> to use in the <see cref="ContentDirectoryService"/> instance.</param>
/// <param name="imageProcessor">The <see cref="IImageProcessor"/> to use in the <see cref="ContentDirectoryService"/> instance.</param>
/// <param name="libraryManager">The <see cref="ILibraryManager"/> to use in the <see cref="ContentDirectoryService"/> instance.</param>
/// <param name="config">The <see cref="IServerConfigurationManager"/> to use in the <see cref="ContentDirectoryService"/> instance.</param>
/// <param name="userManager">The <see cref="IUserManager"/> to use in the <see cref="ContentDirectoryService"/> instance.</param>
/// <param name="logger">The <see cref="ILogger{ContentDirectoryService}"/> to use in the <see cref="ContentDirectoryService"/> instance.</param>
/// <param name="httpClient">The <see cref="IHttpClientFactory"/> to use in the <see cref="ContentDirectoryService"/> instance.</param>
/// <param name="localization">The <see cref="ILocalizationManager"/> to use in the <see cref="ContentDirectoryService"/> instance.</param>
/// <param name="mediaSourceManager">The <see cref="IMediaSourceManager"/> to use in the <see cref="ContentDirectoryService"/> instance.</param>
/// <param name="userViewManager">The <see cref="IUserViewManager"/> to use in the <see cref="ContentDirectoryService"/> instance.</param>
/// <param name="mediaEncoder">The <see cref="IMediaEncoder"/> to use in the <see cref="ContentDirectoryService"/> instance.</param>
/// <param name="tvSeriesManager">The <see cref="ITVSeriesManager"/> to use in the <see cref="ContentDirectoryService"/> instance.</param>
public ContentDirectoryService(
IDlnaManager dlna,
IUserDataManager userDataManager,
IImageProcessor imageProcessor,
ILibraryManager libraryManager,
IServerConfigurationManager config,
IUserManager userManager,
ILogger<ContentDirectory> logger,
IHttpClient httpClient,
ILogger<ContentDirectoryService> logger,
IHttpClientFactory httpClient,
ILocalizationManager localization,
IMediaSourceManager mediaSourceManager,
IUserViewManager userViewManager,
@@ -62,7 +81,10 @@ namespace Emby.Dlna.ContentDirectory
_tvSeriesManager = tvSeriesManager;
}
private int SystemUpdateId
/// <summary>
/// Gets the system id. (A unique id which changes on when our definition changes.)
/// </summary>
private static int SystemUpdateId
{
get
{
@@ -75,14 +97,18 @@ namespace Emby.Dlna.ContentDirectory
/// <inheritdoc />
public string GetServiceXml()
{
return new ContentDirectoryXmlBuilder().GetXml();
return ContentDirectoryXmlBuilder.GetXml();
}
/// <inheritdoc />
public Task<ControlResponse> ProcessControlRequestAsync(ControlRequest request)
{
var profile = _dlna.GetProfile(request.Headers) ??
_dlna.GetDefaultProfile();
if (request == null)
{
throw new ArgumentNullException(nameof(request));
}
var profile = _dlna.GetProfile(request.Headers) ?? _dlna.GetDefaultProfile();
var serverAddress = request.RequestedUrl.Substring(0, request.RequestedUrl.IndexOf("/dlna", StringComparison.OrdinalIgnoreCase));
@@ -107,6 +133,11 @@ namespace Emby.Dlna.ContentDirectory
.ProcessControlRequestAsync(request);
}
/// <summary>
/// Get the user stored in the device profile.
/// </summary>
/// <param name="profile">The <see cref="DeviceProfile"/>.</param>
/// <returns>The <see cref="User"/>.</returns>
private User GetUser(DeviceProfile profile)
{
if (!string.IsNullOrEmpty(profile.UserId))
@@ -6,142 +6,154 @@ using Emby.Dlna.Service;
namespace Emby.Dlna.ContentDirectory
{
public class ContentDirectoryXmlBuilder
/// <summary>
/// Defines the <see cref="ContentDirectoryXmlBuilder" />.
/// </summary>
public static class ContentDirectoryXmlBuilder
{
public string GetXml()
/// <summary>
/// Gets the ContentDirectory:1 service template.
/// See http://upnp.org/specs/av/UPnP-av-ContentDirectory-v1-Service.pdf.
/// </summary>
/// <returns>An XML description of this service.</returns>
public static string GetXml()
{
return new ServiceXmlBuilder().GetXml(new ServiceActionListBuilder().GetActions(),
GetStateVariables());
return new ServiceXmlBuilder().GetXml(ServiceActionListBuilder.GetActions(), GetStateVariables());
}
/// <summary>
/// Get the list of state variables for this invocation.
/// </summary>
/// <returns>The <see cref="IEnumerable{StateVariable}"/>.</returns>
private static IEnumerable<StateVariable> GetStateVariables()
{
var list = new List<StateVariable>();
list.Add(new StateVariable
var list = new List<StateVariable>
{
Name = "A_ARG_TYPE_Filter",
DataType = "string",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_Filter",
DataType = "string",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_SortCriteria",
DataType = "string",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_SortCriteria",
DataType = "string",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_Index",
DataType = "ui4",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_Index",
DataType = "ui4",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_Count",
DataType = "ui4",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_Count",
DataType = "ui4",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_UpdateID",
DataType = "ui4",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_UpdateID",
DataType = "ui4",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "SearchCapabilities",
DataType = "string",
SendsEvents = false
});
new StateVariable
{
Name = "SearchCapabilities",
DataType = "string",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "SortCapabilities",
DataType = "string",
SendsEvents = false
});
new StateVariable
{
Name = "SortCapabilities",
DataType = "string",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "SystemUpdateID",
DataType = "ui4",
SendsEvents = true
});
new StateVariable
{
Name = "SystemUpdateID",
DataType = "ui4",
SendsEvents = true
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_SearchCriteria",
DataType = "string",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_SearchCriteria",
DataType = "string",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_Result",
DataType = "string",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_Result",
DataType = "string",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_ObjectID",
DataType = "string",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_ObjectID",
DataType = "string",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_BrowseFlag",
DataType = "string",
SendsEvents = false,
new StateVariable
{
Name = "A_ARG_TYPE_BrowseFlag",
DataType = "string",
SendsEvents = false,
AllowedValues = new string[]
AllowedValues = new[]
{
"BrowseMetadata",
"BrowseDirectChildren"
}
});
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_BrowseLetter",
DataType = "string",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_BrowseLetter",
DataType = "string",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_CategoryType",
DataType = "ui4",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_CategoryType",
DataType = "ui4",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_RID",
DataType = "ui4",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_RID",
DataType = "ui4",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_PosSec",
DataType = "ui4",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_PosSec",
DataType = "ui4",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_Featurelist",
DataType = "string",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_Featurelist",
DataType = "string",
SendsEvents = false
}
};
return list;
}
File diff suppressed because it is too large Load Diff
+36
View File
@@ -0,0 +1,36 @@
#pragma warning disable CS1591
using MediaBrowser.Controller.Entities;
namespace Emby.Dlna.ContentDirectory
{
/// <summary>
/// Defines the <see cref="ServerItem" />.
/// </summary>
internal class ServerItem
{
/// <summary>
/// Initializes a new instance of the <see cref="ServerItem"/> class.
/// </summary>
/// <param name="item">The <see cref="BaseItem"/>.</param>
public ServerItem(BaseItem item)
{
Item = item;
if (item is IItemByName && !(item is Folder))
{
StubType = Dlna.ContentDirectory.StubType.Folder;
}
}
/// <summary>
/// Gets or sets the underlying base item.
/// </summary>
public BaseItem Item { get; set; }
/// <summary>
/// Gets or sets the DLNA item type.
/// </summary>
public StubType? StubType { get; set; }
}
}
@@ -1,13 +1,18 @@
#pragma warning disable CS1591
using System.Collections.Generic;
using Emby.Dlna.Common;
namespace Emby.Dlna.ContentDirectory
{
public class ServiceActionListBuilder
/// <summary>
/// Defines the <see cref="ServiceActionListBuilder" />.
/// </summary>
public static class ServiceActionListBuilder
{
public IEnumerable<ServiceAction> GetActions()
/// <summary>
/// Returns a list of services that this instance provides.
/// </summary>
/// <returns>An <see cref="IEnumerable{ServiceAction}"/>.</returns>
public static IEnumerable<ServiceAction> GetActions()
{
return new[]
{
@@ -22,6 +27,10 @@ namespace Emby.Dlna.ContentDirectory
};
}
/// <summary>
/// Returns the action details for "GetSystemUpdateID".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetGetSystemUpdateIDAction()
{
var action = new ServiceAction
@@ -39,6 +48,10 @@ namespace Emby.Dlna.ContentDirectory
return action;
}
/// <summary>
/// Returns the action details for "GetSearchCapabilities".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetSearchCapabilitiesAction()
{
var action = new ServiceAction
@@ -56,6 +69,10 @@ namespace Emby.Dlna.ContentDirectory
return action;
}
/// <summary>
/// Returns the action details for "GetSortCapabilities".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetSortCapabilitiesAction()
{
var action = new ServiceAction
@@ -73,6 +90,10 @@ namespace Emby.Dlna.ContentDirectory
return action;
}
/// <summary>
/// Returns the action details for "X_GetFeatureList".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetX_GetFeatureListAction()
{
var action = new ServiceAction
@@ -90,6 +111,10 @@ namespace Emby.Dlna.ContentDirectory
return action;
}
/// <summary>
/// Returns the action details for "Search".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetSearchAction()
{
var action = new ServiceAction
@@ -170,7 +195,11 @@ namespace Emby.Dlna.ContentDirectory
return action;
}
private ServiceAction GetBrowseAction()
/// <summary>
/// Returns the action details for "Browse".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetBrowseAction()
{
var action = new ServiceAction
{
@@ -250,7 +279,11 @@ namespace Emby.Dlna.ContentDirectory
return action;
}
private ServiceAction GetBrowseByLetterAction()
/// <summary>
/// Returns the action details for "X_BrowseByLetter".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetBrowseByLetterAction()
{
var action = new ServiceAction
{
@@ -337,7 +370,11 @@ namespace Emby.Dlna.ContentDirectory
return action;
}
private ServiceAction GetXSetBookmarkAction()
/// <summary>
/// Returns the action details for "X_SetBookmark".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetXSetBookmarkAction()
{
var action = new ServiceAction
{
+31
View File
@@ -0,0 +1,31 @@
#pragma warning disable CS1591
#pragma warning disable SA1602
namespace Emby.Dlna.ContentDirectory
{
/// <summary>
/// Defines the DLNA item types.
/// </summary>
public enum StubType
{
Folder = 0,
Latest = 2,
Playlists = 3,
Albums = 4,
AlbumArtists = 5,
Artists = 6,
Songs = 7,
Genres = 8,
FavoriteSongs = 9,
FavoriteArtists = 10,
FavoriteAlbums = 11,
ContinueWatching = 12,
Movies = 13,
Collections = 14,
Favorites = 15,
NextUp = 16,
Series = 17,
FavoriteSeries = 18,
FavoriteEpisodes = 19
}
}
+6 -6
View File
@@ -7,17 +7,17 @@ namespace Emby.Dlna
{
public class ControlRequest
{
public IHeaderDictionary Headers { get; set; }
public ControlRequest(IHeaderDictionary headers)
{
Headers = headers;
}
public IHeaderDictionary Headers { get; }
public Stream InputXml { get; set; }
public string TargetServerUuId { get; set; }
public string RequestedUrl { get; set; }
public ControlRequest()
{
Headers = new HeaderDictionary();
}
}
}
+7 -1
View File
@@ -11,10 +11,16 @@ namespace Emby.Dlna
Headers = new Dictionary<string, string>();
}
public IDictionary<string, string> Headers { get; set; }
public IDictionary<string, string> Headers { get; }
public string Xml { get; set; }
public bool IsSuccessful { get; set; }
/// <inheritdoc />
public override string ToString()
{
return Xml;
}
}
}
+75 -92
View File
@@ -34,12 +34,12 @@ namespace Emby.Dlna.Didl
{
public class DidlBuilder
{
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
private const string NsDidl = "urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/";
private const string NsDc = "http://purl.org/dc/elements/1.1/";
private const string NsUpnp = "urn:schemas-upnp-org:metadata-1-0/upnp/";
private const string NsDlna = "urn:schemas-dlna-org:metadata-1-0/";
private const string NS_DIDL = "urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/";
private const string NS_DC = "http://purl.org/dc/elements/1.1/";
private const string NS_UPNP = "urn:schemas-upnp-org:metadata-1-0/upnp/";
private const string NS_DLNA = "urn:schemas-dlna-org:metadata-1-0/";
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
private readonly DeviceProfile _profile;
private readonly IImageProcessor _imageProcessor;
@@ -96,15 +96,16 @@ namespace Emby.Dlna.Didl
using (StringWriter builder = new StringWriterWithEncoding(Encoding.UTF8))
{
// If this using are changed to single lines, then write.Flush needs to be appended before the return.
using (var writer = XmlWriter.Create(builder, settings))
{
// writer.WriteStartDocument();
writer.WriteStartElement(string.Empty, "DIDL-Lite", NS_DIDL);
writer.WriteStartElement(string.Empty, "DIDL-Lite", NsDidl);
writer.WriteAttributeString("xmlns", "dc", null, NS_DC);
writer.WriteAttributeString("xmlns", "dlna", null, NS_DLNA);
writer.WriteAttributeString("xmlns", "upnp", null, NS_UPNP);
writer.WriteAttributeString("xmlns", "dc", null, NsDc);
writer.WriteAttributeString("xmlns", "dlna", null, NsDlna);
writer.WriteAttributeString("xmlns", "upnp", null, NsUpnp);
// didl.SetAttribute("xmlns:sec", NS_SEC);
WriteXmlRootAttributes(_profile, writer);
@@ -123,7 +124,7 @@ namespace Emby.Dlna.Didl
{
foreach (var att in profile.XmlRootAttributes)
{
var parts = att.Name.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
var parts = att.Name.Split(':', StringSplitOptions.RemoveEmptyEntries);
if (parts.Length == 2)
{
writer.WriteAttributeString(parts[0], parts[1], null, att.Value);
@@ -147,7 +148,7 @@ namespace Emby.Dlna.Didl
{
var clientId = GetClientId(item, null);
writer.WriteStartElement(string.Empty, "item", NS_DIDL);
writer.WriteStartElement(string.Empty, "item", NsDidl);
writer.WriteAttributeString("restricted", "1");
writer.WriteAttributeString("id", clientId);
@@ -207,7 +208,8 @@ namespace Emby.Dlna.Didl
var targetWidth = streamInfo.TargetWidth;
var targetHeight = streamInfo.TargetHeight;
var contentFeatureList = new ContentFeatureBuilder(_profile).BuildVideoHeader(streamInfo.Container,
var contentFeatureList = new ContentFeatureBuilder(_profile).BuildVideoHeader(
streamInfo.Container,
streamInfo.TargetVideoCodec.FirstOrDefault(),
streamInfo.TargetAudioCodec.FirstOrDefault(),
targetWidth,
@@ -279,7 +281,7 @@ namespace Emby.Dlna.Didl
}
else if (string.Equals(subtitleMode, "smi", StringComparison.OrdinalIgnoreCase))
{
writer.WriteStartElement(string.Empty, "res", NS_DIDL);
writer.WriteStartElement(string.Empty, "res", NsDidl);
writer.WriteAttributeString("protocolInfo", "http-get:*:smi/caption:*");
@@ -288,7 +290,7 @@ namespace Emby.Dlna.Didl
}
else
{
writer.WriteStartElement(string.Empty, "res", NS_DIDL);
writer.WriteStartElement(string.Empty, "res", NsDidl);
var protocolInfo = string.Format(
CultureInfo.InvariantCulture,
"http-get:*:text/{0}:*",
@@ -304,7 +306,7 @@ namespace Emby.Dlna.Didl
private void AddVideoResource(XmlWriter writer, Filter filter, string contentFeatures, StreamInfo streamInfo)
{
writer.WriteStartElement(string.Empty, "res", NS_DIDL);
writer.WriteStartElement(string.Empty, "res", NsDidl);
var url = NormalizeDlnaMediaUrl(streamInfo.ToUrl(_serverAddress, _accessToken));
@@ -364,7 +366,8 @@ namespace Emby.Dlna.Didl
writer.WriteAttributeString("bitrate", totalBitrate.Value.ToString(_usCulture));
}
var mediaProfile = _profile.GetVideoMediaProfile(streamInfo.Container,
var mediaProfile = _profile.GetVideoMediaProfile(
streamInfo.Container,
streamInfo.TargetAudioCodec.FirstOrDefault(),
streamInfo.TargetVideoCodec.FirstOrDefault(),
streamInfo.TargetAudioBitrate,
@@ -525,7 +528,7 @@ namespace Emby.Dlna.Didl
private void AddAudioResource(XmlWriter writer, BaseItem audio, string deviceId, Filter filter, StreamInfo streamInfo = null)
{
writer.WriteStartElement(string.Empty, "res", NS_DIDL);
writer.WriteStartElement(string.Empty, "res", NsDidl);
if (streamInfo == null)
{
@@ -582,7 +585,8 @@ namespace Emby.Dlna.Didl
writer.WriteAttributeString("bitrate", targetAudioBitrate.Value.ToString(_usCulture));
}
var mediaProfile = _profile.GetAudioMediaProfile(streamInfo.Container,
var mediaProfile = _profile.GetAudioMediaProfile(
streamInfo.Container,
streamInfo.TargetAudioCodec.FirstOrDefault(),
targetChannels,
targetAudioBitrate,
@@ -595,7 +599,8 @@ namespace Emby.Dlna.Didl
? MimeTypes.GetMimeType(filename)
: mediaProfile.MimeType;
var contentFeatures = new ContentFeatureBuilder(_profile).BuildAudioHeader(streamInfo.Container,
var contentFeatures = new ContentFeatureBuilder(_profile).BuildAudioHeader(
streamInfo.Container,
streamInfo.TargetAudioCodec.FirstOrDefault(),
targetAudioBitrate,
targetSampleRate,
@@ -626,7 +631,7 @@ namespace Emby.Dlna.Didl
public void WriteFolderElement(XmlWriter writer, BaseItem folder, StubType? stubType, BaseItem context, int childCount, Filter filter, string requestedId = null)
{
writer.WriteStartElement(string.Empty, "container", NS_DIDL);
writer.WriteStartElement(string.Empty, "container", NsDidl);
writer.WriteAttributeString("restricted", "1");
writer.WriteAttributeString("searchable", "1");
@@ -713,7 +718,7 @@ namespace Emby.Dlna.Didl
// MediaMonkey for example won't display content without a title
// if (filter.Contains("dc:title"))
{
AddValue(writer, "dc", "title", GetDisplayName(item, itemStubType, context), NS_DC);
AddValue(writer, "dc", "title", GetDisplayName(item, itemStubType, context), NsDc);
}
WriteObjectClass(writer, item, itemStubType);
@@ -722,7 +727,7 @@ namespace Emby.Dlna.Didl
{
if (item.PremiereDate.HasValue)
{
AddValue(writer, "dc", "date", item.PremiereDate.Value.ToString("o", CultureInfo.InvariantCulture), NS_DC);
AddValue(writer, "dc", "date", item.PremiereDate.Value.ToString("o", CultureInfo.InvariantCulture), NsDc);
}
}
@@ -730,13 +735,13 @@ namespace Emby.Dlna.Didl
{
foreach (var genre in item.Genres)
{
AddValue(writer, "upnp", "genre", genre, NS_UPNP);
AddValue(writer, "upnp", "genre", genre, NsUpnp);
}
}
foreach (var studio in item.Studios)
{
AddValue(writer, "upnp", "publisher", studio, NS_UPNP);
AddValue(writer, "upnp", "publisher", studio, NsUpnp);
}
if (!(item is Folder))
@@ -747,28 +752,29 @@ namespace Emby.Dlna.Didl
if (!string.IsNullOrWhiteSpace(desc))
{
AddValue(writer, "dc", "description", desc, NS_DC);
AddValue(writer, "dc", "description", desc, NsDc);
}
}
// if (filter.Contains("upnp:longDescription"))
//{
// {
// if (!string.IsNullOrWhiteSpace(item.Overview))
// {
// AddValue(writer, "upnp", "longDescription", item.Overview, NS_UPNP);
// AddValue(writer, "upnp", "longDescription", item.Overview, NsUpnp);
// }
//}
// }
}
if (!string.IsNullOrEmpty(item.OfficialRating))
{
if (filter.Contains("dc:rating"))
{
AddValue(writer, "dc", "rating", item.OfficialRating, NS_DC);
AddValue(writer, "dc", "rating", item.OfficialRating, NsDc);
}
if (filter.Contains("upnp:rating"))
{
AddValue(writer, "upnp", "rating", item.OfficialRating, NS_UPNP);
AddValue(writer, "upnp", "rating", item.OfficialRating, NsUpnp);
}
}
@@ -780,7 +786,7 @@ namespace Emby.Dlna.Didl
// More types here
// http://oss.linn.co.uk/repos/Public/LibUpnpCil/DidlLite/UpnpAv/Test/TestDidlLite.cs
writer.WriteStartElement("upnp", "class", NS_UPNP);
writer.WriteStartElement("upnp", "class", NsUpnp);
if (item.IsDisplayedAsFolder || stubType.HasValue)
{
@@ -881,7 +887,7 @@ namespace Emby.Dlna.Didl
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);
AddValue(writer, "upnp", type.ToLowerInvariant(), actor.Name, NsUpnp);
}
}
@@ -895,8 +901,8 @@ namespace Emby.Dlna.Didl
{
foreach (var artist in hasArtists.Artists)
{
AddValue(writer, "upnp", "artist", artist, NS_UPNP);
AddValue(writer, "dc", "creator", artist, NS_DC);
AddValue(writer, "upnp", "artist", artist, NsUpnp);
AddValue(writer, "dc", "creator", artist, NsDc);
// If it doesn't support album artists (musicvideo), then tag as both
if (hasAlbumArtists == null)
@@ -916,16 +922,16 @@ namespace Emby.Dlna.Didl
if (!string.IsNullOrWhiteSpace(item.Album))
{
AddValue(writer, "upnp", "album", item.Album, NS_UPNP);
AddValue(writer, "upnp", "album", item.Album, NsUpnp);
}
if (item.IndexNumber.HasValue)
{
AddValue(writer, "upnp", "originalTrackNumber", item.IndexNumber.Value.ToString(_usCulture), NS_UPNP);
AddValue(writer, "upnp", "originalTrackNumber", item.IndexNumber.Value.ToString(_usCulture), NsUpnp);
if (item is Episode)
{
AddValue(writer, "upnp", "episodeNumber", item.IndexNumber.Value.ToString(_usCulture), NS_UPNP);
AddValue(writer, "upnp", "episodeNumber", item.IndexNumber.Value.ToString(_usCulture), NsUpnp);
}
}
}
@@ -934,7 +940,7 @@ namespace Emby.Dlna.Didl
{
try
{
writer.WriteStartElement("upnp", "artist", NS_UPNP);
writer.WriteStartElement("upnp", "artist", NsUpnp);
writer.WriteAttributeString("role", "AlbumArtist");
writer.WriteString(name);
@@ -943,7 +949,7 @@ namespace Emby.Dlna.Didl
}
catch (XmlException ex)
{
_logger.LogError(ex, "Error adding xml value: {value}", name);
_logger.LogError(ex, "Error adding xml value: {Value}", name);
}
}
@@ -955,7 +961,7 @@ namespace Emby.Dlna.Didl
}
catch (XmlException ex)
{
_logger.LogError(ex, "Error adding xml value: {value}", value);
_logger.LogError(ex, "Error adding xml value: {Value}", value);
}
}
@@ -970,14 +976,14 @@ namespace Emby.Dlna.Didl
var albumartUrlInfo = GetImageUrl(imageInfo, _profile.MaxAlbumArtWidth, _profile.MaxAlbumArtHeight, "jpg");
writer.WriteStartElement("upnp", "albumArtURI", NS_UPNP);
writer.WriteAttributeString("dlna", "profileID", NS_DLNA, _profile.AlbumArtPn);
writer.WriteString(albumartUrlInfo.Url);
writer.WriteStartElement("upnp", "albumArtURI", NsUpnp);
writer.WriteAttributeString("dlna", "profileID", NsDlna, _profile.AlbumArtPn);
writer.WriteString(albumartUrlInfo.url);
writer.WriteFullEndElement();
// TOOD: Remove these default values
var iconUrlInfo = GetImageUrl(imageInfo, _profile.MaxIconWidth ?? 48, _profile.MaxIconHeight ?? 48, "jpg");
writer.WriteElementString("upnp", "icon", NS_UPNP, iconUrlInfo.Url);
writer.WriteElementString("upnp", "icon", NsUpnp, iconUrlInfo.url);
if (!_profile.EnableAlbumArtInDidl)
{
@@ -1020,12 +1026,12 @@ namespace Emby.Dlna.Didl
var albumartUrlInfo = GetImageUrl(imageInfo, maxWidth, maxHeight, format);
writer.WriteStartElement(string.Empty, "res", NS_DIDL);
writer.WriteStartElement(string.Empty, "res", NsDidl);
// Images must have a reported size or many clients (Bubble upnp), will only use the first thumbnail
// rather than using a larger one when available
var width = albumartUrlInfo.Width ?? maxWidth;
var height = albumartUrlInfo.Height ?? maxHeight;
var width = albumartUrlInfo.width ?? maxWidth;
var height = albumartUrlInfo.height ?? maxHeight;
var contentFeatures = new ContentFeatureBuilder(_profile)
.BuildImageHeader(format, width, height, imageInfo.IsDirectStream, org_Pn);
@@ -1042,7 +1048,7 @@ namespace Emby.Dlna.Didl
"resolution",
string.Format(CultureInfo.InvariantCulture, "{0}x{1}", width, height));
writer.WriteString(albumartUrlInfo.Url);
writer.WriteString(albumartUrlInfo.url);
writer.WriteFullEndElement();
}
@@ -1138,7 +1144,6 @@ namespace Emby.Dlna.Didl
if (width == 0 || height == 0)
{
// _imageProcessor.GetImageSize(item, imageInfo);
width = null;
height = null;
}
@@ -1148,18 +1153,6 @@ namespace Emby.Dlna.Didl
height = null;
}
// try
//{
// var size = _imageProcessor.GetImageSize(imageInfo);
// width = size.Width;
// height = size.Height;
//}
// catch
//{
//}
var inputFormat = (Path.GetExtension(imageInfo.Path) ?? string.Empty)
.TrimStart('.')
.Replace("jpeg", "jpg", StringComparison.OrdinalIgnoreCase);
@@ -1176,30 +1169,6 @@ namespace Emby.Dlna.Didl
};
}
private class ImageDownloadInfo
{
internal Guid ItemId;
internal string ImageTag;
internal ImageType Type;
internal int? Width;
internal int? Height;
internal bool IsDirectStream;
internal string Format;
internal ItemImageInfo ItemImageInfo;
}
private class ImageUrlInfo
{
internal string Url;
internal int? Width;
internal int? Height;
}
public static string GetClientId(BaseItem item, StubType? stubType)
{
return GetClientId(item.Id, stubType);
@@ -1217,7 +1186,7 @@ namespace Emby.Dlna.Didl
return id;
}
private ImageUrlInfo GetImageUrl(ImageDownloadInfo info, int maxWidth, int maxHeight, string format)
private (string url, int? width, int? height) GetImageUrl(ImageDownloadInfo info, int maxWidth, int maxHeight, string format)
{
var url = string.Format(
CultureInfo.InvariantCulture,
@@ -1255,12 +1224,26 @@ namespace Emby.Dlna.Didl
// just lie
info.IsDirectStream = true;
return new ImageUrlInfo
{
Url = url,
Width = width,
Height = height
};
return (url, width, height);
}
private class ImageDownloadInfo
{
internal Guid ItemId { get; set; }
internal string ImageTag { get; set; }
internal ImageType Type { get; set; }
internal int? Width { get; set; }
internal int? Height { get; set; }
internal bool IsDirectStream { get; set; }
internal string Format { get; set; }
internal ItemImageInfo ItemImageInfo { get; set; }
}
}
}
+2 -4
View File
@@ -18,14 +18,12 @@ namespace Emby.Dlna.Didl
{
_all = string.Equals(filter, "*", StringComparison.OrdinalIgnoreCase);
_fields = (filter ?? string.Empty).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
_fields = (filter ?? string.Empty).Split(',', StringSplitOptions.RemoveEmptyEntries);
}
public bool Contains(string field)
{
// 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 || Array.Exists(_fields, x => x.Equals(field, StringComparison.OrdinalIgnoreCase));
}
}
}
+1 -1
View File
@@ -1,4 +1,5 @@
#pragma warning disable CS1591
#pragma warning disable CA1305
using System;
using System.IO;
@@ -29,7 +30,6 @@ namespace Emby.Dlna.Didl
{
}
public StringWriterWithEncoding(Encoding encoding)
{
_encoding = encoding;
+24
View File
@@ -0,0 +1,24 @@
#nullable enable
#pragma warning disable CS1591
using System.Collections.Generic;
using Emby.Dlna.Configuration;
using MediaBrowser.Common.Configuration;
namespace Emby.Dlna
{
public class DlnaConfigurationFactory : IConfigurationFactory
{
public IEnumerable<ConfigurationStore> GetConfigurations()
{
return new[]
{
new ConfigurationStore
{
Key = "dlna",
ConfigurationType = typeof(DlnaOptions)
}
};
}
}
}
+73 -111
View File
@@ -54,11 +54,15 @@ namespace Emby.Dlna
_appHost = appHost;
}
private string UserProfilesPath => Path.Combine(_appPaths.ConfigurationDirectoryPath, "dlna", "user");
private string SystemProfilesPath => Path.Combine(_appPaths.ConfigurationDirectoryPath, "dlna", "system");
public async Task InitProfilesAsync()
{
try
{
await ExtractSystemProfilesAsync();
await ExtractSystemProfilesAsync().ConfigureAwait(false);
LoadProfiles();
}
catch (Exception ex)
@@ -107,7 +111,7 @@ namespace Emby.Dlna
if (profile != null)
{
_logger.LogDebug("Found matching device profile: {0}", profile.Name);
_logger.LogDebug("Found matching device profile: {ProfileName}", profile.Name);
}
else
{
@@ -122,101 +126,57 @@ namespace Emby.Dlna
var builder = new StringBuilder();
builder.AppendLine("No matching device profile found. The default will need to be used.");
builder.AppendLine(string.Format("DeviceDescription:{0}", profile.DeviceDescription ?? string.Empty));
builder.AppendLine(string.Format("FriendlyName:{0}", profile.FriendlyName ?? string.Empty));
builder.AppendLine(string.Format("Manufacturer:{0}", profile.Manufacturer ?? string.Empty));
builder.AppendLine(string.Format("ManufacturerUrl:{0}", profile.ManufacturerUrl ?? string.Empty));
builder.AppendLine(string.Format("ModelDescription:{0}", profile.ModelDescription ?? string.Empty));
builder.AppendLine(string.Format("ModelName:{0}", profile.ModelName ?? string.Empty));
builder.AppendLine(string.Format("ModelNumber:{0}", profile.ModelNumber ?? string.Empty));
builder.AppendLine(string.Format("ModelUrl:{0}", profile.ModelUrl ?? string.Empty));
builder.AppendLine(string.Format("SerialNumber:{0}", profile.SerialNumber ?? string.Empty));
builder.Append("FriendlyName:").AppendLine(profile.FriendlyName);
builder.Append("Manufacturer:").AppendLine(profile.Manufacturer);
builder.Append("ManufacturerUrl:").AppendLine(profile.ManufacturerUrl);
builder.Append("ModelDescription:").AppendLine(profile.ModelDescription);
builder.Append("ModelName:").AppendLine(profile.ModelName);
builder.Append("ModelNumber:").AppendLine(profile.ModelNumber);
builder.Append("ModelUrl:").AppendLine(profile.ModelUrl);
builder.Append("SerialNumber:").AppendLine(profile.SerialNumber);
_logger.LogInformation(builder.ToString());
}
private bool IsMatch(DeviceIdentification deviceInfo, DeviceIdentification profileInfo)
/// <summary>
/// Attempts to match a device with a profile.
/// Rules:
/// - If the profile field has no value, the field matches irregardless of its contents.
/// - the profile field can be an exact match, or a reg exp.
/// </summary>
/// <param name="deviceInfo">The <see cref="DeviceIdentification"/> of the device.</param>
/// <param name="profileInfo">The <see cref="DeviceIdentification"/> of the profile.</param>
/// <returns><b>True</b> if they match.</returns>
public bool IsMatch(DeviceIdentification deviceInfo, DeviceIdentification profileInfo)
{
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;
return IsRegexOrSubstringMatch(deviceInfo.FriendlyName, profileInfo.FriendlyName)
&& IsRegexOrSubstringMatch(deviceInfo.Manufacturer, profileInfo.Manufacturer)
&& IsRegexOrSubstringMatch(deviceInfo.ManufacturerUrl, profileInfo.ManufacturerUrl)
&& IsRegexOrSubstringMatch(deviceInfo.ModelDescription, profileInfo.ModelDescription)
&& IsRegexOrSubstringMatch(deviceInfo.ModelName, profileInfo.ModelName)
&& IsRegexOrSubstringMatch(deviceInfo.ModelNumber, profileInfo.ModelNumber)
&& IsRegexOrSubstringMatch(deviceInfo.ModelUrl, profileInfo.ModelUrl)
&& IsRegexOrSubstringMatch(deviceInfo.SerialNumber, profileInfo.SerialNumber);
}
private bool IsRegexMatch(string input, string pattern)
private bool IsRegexOrSubstringMatch(string input, string pattern)
{
if (string.IsNullOrEmpty(pattern))
{
// In profile identification: An empty pattern matches anything.
return true;
}
if (string.IsNullOrEmpty(input))
{
// The profile contains a value, and the device doesn't.
return false;
}
try
{
return Regex.IsMatch(input, pattern);
return input.Equals(pattern, StringComparison.OrdinalIgnoreCase)
|| Regex.IsMatch(input, pattern, RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
}
catch (ArgumentException ex)
{
@@ -240,7 +200,7 @@ namespace Emby.Dlna
}
else
{
var headerString = string.Join(", ", headers.Select(i => string.Format("{0}={1}", i.Key, i.Value)).ToArray());
var headerString = string.Join(", ", headers.Select(i => string.Format(CultureInfo.InvariantCulture, "{0}={1}", i.Key, i.Value)));
_logger.LogDebug("No matching device profile found. {0}", headerString);
}
@@ -280,10 +240,6 @@ namespace Emby.Dlna
return false;
}
private string UserProfilesPath => Path.Combine(_appPaths.ConfigurationDirectoryPath, "dlna", "user");
private string SystemProfilesPath => Path.Combine(_appPaths.ConfigurationDirectoryPath, "dlna", "system");
private IEnumerable<DeviceProfile> GetProfiles(string path, DeviceProfileType type)
{
try
@@ -342,7 +298,12 @@ namespace Emby.Dlna
throw new ArgumentNullException(nameof(id));
}
var info = GetProfileInfosInternal().First(i => string.Equals(i.Info.Id, id, StringComparison.OrdinalIgnoreCase));
var info = GetProfileInfosInternal().FirstOrDefault(i => string.Equals(i.Info.Id, id, StringComparison.OrdinalIgnoreCase));
if (info == null)
{
return null;
}
return ParseProfileFile(info.Path, info.Info.Type);
}
@@ -387,14 +348,14 @@ namespace Emby.Dlna
foreach (var name in _assembly.GetManifestResourceNames())
{
if (!name.StartsWith(namespaceName))
if (!name.StartsWith(namespaceName, StringComparison.Ordinal))
{
continue;
}
var filename = Path.GetFileName(name).Substring(namespaceName.Length);
var path = Path.Combine(systemProfilesPath, filename);
var path = Path.Join(
systemProfilesPath,
Path.GetFileName(name.AsSpan()).Slice(namespaceName.Length));
using (var stream = _assembly.GetManifestResourceStream(name))
{
@@ -404,9 +365,10 @@ namespace Emby.Dlna
{
Directory.CreateDirectory(systemProfilesPath);
using (var fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read))
// use FileShare.None as this bypasses dotnet bug dotnet/runtime#42790 .
using (var fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None))
{
await stream.CopyToAsync(fileStream);
await stream.CopyToAsync(fileStream).ConfigureAwait(false);
}
}
}
@@ -493,10 +455,10 @@ 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 serialize properly to xml (different root element tag name).
/// </summary>
/// <param name="profile"></param>
/// <returns></returns>
/// <param name="profile">The device profile.</param>
/// <returns>The re-serialized device profile.</returns>
private DeviceProfile ReserializeProfile(DeviceProfile profile)
{
if (profile.GetType() == typeof(DeviceProfile))
@@ -509,17 +471,9 @@ namespace Emby.Dlna
return _jsonSerializer.DeserializeFromString<DeviceProfile>(json);
}
class InternalProfileInfo
{
internal DeviceProfileInfo Info { get; set; }
internal string Path { get; set; }
}
public string GetServerDescriptionXml(IHeaderDictionary headers, string serverUuId, string serverAddress)
{
var profile = GetProfile(headers) ??
GetDefaultProfile();
var profile = GetDefaultProfile();
var serverId = _appHost.SystemId;
@@ -540,7 +494,15 @@ namespace Emby.Dlna
Stream = _assembly.GetManifestResourceStream(resource)
};
}
private class InternalProfileInfo
{
internal DeviceProfileInfo Info { get; set; }
internal string Path { get; set; }
}
}
/*
class DlnaProfileEntryPoint : IServerEntryPoint
{
+3 -2
View File
@@ -17,10 +17,10 @@
</ItemGroup>
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<TargetFramework>net5.0</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<TreatWarningsAsErrors Condition=" '$(Configuration)' == 'Release'" >true</TreatWarningsAsErrors>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<!-- Code Analyzers-->
@@ -80,6 +80,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Http" Version="3.1.6" />
</ItemGroup>
</Project>
+1 -1
View File
@@ -15,6 +15,6 @@ namespace Emby.Dlna
public string ContentType { get; set; }
public Dictionary<string, string> Headers { get; set; }
public Dictionary<string, string> Headers { get; }
}
}
@@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net.Http;
using System.Net.Mime;
using System.Text;
using System.Threading.Tasks;
using MediaBrowser.Common.Extensions;
@@ -14,17 +15,19 @@ using Microsoft.Extensions.Logging;
namespace Emby.Dlna.Eventing
{
public class EventManager : IEventManager
public class DlnaEventManager : IDlnaEventManager
{
private readonly ConcurrentDictionary<string, EventSubscription> _subscriptions =
new ConcurrentDictionary<string, EventSubscription>(StringComparer.OrdinalIgnoreCase);
private readonly ILogger _logger;
private readonly IHttpClient _httpClient;
private readonly IHttpClientFactory _httpClientFactory;
public EventManager(ILogger logger, IHttpClient httpClient)
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
public DlnaEventManager(ILogger logger, IHttpClientFactory httpClientFactory)
{
_httpClient = httpClient;
_httpClientFactory = httpClientFactory;
_logger = logger;
}
@@ -58,7 +61,8 @@ namespace Emby.Dlna.Eventing
var timeout = ParseTimeout(requestedTimeoutString) ?? 300;
var id = "uuid:" + Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture);
_logger.LogDebug("Creating event subscription for {0} with timeout of {1} to {2}",
_logger.LogDebug(
"Creating event subscription for {0} with timeout of {1} to {2}",
notificationType,
timeout,
callbackUrl);
@@ -68,7 +72,8 @@ namespace Emby.Dlna.Eventing
Id = id,
CallbackUrl = callbackUrl,
SubscriptionTime = DateTime.UtcNow,
TimeoutSeconds = timeout
TimeoutSeconds = timeout,
NotificationType = notificationType
});
return GetEventSubscriptionResponse(id, requestedTimeoutString, timeout);
@@ -79,7 +84,7 @@ namespace Emby.Dlna.Eventing
if (!string.IsNullOrEmpty(header))
{
// Starts with SECOND-
header = header.Split('-').Last();
header = header.Split('-')[^1];
if (int.TryParse(header, NumberStyles.Integer, _usCulture, out var val))
{
@@ -94,7 +99,7 @@ namespace Emby.Dlna.Eventing
{
_logger.LogDebug("Cancelling event subscription {0}", subscriptionId);
_subscriptions.TryRemove(subscriptionId, out EventSubscription sub);
_subscriptions.TryRemove(subscriptionId, out _);
return new EventSubscriptionResponse
{
@@ -103,7 +108,6 @@ namespace Emby.Dlna.Eventing
};
}
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
private EventSubscriptionResponse GetEventSubscriptionResponse(string subscriptionId, string requestedTimeoutString, int timeoutSeconds)
{
var response = new EventSubscriptionResponse
@@ -152,33 +156,30 @@ namespace Emby.Dlna.Eventing
builder.Append("<e:propertyset xmlns:e=\"urn:schemas-upnp-org:event-1-0\">");
foreach (var key in stateVariables.Keys)
{
builder.Append("<e:property>");
builder.Append("<" + key + ">");
builder.Append(stateVariables[key]);
builder.Append("</" + key + ">");
builder.Append("</e:property>");
builder.Append("<e:property>")
.Append('<')
.Append(key)
.Append('>')
.Append(stateVariables[key])
.Append("</")
.Append(key)
.Append('>')
.Append("</e:property>");
}
builder.Append("</e:propertyset>");
var options = new HttpRequestOptions
{
RequestContent = builder.ToString(),
RequestContentType = "text/xml",
Url = subscription.CallbackUrl,
BufferContent = false
};
options.RequestHeaders.Add("NT", subscription.NotificationType);
options.RequestHeaders.Add("NTS", "upnp:propchange");
options.RequestHeaders.Add("SID", subscription.Id);
options.RequestHeaders.Add("SEQ", subscription.TriggerCount.ToString(_usCulture));
using var options = new HttpRequestMessage(new HttpMethod("NOTIFY"), subscription.CallbackUrl);
options.Content = new StringContent(builder.ToString(), Encoding.UTF8, MediaTypeNames.Text.Xml);
options.Headers.TryAddWithoutValidation("NT", subscription.NotificationType);
options.Headers.TryAddWithoutValidation("NTS", "upnp:propchange");
options.Headers.TryAddWithoutValidation("SID", subscription.Id);
options.Headers.TryAddWithoutValidation("SEQ", subscription.TriggerCount.ToString(_usCulture));
try
{
using (await _httpClient.SendAsync(options, new HttpMethod("NOTIFY")).ConfigureAwait(false))
{
}
using var response = await _httpClientFactory.CreateClient(NamedClient.Default)
.SendAsync(options, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false);
}
catch (OperationCanceledException)
{
+1 -1
View File
@@ -2,7 +2,7 @@
namespace Emby.Dlna
{
public interface IConnectionManager : IEventManager, IUpnpService
public interface IConnectionManager : IDlnaEventManager, IUpnpService
{
}
}
+1 -1
View File
@@ -2,7 +2,7 @@
namespace Emby.Dlna
{
public interface IContentDirectory : IEventManager, IUpnpService
public interface IContentDirectory : IDlnaEventManager, IUpnpService
{
}
}
@@ -2,22 +2,32 @@
namespace Emby.Dlna
{
public interface IEventManager
public interface IDlnaEventManager
{
/// <summary>
/// Cancels the event subscription.
/// </summary>
/// <param name="subscriptionId">The subscription identifier.</param>
/// <returns>The response.</returns>
EventSubscriptionResponse CancelEventSubscription(string subscriptionId);
/// <summary>
/// Renews the event subscription.
/// </summary>
/// <param name="subscriptionId">The subscription identifier.</param>
/// <param name="notificationType">The notification type.</param>
/// <param name="requestedTimeoutString">The requested timeout as a sting.</param>
/// <param name="callbackUrl">The callback url.</param>
/// <returns>The response.</returns>
EventSubscriptionResponse RenewEventSubscription(string subscriptionId, string notificationType, string requestedTimeoutString, string callbackUrl);
/// <summary>
/// Creates the event subscription.
/// </summary>
/// <param name="notificationType">The notification type.</param>
/// <param name="requestedTimeoutString">The requested timeout as a sting.</param>
/// <param name="callbackUrl">The callback url.</param>
/// <returns>The response.</returns>
EventSubscriptionResponse CreateEventSubscription(string notificationType, string requestedTimeoutString, string callbackUrl);
}
}
+1 -1
View File
@@ -2,7 +2,7 @@
namespace Emby.Dlna
{
public interface IMediaReceiverRegistrar : IEventManager, IUpnpService
public interface IMediaReceiverRegistrar : IDlnaEventManager, IUpnpService
{
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 286 B

After

Width:  |  Height:  |  Size: 278 B

+101 -48
View File
@@ -2,11 +2,15 @@
using System;
using System.Globalization;
using System.Linq;
using System.Net.Http;
using System.Net.Sockets;
using System.Threading;
using System.Threading.Tasks;
using Emby.Dlna.PlayTo;
using Emby.Dlna.Ssdp;
using Jellyfin.Networking.Configuration;
using Jellyfin.Networking.Manager;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Net;
@@ -30,13 +34,13 @@ using OperatingSystem = MediaBrowser.Common.System.OperatingSystem;
namespace Emby.Dlna.Main
{
public class DlnaEntryPoint : IServerEntryPoint, IRunBeforeStartup
public sealed class DlnaEntryPoint : IServerEntryPoint, IRunBeforeStartup
{
private readonly IServerConfigurationManager _config;
private readonly ILogger<DlnaEntryPoint> _logger;
private readonly IServerApplicationHost _appHost;
private readonly ISessionManager _sessionManager;
private readonly IHttpClient _httpClient;
private readonly IHttpClientFactory _httpClientFactory;
private readonly ILibraryManager _libraryManager;
private readonly IUserManager _userManager;
private readonly IDlnaManager _dlnaManager;
@@ -49,25 +53,21 @@ namespace Emby.Dlna.Main
private readonly ISocketFactory _socketFactory;
private readonly INetworkManager _networkManager;
private readonly object _syncLock = new object();
private readonly NetworkConfiguration _netConfig;
private readonly bool _disabled;
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;
private bool _disposed;
public DlnaEntryPoint(
IServerConfigurationManager config,
ILoggerFactory loggerFactory,
IServerApplicationHost appHost,
ISessionManager sessionManager,
IHttpClient httpClient,
IHttpClientFactory httpClientFactory,
ILibraryManager libraryManager,
IUserManager userManager,
IDlnaManager dlnaManager,
@@ -85,7 +85,7 @@ namespace Emby.Dlna.Main
_config = config;
_appHost = appHost;
_sessionManager = sessionManager;
_httpClient = httpClient;
_httpClientFactory = httpClientFactory;
_libraryManager = libraryManager;
_userManager = userManager;
_dlnaManager = dlnaManager;
@@ -99,60 +99,88 @@ namespace Emby.Dlna.Main
_networkManager = networkManager;
_logger = loggerFactory.CreateLogger<DlnaEntryPoint>();
ContentDirectory = new ContentDirectory.ContentDirectory(
ContentDirectory = new ContentDirectory.ContentDirectoryService(
dlnaManager,
userDataManager,
imageProcessor,
libraryManager,
config,
userManager,
loggerFactory.CreateLogger<ContentDirectory.ContentDirectory>(),
httpClient,
loggerFactory.CreateLogger<ContentDirectory.ContentDirectoryService>(),
httpClientFactory,
localizationManager,
mediaSourceManager,
userViewManager,
mediaEncoder,
tvSeriesManager);
ConnectionManager = new ConnectionManager.ConnectionManager(
ConnectionManager = new ConnectionManager.ConnectionManagerService(
dlnaManager,
config,
loggerFactory.CreateLogger<ConnectionManager.ConnectionManager>(),
httpClient);
loggerFactory.CreateLogger<ConnectionManager.ConnectionManagerService>(),
httpClientFactory);
MediaReceiverRegistrar = new MediaReceiverRegistrar.MediaReceiverRegistrar(
loggerFactory.CreateLogger<MediaReceiverRegistrar.MediaReceiverRegistrar>(),
httpClient,
MediaReceiverRegistrar = new MediaReceiverRegistrar.MediaReceiverRegistrarService(
loggerFactory.CreateLogger<MediaReceiverRegistrar.MediaReceiverRegistrarService>(),
httpClientFactory,
config);
Current = this;
_netConfig = config.GetConfiguration<NetworkConfiguration>("network");
_disabled = appHost.ListenWithHttps && _netConfig.RequireHttps;
if (_disabled && _config.GetDlnaConfiguration().EnableServer)
{
_logger.LogError("The DLNA specification does not support HTTPS.");
}
}
public static DlnaEntryPoint Current { get; private set; }
/// <summary>
/// Gets a value indicating whether the dlna server is enabled.
/// </summary>
public static bool Enabled { get; private set; }
public IContentDirectory ContentDirectory { get; private set; }
public IConnectionManager ConnectionManager { get; private set; }
public IMediaReceiverRegistrar MediaReceiverRegistrar { get; private set; }
public async Task RunAsync()
{
await ((DlnaManager)_dlnaManager).InitProfilesAsync().ConfigureAwait(false);
await ReloadComponents().ConfigureAwait(false);
if (_disabled)
{
// No use starting as dlna won't work, as we're running purely on HTTPS.
return;
}
ReloadComponents();
_config.NamedConfigurationUpdated += OnNamedConfigurationUpdated;
}
private async void OnNamedConfigurationUpdated(object sender, ConfigurationUpdateEventArgs e)
private void OnNamedConfigurationUpdated(object sender, ConfigurationUpdateEventArgs e)
{
if (string.Equals(e.Key, "dlna", StringComparison.OrdinalIgnoreCase))
{
await ReloadComponents().ConfigureAwait(false);
ReloadComponents();
}
}
private async Task ReloadComponents()
private void ReloadComponents()
{
var options = _config.GetDlnaConfiguration();
Enabled = options.EnableServer;
StartSsdpHandler();
if (options.EnableServer)
{
await StartDevicePublisher(options).ConfigureAwait(false);
StartDevicePublisher(options);
}
else
{
@@ -201,7 +229,10 @@ namespace Emby.Dlna.Main
{
try
{
((DeviceDiscovery)_deviceDiscovery).Start(communicationsServer);
if (communicationsServer != null)
{
((DeviceDiscovery)_deviceDiscovery).Start(communicationsServer);
}
}
catch (Exception ex)
{
@@ -222,7 +253,7 @@ namespace Emby.Dlna.Main
}
}
public async Task StartDevicePublisher(Configuration.DlnaOptions options)
public void StartDevicePublisher(Configuration.DlnaOptions options)
{
if (!options.BlastAliveMessages)
{
@@ -242,7 +273,7 @@ namespace Emby.Dlna.Main
SupportPnpRootDevice = false
};
await RegisterServerEndpoints().ConfigureAwait(false);
RegisterServerEndpoints();
_publisher.StartBroadcastingAliveMessages(TimeSpan.FromSeconds(options.BlastAliveMessageIntervalSeconds));
}
@@ -252,13 +283,22 @@ namespace Emby.Dlna.Main
}
}
private async Task RegisterServerEndpoints()
private void RegisterServerEndpoints()
{
var addresses = await _appHost.GetLocalIpAddresses(CancellationToken.None).ConfigureAwait(false);
var udn = CreateUuid(_appHost.SystemId);
var descriptorUri = "/dlna/" + udn + "/description.xml";
foreach (var address in addresses)
var bindAddresses = NetworkManager.CreateCollection(
_networkManager.GetInternalBindAddresses()
.Where(i => i.AddressFamily == AddressFamily.InterNetwork || (i.AddressFamily == AddressFamily.InterNetworkV6 && i.Address.ScopeId != 0)));
if (bindAddresses.Count == 0)
{
// No interfaces returned, so use loopback.
bindAddresses = _networkManager.GetLoopbacks();
}
foreach (IPNetAddress address in bindAddresses)
{
if (address.AddressFamily == AddressFamily.InterNetworkV6)
{
@@ -267,7 +307,7 @@ namespace Emby.Dlna.Main
}
// Limit to LAN addresses only
if (!_networkManager.IsAddressInSubnets(address, true, true))
if (!_networkManager.IsInLocalNetwork(address))
{
continue;
}
@@ -276,15 +316,20 @@ namespace Emby.Dlna.Main
_logger.LogInformation("Registering publisher for {0} on {1}", fullService, address);
var descriptorUri = "/dlna/" + udn + "/description.xml";
var uri = new Uri(_appHost.GetLocalApiUrl(address) + descriptorUri);
var uri = new UriBuilder(_appHost.GetSmartApiUrl(address.Address) + descriptorUri);
if (!string.IsNullOrEmpty(_appHost.PublishedServerUrl))
{
// DLNA will only work over http, so we must reset to http:// : {port}.
uri.Scheme = "http";
uri.Port = _netConfig.HttpServerPortNumber;
}
var device = new SsdpRootDevice
{
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),
Location = uri.Uri, // Must point to the URL that serves your devices UPnP description document.
Address = address.Address,
PrefixLength = address.PrefixLength,
FriendlyName = "Jellyfin",
Manufacturer = "Jellyfin",
ModelName = "Jellyfin Server",
@@ -362,7 +407,7 @@ namespace Emby.Dlna.Main
_appHost,
_imageProcessor,
_deviceDiscovery,
_httpClient,
_httpClientFactory,
_config,
_userDataManager,
_localization,
@@ -399,8 +444,24 @@ namespace Emby.Dlna.Main
}
}
public void DisposeDevicePublisher()
{
if (_publisher != null)
{
_logger.LogInformation("Disposing SsdpDevicePublisher");
_publisher.Dispose();
_publisher = null;
}
}
/// <inheritdoc />
public void Dispose()
{
if (_disposed)
{
return;
}
DisposeDevicePublisher();
DisposePlayToManager();
DisposeDeviceDiscovery();
@@ -416,16 +477,8 @@ namespace Emby.Dlna.Main
ConnectionManager = null;
MediaReceiverRegistrar = null;
Current = null;
}
public void DisposeDevicePublisher()
{
if (_publisher != null)
{
_logger.LogInformation("Disposing SsdpDevicePublisher");
_publisher.Dispose();
_publisher = null;
}
_disposed = true;
}
}
}
@@ -1,5 +1,3 @@
#pragma warning disable CS1591
using System;
using System.Collections.Generic;
using System.Xml;
@@ -10,8 +8,16 @@ using Microsoft.Extensions.Logging;
namespace Emby.Dlna.MediaReceiverRegistrar
{
/// <summary>
/// Defines the <see cref="ControlHandler" />.
/// </summary>
public class ControlHandler : BaseControlHandler
{
/// <summary>
/// Initializes a new instance of the <see cref="ControlHandler"/> class.
/// </summary>
/// <param name="config">The <see cref="IServerConfigurationManager"/> for use with the <see cref="ControlHandler"/> instance.</param>
/// <param name="logger">The <see cref="ILogger"/> for use with the <see cref="ControlHandler"/> instance.</param>
public ControlHandler(IServerConfigurationManager config, ILogger logger)
: base(config, logger)
{
@@ -35,9 +41,17 @@ namespace Emby.Dlna.MediaReceiverRegistrar
throw new ResourceNotFoundException("Unexpected control request name: " + methodName);
}
/// <summary>
/// Records that the handle is authorized in the xml stream.
/// </summary>
/// <param name="xmlWriter">The <see cref="XmlWriter"/>.</param>
private static void HandleIsAuthorized(XmlWriter xmlWriter)
=> xmlWriter.WriteElementString("Result", "1");
/// <summary>
/// Records that the handle is validated in the xml stream.
/// </summary>
/// <param name="xmlWriter">The <see cref="XmlWriter"/>.</param>
private static void HandleIsValidated(XmlWriter xmlWriter)
=> xmlWriter.WriteElementString("Result", "1");
}
@@ -1,39 +0,0 @@
#pragma warning disable CS1591
using System.Threading.Tasks;
using Emby.Dlna.Service;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
using Microsoft.Extensions.Logging;
namespace Emby.Dlna.MediaReceiverRegistrar
{
public class MediaReceiverRegistrar : BaseService, IMediaReceiverRegistrar
{
private readonly IServerConfigurationManager _config;
public MediaReceiverRegistrar(
ILogger<MediaReceiverRegistrar> logger,
IHttpClient httpClient,
IServerConfigurationManager config)
: base(logger, httpClient)
{
_config = config;
}
/// <inheritdoc />
public string GetServiceXml()
{
return new MediaReceiverRegistrarXmlBuilder().GetXml();
}
/// <inheritdoc />
public Task<ControlResponse> ProcessControlRequestAsync(ControlRequest request)
{
return new ControlHandler(
_config,
Logger)
.ProcessControlRequestAsync(request);
}
}
}
@@ -0,0 +1,46 @@
using System.Net.Http;
using System.Threading.Tasks;
using Emby.Dlna.Service;
using MediaBrowser.Controller.Configuration;
using Microsoft.Extensions.Logging;
namespace Emby.Dlna.MediaReceiverRegistrar
{
/// <summary>
/// Defines the <see cref="MediaReceiverRegistrarService" />.
/// </summary>
public class MediaReceiverRegistrarService : BaseService, IMediaReceiverRegistrar
{
private readonly IServerConfigurationManager _config;
/// <summary>
/// Initializes a new instance of the <see cref="MediaReceiverRegistrarService"/> class.
/// </summary>
/// <param name="logger">The <see cref="ILogger{MediaReceiverRegistrarService}"/> for use with the <see cref="MediaReceiverRegistrarService"/> instance.</param>
/// <param name="httpClientFactory">The <see cref="IHttpClientFactory"/> for use with the <see cref="MediaReceiverRegistrarService"/> instance.</param>
/// <param name="config">The <see cref="IServerConfigurationManager"/> for use with the <see cref="MediaReceiverRegistrarService"/> instance.</param>
public MediaReceiverRegistrarService(
ILogger<MediaReceiverRegistrarService> logger,
IHttpClientFactory httpClientFactory,
IServerConfigurationManager config)
: base(logger, httpClientFactory)
{
_config = config;
}
/// <inheritdoc />
public string GetServiceXml()
{
return MediaReceiverRegistrarXmlBuilder.GetXml();
}
/// <inheritdoc />
public Task<ControlResponse> ProcessControlRequestAsync(ControlRequest request)
{
return new ControlHandler(
_config,
Logger)
.ProcessControlRequestAsync(request);
}
}
}
@@ -1,78 +1,89 @@
#pragma warning disable CS1591
using System.Collections.Generic;
using Emby.Dlna.Common;
using Emby.Dlna.Service;
using MediaBrowser.Model.Dlna;
namespace Emby.Dlna.MediaReceiverRegistrar
{
public class MediaReceiverRegistrarXmlBuilder
/// <summary>
/// Defines the <see cref="MediaReceiverRegistrarXmlBuilder" />.
/// See https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-drmnd/5d37515e-7a63-4709-8258-8fd4e0ed4482.
/// </summary>
public static class MediaReceiverRegistrarXmlBuilder
{
public string GetXml()
/// <summary>
/// Retrieves an XML description of the X_MS_MediaReceiverRegistrar.
/// </summary>
/// <returns>An XML representation of this service.</returns>
public static string GetXml()
{
return new ServiceXmlBuilder().GetXml(new ServiceActionListBuilder().GetActions(),
GetStateVariables());
return new ServiceXmlBuilder().GetXml(ServiceActionListBuilder.GetActions(), GetStateVariables());
}
/// <summary>
/// The a list of all the state variables for this invocation.
/// </summary>
/// <returns>The <see cref="IEnumerable{StateVariable}"/>.</returns>
private static IEnumerable<StateVariable> GetStateVariables()
{
var list = new List<StateVariable>();
list.Add(new StateVariable
var list = new List<StateVariable>
{
Name = "AuthorizationGrantedUpdateID",
DataType = "ui4",
SendsEvents = true
});
new StateVariable
{
Name = "AuthorizationGrantedUpdateID",
DataType = "ui4",
SendsEvents = true
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_DeviceID",
DataType = "string",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_DeviceID",
DataType = "string",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "AuthorizationDeniedUpdateID",
DataType = "ui4",
SendsEvents = true
});
new StateVariable
{
Name = "AuthorizationDeniedUpdateID",
DataType = "ui4",
SendsEvents = true
},
list.Add(new StateVariable
{
Name = "ValidationSucceededUpdateID",
DataType = "ui4",
SendsEvents = true
});
new StateVariable
{
Name = "ValidationSucceededUpdateID",
DataType = "ui4",
SendsEvents = true
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_RegistrationRespMsg",
DataType = "bin.base64",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_RegistrationRespMsg",
DataType = "bin.base64",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_RegistrationReqMsg",
DataType = "bin.base64",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_RegistrationReqMsg",
DataType = "bin.base64",
SendsEvents = false
},
list.Add(new StateVariable
{
Name = "ValidationRevokedUpdateID",
DataType = "ui4",
SendsEvents = true
});
new StateVariable
{
Name = "ValidationRevokedUpdateID",
DataType = "ui4",
SendsEvents = true
},
list.Add(new StateVariable
{
Name = "A_ARG_TYPE_Result",
DataType = "int",
SendsEvents = false
});
new StateVariable
{
Name = "A_ARG_TYPE_Result",
DataType = "int",
SendsEvents = false
}
};
return list;
}
@@ -1,13 +1,18 @@
#pragma warning disable CS1591
using System.Collections.Generic;
using Emby.Dlna.Common;
namespace Emby.Dlna.MediaReceiverRegistrar
{
public class ServiceActionListBuilder
/// <summary>
/// Defines the <see cref="ServiceActionListBuilder" />.
/// </summary>
public static class ServiceActionListBuilder
{
public IEnumerable<ServiceAction> GetActions()
/// <summary>
/// Returns a list of services that this instance provides.
/// </summary>
/// <returns>An <see cref="IEnumerable{ServiceAction}"/>.</returns>
public static IEnumerable<ServiceAction> GetActions()
{
return new[]
{
@@ -21,6 +26,10 @@ namespace Emby.Dlna.MediaReceiverRegistrar
};
}
/// <summary>
/// Returns the action details for "IsValidated".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetIsValidated()
{
var action = new ServiceAction
@@ -43,6 +52,10 @@ namespace Emby.Dlna.MediaReceiverRegistrar
return action;
}
/// <summary>
/// Returns the action details for "IsAuthorized".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetIsAuthorized()
{
var action = new ServiceAction
@@ -65,6 +78,10 @@ namespace Emby.Dlna.MediaReceiverRegistrar
return action;
}
/// <summary>
/// Returns the action details for "RegisterDevice".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetRegisterDevice()
{
var action = new ServiceAction
@@ -87,6 +104,10 @@ namespace Emby.Dlna.MediaReceiverRegistrar
return action;
}
/// <summary>
/// Returns the action details for "GetValidationSucceededUpdateID".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetGetValidationSucceededUpdateID()
{
var action = new ServiceAction
@@ -103,7 +124,11 @@ namespace Emby.Dlna.MediaReceiverRegistrar
return action;
}
private ServiceAction GetGetAuthorizationDeniedUpdateID()
/// <summary>
/// Returns the action details for "GetGetAuthorizationDeniedUpdateID".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetGetAuthorizationDeniedUpdateID()
{
var action = new ServiceAction
{
@@ -119,7 +144,11 @@ namespace Emby.Dlna.MediaReceiverRegistrar
return action;
}
private ServiceAction GetGetValidationRevokedUpdateID()
/// <summary>
/// Returns the action details for "GetValidationRevokedUpdateID".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetGetValidationRevokedUpdateID()
{
var action = new ServiceAction
{
@@ -135,7 +164,11 @@ namespace Emby.Dlna.MediaReceiverRegistrar
return action;
}
private ServiceAction GetGetAuthorizationGrantedUpdateID()
/// <summary>
/// Returns the action details for "GetAuthorizationGrantedUpdateID".
/// </summary>
/// <returns>The <see cref="ServiceAction"/>.</returns>
private static ServiceAction GetGetAuthorizationGrantedUpdateID()
{
var action = new ServiceAction
{
+172 -141
View File
@@ -4,30 +4,54 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net.Http;
using System.Security;
using System.Threading;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Linq;
using Emby.Dlna.Common;
using Emby.Dlna.Server;
using Emby.Dlna.Ssdp;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
using Microsoft.Extensions.Logging;
namespace Emby.Dlna.PlayTo
{
public class Device : IDisposable
{
private static readonly CultureInfo UsCulture = new CultureInfo("en-US");
private readonly IHttpClientFactory _httpClientFactory;
private readonly ILogger _logger;
private readonly object _timerLock = new object();
private Timer _timer;
private int _muteVol;
private int _volume;
private DateTime _lastVolumeRefresh;
private bool _volumeRefreshActive;
private int _connectFailureCount;
private bool _disposed;
public Device(DeviceInfo deviceProperties, IHttpClientFactory httpClientFactory, ILogger logger)
{
Properties = deviceProperties;
_httpClientFactory = httpClientFactory;
_logger = logger;
}
public event EventHandler<PlaybackStartEventArgs> PlaybackStart;
public event EventHandler<PlaybackProgressEventArgs> PlaybackProgress;
public event EventHandler<PlaybackStoppedEventArgs> PlaybackStopped;
public event EventHandler<MediaChangedEventArgs> MediaChanged;
public DeviceInfo Properties { get; set; }
private int _muteVol;
public bool IsMuted { get; set; }
private int _volume;
public int Volume
{
get
@@ -43,29 +67,21 @@ namespace Emby.Dlna.PlayTo
public TimeSpan Position { get; set; } = TimeSpan.FromSeconds(0);
public TRANSPORTSTATE TransportState { get; private set; }
public TransportState TransportState { get; private set; }
public bool IsPlaying => TransportState == TRANSPORTSTATE.PLAYING;
public bool IsPlaying => TransportState == TransportState.Playing;
public bool IsPaused => TransportState == TRANSPORTSTATE.PAUSED || TransportState == TRANSPORTSTATE.PAUSED_PLAYBACK;
public bool IsPaused => TransportState == TransportState.Paused || TransportState == TransportState.PausedPlayback;
public bool IsStopped => TransportState == TRANSPORTSTATE.STOPPED;
private readonly IHttpClient _httpClient;
private readonly ILogger _logger;
private readonly IServerConfigurationManager _config;
public bool IsStopped => TransportState == TransportState.Stopped;
public Action OnDeviceUnavailable { get; set; }
public Device(DeviceInfo deviceProperties, IHttpClient httpClient, ILogger logger, IServerConfigurationManager config)
{
Properties = deviceProperties;
_httpClient = httpClient;
_logger = logger;
_config = config;
}
private TransportCommands AvCommands { get; set; }
private TransportCommands RendererCommands { get; set; }
public UBaseObject CurrentMediaInfo { get; private set; }
public void Start()
{
@@ -73,8 +89,6 @@ namespace Emby.Dlna.PlayTo
_timer = new Timer(TimerCallback, null, 1000, Timeout.Infinite);
}
private DateTime _lastVolumeRefresh;
private bool _volumeRefreshActive;
private Task RefreshVolumeIfNeeded()
{
if (_volumeRefreshActive
@@ -105,7 +119,6 @@ namespace Emby.Dlna.PlayTo
}
}
private readonly object _timerLock = new object();
private void RestartTimer(bool immediate = false)
{
lock (_timerLock)
@@ -206,7 +219,7 @@ namespace Emby.Dlna.PlayTo
{
var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false);
var command = rendererCommands.ServiceActions.FirstOrDefault(c => c.Name == "SetMute");
var command = rendererCommands?.ServiceActions.FirstOrDefault(c => c.Name == "SetMute");
if (command == null)
{
return false;
@@ -222,7 +235,7 @@ namespace Emby.Dlna.PlayTo
_logger.LogDebug("Setting mute");
var value = mute ? 1 : 0;
await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType, value))
await new SsdpHttpClient(_httpClientFactory).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType, value))
.ConfigureAwait(false);
IsMuted = mute;
@@ -233,11 +246,14 @@ namespace Emby.Dlna.PlayTo
/// <summary>
/// Sets volume on a scale of 0-100.
/// </summary>
/// <param name="value">The volume on a scale of 0-100.</param>
/// <param name="cancellationToken">The cancellation token to cancel operation.</param>
/// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>
public async Task SetVolume(int value, CancellationToken cancellationToken)
{
var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false);
var command = rendererCommands.ServiceActions.FirstOrDefault(c => c.Name == "SetVolume");
var command = rendererCommands?.ServiceActions.FirstOrDefault(c => c.Name == "SetVolume");
if (command == null)
{
return;
@@ -254,7 +270,7 @@ namespace Emby.Dlna.PlayTo
// Remote control will perform better
Volume = value;
await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType, value))
await new SsdpHttpClient(_httpClientFactory).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType, value))
.ConfigureAwait(false);
}
@@ -262,7 +278,7 @@ namespace Emby.Dlna.PlayTo
{
var avCommands = await GetAVProtocolAsync(cancellationToken).ConfigureAwait(false);
var command = avCommands.ServiceActions.FirstOrDefault(c => c.Name == "Seek");
var command = avCommands?.ServiceActions.FirstOrDefault(c => c.Name == "Seek");
if (command == null)
{
return;
@@ -275,7 +291,7 @@ namespace Emby.Dlna.PlayTo
throw new InvalidOperationException("Unable to find service");
}
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"))
await new SsdpHttpClient(_httpClientFactory).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, string.Format(CultureInfo.InvariantCulture, "{0:hh}:{0:mm}:{0:ss}", value), "REL_TIME"))
.ConfigureAwait(false);
RestartTimer(true);
@@ -285,11 +301,11 @@ namespace Emby.Dlna.PlayTo
{
var avCommands = await GetAVProtocolAsync(cancellationToken).ConfigureAwait(false);
url = url.Replace("&", "&amp;");
url = url.Replace("&", "&amp;", StringComparison.Ordinal);
_logger.LogDebug("{0} - SetAvTransport Uri: {1} DlnaHeaders: {2}", Properties.Name, url, header);
var command = avCommands.ServiceActions.FirstOrDefault(c => c.Name == "SetAVTransportURI");
var command = avCommands?.ServiceActions.FirstOrDefault(c => c.Name == "SetAVTransportURI");
if (command == null)
{
return;
@@ -297,8 +313,8 @@ namespace Emby.Dlna.PlayTo
var dictionary = new Dictionary<string, string>
{
{"CurrentURI", url},
{"CurrentURIMetaData", CreateDidlMeta(metaData)}
{ "CurrentURI", url },
{ "CurrentURIMetaData", CreateDidlMeta(metaData) }
};
var service = GetAvTransportService();
@@ -309,7 +325,7 @@ namespace Emby.Dlna.PlayTo
}
var post = avCommands.BuildPost(command, service.ServiceType, url, dictionary);
await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, post, header: header)
await new SsdpHttpClient(_httpClientFactory).SendCommandAsync(Properties.BaseUrl, service, command.Name, post, header: header)
.ConfigureAwait(false);
await Task.Delay(50).ConfigureAwait(false);
@@ -327,14 +343,14 @@ namespace Emby.Dlna.PlayTo
RestartTimer(true);
}
private string CreateDidlMeta(string value)
private static string CreateDidlMeta(string value)
{
if (string.IsNullOrEmpty(value))
{
return string.Empty;
}
return DescriptionXmlBuilder.Escape(value);
return SecurityElement.Escape(value);
}
private Task SetPlay(TransportCommands avCommands, CancellationToken cancellationToken)
@@ -351,7 +367,7 @@ namespace Emby.Dlna.PlayTo
throw new InvalidOperationException("Unable to find service");
}
return new SsdpHttpClient(_httpClient).SendCommandAsync(
return new SsdpHttpClient(_httpClientFactory).SendCommandAsync(
Properties.BaseUrl,
service,
command.Name,
@@ -362,6 +378,10 @@ namespace Emby.Dlna.PlayTo
public async Task SetPlay(CancellationToken cancellationToken)
{
var avCommands = await GetAVProtocolAsync(cancellationToken).ConfigureAwait(false);
if (avCommands == null)
{
return;
}
await SetPlay(avCommands, cancellationToken).ConfigureAwait(false);
@@ -372,7 +392,7 @@ namespace Emby.Dlna.PlayTo
{
var avCommands = await GetAVProtocolAsync(cancellationToken).ConfigureAwait(false);
var command = avCommands.ServiceActions.FirstOrDefault(c => c.Name == "Stop");
var command = avCommands?.ServiceActions.FirstOrDefault(c => c.Name == "Stop");
if (command == null)
{
return;
@@ -380,7 +400,7 @@ namespace Emby.Dlna.PlayTo
var service = GetAvTransportService();
await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, 1))
await new SsdpHttpClient(_httpClientFactory).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, 1))
.ConfigureAwait(false);
RestartTimer(true);
@@ -390,7 +410,7 @@ namespace Emby.Dlna.PlayTo
{
var avCommands = await GetAVProtocolAsync(cancellationToken).ConfigureAwait(false);
var command = avCommands.ServiceActions.FirstOrDefault(c => c.Name == "Pause");
var command = avCommands?.ServiceActions.FirstOrDefault(c => c.Name == "Pause");
if (command == null)
{
return;
@@ -398,16 +418,14 @@ namespace Emby.Dlna.PlayTo
var service = GetAvTransportService();
await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, 1))
await new SsdpHttpClient(_httpClientFactory).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, 1))
.ConfigureAwait(false);
TransportState = TRANSPORTSTATE.PAUSED;
TransportState = TransportState.Paused;
RestartTimer(true);
}
private int _connectFailureCount;
private async void TimerCallback(object sender)
{
if (_disposed)
@@ -436,7 +454,7 @@ namespace Emby.Dlna.PlayTo
if (transportState.HasValue)
{
// If we're not playing anything no need to get additional data
if (transportState.Value == TRANSPORTSTATE.STOPPED)
if (transportState.Value == TransportState.Stopped)
{
UpdateMediaInfo(null, transportState.Value);
}
@@ -464,8 +482,8 @@ namespace Emby.Dlna.PlayTo
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)
// If we're not playing anything make sure we don't get data more often than necessary to keep the Session alive
if (transportState.Value == TransportState.Stopped)
{
RestartTimerInactive();
}
@@ -514,7 +532,7 @@ namespace Emby.Dlna.PlayTo
var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false);
var command = rendererCommands.ServiceActions.FirstOrDefault(c => c.Name == "GetVolume");
var command = rendererCommands?.ServiceActions.FirstOrDefault(c => c.Name == "GetVolume");
if (command == null)
{
return;
@@ -527,7 +545,7 @@ namespace Emby.Dlna.PlayTo
return;
}
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(
var result = await new SsdpHttpClient(_httpClientFactory).SendCommandAsync(
Properties.BaseUrl,
service,
command.Name,
@@ -539,7 +557,7 @@ namespace Emby.Dlna.PlayTo
return;
}
var volume = result.Document.Descendants(uPnpNamespaces.RenderingControl + "GetVolumeResponse").Select(i => i.Element("CurrentVolume")).FirstOrDefault(i => i != null);
var volume = result.Document.Descendants(UPnpNamespaces.RenderingControl + "GetVolumeResponse").Select(i => i.Element("CurrentVolume")).FirstOrDefault(i => i != null);
var volumeValue = volume?.Value;
if (string.IsNullOrWhiteSpace(volumeValue))
@@ -564,7 +582,7 @@ namespace Emby.Dlna.PlayTo
var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false);
var command = rendererCommands.ServiceActions.FirstOrDefault(c => c.Name == "GetMute");
var command = rendererCommands?.ServiceActions.FirstOrDefault(c => c.Name == "GetMute");
if (command == null)
{
return;
@@ -577,7 +595,7 @@ namespace Emby.Dlna.PlayTo
return;
}
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(
var result = await new SsdpHttpClient(_httpClientFactory).SendCommandAsync(
Properties.BaseUrl,
service,
command.Name,
@@ -589,14 +607,14 @@ namespace Emby.Dlna.PlayTo
return;
}
var valueNode = result.Document.Descendants(uPnpNamespaces.RenderingControl + "GetMuteResponse")
var valueNode = result.Document.Descendants(UPnpNamespaces.RenderingControl + "GetMuteResponse")
.Select(i => i.Element("CurrentMute"))
.FirstOrDefault(i => i != null);
IsMuted = string.Equals(valueNode?.Value, "1", StringComparison.OrdinalIgnoreCase);
}
private async Task<TRANSPORTSTATE?> GetTransportInfo(TransportCommands avCommands, CancellationToken cancellationToken)
private async Task<TransportState?> GetTransportInfo(TransportCommands avCommands, CancellationToken cancellationToken)
{
var command = avCommands.ServiceActions.FirstOrDefault(c => c.Name == "GetTransportInfo");
if (command == null)
@@ -610,7 +628,7 @@ namespace Emby.Dlna.PlayTo
return null;
}
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(
var result = await new SsdpHttpClient(_httpClientFactory).SendCommandAsync(
Properties.BaseUrl,
service,
command.Name,
@@ -623,12 +641,12 @@ namespace Emby.Dlna.PlayTo
}
var transportState =
result.Document.Descendants(uPnpNamespaces.AvTransport + "GetTransportInfoResponse").Select(i => i.Element("CurrentTransportState")).FirstOrDefault(i => i != null);
result.Document.Descendants(UPnpNamespaces.AvTransport + "GetTransportInfoResponse").Select(i => i.Element("CurrentTransportState")).FirstOrDefault(i => i != null);
var transportStateValue = transportState?.Value;
if (transportStateValue != null
&& Enum.TryParse(transportStateValue, true, out TRANSPORTSTATE state))
&& Enum.TryParse(transportStateValue, true, out TransportState state))
{
return state;
}
@@ -636,7 +654,7 @@ namespace Emby.Dlna.PlayTo
return null;
}
private async Task<uBaseObject> GetMediaInfo(TransportCommands avCommands, CancellationToken cancellationToken)
private async Task<UBaseObject> GetMediaInfo(TransportCommands avCommands, CancellationToken cancellationToken)
{
var command = avCommands.ServiceActions.FirstOrDefault(c => c.Name == "GetMediaInfo");
if (command == null)
@@ -651,8 +669,12 @@ namespace Emby.Dlna.PlayTo
}
var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false);
if (rendererCommands == null)
{
return null;
}
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(
var result = await new SsdpHttpClient(_httpClientFactory).SendCommandAsync(
Properties.BaseUrl,
service,
command.Name,
@@ -671,7 +693,7 @@ namespace Emby.Dlna.PlayTo
return null;
}
var e = track.Element(uPnpNamespaces.items) ?? track;
var e = track.Element(UPnpNamespaces.Items) ?? track;
var elementString = (string)e;
@@ -687,13 +709,13 @@ namespace Emby.Dlna.PlayTo
return null;
}
e = track.Element(uPnpNamespaces.items) ?? track;
e = track.Element(UPnpNamespaces.Items) ?? track;
elementString = (string)e;
if (!string.IsNullOrWhiteSpace(elementString))
{
return new uBaseObject
return new UBaseObject
{
Url = elementString
};
@@ -702,7 +724,7 @@ namespace Emby.Dlna.PlayTo
return null;
}
private async Task<(bool, uBaseObject)> GetPositionInfo(TransportCommands avCommands, CancellationToken cancellationToken)
private async Task<(bool, UBaseObject)> GetPositionInfo(TransportCommands avCommands, CancellationToken cancellationToken)
{
var command = avCommands.ServiceActions.FirstOrDefault(c => c.Name == "GetPositionInfo");
if (command == null)
@@ -719,7 +741,12 @@ namespace Emby.Dlna.PlayTo
var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false);
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(
if (rendererCommands == null)
{
return (false, null);
}
var result = await new SsdpHttpClient(_httpClientFactory).SendCommandAsync(
Properties.BaseUrl,
service,
command.Name,
@@ -731,11 +758,11 @@ namespace Emby.Dlna.PlayTo
return (false, null);
}
var trackUriElem = result.Document.Descendants(uPnpNamespaces.AvTransport + "GetPositionInfoResponse").Select(i => i.Element("TrackURI")).FirstOrDefault(i => i != null);
var trackUri = trackUriElem == null ? null : trackUriElem.Value;
var trackUriElem = result.Document.Descendants(UPnpNamespaces.AvTransport + "GetPositionInfoResponse").Select(i => i.Element("TrackURI")).FirstOrDefault(i => i != null);
var trackUri = trackUriElem?.Value;
var durationElem = result.Document.Descendants(uPnpNamespaces.AvTransport + "GetPositionInfoResponse").Select(i => i.Element("TrackDuration")).FirstOrDefault(i => i != null);
var duration = durationElem == null ? null : durationElem.Value;
var durationElem = result.Document.Descendants(UPnpNamespaces.AvTransport + "GetPositionInfoResponse").Select(i => i.Element("TrackDuration")).FirstOrDefault(i => i != null);
var duration = durationElem?.Value;
if (!string.IsNullOrWhiteSpace(duration)
&& !string.Equals(duration, "NOT_IMPLEMENTED", StringComparison.OrdinalIgnoreCase))
@@ -747,8 +774,8 @@ namespace Emby.Dlna.PlayTo
Duration = null;
}
var positionElem = result.Document.Descendants(uPnpNamespaces.AvTransport + "GetPositionInfoResponse").Select(i => i.Element("RelTime")).FirstOrDefault(i => i != null);
var position = positionElem == null ? null : positionElem.Value;
var positionElem = result.Document.Descendants(UPnpNamespaces.AvTransport + "GetPositionInfoResponse").Select(i => i.Element("RelTime")).FirstOrDefault(i => i != null);
var position = positionElem?.Value;
if (!string.IsNullOrWhiteSpace(position) && !string.Equals(position, "NOT_IMPLEMENTED", StringComparison.OrdinalIgnoreCase))
{
@@ -759,7 +786,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);
}
@@ -787,7 +814,7 @@ namespace Emby.Dlna.PlayTo
return (true, null);
}
var e = uPnpResponse.Element(uPnpNamespaces.items);
var e = uPnpResponse.Element(UPnpNamespaces.Items);
var uTrack = CreateUBaseObject(e, trackUri);
@@ -796,7 +823,7 @@ namespace Emby.Dlna.PlayTo
private XElement ParseResponse(string xml)
{
// Handle different variations sent back by devices
// Handle different variations sent back by devices.
try
{
return XElement.Parse(xml);
@@ -805,7 +832,7 @@ namespace Emby.Dlna.PlayTo
{
}
// first try to add a root node with a dlna namesapce
// first try to add a root node with a dlna namespace.
try
{
return XElement.Parse("<data xmlns:dlna=\"urn:schemas-dlna-org:device-1-0\">" + xml + "</data>")
@@ -819,7 +846,7 @@ namespace Emby.Dlna.PlayTo
// some devices send back invalid xml
try
{
return XElement.Parse(xml.Replace("&", "&amp;"));
return XElement.Parse(xml.Replace("&", "&amp;", StringComparison.Ordinal));
}
catch (XmlException)
{
@@ -828,27 +855,27 @@ namespace Emby.Dlna.PlayTo
return null;
}
private static uBaseObject CreateUBaseObject(XElement container, string trackUri)
private static UBaseObject CreateUBaseObject(XElement container, string trackUri)
{
if (container == null)
{
throw new ArgumentNullException(nameof(container));
}
var url = container.GetValue(uPnpNamespaces.Res);
var url = container.GetValue(UPnpNamespaces.Res);
if (string.IsNullOrWhiteSpace(url))
{
url = trackUri;
}
return new uBaseObject
return new UBaseObject
{
Id = container.GetAttributeValue(uPnpNamespaces.Id),
ParentId = container.GetAttributeValue(uPnpNamespaces.ParentId),
Title = container.GetValue(uPnpNamespaces.title),
IconUrl = container.GetValue(uPnpNamespaces.Artwork),
SecondText = "",
Id = container.GetAttributeValue(UPnpNamespaces.Id),
ParentId = container.GetAttributeValue(UPnpNamespaces.ParentId),
Title = container.GetValue(UPnpNamespaces.Title),
IconUrl = container.GetValue(UPnpNamespaces.Artwork),
SecondText = string.Empty,
Url = url,
ProtocolInfo = GetProtocolInfo(container),
MetaData = container.ToString()
@@ -862,11 +889,11 @@ namespace Emby.Dlna.PlayTo
throw new ArgumentNullException(nameof(container));
}
var resElement = container.Element(uPnpNamespaces.Res);
var resElement = container.Element(UPnpNamespaces.Res);
if (resElement != null)
{
var info = resElement.Attribute(uPnpNamespaces.ProtocolInfo);
var info = resElement.Attribute(UPnpNamespaces.ProtocolInfo);
if (info != null && !string.IsNullOrWhiteSpace(info.Value))
{
@@ -897,9 +924,13 @@ namespace Emby.Dlna.PlayTo
string url = NormalizeUrl(Properties.BaseUrl, avService.ScpdUrl);
var httpClient = new SsdpHttpClient(_httpClient);
var httpClient = new SsdpHttpClient(_httpClientFactory);
var document = await httpClient.GetDataAsync(url, cancellationToken).ConfigureAwait(false);
if (document == null)
{
return null;
}
AvCommands = TransportCommands.Create(document);
return AvCommands;
@@ -925,9 +956,13 @@ namespace Emby.Dlna.PlayTo
string url = NormalizeUrl(Properties.BaseUrl, avService.ScpdUrl);
var httpClient = new SsdpHttpClient(_httpClient);
var httpClient = new SsdpHttpClient(_httpClientFactory);
_logger.LogDebug("Dlna Device.GetRenderingProtocolAsync");
var document = await httpClient.GetDataAsync(url, cancellationToken).ConfigureAwait(false);
if (document == null)
{
return null;
}
RendererCommands = TransportCommands.Create(document);
return RendererCommands;
@@ -941,12 +976,12 @@ namespace Emby.Dlna.PlayTo
return url;
}
if (!url.Contains("/"))
if (!url.Contains('/', StringComparison.Ordinal))
{
url = "/dmr/" + url;
}
if (!url.StartsWith("/"))
if (!url.StartsWith('/'))
{
url = "/" + url;
}
@@ -954,25 +989,25 @@ namespace Emby.Dlna.PlayTo
return baseUrl + url;
}
private TransportCommands AvCommands { get; set; }
private TransportCommands RendererCommands { get; set; }
public static async Task<Device> CreateuPnpDeviceAsync(Uri url, IHttpClient httpClient, IServerConfigurationManager config, ILogger logger, CancellationToken cancellationToken)
public static async Task<Device> CreateuPnpDeviceAsync(Uri url, IHttpClientFactory httpClientFactory, ILogger logger, CancellationToken cancellationToken)
{
var ssdpHttpClient = new SsdpHttpClient(httpClient);
var ssdpHttpClient = new SsdpHttpClient(httpClientFactory);
var document = await ssdpHttpClient.GetDataAsync(url.ToString(), cancellationToken).ConfigureAwait(false);
if (document == null)
{
return null;
}
var friendlyNames = new List<string>();
var name = document.Descendants(uPnpNamespaces.ud.GetName("friendlyName")).FirstOrDefault();
var name = document.Descendants(UPnpNamespaces.Ud.GetName("friendlyName")).FirstOrDefault();
if (name != null && !string.IsNullOrWhiteSpace(name.Value))
{
friendlyNames.Add(name.Value);
}
var room = document.Descendants(uPnpNamespaces.ud.GetName("roomName")).FirstOrDefault();
var room = document.Descendants(UPnpNamespaces.Ud.GetName("roomName")).FirstOrDefault();
if (room != null && !string.IsNullOrWhiteSpace(room.Value))
{
friendlyNames.Add(room.Value);
@@ -981,77 +1016,77 @@ namespace Emby.Dlna.PlayTo
var deviceProperties = new DeviceInfo()
{
Name = string.Join(" ", friendlyNames),
BaseUrl = string.Format("http://{0}:{1}", url.Host, url.Port)
BaseUrl = string.Format(CultureInfo.InvariantCulture, "http://{0}:{1}", url.Host, url.Port)
};
var model = document.Descendants(uPnpNamespaces.ud.GetName("modelName")).FirstOrDefault();
var model = document.Descendants(UPnpNamespaces.Ud.GetName("modelName")).FirstOrDefault();
if (model != null)
{
deviceProperties.ModelName = model.Value;
}
var modelNumber = document.Descendants(uPnpNamespaces.ud.GetName("modelNumber")).FirstOrDefault();
var modelNumber = document.Descendants(UPnpNamespaces.Ud.GetName("modelNumber")).FirstOrDefault();
if (modelNumber != null)
{
deviceProperties.ModelNumber = modelNumber.Value;
}
var uuid = document.Descendants(uPnpNamespaces.ud.GetName("UDN")).FirstOrDefault();
var uuid = document.Descendants(UPnpNamespaces.Ud.GetName("UDN")).FirstOrDefault();
if (uuid != null)
{
deviceProperties.UUID = uuid.Value;
}
var manufacturer = document.Descendants(uPnpNamespaces.ud.GetName("manufacturer")).FirstOrDefault();
var manufacturer = document.Descendants(UPnpNamespaces.Ud.GetName("manufacturer")).FirstOrDefault();
if (manufacturer != null)
{
deviceProperties.Manufacturer = manufacturer.Value;
}
var manufacturerUrl = document.Descendants(uPnpNamespaces.ud.GetName("manufacturerURL")).FirstOrDefault();
var manufacturerUrl = document.Descendants(UPnpNamespaces.Ud.GetName("manufacturerURL")).FirstOrDefault();
if (manufacturerUrl != null)
{
deviceProperties.ManufacturerUrl = manufacturerUrl.Value;
}
var presentationUrl = document.Descendants(uPnpNamespaces.ud.GetName("presentationURL")).FirstOrDefault();
var presentationUrl = document.Descendants(UPnpNamespaces.Ud.GetName("presentationURL")).FirstOrDefault();
if (presentationUrl != null)
{
deviceProperties.PresentationUrl = presentationUrl.Value;
}
var modelUrl = document.Descendants(uPnpNamespaces.ud.GetName("modelURL")).FirstOrDefault();
var modelUrl = document.Descendants(UPnpNamespaces.Ud.GetName("modelURL")).FirstOrDefault();
if (modelUrl != null)
{
deviceProperties.ModelUrl = modelUrl.Value;
}
var serialNumber = document.Descendants(uPnpNamespaces.ud.GetName("serialNumber")).FirstOrDefault();
var serialNumber = document.Descendants(UPnpNamespaces.Ud.GetName("serialNumber")).FirstOrDefault();
if (serialNumber != null)
{
deviceProperties.SerialNumber = serialNumber.Value;
}
var modelDescription = document.Descendants(uPnpNamespaces.ud.GetName("modelDescription")).FirstOrDefault();
var modelDescription = document.Descendants(UPnpNamespaces.Ud.GetName("modelDescription")).FirstOrDefault();
if (modelDescription != null)
{
deviceProperties.ModelDescription = modelDescription.Value;
}
var icon = document.Descendants(uPnpNamespaces.ud.GetName("icon")).FirstOrDefault();
var icon = document.Descendants(UPnpNamespaces.Ud.GetName("icon")).FirstOrDefault();
if (icon != null)
{
deviceProperties.Icon = CreateIcon(icon);
}
foreach (var services in document.Descendants(uPnpNamespaces.ud.GetName("serviceList")))
foreach (var services in document.Descendants(UPnpNamespaces.Ud.GetName("serviceList")))
{
if (services == null)
{
continue;
}
var servicesList = services.Descendants(uPnpNamespaces.ud.GetName("service"));
var servicesList = services.Descendants(UPnpNamespaces.Ud.GetName("service"));
if (servicesList == null)
{
continue;
@@ -1068,10 +1103,9 @@ namespace Emby.Dlna.PlayTo
}
}
return new Device(deviceProperties, httpClient, logger, config);
return new Device(deviceProperties, httpClientFactory, logger);
}
private static readonly CultureInfo UsCulture = new CultureInfo("en-US");
private static DeviceIcon CreateIcon(XElement element)
{
if (element == null)
@@ -1079,11 +1113,11 @@ namespace Emby.Dlna.PlayTo
throw new ArgumentNullException(nameof(element));
}
var mimeType = element.GetDescendantValue(uPnpNamespaces.ud.GetName("mimetype"));
var width = element.GetDescendantValue(uPnpNamespaces.ud.GetName("width"));
var height = element.GetDescendantValue(uPnpNamespaces.ud.GetName("height"));
var depth = element.GetDescendantValue(uPnpNamespaces.ud.GetName("depth"));
var url = element.GetDescendantValue(uPnpNamespaces.ud.GetName("url"));
var mimeType = element.GetDescendantValue(UPnpNamespaces.Ud.GetName("mimetype"));
var width = element.GetDescendantValue(UPnpNamespaces.Ud.GetName("width"));
var height = element.GetDescendantValue(UPnpNamespaces.Ud.GetName("height"));
var depth = element.GetDescendantValue(UPnpNamespaces.Ud.GetName("depth"));
var url = element.GetDescendantValue(UPnpNamespaces.Ud.GetName("url"));
var widthValue = int.Parse(width, NumberStyles.Integer, UsCulture);
var heightValue = int.Parse(height, NumberStyles.Integer, UsCulture);
@@ -1100,11 +1134,11 @@ namespace Emby.Dlna.PlayTo
private static DeviceService Create(XElement element)
{
var type = element.GetDescendantValue(uPnpNamespaces.ud.GetName("serviceType"));
var id = element.GetDescendantValue(uPnpNamespaces.ud.GetName("serviceId"));
var scpdUrl = element.GetDescendantValue(uPnpNamespaces.ud.GetName("SCPDURL"));
var controlURL = element.GetDescendantValue(uPnpNamespaces.ud.GetName("controlURL"));
var eventSubURL = element.GetDescendantValue(uPnpNamespaces.ud.GetName("eventSubURL"));
var type = element.GetDescendantValue(UPnpNamespaces.Ud.GetName("serviceType"));
var id = element.GetDescendantValue(UPnpNamespaces.Ud.GetName("serviceId"));
var scpdUrl = element.GetDescendantValue(UPnpNamespaces.Ud.GetName("SCPDURL"));
var controlURL = element.GetDescendantValue(UPnpNamespaces.Ud.GetName("controlURL"));
var eventSubURL = element.GetDescendantValue(UPnpNamespaces.Ud.GetName("eventSubURL"));
return new DeviceService
{
@@ -1116,14 +1150,7 @@ namespace Emby.Dlna.PlayTo
};
}
public event EventHandler<PlaybackStartEventArgs> PlaybackStart;
public event EventHandler<PlaybackProgressEventArgs> PlaybackProgress;
public event EventHandler<PlaybackStoppedEventArgs> PlaybackStopped;
public event EventHandler<MediaChangedEventArgs> MediaChanged;
public uBaseObject CurrentMediaInfo { get; private set; }
private void UpdateMediaInfo(uBaseObject mediaInfo, TRANSPORTSTATE state)
private void UpdateMediaInfo(UBaseObject mediaInfo, TransportState state)
{
TransportState = state;
@@ -1132,7 +1159,7 @@ namespace Emby.Dlna.PlayTo
if (previousMediaInfo == null && mediaInfo != null)
{
if (state != TRANSPORTSTATE.STOPPED)
if (state != TransportState.Stopped)
{
OnPlaybackStart(mediaInfo);
}
@@ -1151,7 +1178,7 @@ namespace Emby.Dlna.PlayTo
}
}
private void OnPlaybackStart(uBaseObject mediaInfo)
private void OnPlaybackStart(UBaseObject mediaInfo)
{
if (string.IsNullOrWhiteSpace(mediaInfo.Url))
{
@@ -1164,7 +1191,7 @@ namespace Emby.Dlna.PlayTo
});
}
private void OnPlaybackProgress(uBaseObject mediaInfo)
private void OnPlaybackProgress(UBaseObject mediaInfo)
{
if (string.IsNullOrWhiteSpace(mediaInfo.Url))
{
@@ -1177,7 +1204,7 @@ namespace Emby.Dlna.PlayTo
});
}
private void OnPlaybackStop(uBaseObject mediaInfo)
private void OnPlaybackStop(UBaseObject mediaInfo)
{
PlaybackStopped?.Invoke(this, new PlaybackStoppedEventArgs
{
@@ -1185,7 +1212,7 @@ namespace Emby.Dlna.PlayTo
});
}
private void OnMediaChanged(uBaseObject old, uBaseObject newMedia)
private void OnMediaChanged(UBaseObject old, UBaseObject newMedia)
{
MediaChanged?.Invoke(this, new MediaChangedEventArgs
{
@@ -1194,14 +1221,17 @@ namespace Emby.Dlna.PlayTo
});
}
bool _disposed;
/// <inheritdoc />
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
/// <summary>
/// Releases unmanaged and optionally managed resources.
/// </summary>
/// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
protected virtual void Dispose(bool disposing)
{
if (_disposed)
@@ -1220,9 +1250,10 @@ namespace Emby.Dlna.PlayTo
_disposed = true;
}
/// <inheritdoc />
public override string ToString()
{
return string.Format("{0} - {1}", Properties.Name, Properties.BaseUrl);
return string.Format(CultureInfo.InvariantCulture, "{0} - {1}", Properties.Name, Properties.BaseUrl);
}
}
}
+3 -2
View File
@@ -8,6 +8,9 @@ namespace Emby.Dlna.PlayTo
{
public class DeviceInfo
{
private readonly List<DeviceService> _services = new List<DeviceService>();
private string _baseUrl = string.Empty;
public DeviceInfo()
{
Name = "Generic Device";
@@ -33,7 +36,6 @@ namespace Emby.Dlna.PlayTo
public string PresentationUrl { get; set; }
private string _baseUrl = string.Empty;
public string BaseUrl
{
get => _baseUrl;
@@ -42,7 +44,6 @@ namespace Emby.Dlna.PlayTo
public DeviceIcon Icon { get; set; }
private readonly List<DeviceService> _services = new List<DeviceService>();
public List<DeviceService> Services => _services;
public DeviceIdentification ToDeviceIdentification()
+13
View File
@@ -0,0 +1,13 @@
#pragma warning disable CS1591
using System;
namespace Emby.Dlna.PlayTo
{
public class MediaChangedEventArgs : EventArgs
{
public UBaseObject OldMediaInfo { get; set; }
public UBaseObject NewMediaInfo { get; set; }
}
}
+189 -191
View File
@@ -8,7 +8,7 @@ using System.Threading;
using System.Threading.Tasks;
using Emby.Dlna.Didl;
using Jellyfin.Data.Entities;
using MediaBrowser.Common.Configuration;
using Jellyfin.Data.Events;
using MediaBrowser.Controller.Dlna;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
@@ -18,7 +18,6 @@ using MediaBrowser.Controller.Session;
using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.Globalization;
using MediaBrowser.Model.Session;
using Microsoft.AspNetCore.WebUtilities;
@@ -31,7 +30,6 @@ namespace Emby.Dlna.PlayTo
{
private static readonly CultureInfo _usCulture = CultureInfo.ReadOnly(new CultureInfo("en-US"));
private Device _device;
private readonly SessionInfo _session;
private readonly ISessionManager _sessionManager;
private readonly ILibraryManager _libraryManager;
@@ -42,7 +40,6 @@ namespace Emby.Dlna.PlayTo
private readonly IUserDataManager _userDataManager;
private readonly ILocalizationManager _localization;
private readonly IMediaSourceManager _mediaSourceManager;
private readonly IConfigurationManager _config;
private readonly IMediaEncoder _mediaEncoder;
private readonly IDeviceDiscovery _deviceDiscovery;
@@ -50,6 +47,7 @@ namespace Emby.Dlna.PlayTo
private readonly string _accessToken;
private readonly List<PlaylistItem> _playlist = new List<PlaylistItem>();
private Device _device;
private int _currentPlaylistIndex;
private bool _disposed;
@@ -68,7 +66,6 @@ namespace Emby.Dlna.PlayTo
IUserDataManager userDataManager,
ILocalizationManager localization,
IMediaSourceManager mediaSourceManager,
IConfigurationManager config,
IMediaEncoder mediaEncoder)
{
_session = session;
@@ -84,7 +81,6 @@ namespace Emby.Dlna.PlayTo
_userDataManager = userDataManager;
_localization = localization;
_mediaSourceManager = mediaSourceManager;
_config = config;
_mediaEncoder = mediaEncoder;
}
@@ -136,7 +132,7 @@ namespace Emby.Dlna.PlayTo
private async void OnDeviceMediaChanged(object sender, MediaChangedEventArgs e)
{
if (_disposed)
if (_disposed || string.IsNullOrEmpty(e.OldMediaInfo.Url))
{
return;
}
@@ -326,7 +322,7 @@ namespace Emby.Dlna.PlayTo
public Task SendPlayCommand(PlayRequest command, CancellationToken cancellationToken)
{
_logger.LogDebug("{0} - Received PlayRequest: {1}", this._session.DeviceName, command.PlayCommand);
_logger.LogDebug("{0} - Received PlayRequest: {1}", _session.DeviceName, command.PlayCommand);
var user = command.ControllingUserId.Equals(Guid.Empty) ? null : _userManager.GetUserById(command.ControllingUserId);
@@ -337,25 +333,26 @@ namespace Emby.Dlna.PlayTo
}
var startIndex = command.StartIndex ?? 0;
int len = items.Count - startIndex;
if (startIndex > 0)
{
items = items.Skip(startIndex).ToList();
items = items.GetRange(startIndex, len);
}
var playlist = new List<PlaylistItem>();
var isFirst = true;
var playlist = new PlaylistItem[len];
foreach (var item in items)
// Not nullable enabled - so this is required.
playlist[0] = CreatePlaylistItem(
items[0],
user,
command.StartPositionTicks ?? 0,
command.MediaSourceId ?? string.Empty,
command.AudioStreamIndex,
command.SubtitleStreamIndex);
for (int i = 1; i < len; i++)
{
if (isFirst && command.StartPositionTicks.HasValue)
{
playlist.Add(CreatePlaylistItem(item, user, command.StartPositionTicks.Value, command.MediaSourceId, command.AudioStreamIndex, command.SubtitleStreamIndex));
isFirst = false;
}
else
{
playlist.Add(CreatePlaylistItem(item, user, 0, null, null, null));
}
playlist[i] = CreatePlaylistItem(items[i], user, 0, string.Empty, null, null);
}
_logger.LogDebug("{0} - Playlist created", _session.DeviceName);
@@ -372,8 +369,13 @@ namespace Emby.Dlna.PlayTo
if (!command.ControllingUserId.Equals(Guid.Empty))
{
_sessionManager.LogSessionActivity(_session.Client, _session.ApplicationVersion, _session.DeviceId,
_session.DeviceName, _session.RemoteEndPoint, user);
_sessionManager.LogSessionActivity(
_session.Client,
_session.ApplicationVersion,
_session.DeviceId,
_session.DeviceName,
_session.RemoteEndPoint,
user);
}
return PlayItems(playlist, cancellationToken);
@@ -463,8 +465,8 @@ namespace Emby.Dlna.PlayTo
_dlnaManager.GetDefaultProfile();
var mediaSources = item is IHasMediaSources
? _mediaSourceManager.GetStaticMediaSources(item, true, user)
: new List<MediaSourceInfo>();
? _mediaSourceManager.GetStaticMediaSources(item, true, user).ToArray()
: Array.Empty<MediaSourceInfo>();
var playlistItem = GetPlaylistItem(item, mediaSources, profile, _session.DeviceId, mediaSourceId, audioStreamIndex, subtitleStreamIndex);
playlistItem.StreamInfo.StartPositionTicks = startPostionTicks;
@@ -498,42 +500,44 @@ namespace Emby.Dlna.PlayTo
if (streamInfo.MediaType == DlnaProfileType.Audio)
{
return new ContentFeatureBuilder(profile)
.BuildAudioHeader(streamInfo.Container,
streamInfo.TargetAudioCodec.FirstOrDefault(),
streamInfo.TargetAudioBitrate,
streamInfo.TargetAudioSampleRate,
streamInfo.TargetAudioChannels,
streamInfo.TargetAudioBitDepth,
streamInfo.IsDirectStream,
streamInfo.RunTimeTicks ?? 0,
streamInfo.TranscodeSeekInfo);
.BuildAudioHeader(
streamInfo.Container,
streamInfo.TargetAudioCodec.FirstOrDefault(),
streamInfo.TargetAudioBitrate,
streamInfo.TargetAudioSampleRate,
streamInfo.TargetAudioChannels,
streamInfo.TargetAudioBitDepth,
streamInfo.IsDirectStream,
streamInfo.RunTimeTicks ?? 0,
streamInfo.TranscodeSeekInfo);
}
if (streamInfo.MediaType == DlnaProfileType.Video)
{
var list = new ContentFeatureBuilder(profile)
.BuildVideoHeader(streamInfo.Container,
streamInfo.TargetVideoCodec.FirstOrDefault(),
streamInfo.TargetAudioCodec.FirstOrDefault(),
streamInfo.TargetWidth,
streamInfo.TargetHeight,
streamInfo.TargetVideoBitDepth,
streamInfo.TargetVideoBitrate,
streamInfo.TargetTimestamp,
streamInfo.IsDirectStream,
streamInfo.RunTimeTicks ?? 0,
streamInfo.TargetVideoProfile,
streamInfo.TargetVideoLevel,
streamInfo.TargetFramerate ?? 0,
streamInfo.TargetPacketLength,
streamInfo.TranscodeSeekInfo,
streamInfo.IsTargetAnamorphic,
streamInfo.IsTargetInterlaced,
streamInfo.TargetRefFrames,
streamInfo.TargetVideoStreamCount,
streamInfo.TargetAudioStreamCount,
streamInfo.TargetVideoCodecTag,
streamInfo.IsTargetAVC);
.BuildVideoHeader(
streamInfo.Container,
streamInfo.TargetVideoCodec.FirstOrDefault(),
streamInfo.TargetAudioCodec.FirstOrDefault(),
streamInfo.TargetWidth,
streamInfo.TargetHeight,
streamInfo.TargetVideoBitDepth,
streamInfo.TargetVideoBitrate,
streamInfo.TargetTimestamp,
streamInfo.IsDirectStream,
streamInfo.RunTimeTicks ?? 0,
streamInfo.TargetVideoProfile,
streamInfo.TargetVideoLevel,
streamInfo.TargetFramerate ?? 0,
streamInfo.TargetPacketLength,
streamInfo.TranscodeSeekInfo,
streamInfo.IsTargetAnamorphic,
streamInfo.IsTargetInterlaced,
streamInfo.TargetRefFrames,
streamInfo.TargetVideoStreamCount,
streamInfo.TargetAudioStreamCount,
streamInfo.TargetVideoCodecTag,
streamInfo.IsTargetAVC);
return list.Count == 0 ? null : list[0];
}
@@ -541,7 +545,7 @@ namespace Emby.Dlna.PlayTo
return null;
}
private PlaylistItem GetPlaylistItem(BaseItem item, List<MediaSourceInfo> mediaSources, DeviceProfile profile, string deviceId, string mediaSourceId, int? audioStreamIndex, int? subtitleStreamIndex)
private PlaylistItem GetPlaylistItem(BaseItem item, MediaSourceInfo[] mediaSources, DeviceProfile profile, string deviceId, string mediaSourceId, int? audioStreamIndex, int? subtitleStreamIndex)
{
if (string.Equals(item.MediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase))
{
@@ -550,7 +554,7 @@ namespace Emby.Dlna.PlayTo
StreamInfo = new StreamBuilder(_mediaEncoder, _logger).BuildVideoItem(new VideoOptions
{
ItemId = item.Id,
MediaSources = mediaSources.ToArray(),
MediaSources = mediaSources,
Profile = profile,
DeviceId = deviceId,
MaxBitrate = profile.MaxStreamingBitrate,
@@ -570,7 +574,7 @@ namespace Emby.Dlna.PlayTo
StreamInfo = new StreamBuilder(_mediaEncoder, _logger).BuildAudioItem(new AudioOptions
{
ItemId = item.Id,
MediaSources = mediaSources.ToArray(),
MediaSources = mediaSources,
Profile = profile,
DeviceId = deviceId,
MaxBitrate = profile.MaxStreamingBitrate,
@@ -583,7 +587,7 @@ namespace Emby.Dlna.PlayTo
if (string.Equals(item.MediaType, MediaType.Photo, StringComparison.OrdinalIgnoreCase))
{
return new PlaylistItemFactory().Create((Photo)item, profile);
return PlaylistItemFactory.Create((Photo)item, profile);
}
throw new ArgumentException("Unrecognized item type.");
@@ -633,6 +637,10 @@ namespace Emby.Dlna.PlayTo
GC.SuppressFinalize(this);
}
/// <summary>
/// Releases unmanaged and optionally managed resources.
/// </summary>
/// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
protected virtual void Dispose(bool disposing)
{
if (_disposed)
@@ -658,69 +666,57 @@ namespace Emby.Dlna.PlayTo
private Task SendGeneralCommand(GeneralCommand command, CancellationToken cancellationToken)
{
if (Enum.TryParse(command.Name, true, out GeneralCommandType commandType))
switch (command.Name)
{
switch (commandType)
{
case GeneralCommandType.VolumeDown:
return _device.VolumeDown(cancellationToken);
case GeneralCommandType.VolumeUp:
return _device.VolumeUp(cancellationToken);
case GeneralCommandType.Mute:
return _device.Mute(cancellationToken);
case GeneralCommandType.Unmute:
return _device.Unmute(cancellationToken);
case GeneralCommandType.ToggleMute:
return _device.ToggleMute(cancellationToken);
case GeneralCommandType.SetAudioStreamIndex:
case GeneralCommandType.VolumeDown:
return _device.VolumeDown(cancellationToken);
case GeneralCommandType.VolumeUp:
return _device.VolumeUp(cancellationToken);
case GeneralCommandType.Mute:
return _device.Mute(cancellationToken);
case GeneralCommandType.Unmute:
return _device.Unmute(cancellationToken);
case GeneralCommandType.ToggleMute:
return _device.ToggleMute(cancellationToken);
case GeneralCommandType.SetAudioStreamIndex:
if (command.Arguments.TryGetValue("Index", out string index))
{
if (int.TryParse(index, NumberStyles.Integer, _usCulture, out var val))
{
if (command.Arguments.TryGetValue("Index", out string arg))
{
if (int.TryParse(arg, NumberStyles.Integer, _usCulture, out var val))
{
return SetAudioStreamIndex(val);
}
throw new ArgumentException("Unsupported SetAudioStreamIndex value supplied.");
}
throw new ArgumentException("SetAudioStreamIndex argument cannot be null");
}
case GeneralCommandType.SetSubtitleStreamIndex:
{
if (command.Arguments.TryGetValue("Index", out string arg))
{
if (int.TryParse(arg, NumberStyles.Integer, _usCulture, out var val))
{
return SetSubtitleStreamIndex(val);
}
throw new ArgumentException("Unsupported SetSubtitleStreamIndex value supplied.");
}
throw new ArgumentException("SetSubtitleStreamIndex argument cannot be null");
}
case GeneralCommandType.SetVolume:
{
if (command.Arguments.TryGetValue("Volume", out string arg))
{
if (int.TryParse(arg, NumberStyles.Integer, _usCulture, out var volume))
{
return _device.SetVolume(volume, cancellationToken);
}
throw new ArgumentException("Unsupported volume value supplied.");
}
throw new ArgumentException("Volume argument cannot be null");
return SetAudioStreamIndex(val);
}
default:
return Task.CompletedTask;
}
throw new ArgumentException("Unsupported SetAudioStreamIndex value supplied.");
}
throw new ArgumentException("SetAudioStreamIndex argument cannot be null");
case GeneralCommandType.SetSubtitleStreamIndex:
if (command.Arguments.TryGetValue("Index", out index))
{
if (int.TryParse(index, NumberStyles.Integer, _usCulture, out var val))
{
return SetSubtitleStreamIndex(val);
}
throw new ArgumentException("Unsupported SetSubtitleStreamIndex value supplied.");
}
throw new ArgumentException("SetSubtitleStreamIndex argument cannot be null");
case GeneralCommandType.SetVolume:
if (command.Arguments.TryGetValue("Volume", out string vol))
{
if (int.TryParse(vol, NumberStyles.Integer, _usCulture, out var volume))
{
return _device.SetVolume(volume, cancellationToken);
}
throw new ArgumentException("Unsupported volume value supplied.");
}
throw new ArgumentException("Volume argument cannot be null");
default:
return Task.CompletedTask;
}
return Task.CompletedTask;
}
private async Task SetAudioStreamIndex(int? newIndex)
@@ -775,20 +771,80 @@ namespace Emby.Dlna.PlayTo
private async Task SeekAfterTransportChange(long positionTicks, CancellationToken cancellationToken)
{
const int maxWait = 15000000;
const int interval = 500;
const int MaxWait = 15000000;
const int Interval = 500;
var currentWait = 0;
while (_device.TransportState != TRANSPORTSTATE.PLAYING && currentWait < maxWait)
while (_device.TransportState != TransportState.Playing && currentWait < MaxWait)
{
await Task.Delay(interval).ConfigureAwait(false);
currentWait += interval;
await Task.Delay(Interval).ConfigureAwait(false);
currentWait += Interval;
}
await _device.Seek(TimeSpan.FromTicks(positionTicks), cancellationToken).ConfigureAwait(false);
}
private static int? GetIntValue(IReadOnlyDictionary<string, string> values, string name)
{
var value = values.GetValueOrDefault(name);
if (int.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var result))
{
return result;
}
return null;
}
private static long GetLongValue(IReadOnlyDictionary<string, string> values, string name)
{
var value = values.GetValueOrDefault(name);
if (long.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var result))
{
return result;
}
return 0;
}
/// <inheritdoc />
public Task SendMessage<T>(SessionMessageType name, Guid messageId, T data, CancellationToken cancellationToken)
{
if (_disposed)
{
throw new ObjectDisposedException(GetType().Name);
}
if (_device == null)
{
return Task.CompletedTask;
}
if (name == SessionMessageType.Play)
{
return SendPlayCommand(data as PlayRequest, cancellationToken);
}
if (name == SessionMessageType.Playstate)
{
return SendPlaystateCommand(data as PlaystateRequest, cancellationToken);
}
if (name == SessionMessageType.GeneralCommand)
{
return SendGeneralCommand(data as GeneralCommand, cancellationToken);
}
// Not supported or needed right now
return Task.CompletedTask;
}
private class StreamParams
{
private MediaSourceInfo mediaSource;
private IMediaSourceManager _mediaSourceManager;
public Guid ItemId { get; set; }
public bool IsDirectStream { get; set; }
@@ -809,15 +865,11 @@ namespace Emby.Dlna.PlayTo
public BaseItem Item { get; set; }
private MediaSourceInfo MediaSource;
private IMediaSourceManager _mediaSourceManager;
public async Task<MediaSourceInfo> GetMediaSource(CancellationToken cancellationToken)
{
if (MediaSource != null)
if (mediaSource != null)
{
return MediaSource;
return mediaSource;
}
var hasMediaSources = Item as IHasMediaSources;
@@ -827,9 +879,12 @@ namespace Emby.Dlna.PlayTo
return null;
}
MediaSource = await _mediaSourceManager.GetMediaSource(Item, MediaSourceId, LiveStreamId, false, cancellationToken).ConfigureAwait(false);
if (_mediaSourceManager != null)
{
mediaSource = await _mediaSourceManager.GetMediaSource(Item, MediaSourceId, LiveStreamId, false, cancellationToken).ConfigureAwait(false);
}
return MediaSource;
return mediaSource;
}
private static Guid GetItemId(string url)
@@ -841,16 +896,16 @@ namespace Emby.Dlna.PlayTo
var parts = url.Split('/');
for (var i = 0; i < parts.Length; i++)
for (var i = 0; i < parts.Length - 1; i++)
{
var part = parts[i];
if (string.Equals(part, "audio", StringComparison.OrdinalIgnoreCase) ||
string.Equals(part, "videos", StringComparison.OrdinalIgnoreCase))
{
if (parts.Length > i + 1)
if (Guid.TryParse(parts[i + 1], out var result))
{
return Guid.Parse(parts[i + 1]);
return result;
}
}
}
@@ -889,7 +944,6 @@ namespace Emby.Dlna.PlayTo
request.MediaSourceId = values.GetValueOrDefault("MediaSourceId");
request.LiveStreamId = values.GetValueOrDefault("LiveStreamId");
request.IsDirectStream = string.Equals("true", values.GetValueOrDefault("Static"), StringComparison.OrdinalIgnoreCase);
request.AudioStreamIndex = GetIntValue(values, "AudioStreamIndex");
request.SubtitleStreamIndex = GetIntValue(values, "SubtitleStreamIndex");
request.StartPositionTicks = GetLongValue(values, "StartPositionTicks");
@@ -901,61 +955,5 @@ namespace Emby.Dlna.PlayTo
return request;
}
}
private static int? GetIntValue(IReadOnlyDictionary<string, string> values, string name)
{
var value = values.GetValueOrDefault(name);
if (int.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var result))
{
return result;
}
return null;
}
private static long GetLongValue(IReadOnlyDictionary<string, string> values, string name)
{
var value = values.GetValueOrDefault(name);
if (long.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var result))
{
return result;
}
return 0;
}
/// <inheritdoc />
public Task SendMessage<T>(string name, Guid messageId, T data, CancellationToken cancellationToken)
{
if (_disposed)
{
throw new ObjectDisposedException(GetType().Name);
}
if (_device == null)
{
return Task.CompletedTask;
}
if (string.Equals(name, "Play", StringComparison.OrdinalIgnoreCase))
{
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);
}
// Not supported or needed right now
return Task.CompletedTask;
}
}
}
+64 -64
View File
@@ -3,11 +3,11 @@
using System;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Jellyfin.Data.Events;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Dlna;
@@ -16,7 +16,6 @@ using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Controller.Session;
using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.Globalization;
using MediaBrowser.Model.Session;
using Microsoft.Extensions.Logging;
@@ -33,7 +32,7 @@ namespace Emby.Dlna.PlayTo
private readonly IDlnaManager _dlnaManager;
private readonly IServerApplicationHost _appHost;
private readonly IImageProcessor _imageProcessor;
private readonly IHttpClient _httpClient;
private readonly IHttpClientFactory _httpClientFactory;
private readonly IServerConfigurationManager _config;
private readonly IUserDataManager _userDataManager;
private readonly ILocalizationManager _localization;
@@ -46,7 +45,7 @@ namespace Emby.Dlna.PlayTo
private SemaphoreSlim _sessionLock = new SemaphoreSlim(1, 1);
private CancellationTokenSource _disposeCancellationTokenSource = new CancellationTokenSource();
public PlayToManager(ILogger logger, ISessionManager sessionManager, ILibraryManager libraryManager, IUserManager userManager, IDlnaManager dlnaManager, IServerApplicationHost appHost, IImageProcessor imageProcessor, IDeviceDiscovery deviceDiscovery, IHttpClient httpClient, IServerConfigurationManager config, IUserDataManager userDataManager, ILocalizationManager localization, IMediaSourceManager mediaSourceManager, IMediaEncoder mediaEncoder)
public PlayToManager(ILogger logger, ISessionManager sessionManager, ILibraryManager libraryManager, IUserManager userManager, IDlnaManager dlnaManager, IServerApplicationHost appHost, IImageProcessor imageProcessor, IDeviceDiscovery deviceDiscovery, IHttpClientFactory httpClientFactory, IServerConfigurationManager config, IUserDataManager userDataManager, ILocalizationManager localization, IMediaSourceManager mediaSourceManager, IMediaEncoder mediaEncoder)
{
_logger = logger;
_sessionManager = sessionManager;
@@ -56,7 +55,7 @@ namespace Emby.Dlna.PlayTo
_appHost = appHost;
_imageProcessor = imageProcessor;
_deviceDiscovery = deviceDiscovery;
_httpClient = httpClient;
_httpClientFactory = httpClientFactory;
_config = config;
_userDataManager = userDataManager;
_localization = localization;
@@ -88,13 +87,10 @@ namespace Emby.Dlna.PlayTo
nt = string.Empty;
}
string location = info.Location.ToString();
// It has to report that it's a media renderer
if (usn.IndexOf("MediaRenderer:", StringComparison.OrdinalIgnoreCase) == -1 &&
nt.IndexOf("MediaRenderer:", StringComparison.OrdinalIgnoreCase) == -1)
if (!usn.Contains("MediaRenderer:", StringComparison.OrdinalIgnoreCase)
&& !nt.Contains("MediaRenderer:", StringComparison.OrdinalIgnoreCase))
{
// _logger.LogDebug("Upnp device {0} does not contain a MediaRenderer device (0).", location);
return;
}
@@ -114,7 +110,7 @@ namespace Emby.Dlna.PlayTo
return;
}
await AddDevice(info, location, cancellationToken).ConfigureAwait(false);
await AddDevice(info, cancellationToken).ConfigureAwait(false);
}
catch (OperationCanceledException)
{
@@ -129,43 +125,50 @@ namespace Emby.Dlna.PlayTo
}
}
private string GetUuid(string usn)
internal static string GetUuid(string usn)
{
var found = false;
var index = usn.IndexOf("uuid:", StringComparison.OrdinalIgnoreCase);
const string UuidStr = "uuid:";
const string UuidColonStr = "::";
var index = usn.IndexOf(UuidStr, StringComparison.OrdinalIgnoreCase);
if (index == -1)
{
return usn.GetMD5().ToString("N", CultureInfo.InvariantCulture);
}
ReadOnlySpan<char> tmp = usn.AsSpan()[(index + UuidStr.Length)..];
index = tmp.IndexOf(UuidColonStr, StringComparison.OrdinalIgnoreCase);
if (index != -1)
{
usn = usn.Substring(index);
found = true;
tmp = tmp[..index];
}
index = usn.IndexOf("::", StringComparison.OrdinalIgnoreCase);
index = tmp.IndexOf('{');
if (index != -1)
{
usn = usn.Substring(0, index);
int endIndex = tmp.IndexOf('}');
if (endIndex != -1)
{
tmp = tmp[(index + 1)..endIndex];
}
}
if (found)
{
return usn;
}
return usn.GetMD5().ToString("N", CultureInfo.InvariantCulture);
return tmp.ToString();
}
private async Task AddDevice(UpnpDeviceInfo info, string location, CancellationToken cancellationToken)
private async Task AddDevice(UpnpDeviceInfo info, CancellationToken cancellationToken)
{
var uri = info.Location;
_logger.LogDebug("Attempting to create PlayToController from location {0}", location);
_logger.LogDebug("Attempting to create PlayToController from location {0}", uri);
_logger.LogDebug("Logging session activity from location {0}", location);
if (info.Headers.TryGetValue("USN", out string uuid))
{
uuid = GetUuid(uuid);
}
else
{
uuid = location.GetMD5().ToString("N", CultureInfo.InvariantCulture);
uuid = uri.ToString().GetMD5().ToString("N", CultureInfo.InvariantCulture);
}
var sessionInfo = _sessionManager.LogSessionActivity("DLNA", _appHost.ApplicationVersionString, uuid, null, uri.OriginalString, null);
@@ -174,38 +177,34 @@ namespace Emby.Dlna.PlayTo
if (controller == null)
{
var device = await Device.CreateuPnpDeviceAsync(uri, _httpClient, _config, _logger, cancellationToken).ConfigureAwait(false);
var device = await Device.CreateuPnpDeviceAsync(uri, _httpClientFactory, _logger, cancellationToken).ConfigureAwait(false);
if (device == null)
{
_logger.LogError("Ignoring device as xml response is invalid.");
return;
}
string deviceName = device.Properties.Name;
_sessionManager.UpdateDeviceName(sessionInfo.Id, deviceName);
string serverAddress;
if (info.LocalIpAddress == null || info.LocalIpAddress.Equals(IPAddress.Any) || info.LocalIpAddress.Equals(IPAddress.IPv6Any))
{
serverAddress = await _appHost.GetLocalApiUrl(cancellationToken).ConfigureAwait(false);
}
else
{
serverAddress = _appHost.GetLocalApiUrl(info.LocalIpAddress);
}
string serverAddress = _appHost.GetSmartApiUrl(info.RemoteIpAddress);
controller = new PlayToController(
sessionInfo,
_sessionManager,
_libraryManager,
_logger,
_dlnaManager,
_userManager,
_imageProcessor,
serverAddress,
null,
_deviceDiscovery,
_userDataManager,
_localization,
_mediaSourceManager,
_config,
_mediaEncoder);
_sessionManager,
_libraryManager,
_logger,
_dlnaManager,
_userManager,
_imageProcessor,
serverAddress,
null,
_deviceDiscovery,
_userDataManager,
_localization,
_mediaSourceManager,
_mediaEncoder);
sessionInfo.AddController(controller);
@@ -218,17 +217,17 @@ namespace Emby.Dlna.PlayTo
{
PlayableMediaTypes = profile.GetSupportedMediaTypes(),
SupportedCommands = new string[]
SupportedCommands = new[]
{
GeneralCommandType.VolumeDown.ToString(),
GeneralCommandType.VolumeUp.ToString(),
GeneralCommandType.Mute.ToString(),
GeneralCommandType.Unmute.ToString(),
GeneralCommandType.ToggleMute.ToString(),
GeneralCommandType.SetVolume.ToString(),
GeneralCommandType.SetAudioStreamIndex.ToString(),
GeneralCommandType.SetSubtitleStreamIndex.ToString(),
GeneralCommandType.PlayMediaSource.ToString()
GeneralCommandType.VolumeDown,
GeneralCommandType.VolumeUp,
GeneralCommandType.Mute,
GeneralCommandType.Unmute,
GeneralCommandType.ToggleMute,
GeneralCommandType.SetVolume,
GeneralCommandType.SetAudioStreamIndex,
GeneralCommandType.SetSubtitleStreamIndex,
GeneralCommandType.PlayMediaSource
},
SupportsMediaControl = true
@@ -247,8 +246,9 @@ namespace Emby.Dlna.PlayTo
{
_disposeCancellationTokenSource.Cancel();
}
catch
catch (Exception ex)
{
_logger.LogDebug(ex, "Error while disposing PlayToManager");
}
_sessionLock.Dispose();
@@ -6,6 +6,6 @@ namespace Emby.Dlna.PlayTo
{
public class PlaybackProgressEventArgs : EventArgs
{
public uBaseObject MediaInfo { get; set; }
public UBaseObject MediaInfo { get; set; }
}
}
+1 -1
View File
@@ -6,6 +6,6 @@ namespace Emby.Dlna.PlayTo
{
public class PlaybackStartEventArgs : EventArgs
{
public uBaseObject MediaInfo { get; set; }
public UBaseObject MediaInfo { get; set; }
}
}
+1 -8
View File
@@ -6,13 +6,6 @@ namespace Emby.Dlna.PlayTo
{
public class PlaybackStoppedEventArgs : EventArgs
{
public uBaseObject MediaInfo { get; set; }
}
public class MediaChangedEventArgs : EventArgs
{
public uBaseObject OldMediaInfo { get; set; }
public uBaseObject NewMediaInfo { get; set; }
public UBaseObject MediaInfo { get; set; }
}
}
+2 -2
View File
@@ -8,9 +8,9 @@ using MediaBrowser.Model.Session;
namespace Emby.Dlna.PlayTo
{
public class PlaylistItemFactory
public static class PlaylistItemFactory
{
public PlaylistItem Create(Photo item, DeviceProfile profile)
public static PlaylistItem Create(Photo item, DeviceProfile profile)
{
var playlistItem = new PlaylistItem
{
+48 -68
View File
@@ -4,6 +4,7 @@ using System;
using System.Globalization;
using System.IO;
using System.Net.Http;
using System.Net.Mime;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
@@ -20,11 +21,11 @@ namespace Emby.Dlna.PlayTo
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
private readonly IHttpClient _httpClient;
private readonly IHttpClientFactory _httpClientFactory;
public SsdpHttpClient(IHttpClient httpClient)
public SsdpHttpClient(IHttpClientFactory httpClientFactory)
{
_httpClient = httpClient;
_httpClientFactory = httpClientFactory;
}
public async Task<XDocument> SendCommandAsync(
@@ -36,20 +37,18 @@ namespace Emby.Dlna.PlayTo
CancellationToken cancellationToken = default)
{
var url = NormalizeServiceUrl(baseUrl, service.ControlUrl);
using (var response = await PostSoapDataAsync(
url,
$"\"{service.ServiceType}#{command}\"",
postData,
header,
cancellationToken)
.ConfigureAwait(false))
using (var stream = response.Content)
using (var reader = new StreamReader(stream, Encoding.UTF8))
{
return XDocument.Parse(
await reader.ReadToEndAsync().ConfigureAwait(false),
LoadOptions.PreserveWhitespace);
}
using var response = await PostSoapDataAsync(
url,
$"\"{service.ServiceType}#{command}\"",
postData,
header,
cancellationToken)
.ConfigureAwait(false);
await using var stream = await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
return await XDocument.LoadAsync(
stream,
LoadOptions.PreserveWhitespace,
cancellationToken).ConfigureAwait(false);
}
private static string NormalizeServiceUrl(string baseUrl, string serviceUrl)
@@ -60,7 +59,7 @@ namespace Emby.Dlna.PlayTo
return serviceUrl;
}
if (!serviceUrl.StartsWith("/", StringComparison.Ordinal))
if (!serviceUrl.StartsWith('/'))
{
serviceUrl = "/" + serviceUrl;
}
@@ -76,49 +75,39 @@ namespace Emby.Dlna.PlayTo
int eventport,
int timeOut = 3600)
{
var options = new HttpRequestOptions
{
Url = url,
UserAgent = USERAGENT,
LogErrorResponseBody = true,
BufferContent = false,
};
using var options = new HttpRequestMessage(new HttpMethod("SUBSCRIBE"), url);
options.Headers.UserAgent.ParseAdd(USERAGENT);
options.Headers.TryAddWithoutValidation("HOST", ip + ":" + port.ToString(_usCulture));
options.Headers.TryAddWithoutValidation("CALLBACK", "<" + localIp + ":" + eventport.ToString(_usCulture) + ">");
options.Headers.TryAddWithoutValidation("NT", "upnp:event");
options.Headers.TryAddWithoutValidation("TIMEOUT", "Second-" + timeOut.ToString(_usCulture));
options.RequestHeaders["HOST"] = ip + ":" + port.ToString(_usCulture);
options.RequestHeaders["CALLBACK"] = "<" + localIp + ":" + eventport.ToString(_usCulture) + ">";
options.RequestHeaders["NT"] = "upnp:event";
options.RequestHeaders["TIMEOUT"] = "Second-" + timeOut.ToString(_usCulture);
using (await _httpClient.SendAsync(options, new HttpMethod("SUBSCRIBE")).ConfigureAwait(false))
{
}
using var response = await _httpClientFactory.CreateClient(NamedClient.Default)
.SendAsync(options, HttpCompletionOption.ResponseHeadersRead)
.ConfigureAwait(false);
}
public async Task<XDocument> GetDataAsync(string url, CancellationToken cancellationToken)
{
var options = new HttpRequestOptions
using var options = new HttpRequestMessage(HttpMethod.Get, url);
options.Headers.UserAgent.ParseAdd(USERAGENT);
options.Headers.TryAddWithoutValidation("FriendlyName.DLNA.ORG", FriendlyName);
using var response = await _httpClientFactory.CreateClient(NamedClient.Default).SendAsync(options, HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
await using var stream = await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
try
{
Url = url,
UserAgent = USERAGENT,
LogErrorResponseBody = true,
BufferContent = false,
CancellationToken = cancellationToken
};
options.RequestHeaders["FriendlyName.DLNA.ORG"] = FriendlyName;
using (var response = await _httpClient.SendAsync(options, HttpMethod.Get).ConfigureAwait(false))
using (var stream = response.Content)
using (var reader = new StreamReader(stream, Encoding.UTF8))
return await XDocument.LoadAsync(
stream,
LoadOptions.PreserveWhitespace,
cancellationToken).ConfigureAwait(false);
}
catch
{
return XDocument.Parse(
await reader.ReadToEndAsync().ConfigureAwait(false),
LoadOptions.PreserveWhitespace);
return null;
}
}
private Task<HttpResponseInfo> PostSoapDataAsync(
private async Task<HttpResponseMessage> PostSoapDataAsync(
string url,
string soapAction,
string postData,
@@ -130,29 +119,20 @@ namespace Emby.Dlna.PlayTo
soapAction = $"\"{soapAction}\"";
}
var options = new HttpRequestOptions
{
Url = url,
UserAgent = USERAGENT,
LogErrorResponseBody = true,
BufferContent = false,
CancellationToken = cancellationToken
};
options.RequestHeaders["SOAPAction"] = soapAction;
options.RequestHeaders["Pragma"] = "no-cache";
options.RequestHeaders["FriendlyName.DLNA.ORG"] = FriendlyName;
using var options = new HttpRequestMessage(HttpMethod.Post, url);
options.Headers.UserAgent.ParseAdd(USERAGENT);
options.Headers.TryAddWithoutValidation("SOAPACTION", soapAction);
options.Headers.TryAddWithoutValidation("Pragma", "no-cache");
options.Headers.TryAddWithoutValidation("FriendlyName.DLNA.ORG", FriendlyName);
if (!string.IsNullOrEmpty(header))
{
options.RequestHeaders["contentFeatures.dlna.org"] = header;
options.Headers.TryAddWithoutValidation("contentFeatures.dlna.org", header);
}
options.RequestContentType = "text/xml";
options.RequestContent = postData;
options.Content = new StringContent(postData, Encoding.UTF8, MediaTypeNames.Text.Xml);
return _httpClient.Post(options);
return await _httpClientFactory.CreateClient(NamedClient.Default).SendAsync(options, HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
}
}
}
-13
View File
@@ -1,13 +0,0 @@
#pragma warning disable CS1591
namespace Emby.Dlna.PlayTo
{
public enum TRANSPORTSTATE
{
STOPPED,
PLAYING,
TRANSITIONING,
PAUSED_PLAYBACK,
PAUSED
}
}
+38 -48
View File
@@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Xml.Linq;
using Emby.Dlna.Common;
@@ -11,36 +12,28 @@ namespace Emby.Dlna.PlayTo
{
public class TransportCommands
{
private List<StateVariable> _stateVariables = new List<StateVariable>();
public List<StateVariable> StateVariables
{
get => _stateVariables;
set => _stateVariables = value;
}
private const string CommandBase = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" + "<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">" + "<SOAP-ENV:Body>" + "<m:{0} xmlns:m=\"{1}\">" + "{2}" + "</m:{0}>" + "</SOAP-ENV:Body></SOAP-ENV:Envelope>";
private List<ServiceAction> _serviceActions = new List<ServiceAction>();
public List<ServiceAction> ServiceActions
{
get => _serviceActions;
set => _serviceActions = value;
}
public List<StateVariable> StateVariables { get; } = new List<StateVariable>();
public List<ServiceAction> ServiceActions { get; } = new List<ServiceAction>();
public static TransportCommands Create(XDocument document)
{
var command = new TransportCommands();
var actionList = document.Descendants(uPnpNamespaces.svc + "actionList");
var actionList = document.Descendants(UPnpNamespaces.Svc + "actionList");
foreach (var container in actionList.Descendants(uPnpNamespaces.svc + "action"))
foreach (var container in actionList.Descendants(UPnpNamespaces.Svc + "action"))
{
command.ServiceActions.Add(ServiceActionFromXml(container));
}
var stateValues = document.Descendants(uPnpNamespaces.ServiceStateTable).FirstOrDefault();
var stateValues = document.Descendants(UPnpNamespaces.ServiceStateTable).FirstOrDefault();
if (stateValues != null)
{
foreach (var container in stateValues.Elements(uPnpNamespaces.svc + "stateVariable"))
foreach (var container in stateValues.Elements(UPnpNamespaces.Svc + "stateVariable"))
{
command.StateVariables.Add(FromXml(container));
}
@@ -51,19 +44,19 @@ namespace Emby.Dlna.PlayTo
private static ServiceAction ServiceActionFromXml(XElement container)
{
var argumentList = new List<Argument>();
var serviceAction = new ServiceAction
{
Name = container.GetValue(UPnpNamespaces.Svc + "name"),
};
foreach (var arg in container.Descendants(uPnpNamespaces.svc + "argument"))
var argumentList = serviceAction.ArgumentList;
foreach (var arg in container.Descendants(UPnpNamespaces.Svc + "argument"))
{
argumentList.Add(ArgumentFromXml(arg));
}
return new ServiceAction
{
Name = container.GetValue(uPnpNamespaces.svc + "name"),
ArgumentList = argumentList
};
return serviceAction;
}
private static Argument ArgumentFromXml(XElement container)
@@ -75,30 +68,30 @@ namespace Emby.Dlna.PlayTo
return new Argument
{
Name = container.GetValue(uPnpNamespaces.svc + "name"),
Direction = container.GetValue(uPnpNamespaces.svc + "direction"),
RelatedStateVariable = container.GetValue(uPnpNamespaces.svc + "relatedStateVariable")
Name = container.GetValue(UPnpNamespaces.Svc + "name"),
Direction = container.GetValue(UPnpNamespaces.Svc + "direction"),
RelatedStateVariable = container.GetValue(UPnpNamespaces.Svc + "relatedStateVariable")
};
}
private static StateVariable FromXml(XElement container)
{
var allowedValues = new List<string>();
var element = container.Descendants(uPnpNamespaces.svc + "allowedValueList")
var allowedValues = Array.Empty<string>();
var element = container.Descendants(UPnpNamespaces.Svc + "allowedValueList")
.FirstOrDefault();
if (element != null)
{
var values = element.Descendants(uPnpNamespaces.svc + "allowedValue");
var values = element.Descendants(UPnpNamespaces.Svc + "allowedValue");
allowedValues.AddRange(values.Select(child => child.Value));
allowedValues = values.Select(child => child.Value).ToArray();
}
return new StateVariable
{
Name = container.GetValue(uPnpNamespaces.svc + "name"),
DataType = container.GetValue(uPnpNamespaces.svc + "dataType"),
AllowedValues = allowedValues.ToArray()
Name = container.GetValue(UPnpNamespaces.Svc + "name"),
DataType = container.GetValue(UPnpNamespaces.Svc + "dataType"),
AllowedValues = allowedValues
};
}
@@ -108,12 +101,12 @@ namespace Emby.Dlna.PlayTo
foreach (var arg in action.ArgumentList)
{
if (arg.Direction == "out")
if (string.Equals(arg.Direction, "out", StringComparison.Ordinal))
{
continue;
}
if (arg.Name == "InstanceID")
if (string.Equals(arg.Name, "InstanceID", StringComparison.Ordinal))
{
stateString += BuildArgumentXml(arg, "0");
}
@@ -123,7 +116,7 @@ namespace Emby.Dlna.PlayTo
}
}
return string.Format(CommandBase, action.Name, xmlNamespace, stateString);
return string.Format(CultureInfo.InvariantCulture, CommandBase, action.Name, xmlNamespace, stateString);
}
public string BuildPost(ServiceAction action, string xmlNamesapce, object value, string commandParameter = "")
@@ -132,12 +125,12 @@ namespace Emby.Dlna.PlayTo
foreach (var arg in action.ArgumentList)
{
if (arg.Direction == "out")
if (string.Equals(arg.Direction, "out", StringComparison.Ordinal))
{
continue;
}
if (arg.Name == "InstanceID")
if (string.Equals(arg.Name, "InstanceID", StringComparison.Ordinal))
{
stateString += BuildArgumentXml(arg, "0");
}
@@ -147,7 +140,7 @@ namespace Emby.Dlna.PlayTo
}
}
return string.Format(CommandBase, action.Name, xmlNamesapce, stateString);
return string.Format(CultureInfo.InvariantCulture, CommandBase, action.Name, xmlNamesapce, stateString);
}
public string BuildPost(ServiceAction action, string xmlNamesapce, object value, Dictionary<string, string> dictionary)
@@ -156,7 +149,7 @@ namespace Emby.Dlna.PlayTo
foreach (var arg in action.ArgumentList)
{
if (arg.Name == "InstanceID")
if (string.Equals(arg.Name, "InstanceID", StringComparison.Ordinal))
{
stateString += BuildArgumentXml(arg, "0");
}
@@ -170,7 +163,7 @@ namespace Emby.Dlna.PlayTo
}
}
return string.Format(CommandBase, action.Name, xmlNamesapce, stateString);
return string.Format(CultureInfo.InvariantCulture, CommandBase, action.Name, xmlNamesapce, stateString);
}
private string BuildArgumentXml(Argument argument, string value, string commandParameter = "")
@@ -180,15 +173,12 @@ namespace Emby.Dlna.PlayTo
if (state != null)
{
var sendValue = state.AllowedValues.FirstOrDefault(a => string.Equals(a, commandParameter, StringComparison.OrdinalIgnoreCase)) ??
state.AllowedValues.FirstOrDefault() ??
value;
(state.AllowedValues.Count > 0 ? state.AllowedValues[0] : value);
return string.Format("<{0} xmlns:dt=\"urn:schemas-microsoft-com:datatypes\" dt:dt=\"{1}\">{2}</{0}>", argument.Name, state.DataType ?? "string", sendValue);
return string.Format(CultureInfo.InvariantCulture, "<{0} xmlns:dt=\"urn:schemas-microsoft-com:datatypes\" dt:dt=\"{1}\">{2}</{0}>", argument.Name, state.DataType ?? "string", sendValue);
}
return string.Format("<{0}>{1}</{0}>", argument.Name, value);
return string.Format(CultureInfo.InvariantCulture, "<{0}>{1}</{0}>", argument.Name, value);
}
private const string CommandBase = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" + "<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">" + "<SOAP-ENV:Body>" + "<m:{0} xmlns:m=\"{1}\">" + "{2}" + "</m:{0}>" + "</SOAP-ENV:Body></SOAP-ENV:Envelope>";
}
}
+14
View File
@@ -0,0 +1,14 @@
#pragma warning disable CS1591
#pragma warning disable SA1602
namespace Emby.Dlna.PlayTo
{
public enum TransportState
{
Stopped,
Playing,
Transitioning,
PausedPlayback,
Paused
}
}
+8 -8
View File
@@ -6,22 +6,22 @@ using Emby.Dlna.Ssdp;
namespace Emby.Dlna.PlayTo
{
public class UpnpContainer : uBaseObject
public class UpnpContainer : UBaseObject
{
public static uBaseObject Create(XElement container)
public static UBaseObject Create(XElement container)
{
if (container == null)
{
throw new ArgumentNullException(nameof(container));
}
return new uBaseObject
return new UBaseObject
{
Id = container.GetAttributeValue(uPnpNamespaces.Id),
ParentId = container.GetAttributeValue(uPnpNamespaces.ParentId),
Title = container.GetValue(uPnpNamespaces.title),
IconUrl = container.GetValue(uPnpNamespaces.Artwork),
UpnpClass = container.GetValue(uPnpNamespaces.uClass)
Id = container.GetAttributeValue(UPnpNamespaces.Id),
ParentId = container.GetAttributeValue(UPnpNamespaces.ParentId),
Title = container.GetValue(UPnpNamespaces.Title),
IconUrl = container.GetValue(UPnpNamespaces.Artwork),
UpnpClass = container.GetValue(UPnpNamespaces.Class)
};
}
}
+13 -12
View File
@@ -1,10 +1,11 @@
#pragma warning disable CS1591
using System;
using System.Collections.Generic;
namespace Emby.Dlna.PlayTo
{
public class uBaseObject
public class UBaseObject
{
public string Id { get; set; }
@@ -20,20 +21,10 @@ namespace Emby.Dlna.PlayTo
public string Url { get; set; }
public string[] ProtocolInfo { get; set; }
public IReadOnlyList<string> ProtocolInfo { get; set; }
public string UpnpClass { get; set; }
public bool Equals(uBaseObject obj)
{
if (obj == null)
{
throw new ArgumentNullException(nameof(obj));
}
return string.Equals(Id, obj.Id);
}
public string MediaType
{
get
@@ -58,5 +49,15 @@ namespace Emby.Dlna.PlayTo
return null;
}
}
public bool Equals(UBaseObject obj)
{
if (obj == null)
{
throw new ArgumentNullException(nameof(obj));
}
return string.Equals(Id, obj.Id, StringComparison.Ordinal);
}
}
}
+56 -30
View File
@@ -4,38 +4,64 @@ using System.Xml.Linq;
namespace Emby.Dlna.PlayTo
{
public class uPnpNamespaces
public static class UPnpNamespaces
{
public static XNamespace dc = "http://purl.org/dc/elements/1.1/";
public static XNamespace ns = "urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/";
public static XNamespace svc = "urn:schemas-upnp-org:service-1-0";
public static XNamespace ud = "urn:schemas-upnp-org:device-1-0";
public static XNamespace upnp = "urn:schemas-upnp-org:metadata-1-0/upnp/";
public static XNamespace RenderingControl = "urn:schemas-upnp-org:service:RenderingControl:1";
public static XNamespace AvTransport = "urn:schemas-upnp-org:service:AVTransport:1";
public static XNamespace ContentDirectory = "urn:schemas-upnp-org:service:ContentDirectory:1";
public static XNamespace Dc { get; } = "http://purl.org/dc/elements/1.1/";
public static XName containers = ns + "container";
public static XName items = ns + "item";
public static XName title = dc + "title";
public static XName creator = dc + "creator";
public static XName artist = upnp + "artist";
public static XName Id = "id";
public static XName ParentId = "parentID";
public static XName uClass = upnp + "class";
public static XName Artwork = upnp + "albumArtURI";
public static XName Description = dc + "description";
public static XName LongDescription = upnp + "longDescription";
public static XName Album = upnp + "album";
public static XName Author = upnp + "author";
public static XName Director = upnp + "director";
public static XName PlayCount = upnp + "playbackCount";
public static XName Tracknumber = upnp + "originalTrackNumber";
public static XName Res = ns + "res";
public static XName Duration = "duration";
public static XName ProtocolInfo = "protocolInfo";
public static XNamespace Ns { get; } = "urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/";
public static XName ServiceStateTable = svc + "serviceStateTable";
public static XName StateVariable = svc + "stateVariable";
public static XNamespace Svc { get; } = "urn:schemas-upnp-org:service-1-0";
public static XNamespace Ud { get; } = "urn:schemas-upnp-org:device-1-0";
public static XNamespace UPnp { get; } = "urn:schemas-upnp-org:metadata-1-0/upnp/";
public static XNamespace RenderingControl { get; } = "urn:schemas-upnp-org:service:RenderingControl:1";
public static XNamespace AvTransport { get; } = "urn:schemas-upnp-org:service:AVTransport:1";
public static XNamespace ContentDirectory { get; } = "urn:schemas-upnp-org:service:ContentDirectory:1";
public static XName Containers { get; } = Ns + "container";
public static XName Items { get; } = Ns + "item";
public static XName Title { get; } = Dc + "title";
public static XName Creator { get; } = Dc + "creator";
public static XName Artist { get; } = UPnp + "artist";
public static XName Id { get; } = "id";
public static XName ParentId { get; } = "parentID";
public static XName Class { get; } = UPnp + "class";
public static XName Artwork { get; } = UPnp + "albumArtURI";
public static XName Description { get; } = Dc + "description";
public static XName LongDescription { get; } = UPnp + "longDescription";
public static XName Album { get; } = UPnp + "album";
public static XName Author { get; } = UPnp + "author";
public static XName Director { get; } = UPnp + "director";
public static XName PlayCount { get; } = UPnp + "playbackCount";
public static XName Tracknumber { get; } = UPnp + "originalTrackNumber";
public static XName Res { get; } = Ns + "res";
public static XName Duration { get; } = "duration";
public static XName ProtocolInfo { get; } = "protocolInfo";
public static XName ServiceStateTable { get; } = Svc + "serviceStateTable";
public static XName StateVariable { get; } = Svc + "stateVariable";
}
}
+5 -2
View File
@@ -1,5 +1,7 @@
#pragma warning disable CS1591
using System;
using System.Globalization;
using System.Linq;
using MediaBrowser.Model.Dlna;
@@ -10,6 +12,7 @@ namespace Emby.Dlna.Profiles
{
public DefaultProfile()
{
Id = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture);
Name = "Generic Device";
ProtocolInfo = "http-get:*:video/mpeg:*,http-get:*:video/mp4:*,http-get:*:video/vnd.dlna.mpeg-tts:*,http-get:*:video/avi:*,http-get:*:video/x-matroska:*,http-get:*:video/x-ms-wmv:*,http-get:*:video/wtv:*,http-get:*:audio/mpeg:*,http-get:*:audio/mp3:*,http-get:*:audio/mp4:*,http-get:*:audio/x-ms-wma:*,http-get:*:audio/wav:*,http-get:*:audio/L16:*,http-get:*:image/jpeg:*,http-get:*:image/png:*,http-get:*:image/gif:*,http-get:*:image/tiff:*";
@@ -64,14 +67,14 @@ namespace Emby.Dlna.Profiles
new DirectPlayProfile
{
// play all
Container = "",
Container = string.Empty,
Type = DlnaProfileType.Video
},
new DirectPlayProfile
{
// play all
Container = "",
Container = string.Empty,
Type = DlnaProfileType.Audio
}
};
+6 -6
View File
@@ -24,7 +24,7 @@ namespace Emby.Dlna.Profiles
{
Match = HeaderMatchType.Substring,
Name = "User-Agent",
Value ="Zip_"
Value = "Zip_"
}
}
};
@@ -81,7 +81,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.Video,
Codec = "h264",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -124,7 +124,7 @@ namespace Emby.Dlna.Profiles
new CodecProfile
{
Type = CodecType.Video,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -161,7 +161,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.VideoAudio,
Codec = "ac3,he-aac",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -177,7 +177,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.VideoAudio,
Codec = "aac",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -192,7 +192,7 @@ namespace Emby.Dlna.Profiles
new CodecProfile
{
Type = CodecType.VideoAudio,
Conditions = new []
Conditions = new[]
{
// The device does not have any audio switching capabilities
new ProfileCondition
+2 -2
View File
@@ -84,7 +84,7 @@ namespace Emby.Dlna.Profiles
{
Type = DlnaProfileType.Photo,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -191,7 +191,7 @@ namespace Emby.Dlna.Profiles
}
};
ResponseProfiles = new ResponseProfile[]
ResponseProfiles = new[]
{
new ResponseProfile
{
+1 -1
View File
@@ -32,7 +32,7 @@ namespace Emby.Dlna.Profiles
}
};
ResponseProfiles = new ResponseProfile[]
ResponseProfiles = new[]
{
new ResponseProfile
{
+1 -1
View File
@@ -138,7 +138,7 @@ namespace Emby.Dlna.Profiles
{
Type = DlnaProfileType.Photo,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
+7 -7
View File
@@ -93,8 +93,8 @@ namespace Emby.Dlna.Profiles
new CodecProfile
{
Type = CodecType.Video,
Codec="h264",
Conditions = new []
Codec = "h264",
Conditions = new[]
{
new ProfileCondition(ProfileConditionType.EqualsAny, ProfileConditionValue.VideoProfile, "baseline|constrained baseline"),
new ProfileCondition
@@ -122,7 +122,7 @@ namespace Emby.Dlna.Profiles
new CodecProfile
{
Type = CodecType.Video,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -150,7 +150,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.VideoAudio,
Codec = "aac",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -166,7 +166,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.Audio,
Codec = "aac",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -182,7 +182,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.Audio,
Codec = "mp3",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -202,7 +202,7 @@ namespace Emby.Dlna.Profiles
}
};
ResponseProfiles = new ResponseProfile[]
ResponseProfiles = new[]
{
new ResponseProfile
{
+1 -1
View File
@@ -139,7 +139,7 @@ namespace Emby.Dlna.Profiles
{
Type = DlnaProfileType.Photo,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
+3 -3
View File
@@ -150,7 +150,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.Video,
Codec = "h264",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -178,7 +178,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.VideoAudio,
Codec = "ac3",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -197,7 +197,7 @@ namespace Emby.Dlna.Profiles
{
Type = DlnaProfileType.Photo,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
+3 -3
View File
@@ -150,7 +150,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.Video,
Codec = "h264",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -178,7 +178,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.VideoAudio,
Codec = "ac3",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -197,7 +197,7 @@ namespace Emby.Dlna.Profiles
{
Type = DlnaProfileType.Photo,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
+3 -3
View File
@@ -138,7 +138,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.Video,
Codec = "h264",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -166,7 +166,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.VideoAudio,
Codec = "ac3",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -185,7 +185,7 @@ namespace Emby.Dlna.Profiles
{
Type = DlnaProfileType.Photo,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
+3 -3
View File
@@ -138,7 +138,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.Video,
Codec = "h264",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -166,7 +166,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.VideoAudio,
Codec = "ac3",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -185,7 +185,7 @@ namespace Emby.Dlna.Profiles
{
Type = DlnaProfileType.Photo,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -114,7 +114,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.Video,
Codec = "h264",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -156,7 +156,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.VideoAudio,
Codec = "ac3",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -172,7 +172,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.VideoAudio,
Codec = "aac",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -191,7 +191,7 @@ namespace Emby.Dlna.Profiles
{
Type = DlnaProfileType.Photo,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -217,7 +217,7 @@ namespace Emby.Dlna.Profiles
VideoCodec = "h264,mpeg4,vc1",
AudioCodec = "ac3,aac,mp3",
MimeType = "video/vnd.dlna.mpeg-tts",
OrgPn="MPEG_TS_SD_EU,MPEG_TS_SD_NA,MPEG_TS_SD_KO",
OrgPn = "MPEG_TS_SD_EU,MPEG_TS_SD_NA,MPEG_TS_SD_KO",
Type = DlnaProfileType.Video
},
+22 -22
View File
@@ -102,13 +102,13 @@ namespace Emby.Dlna.Profiles
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="h264",
AudioCodec="ac3,aac,mp3",
VideoCodec = "h264",
AudioCodec = "ac3,aac,mp3",
MimeType = "video/vnd.dlna.mpeg-tts",
OrgPn="AVC_TS_HD_24_AC3_T,AVC_TS_HD_50_AC3_T,AVC_TS_HD_60_AC3_T,AVC_TS_HD_EU_T",
OrgPn = "AVC_TS_HD_24_AC3_T,AVC_TS_HD_50_AC3_T,AVC_TS_HD_60_AC3_T,AVC_TS_HD_EU_T",
Type = DlnaProfileType.Video,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -128,13 +128,13 @@ namespace Emby.Dlna.Profiles
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="h264",
AudioCodec="ac3,aac,mp3",
VideoCodec = "h264",
AudioCodec = "ac3,aac,mp3",
MimeType = "video/mpeg",
OrgPn="AVC_TS_HD_24_AC3_ISO,AVC_TS_HD_50_AC3_ISO,AVC_TS_HD_60_AC3_ISO,AVC_TS_HD_EU_ISO",
OrgPn = "AVC_TS_HD_24_AC3_ISO,AVC_TS_HD_50_AC3_ISO,AVC_TS_HD_60_AC3_ISO,AVC_TS_HD_EU_ISO",
Type = DlnaProfileType.Video,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -148,28 +148,28 @@ namespace Emby.Dlna.Profiles
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="h264",
AudioCodec="ac3,aac,mp3",
VideoCodec = "h264",
AudioCodec = "ac3,aac,mp3",
MimeType = "video/vnd.dlna.mpeg-tts",
OrgPn="AVC_TS_HD_24_AC3,AVC_TS_HD_50_AC3,AVC_TS_HD_60_AC3,AVC_TS_HD_EU",
OrgPn = "AVC_TS_HD_24_AC3,AVC_TS_HD_50_AC3,AVC_TS_HD_60_AC3,AVC_TS_HD_EU",
Type = DlnaProfileType.Video
},
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="mpeg2video",
VideoCodec = "mpeg2video",
MimeType = "video/vnd.dlna.mpeg-tts",
OrgPn="MPEG_TS_SD_EU,MPEG_TS_SD_NA,MPEG_TS_SD_KO",
OrgPn = "MPEG_TS_SD_EU,MPEG_TS_SD_NA,MPEG_TS_SD_KO",
Type = DlnaProfileType.Video
},
new ResponseProfile
{
Container = "mpeg",
VideoCodec="mpeg1video,mpeg2video",
VideoCodec = "mpeg1video,mpeg2video",
MimeType = "video/mpeg",
OrgPn="MPEG_PS_NTSC,MPEG_PS_PAL",
OrgPn = "MPEG_PS_NTSC,MPEG_PS_PAL",
Type = DlnaProfileType.Video
}
};
@@ -180,7 +180,7 @@ namespace Emby.Dlna.Profiles
{
Type = DlnaProfileType.Photo,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -204,7 +204,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.Video,
Codec = "h264",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -243,7 +243,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.Video,
Codec = "mpeg2video",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -275,7 +275,7 @@ namespace Emby.Dlna.Profiles
new CodecProfile
{
Type = CodecType.Video,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -303,7 +303,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.VideoAudio,
Codec = "ac3",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -319,7 +319,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.VideoAudio,
Codec = "aac",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -341,7 +341,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.VideoAudio,
Codec = "mp3,mp2",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
+21 -21
View File
@@ -120,7 +120,7 @@ namespace Emby.Dlna.Profiles
{
Type = DlnaProfileType.Photo,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -143,13 +143,13 @@ namespace Emby.Dlna.Profiles
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="h264",
AudioCodec="ac3,aac,mp3",
VideoCodec = "h264",
AudioCodec = "ac3,aac,mp3",
MimeType = "video/vnd.dlna.mpeg-tts",
OrgPn="AVC_TS_HD_24_AC3_T,AVC_TS_HD_50_AC3_T,AVC_TS_HD_60_AC3_T,AVC_TS_HD_EU_T",
OrgPn = "AVC_TS_HD_24_AC3_T,AVC_TS_HD_50_AC3_T,AVC_TS_HD_60_AC3_T,AVC_TS_HD_EU_T",
Type = DlnaProfileType.Video,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -169,13 +169,13 @@ namespace Emby.Dlna.Profiles
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="h264",
AudioCodec="ac3,aac,mp3",
VideoCodec = "h264",
AudioCodec = "ac3,aac,mp3",
MimeType = "video/mpeg",
OrgPn="AVC_TS_HD_24_AC3_ISO,AVC_TS_HD_50_AC3_ISO,AVC_TS_HD_60_AC3_ISO,AVC_TS_HD_EU_ISO",
OrgPn = "AVC_TS_HD_24_AC3_ISO,AVC_TS_HD_50_AC3_ISO,AVC_TS_HD_60_AC3_ISO,AVC_TS_HD_EU_ISO",
Type = DlnaProfileType.Video,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -189,28 +189,28 @@ namespace Emby.Dlna.Profiles
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="h264",
AudioCodec="ac3,aac,mp3",
VideoCodec = "h264",
AudioCodec = "ac3,aac,mp3",
MimeType = "video/vnd.dlna.mpeg-tts",
OrgPn="AVC_TS_HD_24_AC3,AVC_TS_HD_50_AC3,AVC_TS_HD_60_AC3,AVC_TS_HD_EU",
OrgPn = "AVC_TS_HD_24_AC3,AVC_TS_HD_50_AC3,AVC_TS_HD_60_AC3,AVC_TS_HD_EU",
Type = DlnaProfileType.Video
},
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="mpeg2video",
VideoCodec = "mpeg2video",
MimeType = "video/vnd.dlna.mpeg-tts",
OrgPn="MPEG_TS_SD_EU,MPEG_TS_SD_NA,MPEG_TS_SD_KO",
OrgPn = "MPEG_TS_SD_EU,MPEG_TS_SD_NA,MPEG_TS_SD_KO",
Type = DlnaProfileType.Video
},
new ResponseProfile
{
Container = "mpeg",
VideoCodec="mpeg1video,mpeg2video",
VideoCodec = "mpeg1video,mpeg2video",
MimeType = "video/mpeg",
OrgPn="MPEG_PS_NTSC,MPEG_PS_PAL",
OrgPn = "MPEG_PS_NTSC,MPEG_PS_PAL",
Type = DlnaProfileType.Video
},
new ResponseProfile
@@ -227,7 +227,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.Video,
Codec = "h264",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -266,7 +266,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.Video,
Codec = "mpeg2video",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -298,7 +298,7 @@ namespace Emby.Dlna.Profiles
new CodecProfile
{
Type = CodecType.Video,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -326,7 +326,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.VideoAudio,
Codec = "ac3",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -364,7 +364,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.VideoAudio,
Codec = "mp3,mp2",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
+17 -17
View File
@@ -131,13 +131,13 @@ namespace Emby.Dlna.Profiles
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="h264",
AudioCodec="ac3,aac,mp3",
VideoCodec = "h264",
AudioCodec = "ac3,aac,mp3",
MimeType = "video/vnd.dlna.mpeg-tts",
OrgPn="AVC_TS_HD_24_AC3_T,AVC_TS_HD_50_AC3_T,AVC_TS_HD_60_AC3_T,AVC_TS_HD_EU_T",
OrgPn = "AVC_TS_HD_24_AC3_T,AVC_TS_HD_50_AC3_T,AVC_TS_HD_60_AC3_T,AVC_TS_HD_EU_T",
Type = DlnaProfileType.Video,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -157,13 +157,13 @@ namespace Emby.Dlna.Profiles
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="h264",
AudioCodec="ac3,aac,mp3",
VideoCodec = "h264",
AudioCodec = "ac3,aac,mp3",
MimeType = "video/mpeg",
OrgPn="AVC_TS_HD_24_AC3_ISO,AVC_TS_HD_50_AC3_ISO,AVC_TS_HD_60_AC3_ISO,AVC_TS_HD_EU_ISO",
OrgPn = "AVC_TS_HD_24_AC3_ISO,AVC_TS_HD_50_AC3_ISO,AVC_TS_HD_60_AC3_ISO,AVC_TS_HD_EU_ISO",
Type = DlnaProfileType.Video,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -177,28 +177,28 @@ namespace Emby.Dlna.Profiles
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="h264",
AudioCodec="ac3,aac,mp3",
VideoCodec = "h264",
AudioCodec = "ac3,aac,mp3",
MimeType = "video/vnd.dlna.mpeg-tts",
OrgPn="AVC_TS_HD_24_AC3,AVC_TS_HD_50_AC3,AVC_TS_HD_60_AC3,AVC_TS_HD_EU",
OrgPn = "AVC_TS_HD_24_AC3,AVC_TS_HD_50_AC3,AVC_TS_HD_60_AC3,AVC_TS_HD_EU",
Type = DlnaProfileType.Video
},
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="mpeg2video",
VideoCodec = "mpeg2video",
MimeType = "video/vnd.dlna.mpeg-tts",
OrgPn="MPEG_TS_SD_EU,MPEG_TS_SD_NA,MPEG_TS_SD_KO",
OrgPn = "MPEG_TS_SD_EU,MPEG_TS_SD_NA,MPEG_TS_SD_KO",
Type = DlnaProfileType.Video
},
new ResponseProfile
{
Container = "mpeg",
VideoCodec="mpeg1video,mpeg2video",
VideoCodec = "mpeg1video,mpeg2video",
MimeType = "video/mpeg",
OrgPn="MPEG_PS_NTSC,MPEG_PS_PAL",
OrgPn = "MPEG_PS_NTSC,MPEG_PS_PAL",
Type = DlnaProfileType.Video
},
new ResponseProfile
@@ -215,7 +215,7 @@ namespace Emby.Dlna.Profiles
{
Type = DlnaProfileType.Photo,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -282,7 +282,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.VideoAudio,
Codec = "mp3,mp2",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
+18 -19
View File
@@ -164,7 +164,7 @@ namespace Emby.Dlna.Profiles
{
Type = DlnaProfileType.Photo,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -187,13 +187,13 @@ namespace Emby.Dlna.Profiles
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="h264",
AudioCodec="ac3,aac,mp3",
VideoCodec = "h264",
AudioCodec = "ac3,aac,mp3",
MimeType = "video/vnd.dlna.mpeg-tts",
OrgPn="AVC_TS_HD_24_AC3_T,AVC_TS_HD_50_AC3_T,AVC_TS_HD_60_AC3_T,AVC_TS_HD_EU_T",
OrgPn = "AVC_TS_HD_24_AC3_T,AVC_TS_HD_50_AC3_T,AVC_TS_HD_60_AC3_T,AVC_TS_HD_EU_T",
Type = DlnaProfileType.Video,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -213,13 +213,13 @@ namespace Emby.Dlna.Profiles
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="h264",
AudioCodec="ac3,aac,mp3",
VideoCodec = "h264",
AudioCodec = "ac3,aac,mp3",
MimeType = "video/mpeg",
OrgPn="AVC_TS_HD_24_AC3_ISO,AVC_TS_HD_50_AC3_ISO,AVC_TS_HD_60_AC3_ISO,AVC_TS_HD_EU_ISO",
OrgPn = "AVC_TS_HD_24_AC3_ISO,AVC_TS_HD_50_AC3_ISO,AVC_TS_HD_60_AC3_ISO,AVC_TS_HD_EU_ISO",
Type = DlnaProfileType.Video,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -233,28 +233,28 @@ namespace Emby.Dlna.Profiles
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="h264",
AudioCodec="ac3,aac,mp3",
VideoCodec = "h264",
AudioCodec = "ac3,aac,mp3",
MimeType = "video/vnd.dlna.mpeg-tts",
OrgPn="AVC_TS_HD_24_AC3,AVC_TS_HD_50_AC3,AVC_TS_HD_60_AC3,AVC_TS_HD_EU",
OrgPn = "AVC_TS_HD_24_AC3,AVC_TS_HD_50_AC3,AVC_TS_HD_60_AC3,AVC_TS_HD_EU",
Type = DlnaProfileType.Video
},
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="mpeg2video",
VideoCodec = "mpeg2video",
MimeType = "video/vnd.dlna.mpeg-tts",
OrgPn="MPEG_TS_SD_EU,MPEG_TS_SD_NA,MPEG_TS_SD_KO",
OrgPn = "MPEG_TS_SD_EU,MPEG_TS_SD_NA,MPEG_TS_SD_KO",
Type = DlnaProfileType.Video
},
new ResponseProfile
{
Container = "mpeg",
VideoCodec="mpeg1video,mpeg2video",
VideoCodec = "mpeg1video,mpeg2video",
MimeType = "video/mpeg",
OrgPn="MPEG_PS_NTSC,MPEG_PS_PAL",
OrgPn = "MPEG_PS_NTSC,MPEG_PS_PAL",
Type = DlnaProfileType.Video
},
new ResponseProfile
@@ -265,14 +265,13 @@ namespace Emby.Dlna.Profiles
}
};
CodecProfiles = new[]
{
new CodecProfile
{
Type = CodecType.Video,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -300,7 +299,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.VideoAudio,
Codec = "mp3,mp2",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
+18 -19
View File
@@ -164,7 +164,7 @@ namespace Emby.Dlna.Profiles
{
Type = DlnaProfileType.Photo,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -187,13 +187,13 @@ namespace Emby.Dlna.Profiles
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="h264",
AudioCodec="ac3,aac,mp3",
VideoCodec = "h264",
AudioCodec = "ac3,aac,mp3",
MimeType = "video/vnd.dlna.mpeg-tts",
OrgPn="AVC_TS_HD_24_AC3_T,AVC_TS_HD_50_AC3_T,AVC_TS_HD_60_AC3_T,AVC_TS_HD_EU_T",
OrgPn = "AVC_TS_HD_24_AC3_T,AVC_TS_HD_50_AC3_T,AVC_TS_HD_60_AC3_T,AVC_TS_HD_EU_T",
Type = DlnaProfileType.Video,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -213,13 +213,13 @@ namespace Emby.Dlna.Profiles
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="h264",
AudioCodec="ac3,aac,mp3",
VideoCodec = "h264",
AudioCodec = "ac3,aac,mp3",
MimeType = "video/mpeg",
OrgPn="AVC_TS_HD_24_AC3_ISO,AVC_TS_HD_50_AC3_ISO,AVC_TS_HD_60_AC3_ISO,AVC_TS_HD_EU_ISO",
OrgPn = "AVC_TS_HD_24_AC3_ISO,AVC_TS_HD_50_AC3_ISO,AVC_TS_HD_60_AC3_ISO,AVC_TS_HD_EU_ISO",
Type = DlnaProfileType.Video,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -233,28 +233,28 @@ namespace Emby.Dlna.Profiles
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="h264",
AudioCodec="ac3,aac,mp3",
VideoCodec = "h264",
AudioCodec = "ac3,aac,mp3",
MimeType = "video/vnd.dlna.mpeg-tts",
OrgPn="AVC_TS_HD_24_AC3,AVC_TS_HD_50_AC3,AVC_TS_HD_60_AC3,AVC_TS_HD_EU",
OrgPn = "AVC_TS_HD_24_AC3,AVC_TS_HD_50_AC3,AVC_TS_HD_60_AC3,AVC_TS_HD_EU",
Type = DlnaProfileType.Video
},
new ResponseProfile
{
Container = "ts,mpegts",
VideoCodec="mpeg2video",
VideoCodec = "mpeg2video",
MimeType = "video/vnd.dlna.mpeg-tts",
OrgPn="MPEG_TS_SD_EU,MPEG_TS_SD_NA,MPEG_TS_SD_KO",
OrgPn = "MPEG_TS_SD_EU,MPEG_TS_SD_NA,MPEG_TS_SD_KO",
Type = DlnaProfileType.Video
},
new ResponseProfile
{
Container = "mpeg",
VideoCodec="mpeg1video,mpeg2video",
VideoCodec = "mpeg1video,mpeg2video",
MimeType = "video/mpeg",
OrgPn="MPEG_PS_NTSC,MPEG_PS_PAL",
OrgPn = "MPEG_PS_NTSC,MPEG_PS_PAL",
Type = DlnaProfileType.Video
},
new ResponseProfile
@@ -265,14 +265,13 @@ namespace Emby.Dlna.Profiles
}
};
CodecProfiles = new[]
{
new CodecProfile
{
Type = CodecType.Video,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -300,7 +299,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.VideoAudio,
Codec = "mp3,mp2",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
+9 -9
View File
@@ -52,7 +52,7 @@ namespace Emby.Dlna.Profiles
Container = "ts,mpegts",
Type = DlnaProfileType.Video,
VideoCodec = "mpeg1video,mpeg2video,h264",
AudioCodec = "ac3,mp2,mp3,aac"
AudioCodec = "aac,ac3,mp2"
},
new DirectPlayProfile
{
@@ -92,7 +92,7 @@ namespace Emby.Dlna.Profiles
{
Container = "ts",
VideoCodec = "h264",
AudioCodec = "ac3,aac,mp3",
AudioCodec = "aac,ac3,mp2",
Type = DlnaProfileType.Video
},
new TranscodingProfile
@@ -108,7 +108,7 @@ namespace Emby.Dlna.Profiles
{
Type = DlnaProfileType.Photo,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -133,7 +133,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.Video,
Codec = "h264",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -176,7 +176,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.VideoAudio,
Codec = "ac3",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -201,7 +201,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.VideoAudio,
Codec = "wmapro",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -217,7 +217,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.VideoAudio,
Codec = "aac",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -235,7 +235,7 @@ namespace Emby.Dlna.Profiles
new ResponseProfile
{
Container = "mp4,mov",
AudioCodec="aac",
AudioCodec = "aac",
MimeType = "video/mp4",
Type = DlnaProfileType.Video
},
@@ -244,7 +244,7 @@ namespace Emby.Dlna.Profiles
{
Container = "avi",
MimeType = "video/divx",
OrgPn="AVI",
OrgPn = "AVI",
Type = DlnaProfileType.Video
},
+9 -9
View File
@@ -52,7 +52,7 @@ namespace Emby.Dlna.Profiles
Container = "ts,mpegts",
Type = DlnaProfileType.Video,
VideoCodec = "mpeg1video,mpeg2video,h264",
AudioCodec = "ac3,mp2,mp3,aac"
AudioCodec = "aac,ac3,mp2"
},
new DirectPlayProfile
{
@@ -94,7 +94,7 @@ namespace Emby.Dlna.Profiles
{
Container = "ts",
VideoCodec = "h264",
AudioCodec = "mp3",
AudioCodec = "aac,ac3,mp2",
Type = DlnaProfileType.Video
},
new TranscodingProfile
@@ -110,7 +110,7 @@ namespace Emby.Dlna.Profiles
{
Type = DlnaProfileType.Photo,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -135,7 +135,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.Video,
Codec = "h264",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -178,7 +178,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.VideoAudio,
Codec = "ac3",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -203,7 +203,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.VideoAudio,
Codec = "wmapro",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -219,7 +219,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.VideoAudio,
Codec = "aac",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -237,7 +237,7 @@ namespace Emby.Dlna.Profiles
new ResponseProfile
{
Container = "mp4,mov",
AudioCodec="aac",
AudioCodec = "aac",
MimeType = "video/mp4",
Type = DlnaProfileType.Video
},
@@ -246,7 +246,7 @@ namespace Emby.Dlna.Profiles
{
Container = "avi",
MimeType = "video/divx",
OrgPn="AVI",
OrgPn = "AVI",
Type = DlnaProfileType.Video
},
+4 -4
View File
@@ -20,7 +20,7 @@ namespace Emby.Dlna.Profiles
Headers = new[]
{
new HttpHeaderInfo {Name = "User-Agent", Value = "alphanetworks", Match = HeaderMatchType.Substring},
new HttpHeaderInfo { Name = "User-Agent", Value = "alphanetworks", Match = HeaderMatchType.Substring },
new HttpHeaderInfo
{
Name = "User-Agent",
@@ -168,7 +168,7 @@ namespace Emby.Dlna.Profiles
{
Type = DlnaProfileType.Photo,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -193,7 +193,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.Video,
Codec = "h264",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -221,7 +221,7 @@ namespace Emby.Dlna.Profiles
Type = CodecType.VideoAudio,
Codec = "aac",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
+7 -7
View File
@@ -119,7 +119,7 @@ namespace Emby.Dlna.Profiles
Type = DlnaProfileType.Video,
Container = "mp4,mov",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -138,7 +138,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.Video,
Codec = "mpeg4",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -187,7 +187,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.Video,
Codec = "h264",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -236,7 +236,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.Video,
Codec = "wmv2,wmv3,vc1",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -284,7 +284,7 @@ namespace Emby.Dlna.Profiles
new CodecProfile
{
Type = CodecType.Video,
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -307,7 +307,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.VideoAudio,
Codec = "ac3,wmav2,wmapro",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -323,7 +323,7 @@ namespace Emby.Dlna.Profiles
{
Type = CodecType.VideoAudio,
Codec = "aac",
Conditions = new []
Conditions = new[]
{
new ProfileCondition
{
@@ -38,7 +38,7 @@
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="avi" audioCodec="mp2,mp3" videoCodec="mpeg4" type="Video" />
<DirectPlayProfile container="ts,mpegts" audioCodec="ac3,mp2,mp3,aac" videoCodec="mpeg1video,mpeg2video,h264" type="Video" />
<DirectPlayProfile container="ts,mpegts" audioCodec="aac,ac3,mp2" videoCodec="mpeg1video,mpeg2video,h264" type="Video" />
<DirectPlayProfile container="mpeg" audioCodec="mp2" videoCodec="mpeg1video,mpeg2video" type="Video" />
<DirectPlayProfile container="mp4" audioCodec="aac,ac3" videoCodec="h264,mpeg4" type="Video" />
<DirectPlayProfile container="aac,mp3,wav" type="Audio" />
@@ -46,7 +46,7 @@
</DirectPlayProfiles>
<TranscodingProfiles>
<TranscodingProfile container="mp3" type="Audio" audioCodec="mp3" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" enableSubtitlesInManifest="false" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" />
<TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="ac3,aac,mp3" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" enableSubtitlesInManifest="false" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" />
<TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="aac,ac3,mp2" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" enableSubtitlesInManifest="false" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" />
<TranscodingProfile container="jpeg" type="Photo" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" enableSubtitlesInManifest="false" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" />
</TranscodingProfiles>
<ContainerProfiles>
@@ -38,7 +38,7 @@
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="avi" audioCodec="mp2,mp3" videoCodec="mpeg4" type="Video" />
<DirectPlayProfile container="ts,mpegts" audioCodec="ac3,mp2,mp3,aac" videoCodec="mpeg1video,mpeg2video,h264" type="Video" />
<DirectPlayProfile container="ts,mpegts" audioCodec="aac,ac3,mp2" videoCodec="mpeg1video,mpeg2video,h264" type="Video" />
<DirectPlayProfile container="mpeg" audioCodec="mp2" videoCodec="mpeg1video,mpeg2video" type="Video" />
<DirectPlayProfile container="mp4,mkv,m4v" audioCodec="aac,ac3" videoCodec="h264,mpeg4" type="Video" />
<DirectPlayProfile container="aac,mp3,wav" type="Audio" />
@@ -46,7 +46,7 @@
</DirectPlayProfiles>
<TranscodingProfiles>
<TranscodingProfile container="mp3" type="Audio" audioCodec="mp3" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Bytes" copyTimestamps="false" context="Streaming" enableSubtitlesInManifest="false" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" />
<TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="mp3" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" enableSubtitlesInManifest="false" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" />
<TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="aac,ac3,mp2" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" enableSubtitlesInManifest="false" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" />
<TranscodingProfile container="jpeg" type="Photo" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" enableSubtitlesInManifest="false" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" />
</TranscodingProfiles>
<ContainerProfiles>
+2
View File
@@ -1,5 +1,6 @@
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
@@ -13,6 +14,7 @@ using System.Resources;
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: NeutralResourcesLanguage("en")]
[assembly: InternalsVisibleTo("Jellyfin.Dlna.Tests")]
// Version information for an assembly consists of the following four values:
//
+71 -119
View File
@@ -4,6 +4,7 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Security;
using System.Text;
using Emby.Dlna.Common;
using MediaBrowser.Model.Dlna;
@@ -39,8 +40,6 @@ namespace Emby.Dlna.Server
_serverId = serverId;
}
private static bool EnableAbsoluteUrls => false;
public string GetXml()
{
var builder = new StringBuilder();
@@ -64,21 +63,16 @@ namespace Emby.Dlna.Server
foreach (var att in attributes)
{
builder.AppendFormat(" {0}=\"{1}\"", att.Name, att.Value);
builder.AppendFormat(CultureInfo.InvariantCulture, " {0}=\"{1}\"", att.Name, att.Value);
}
builder.Append(">");
builder.Append('>');
builder.Append("<specVersion>");
builder.Append("<major>1</major>");
builder.Append("<minor>0</minor>");
builder.Append("</specVersion>");
if (!EnableAbsoluteUrls)
{
builder.Append("<URLBase>" + Escape(_serverAddress) + "</URLBase>");
}
AppendDeviceInfo(builder);
builder.Append("</root>");
@@ -93,91 +87,14 @@ namespace Emby.Dlna.Server
AppendIconList(builder);
builder.Append("<presentationURL>" + Escape(_serverAddress) + "/web/index.html</presentationURL>");
builder.Append("<presentationURL>")
.Append(SecurityElement.Escape(_serverAddress))
.Append("/web/index.html</presentationURL>");
AppendServiceList(builder);
builder.Append("</device>");
}
private static readonly char[] s_escapeChars = new char[]
{
'<',
'>',
'"',
'\'',
'&'
};
private static readonly string[] s_escapeStringPairs = new[]
{
"<",
"&lt;",
">",
"&gt;",
"\"",
"&quot;",
"'",
"&apos;",
"&",
"&amp;"
};
private static string GetEscapeSequence(char c)
{
int num = s_escapeStringPairs.Length;
for (int i = 0; i < num; i += 2)
{
string text = s_escapeStringPairs[i];
string result = s_escapeStringPairs[i + 1];
if (text[0] == c)
{
return result;
}
}
return c.ToString(CultureInfo.InvariantCulture);
}
/// <summary>Replaces invalid XML characters in a string with their valid XML equivalent.</summary>
/// <returns>The input string with invalid characters replaced.</returns>
/// <param name="str">The string within which to escape invalid characters. </param>
public static string Escape(string str)
{
if (str == null)
{
return null;
}
StringBuilder stringBuilder = null;
int length = str.Length;
int num = 0;
while (true)
{
int num2 = str.IndexOfAny(s_escapeChars, num);
if (num2 == -1)
{
break;
}
if (stringBuilder == null)
{
stringBuilder = new StringBuilder();
}
stringBuilder.Append(str, num, num2 - num);
stringBuilder.Append(GetEscapeSequence(str[num2]));
num = num2 + 1;
}
if (stringBuilder == null)
{
return str;
}
stringBuilder.Append(str, num, length - num);
return stringBuilder.ToString();
}
private void AppendDeviceProperties(StringBuilder builder)
{
builder.Append("<dlna:X_DLNACAP/>");
@@ -187,32 +104,54 @@ namespace Emby.Dlna.Server
builder.Append("<deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType>");
builder.Append("<friendlyName>" + Escape(GetFriendlyName()) + "</friendlyName>");
builder.Append("<manufacturer>" + Escape(_profile.Manufacturer ?? string.Empty) + "</manufacturer>");
builder.Append("<manufacturerURL>" + Escape(_profile.ManufacturerUrl ?? string.Empty) + "</manufacturerURL>");
builder.Append("<friendlyName>")
.Append(SecurityElement.Escape(GetFriendlyName()))
.Append("</friendlyName>");
builder.Append("<manufacturer>")
.Append(SecurityElement.Escape(_profile.Manufacturer ?? string.Empty))
.Append("</manufacturer>");
builder.Append("<manufacturerURL>")
.Append(SecurityElement.Escape(_profile.ManufacturerUrl ?? string.Empty))
.Append("</manufacturerURL>");
builder.Append("<modelDescription>" + Escape(_profile.ModelDescription ?? string.Empty) + "</modelDescription>");
builder.Append("<modelName>" + Escape(_profile.ModelName ?? string.Empty) + "</modelName>");
builder.Append("<modelDescription>")
.Append(SecurityElement.Escape(_profile.ModelDescription ?? string.Empty))
.Append("</modelDescription>");
builder.Append("<modelName>")
.Append(SecurityElement.Escape(_profile.ModelName ?? string.Empty))
.Append("</modelName>");
builder.Append("<modelNumber>" + Escape(_profile.ModelNumber ?? string.Empty) + "</modelNumber>");
builder.Append("<modelURL>" + Escape(_profile.ModelUrl ?? string.Empty) + "</modelURL>");
builder.Append("<modelNumber>")
.Append(SecurityElement.Escape(_profile.ModelNumber ?? string.Empty))
.Append("</modelNumber>");
builder.Append("<modelURL>")
.Append(SecurityElement.Escape(_profile.ModelUrl ?? string.Empty))
.Append("</modelURL>");
if (string.IsNullOrEmpty(_profile.SerialNumber))
{
builder.Append("<serialNumber>" + Escape(_serverId) + "</serialNumber>");
builder.Append("<serialNumber>")
.Append(SecurityElement.Escape(_serverId))
.Append("</serialNumber>");
}
else
{
builder.Append("<serialNumber>" + Escape(_profile.SerialNumber) + "</serialNumber>");
builder.Append("<serialNumber>")
.Append(SecurityElement.Escape(_profile.SerialNumber))
.Append("</serialNumber>");
}
builder.Append("<UPC/>");
builder.Append("<UDN>uuid:" + Escape(_serverUdn) + "</UDN>");
builder.Append("<UDN>uuid:")
.Append(SecurityElement.Escape(_serverUdn))
.Append("</UDN>");
if (!string.IsNullOrEmpty(_profile.SonyAggregationFlags))
{
builder.Append("<av:aggregationFlags xmlns:av=\"urn:schemas-sony-com:av\">" + Escape(_profile.SonyAggregationFlags) + "</av:aggregationFlags>");
builder.Append("<av:aggregationFlags xmlns:av=\"urn:schemas-sony-com:av\">")
.Append(SecurityElement.Escape(_profile.SonyAggregationFlags))
.Append("</av:aggregationFlags>");
}
}
@@ -250,11 +189,21 @@ namespace Emby.Dlna.Server
{
builder.Append("<icon>");
builder.Append("<mimetype>" + Escape(icon.MimeType ?? string.Empty) + "</mimetype>");
builder.Append("<width>" + Escape(icon.Width.ToString(_usCulture)) + "</width>");
builder.Append("<height>" + Escape(icon.Height.ToString(_usCulture)) + "</height>");
builder.Append("<depth>" + Escape(icon.Depth ?? string.Empty) + "</depth>");
builder.Append("<url>" + BuildUrl(icon.Url) + "</url>");
builder.Append("<mimetype>")
.Append(SecurityElement.Escape(icon.MimeType ?? string.Empty))
.Append("</mimetype>");
builder.Append("<width>")
.Append(SecurityElement.Escape(icon.Width.ToString(_usCulture)))
.Append("</width>");
builder.Append("<height>")
.Append(SecurityElement.Escape(icon.Height.ToString(_usCulture)))
.Append("</height>");
builder.Append("<depth>")
.Append(SecurityElement.Escape(icon.Depth ?? string.Empty))
.Append("</depth>");
builder.Append("<url>")
.Append(BuildUrl(icon.Url))
.Append("</url>");
builder.Append("</icon>");
}
@@ -270,11 +219,21 @@ namespace Emby.Dlna.Server
{
builder.Append("<service>");
builder.Append("<serviceType>" + Escape(service.ServiceType ?? string.Empty) + "</serviceType>");
builder.Append("<serviceId>" + Escape(service.ServiceId ?? string.Empty) + "</serviceId>");
builder.Append("<SCPDURL>" + BuildUrl(service.ScpdUrl) + "</SCPDURL>");
builder.Append("<controlURL>" + BuildUrl(service.ControlUrl) + "</controlURL>");
builder.Append("<eventSubURL>" + BuildUrl(service.EventSubUrl) + "</eventSubURL>");
builder.Append("<serviceType>")
.Append(SecurityElement.Escape(service.ServiceType ?? string.Empty))
.Append("</serviceType>");
builder.Append("<serviceId>")
.Append(SecurityElement.Escape(service.ServiceId ?? string.Empty))
.Append("</serviceId>");
builder.Append("<SCPDURL>")
.Append(BuildUrl(service.ScpdUrl))
.Append("</SCPDURL>");
builder.Append("<controlURL>")
.Append(BuildUrl(service.ControlUrl))
.Append("</controlURL>");
builder.Append("<eventSubURL>")
.Append(BuildUrl(service.EventSubUrl))
.Append("</eventSubURL>");
builder.Append("</service>");
}
@@ -289,16 +248,9 @@ namespace Emby.Dlna.Server
return string.Empty;
}
url = url.TrimStart('/');
url = _serverAddress.TrimEnd('/') + "/dlna/" + _serverUdn + "/" + url.TrimStart('/');
url = "/dlna/" + _serverUdn + "/" + url;
if (EnableAbsoluteUrls)
{
url = _serverAddress.TrimEnd('/') + url;
}
return Escape(url);
return SecurityElement.Escape(url);
}
private IEnumerable<DeviceIcon> GetIcons()
+42 -35
View File
@@ -15,11 +15,7 @@ namespace Emby.Dlna.Service
{
public abstract class BaseControlHandler
{
private const string NS_SOAPENV = "http://schemas.xmlsoap.org/soap/envelope/";
protected IServerConfigurationManager Config { get; }
protected ILogger Logger { get; }
private const string NsSoapEnv = "http://schemas.xmlsoap.org/soap/envelope/";
protected BaseControlHandler(IServerConfigurationManager config, ILogger logger)
{
@@ -27,6 +23,10 @@ namespace Emby.Dlna.Service
Logger = logger;
}
protected IServerConfigurationManager Config { get; }
protected ILogger Logger { get; }
public async Task<ControlResponse> ProcessControlRequestAsync(ControlRequest request)
{
try
@@ -60,10 +60,8 @@ namespace Emby.Dlna.Service
Async = true
};
using (var reader = XmlReader.Create(streamReader, readerSettings))
{
requestInfo = await ParseRequestAsync(reader).ConfigureAwait(false);
}
using var reader = XmlReader.Create(streamReader, readerSettings);
requestInfo = await ParseRequestAsync(reader).ConfigureAwait(false);
}
Logger.LogDebug("Received control request {0}", requestInfo.LocalName);
@@ -80,10 +78,10 @@ namespace Emby.Dlna.Service
{
writer.WriteStartDocument(true);
writer.WriteStartElement("SOAP-ENV", "Envelope", NS_SOAPENV);
writer.WriteAttributeString(string.Empty, "encodingStyle", NS_SOAPENV, "http://schemas.xmlsoap.org/soap/encoding/");
writer.WriteStartElement("SOAP-ENV", "Envelope", NsSoapEnv);
writer.WriteAttributeString(string.Empty, "encodingStyle", NsSoapEnv, "http://schemas.xmlsoap.org/soap/encoding/");
writer.WriteStartElement("SOAP-ENV", "Body", NS_SOAPENV);
writer.WriteStartElement("SOAP-ENV", "Body", NsSoapEnv);
writer.WriteStartElement("u", requestInfo.LocalName + "Response", requestInfo.NamespaceURI);
WriteResult(requestInfo.LocalName, requestInfo.Headers, writer);
@@ -124,10 +122,8 @@ namespace Emby.Dlna.Service
{
if (!reader.IsEmptyElement)
{
using (var subReader = reader.ReadSubtree())
{
return await ParseBodyTagAsync(subReader).ConfigureAwait(false);
}
using var subReader = reader.ReadSubtree();
return await ParseBodyTagAsync(subReader).ConfigureAwait(false);
}
else
{
@@ -150,12 +146,12 @@ namespace Emby.Dlna.Service
}
}
return new ControlRequestInfo();
throw new EndOfStreamException("Stream ended but no body tag found.");
}
private async Task<ControlRequestInfo> ParseBodyTagAsync(XmlReader reader)
{
var result = new ControlRequestInfo();
string namespaceURI = null, localName = null;
await reader.MoveToContentAsync().ConfigureAwait(false);
await reader.ReadAsync().ConfigureAwait(false);
@@ -165,16 +161,15 @@ namespace Emby.Dlna.Service
{
if (reader.NodeType == XmlNodeType.Element)
{
result.LocalName = reader.LocalName;
result.NamespaceURI = reader.NamespaceURI;
localName = reader.LocalName;
namespaceURI = reader.NamespaceURI;
if (!reader.IsEmptyElement)
{
using (var subReader = reader.ReadSubtree())
{
await ParseFirstBodyChildAsync(subReader, result.Headers).ConfigureAwait(false);
return result;
}
var result = new ControlRequestInfo(localName, namespaceURI);
using var subReader = reader.ReadSubtree();
await ParseFirstBodyChildAsync(subReader, result.Headers).ConfigureAwait(false);
return result;
}
else
{
@@ -187,7 +182,12 @@ namespace Emby.Dlna.Service
}
}
return result;
if (localName != null && namespaceURI != null)
{
return new ControlRequestInfo(localName, namespaceURI);
}
throw new EndOfStreamException("Stream ended but no control found.");
}
private async Task ParseFirstBodyChildAsync(XmlReader reader, IDictionary<string, string> headers)
@@ -210,15 +210,6 @@ namespace Emby.Dlna.Service
}
}
private class ControlRequestInfo
{
public string LocalName { get; set; }
public string NamespaceURI { get; set; }
public Dictionary<string, string> Headers { get; } = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
}
protected abstract void WriteResult(string methodName, IDictionary<string, string> methodParams, XmlWriter xmlWriter);
private void LogRequest(ControlRequest request)
@@ -240,5 +231,21 @@ namespace Emby.Dlna.Service
Logger.LogDebug("Control response. Headers: {@Headers}\n{Xml}", response.Headers, response.Xml);
}
private class ControlRequestInfo
{
public ControlRequestInfo(string localName, string namespaceUri)
{
LocalName = localName;
NamespaceURI = namespaceUri;
Headers = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
}
public string LocalName { get; set; }
public string NamespaceURI { get; set; }
public Dictionary<string, string> Headers { get; }
}
}
}

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