Site Tools


Hotfix release available: 2024-02-06a "Kaos". upgrade now! [55.1] (what's this?)
New release available: 2024-02-06 "Kaos". upgrade now! [55] (what's this?)
onny:jellyfin

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
onny:jellyfin [2019/04/18 18:41] – [public share audio] 2a01:4f8:191:327:d4a0:1eff:fee2:65e8onny:jellyfin [2021/10/31 10:42] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +===== Further api findings =====
 +Information about currently logged in user
 +<code>
 +/Users/Public?format=json
 +</code>
 +===== Exclude playlists Jellyfin server =====
 +<code>
 +./Emby.Naming/Common/NamingOptions.cs:                ".flac",
 +./MediaBrowser.Model/Dlna/MediaFormatProfile.cs:        FLAC,
 +./MediaBrowser.Model/Dlna/MediaFormatProfileResolver.cs:            if (StringHelper.EqualsIgnoreCase(container, "flac"))
 +./MediaBrowser.Model/Dlna/MediaFormatProfileResolver.cs:                return MediaFormatProfile.FLAC;
 +./MediaBrowser.Model/Net/MimeTypes.cs:            if (StringHelper.EqualsIgnoreCase(ext, ".flac"))
 +./MediaBrowser.Model/Net/MimeTypes.cs:                return "audio/flac";
  
 +</code>
 +<file - MediaBrowser.Controller/Playlists/Playlist.cs>
 +[...]
 +        public static string[] SupportedExtensions =
 +            {
 +                ".sos"
 +            };
 +[...]
 +</file>
 +
 +===== Convert Plex playlists =====
 +<code>
 +https://turbotux.de/Users/{user_id}/Items?api_key={api_key}&IncludeItemTypes=Playlist&format=json
 +https://turbotux.de/Users/eb8c2ec5352843d3a16ca11c26d3551c/Items?api_key={api_key}&IncludeItemTypes=Playlist&format=json
 +https://turbotux.de/Users/eb8c2ec5352843d3a16ca11c26d3551c/Items?api_key=a5dc4ea2f58d490db39c9e0ad204aa83&IncludeItemTypes=Playlist&format=json
 +https://turbotux.de/Users/eb8c2ec5352843d3a16ca11c26d3551c/Items?api_key=a5dc4ea2f58d490db39c9e0ad204aa83&IncludeItemTypes=Playlist&format=json
 +
 +https://turbotux.de/Items?format=json&Recursive=true&IncludeItemTypes=Playlist&api_key=MYAPIKEY
 +</code>
 +this one is good:
 +<code>
 +https://turbotux.de/Users/eb8c2ec5352843d3a16ca11c26d3551c/Items?api_key=a5dc4ea2f58d490db39c9e0ad204aa83&IncludeItemTypes=Playlist&format=json&Recursive=true
 +</code>
 +creating playlist
 +<code>
 +https://turbotux.de/Playlists?UserId=eb8c2ec5352843d3a16ca11c26d3551c&Name=lolorollo&api_key=a5dc4ea2f58d490db39c9e0ad204aa83
 +</code>
 +this works
 +<code bash>
 +curl --data "UserId=eb8c2ec5352843d3a16ca11c26d3551c&Name=lolorollo&api_key=a5dc4ea2f58d490db39c9e0ad204aa83" "https://turbotux.de/Playlists?UserId=eb8c2ec5352843d3a16ca11c26d3551c&Name=lolorollo&api_key=a5dc4ea2f58d490db39c9e0ad204aa83"
 +</code>
 +searching track
 +<code>
 +https://turbotux.de/Search/Hints?UserId=eb8c2ec5352843d3a16ca11c26d3551c&Limit=50&IncludeItemTypes=Music&SearchTerm=Catene&format=json
 +</code>
 +its only hint
 +<code>
 +https://turbotux.de/Search/Hints?UserId=eb8c2ec5352843d3a16ca11c26d3551c&SearchTerm=danke%20gut&format=json&api_key=a5dc4ea2f58d490db39c9e0ad204aa83
 +</code>
 +extra fields
 +<code>
 +https://turbotux.de/Items?UserId=eb8c2ec5352843d3a16ca11c26d3551c&format=json&api_key=a5dc4ea2f58d490db39c9e0ad204aa83&Recursive=true&IncludeItemTypes=Audio%2CMusicAlbum%2CMusicArtist&Fields=Path&SearchTerm=Baobab%20Sira
 +</code>
 +
 +===== Import playlists Jellyfin =====
 +  * Remove previous library: rm /var/lib/jellyfin/data/library.*
 +  * Add new library, disable real time monitoring and metadata fetching
 +  * Creating API key
 +    * Go to server settings (icon upper right corner)
 +    * Expert -> Advanced, left menu
 +    * Menu upper middle part: Security
 +    * Beside title api keys, click on the plus symbol
 +    * App name: playlist importer
 +    * Copy api key hash, something like ''a5dc4ea2f58d490db39c9e0ad204aa83''
 +  * Get userid hash
 +    * Click on the profile icon, upper right corner
 +    * Click on profile
 +    * Copy userid hash from the url which looks like: ''myserver.com/web/index.html#!/myprofile.html?userId=eb8c2ec5352843d3a16ca11c26d3551c''
 +
 +===== audio normalization =====
 +<code>
 +return _config.GetConfiguration<EncodingOptions>("encoding");
 +</code>
 +<code>
 +onny@onnuex /tmp> r128gain test.flac test_quieter.flac 
 +Analyzing loudness of file 'test.flac'...
 +Analyzing loudness of file 'test_quieter.flac'...
 +File 'test.flac': loudness = -13.2 LUFS, sample peak = -0.5 dBFS
 +File 'test_quieter.flac': loudness = -20.6 LUFS, sample peak = -7.8 dBFS
 +Tagging file 'test.flac'
 +Tagging file 'test_quieter.flac'
 +</code>
 +<code>
 +Apr 09 18:02:43 picloud dotnet[10436]: [18:02:43] [INF] /usr/bin/ffmpeg -i file:"/mnt/audio/music/Mac Demarco/All Of Our Yesterdays (Single)/01 All Of Our Yesterdays.flac" -map_metadata -1 -map_chapters -1 -threads 0   -acodec aac -strict experimental -ac 2 -vn -f segment -max_delay 5000000 -avoid_negative_ts disabled -start_at_zero -segment_time 3  -individual_header_trailer 0 -segment_format mpegts -segment_list_type m3u8 -segment_start_number 0 -segment_list "/var/lib/jellyfin/transcoding-temp/6d88998728f39c3666d33c311a1bbb33.m3u8" -y "/var/lib/jellyfin/transcoding-temp/6d88998728f39c3666d33c311a1bbb33%d.ts"
 +</code>
 +<file - MediaBrowser.Api/Playback/Hls/BaseHlsService.cs>
 +return string.Format("{0} {1} -map_metadata -1 -map_chapters -1 -threads {2} {3} {    4} {5} -f segment -max_delay 5000000 -avoid_negative_ts disabled -start_at_zero -segment_time {6}     {10} -individual_header_trailer 0 -segment_format {11} -segment_list_entry_prefix {12} -segment_li    st_type m3u8 -segment_start_number {7} -segment_list \"{8}\" -y \"{9}\"",
 +[...]
 +var args = string.Format("{0} {1} {2} -map_metadata -1 -map_chapters -1 -threads {3} {    4} {5} -max_delay 5000000 -avoid_negative_ts disabled -start_at_zero {6} -hls_time {7} -individual    _header_trailer 0 -start_number {8} -hls_list_size {9}{10} -y \"{11}\"",
 +</file>
 +===== public share audio =====
 +  * https://turbotux.de/web/index.html#!/itemdetails.html?id=c575c67bdbfbdfaa394a481757296f97&serverId=d86b3ad0a9ea49beb834c0caca75c13a
 +  * https://github.com/jellyfin/jellyfin-web/blob/master/src/itemdetails.html
 +  * http://localhost:8096/web/index.html#!/itemdetails.html?id=9cf4001dc9b153f8637d660b66628ea4&serverId=913db02421064ec4a463b9d37df63597
 +jellyfin fetching json when logged in:
 +  * http://localhost:8096/emby/Users/df721abec56e46738da5e99a8ea90865/Items/9cf4001dc9b153f8637d660b66628ea4
 +it will require an access token! same page without login
 +  * http://localhost:8096/emby/Items/9cf4001dc9b153f8637d660b66628ea4
 +lets achieve something like
 +  * http://localhost:8096/emby/Users/Guest/Items/9cf4001dc9b153f8637d660b66628ea4
 +<file javascript jellyfin-web/src/components/appRouter.js>
 +        // if (apiClient && apiClient.isLoggedIn()) {
 +        // 
 +        //     console.log('appRouter - user is authenticated');
 +        // 
 +        //     if (route.isDefaultRoute) {
 +        //         console.log('appRouter - loading skin home page');
 +        //         loadUserSkinWithOptions(ctx);
 +        //         return;
 +        //     } else if (route.roles) {
 +        // 
 +        //         validateRoles(apiClient, route.roles).then(function () {
 +        // 
 +        //             callback();
 +        // 
 +        //         }, beginConnectionWizard);
 +        //         return;
 +        //     }
 +        // }
 +</file>
 +<file javascript jellyfin-web/src/bower_components/apiclient/apiclientcore.js>
 +        var url = userId ? this.getUrl("Users/" + userId + "/Items/" + itemId) : this.getUrl("Users/Guest/Items/" + itemId);
 +</file>
 +now it fails on backend userid validation
 +<code>
 +Input string was not in a correct format.
 +</code>
 +Internal server error http://localhost:8096/emby/Users/Guest/Items/9cf4001dc9b153f8637d660b66628ea4
 +  * System.FormatException: Input string was not in a correct format.
 +  * /jellyfin-10.3.1/Emby.Server.Implementations/Services/StringMapTypeDeserializer.cs
 +  * /jellyfin-10.3.1/Emby.Server.Implementations/Services/ServicePath.cs