Added stuff
- Attempted to fix the status for when screensharing - Added the application icon
This commit is contained in:
parent
9330106c24
commit
3a164c5599
38 changed files with 260 additions and 222 deletions
BIN
.vs/JellyfinDiscordRPC/DesignTimeBuild/.dtbcache.v2
Normal file
BIN
.vs/JellyfinDiscordRPC/DesignTimeBuild/.dtbcache.v2
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
.vs/JellyfinDiscordRPC/v17/.futdcache.v2
Normal file
BIN
.vs/JellyfinDiscordRPC/v17/.futdcache.v2
Normal file
Binary file not shown.
53
.vs/JellyfinDiscordRPC/v17/DocumentLayout.backup.json
Normal file
53
.vs/JellyfinDiscordRPC/v17/DocumentLayout.backup.json
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
{
|
||||||
|
"Version": 1,
|
||||||
|
"WorkspaceRootPath": "C:\\Users\\joshua\\Documents\\GitHub\\jellyfin-discord-rpc\\",
|
||||||
|
"Documents": [
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}|JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj|c:\\users\\joshua\\documents\\github\\jellyfin-discord-rpc\\jellyfindiscordrpc\\jellyfindiscordrpc.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|",
|
||||||
|
"RelativeMoniker": "D:0:0:{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}|JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj|solutionrelative:jellyfindiscordrpc\\jellyfindiscordrpc.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}|JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj|c:\\users\\joshua\\documents\\github\\jellyfin-discord-rpc\\jellyfindiscordrpc\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}|JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj|solutionrelative:jellyfindiscordrpc\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"DocumentGroupContainers": [
|
||||||
|
{
|
||||||
|
"Orientation": 0,
|
||||||
|
"VerticalTabListWidth": 256,
|
||||||
|
"DocumentGroups": [
|
||||||
|
{
|
||||||
|
"DockedWidth": 200,
|
||||||
|
"SelectedChildIndex": 0,
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 0,
|
||||||
|
"Title": "JellyfinDiscordRPC",
|
||||||
|
"DocumentMoniker": "C:\\Users\\joshua\\Documents\\GitHub\\jellyfin-discord-rpc\\JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj",
|
||||||
|
"RelativeDocumentMoniker": "JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj",
|
||||||
|
"ToolTip": "C:\\Users\\joshua\\Documents\\GitHub\\jellyfin-discord-rpc\\JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj",
|
||||||
|
"RelativeToolTip": "JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
|
||||||
|
"WhenOpened": "2024-11-30T08:49:04.842Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 1,
|
||||||
|
"Title": "Program.cs",
|
||||||
|
"DocumentMoniker": "C:\\Users\\joshua\\Documents\\GitHub\\jellyfin-discord-rpc\\JellyfinDiscordRPC\\Program.cs",
|
||||||
|
"RelativeDocumentMoniker": "JellyfinDiscordRPC\\Program.cs",
|
||||||
|
"ToolTip": "C:\\Users\\joshua\\Documents\\GitHub\\jellyfin-discord-rpc\\JellyfinDiscordRPC\\Program.cs",
|
||||||
|
"RelativeToolTip": "JellyfinDiscordRPC\\Program.cs",
|
||||||
|
"ViewState": "AgIAANsAAAAAAAAAAAAAwBcBAAAmAAAAAAAAAA==",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
|
"WhenOpened": "2024-11-30T05:30:39.706Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
37
.vs/JellyfinDiscordRPC/v17/DocumentLayout.json
Normal file
37
.vs/JellyfinDiscordRPC/v17/DocumentLayout.json
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{
|
||||||
|
"Version": 1,
|
||||||
|
"WorkspaceRootPath": "C:\\Users\\joshua\\Documents\\GitHub\\jellyfin-discord-rpc\\",
|
||||||
|
"Documents": [
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}|JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj|c:\\users\\joshua\\documents\\github\\jellyfin-discord-rpc\\jellyfindiscordrpc\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}|JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj|solutionrelative:jellyfindiscordrpc\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"DocumentGroupContainers": [
|
||||||
|
{
|
||||||
|
"Orientation": 0,
|
||||||
|
"VerticalTabListWidth": 256,
|
||||||
|
"DocumentGroups": [
|
||||||
|
{
|
||||||
|
"DockedWidth": 200,
|
||||||
|
"SelectedChildIndex": 0,
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 0,
|
||||||
|
"Title": "Program.cs",
|
||||||
|
"DocumentMoniker": "C:\\Users\\joshua\\Documents\\GitHub\\jellyfin-discord-rpc\\JellyfinDiscordRPC\\Program.cs",
|
||||||
|
"RelativeDocumentMoniker": "JellyfinDiscordRPC\\Program.cs",
|
||||||
|
"ToolTip": "C:\\Users\\joshua\\Documents\\GitHub\\jellyfin-discord-rpc\\JellyfinDiscordRPC\\Program.cs",
|
||||||
|
"RelativeToolTip": "JellyfinDiscordRPC\\Program.cs",
|
||||||
|
"ViewState": "AgIAAA4BAAAAAAAAAAAswBcBAAAmAAAAAAAAAA==",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
|
"WhenOpened": "2024-11-30T05:30:39.706Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
BIN
.vs/ProjectEvaluation/jellyfindiscordrpc.metadata.v9.bin
Normal file
BIN
.vs/ProjectEvaluation/jellyfindiscordrpc.metadata.v9.bin
Normal file
Binary file not shown.
BIN
.vs/ProjectEvaluation/jellyfindiscordrpc.projects.v9.bin
Normal file
BIN
.vs/ProjectEvaluation/jellyfindiscordrpc.projects.v9.bin
Normal file
Binary file not shown.
BIN
.vs/ProjectEvaluation/jellyfindiscordrpc.strings.v9.bin
Normal file
BIN
.vs/ProjectEvaluation/jellyfindiscordrpc.strings.v9.bin
Normal file
Binary file not shown.
|
@ -1,20 +1,32 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio Version 17
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 17.12.35514.174 d17.12
|
VisualStudioVersion = 17.12.35514.174
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JellyfinDiscordRPC", "JellyfinDiscordRPC\JellyfinDiscordRPC.csproj", "{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JellyfinDiscordRPC", "JellyfinDiscordRPC\JellyfinDiscordRPC.csproj", "{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
Release|Any CPU = Release|Any CPU
|
Release|Any CPU = Release|Any CPU
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}.Debug|x86.Build.0 = Debug|x86
|
||||||
{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}.Release|Any CPU.Build.0 = Release|Any CPU
|
{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}.Release|x64.Build.0 = Release|x64
|
||||||
|
{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}.Release|x86.ActiveCfg = Release|x64
|
||||||
|
{06FF6B5D-B070-4DB7-9A87-9B6E280A794D}.Release|x86.Build.0 = Release|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
|
@ -5,10 +5,19 @@
|
||||||
<TargetFramework>net9.0</TargetFramework>
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
|
<Platforms>AnyCPU;x64;x86</Platforms>
|
||||||
|
<PackageIcon>jellyfin.png</PackageIcon>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="DiscordRichPresence" Version="1.2.1.24" />
|
<PackageReference Include="DiscordRichPresence" Version="1.2.1.24" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="assets\jellyfin.png">
|
||||||
|
<Pack>True</Pack>
|
||||||
|
<PackagePath>\</PackagePath>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -11,6 +11,7 @@ class Program
|
||||||
private const string ConfigFilePath = "config.json";
|
private const string ConfigFilePath = "config.json";
|
||||||
private static DiscordRpcClient _discordClient;
|
private static DiscordRpcClient _discordClient;
|
||||||
private static Config _config;
|
private static Config _config;
|
||||||
|
private static bool isScreenSharing = false; // Track screen sharing status
|
||||||
|
|
||||||
// Hard-code the Discord Client ID here
|
// Hard-code the Discord Client ID here
|
||||||
private const string DiscordClientId = "1312264302601834578"; // Replace with your actual Discord client ID
|
private const string DiscordClientId = "1312264302601834578"; // Replace with your actual Discord client ID
|
||||||
|
@ -29,6 +30,62 @@ class Program
|
||||||
_discordClient.Initialize();
|
_discordClient.Initialize();
|
||||||
|
|
||||||
// Poll Jellyfin API for currently playing media
|
// Poll Jellyfin API for currently playing media
|
||||||
|
var updateTask = UpdateRichPresence(); // Start the rich presence update task
|
||||||
|
|
||||||
|
// Command loop for toggling screen sharing
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
var command = Console.ReadLine()?.ToLower();
|
||||||
|
if (command == "toggle")
|
||||||
|
{
|
||||||
|
ToggleScreenSharing();
|
||||||
|
}
|
||||||
|
else if (command == "exit")
|
||||||
|
{
|
||||||
|
break; // Exit the loop and end the program
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine("Invalid command. Type 'toggle' to toggle screen sharing or 'exit' to quit.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await updateTask; // Wait for the rich presence update task to finish
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ToggleScreenSharing()
|
||||||
|
{
|
||||||
|
isScreenSharing = !isScreenSharing; // Toggle the screen sharing state
|
||||||
|
Console.WriteLine(isScreenSharing ? "Screen sharing enabled." : "Screen sharing disabled.");
|
||||||
|
UpdateDiscordPresence(); // Manually update Discord presence when toggling screen sharing
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void UpdateDiscordPresence()
|
||||||
|
{
|
||||||
|
// Log the current status of screen sharing
|
||||||
|
Console.WriteLine($"Updating Discord Presence. Screen Sharing: {isScreenSharing}");
|
||||||
|
|
||||||
|
// Ensure we immediately update the Discord presence when toggling screen sharing
|
||||||
|
_discordClient.SetPresence(new RichPresence
|
||||||
|
{
|
||||||
|
Details = isScreenSharing ? "Sharing screen" : "Watching media",
|
||||||
|
State = isScreenSharing ? "Screen sharing is active" : "Not sharing screen",
|
||||||
|
Timestamps = new Timestamps
|
||||||
|
{
|
||||||
|
Start = DateTime.UtcNow
|
||||||
|
},
|
||||||
|
Assets = new Assets
|
||||||
|
{
|
||||||
|
LargeImageKey = isScreenSharing ? "screen_sharing" : "media_playing",
|
||||||
|
LargeImageText = isScreenSharing ? "Screen sharing on Discord" : "Watching media on Jellyfin"
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Console.WriteLine("Presence updated successfully.");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static async Task UpdateRichPresence()
|
||||||
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -36,48 +93,53 @@ class Program
|
||||||
var playingInfo = await GetCurrentlyPlaying().ConfigureAwait(false);
|
var playingInfo = await GetCurrentlyPlaying().ConfigureAwait(false);
|
||||||
if (playingInfo != null)
|
if (playingInfo != null)
|
||||||
{
|
{
|
||||||
// Get the raw JToken from nowPlaying (instead of passing PlayingInfo)
|
|
||||||
JToken nowPlaying = playingInfo.NowPlayingItem;
|
JToken nowPlaying = playingInfo.NowPlayingItem;
|
||||||
|
|
||||||
// Check if album art exists and pre-fetch it
|
|
||||||
string largeImageKey = playingInfo.IsMusic
|
string largeImageKey = playingInfo.IsMusic
|
||||||
? await GetAlbumCover(nowPlaying).ConfigureAwait(false) // Pass the JToken nowPlaying here
|
? await GetAlbumCover(nowPlaying).ConfigureAwait(false)
|
||||||
: await GetJellyfinLogo().ConfigureAwait(false);
|
: await GetJellyfinLogo().ConfigureAwait(false);
|
||||||
string largeImageText = playingInfo.IsMusic
|
string largeImageText = playingInfo.IsMusic
|
||||||
? nowPlaying["Album"]?.ToString() ?? "Unknown Album" // Extract album name or fallback to "Unknown Album"
|
? nowPlaying["Album"]?.ToString() ?? "Unknown Album"
|
||||||
: "Jellyfin Media Player";
|
: "Jellyfin Media Player";
|
||||||
// Update Discord Rich Presence for music or video
|
|
||||||
|
string details = playingInfo.IsMusic
|
||||||
|
? $"{playingInfo.Title}" // Show song name
|
||||||
|
: $"Watching: {playingInfo.Title}"; // Show video title
|
||||||
|
|
||||||
|
string state = isScreenSharing ? "Sharing screen" : playingInfo.IsMusic
|
||||||
|
? $"{playingInfo.Artist}" // Show artist name
|
||||||
|
: $"Season {playingInfo.Season}, Episode {playingInfo.Episode}";
|
||||||
|
|
||||||
|
Console.WriteLine($"Updating presence with details: {details}, state: {state}");
|
||||||
|
|
||||||
_discordClient.SetPresence(new RichPresence
|
_discordClient.SetPresence(new RichPresence
|
||||||
{
|
{
|
||||||
Details = playingInfo.IsMusic
|
Details = details,
|
||||||
? $"{playingInfo.Title}" // Show song name
|
State = state, // Dynamic state based on screen sharing or media
|
||||||
: $"Watching: {playingInfo.Title}", // Show video title
|
|
||||||
State = playingInfo.IsMusic
|
|
||||||
? $"{playingInfo.Artist}" // Show artist only (no album name)
|
|
||||||
: $"Season {playingInfo.Season}, Episode {playingInfo.Episode}",
|
|
||||||
Timestamps = new Timestamps
|
Timestamps = new Timestamps
|
||||||
{
|
{
|
||||||
Start = DateTime.UtcNow - playingInfo.Progress, // Start time based on current progress
|
Start = DateTime.UtcNow - playingInfo.Progress,
|
||||||
End = DateTime.UtcNow + (playingInfo.Duration - playingInfo.Progress) // End time based on total duration
|
End = DateTime.UtcNow + (playingInfo.Duration - playingInfo.Progress)
|
||||||
},
|
},
|
||||||
Assets = new Assets
|
Assets = new Assets
|
||||||
{
|
{
|
||||||
LargeImageKey = largeImageKey, // Dynamically set image based on media type
|
LargeImageKey = largeImageKey,
|
||||||
LargeImageText = largeImageText // Use album name or fallback text
|
LargeImageText = largeImageText
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_discordClient.ClearPresence();
|
_discordClient.ClearPresence();
|
||||||
|
Console.WriteLine("No media playing, clearing presence.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"Error: {ex.Message}");
|
Console.WriteLine($"Error fetching Jellyfin data: {ex.Message}");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wait for a few seconds before polling again
|
// Wait before polling again
|
||||||
await Task.Delay(5000).ConfigureAwait(false);
|
await Task.Delay(5000).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -93,16 +155,13 @@ class Program
|
||||||
var jsonResponse = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
|
var jsonResponse = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
|
||||||
var json = JObject.Parse(jsonResponse);
|
var json = JObject.Parse(jsonResponse);
|
||||||
|
|
||||||
// Attempt to get the logo URL
|
|
||||||
var logoUrl = json["LogoUrl"]?.ToString();
|
var logoUrl = json["LogoUrl"]?.ToString();
|
||||||
|
|
||||||
// Fallback to a default logo if no logo URL is found
|
|
||||||
return logoUrl ?? "jellyfin_logo";
|
return logoUrl ?? "jellyfin_logo";
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"Error fetching Jellyfin logo: {ex.Message}");
|
Console.WriteLine($"Error fetching Jellyfin logo: {ex.Message}");
|
||||||
return "jellyfin_logo"; // Default fallback in case of error
|
return "jellyfin_logo"; // Default fallback
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,39 +169,21 @@ class Program
|
||||||
{
|
{
|
||||||
if (File.Exists(ConfigFilePath))
|
if (File.Exists(ConfigFilePath))
|
||||||
{
|
{
|
||||||
// Load configuration from file
|
|
||||||
var configJson = File.ReadAllText(ConfigFilePath);
|
var configJson = File.ReadAllText(ConfigFilePath);
|
||||||
_config = JsonSerializer.Deserialize<Config>(configJson);
|
_config = JsonSerializer.Deserialize<Config>(configJson);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Prompt user for configuration on first startup (without Discord Client ID)
|
|
||||||
_config = new Config();
|
_config = new Config();
|
||||||
|
Console.Write("Enter Jellyfin Server URL: ");
|
||||||
do
|
|
||||||
{
|
|
||||||
Console.Write("Enter Jellyfin Server URL (e.g., http://your-jellyfin-server:8096): ");
|
|
||||||
_config.JellyfinBaseUrl = Console.ReadLine();
|
_config.JellyfinBaseUrl = Console.ReadLine();
|
||||||
} while (string.IsNullOrWhiteSpace(_config.JellyfinBaseUrl));
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
Console.Write("Enter Jellyfin API Key: ");
|
Console.Write("Enter Jellyfin API Key: ");
|
||||||
_config.JellyfinApiKey = Console.ReadLine();
|
_config.JellyfinApiKey = Console.ReadLine();
|
||||||
} while (string.IsNullOrWhiteSpace(_config.JellyfinApiKey));
|
|
||||||
|
|
||||||
Console.WriteLine("Go to the following URL and find your Jellyfin User ID:");
|
|
||||||
Console.WriteLine(" http://<your-jellyfin-server>:PORTNUMBER/Users?api_key=<your-api-key>");
|
|
||||||
do
|
|
||||||
{
|
|
||||||
Console.Write("Enter Jellyfin User ID: ");
|
Console.Write("Enter Jellyfin User ID: ");
|
||||||
_config.JellyfinUserId = Console.ReadLine();
|
_config.JellyfinUserId = Console.ReadLine();
|
||||||
} while (string.IsNullOrWhiteSpace(_config.JellyfinUserId));
|
|
||||||
|
|
||||||
// Save configuration to file (without Discord Client ID)
|
|
||||||
var configJson = JsonSerializer.Serialize(_config, new JsonSerializerOptions { WriteIndented = true });
|
var configJson = JsonSerializer.Serialize(_config, new JsonSerializerOptions { WriteIndented = true });
|
||||||
File.WriteAllText(ConfigFilePath, configJson);
|
File.WriteAllText(ConfigFilePath, configJson);
|
||||||
|
|
||||||
Console.WriteLine("Configuration saved to config.json.");
|
Console.WriteLine("Configuration saved to config.json.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -160,35 +201,29 @@ class Program
|
||||||
|
|
||||||
foreach (var session in sessions)
|
foreach (var session in sessions)
|
||||||
{
|
{
|
||||||
if (session["UserId"]?.ToString() == _config.JellyfinUserId &&
|
if (session["UserId"]?.ToString() == _config.JellyfinUserId && session["NowPlayingItem"] != null)
|
||||||
session["NowPlayingItem"] != null)
|
|
||||||
{
|
{
|
||||||
var nowPlaying = session["NowPlayingItem"]; // This is the raw JToken we need
|
var nowPlaying = session["NowPlayingItem"];
|
||||||
|
|
||||||
// Extract media type
|
|
||||||
var mediaType = nowPlaying["Type"]?.ToString();
|
var mediaType = nowPlaying["Type"]?.ToString();
|
||||||
bool isMusic = mediaType?.ToLower() == "audio";
|
bool isMusic = mediaType?.ToLower() == "audio";
|
||||||
|
|
||||||
string albumCover = ""; // Default value for album cover
|
string albumCover = "";
|
||||||
string artist = "Unknown Artist"; // Default value for artist
|
string artist = "Unknown Artist";
|
||||||
|
|
||||||
// If it's music, extract the album art and artist name
|
|
||||||
if (isMusic)
|
if (isMusic)
|
||||||
{
|
{
|
||||||
albumCover = await GetAlbumCover(nowPlaying).ConfigureAwait(false); // Pass JToken (not PlayingInfo)
|
albumCover = await GetAlbumCover(nowPlaying).ConfigureAwait(false);
|
||||||
var artists = nowPlaying["Artists"]?.ToObject<JArray>();
|
var artists = nowPlaying["Artists"]?.ToObject<JArray>();
|
||||||
if (artists != null && artists.Count > 0)
|
if (artists != null && artists.Count > 0)
|
||||||
{
|
{
|
||||||
artist = artists[0].ToString(); // Get the first artist from the array
|
artist = artists[0].ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// If it's video, set artist to Unknown Artist
|
|
||||||
artist = "Unknown Artist";
|
artist = "Unknown Artist";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return the extracted data wrapped in the PlayingInfo object
|
|
||||||
return new PlayingInfo
|
return new PlayingInfo
|
||||||
{
|
{
|
||||||
Title = nowPlaying["Name"]?.ToString(),
|
Title = nowPlaying["Name"]?.ToString(),
|
||||||
|
@ -199,7 +234,7 @@ class Program
|
||||||
Progress = TimeSpan.FromTicks((long)session["PlayState"]["PositionTicks"]),
|
Progress = TimeSpan.FromTicks((long)session["PlayState"]["PositionTicks"]),
|
||||||
Duration = TimeSpan.FromTicks((long)nowPlaying["RunTimeTicks"]),
|
Duration = TimeSpan.FromTicks((long)nowPlaying["RunTimeTicks"]),
|
||||||
IsMusic = isMusic,
|
IsMusic = isMusic,
|
||||||
NowPlayingItem = nowPlaying // Add the raw NowPlayingItem JToken here
|
NowPlayingItem = nowPlaying
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -214,44 +249,23 @@ class Program
|
||||||
|
|
||||||
private static async Task<string> GetAlbumCover(JToken nowPlaying)
|
private static async Task<string> GetAlbumCover(JToken nowPlaying)
|
||||||
{
|
{
|
||||||
// Try to get the album cover from the "MediaStreams" (audio specific)
|
|
||||||
var mediaStreams = nowPlaying["MediaStreams"]?.ToObject<JArray>();
|
var mediaStreams = nowPlaying["MediaStreams"]?.ToObject<JArray>();
|
||||||
if (mediaStreams != null)
|
if (mediaStreams != null)
|
||||||
{
|
{
|
||||||
// Look for the stream that indicates an image (usually "mjpeg" codec)
|
|
||||||
foreach (var stream in mediaStreams)
|
foreach (var stream in mediaStreams)
|
||||||
{
|
{
|
||||||
if (stream["Codec"]?.ToString() == "mjpeg" && stream["Type"]?.ToString() == "EmbeddedImage")
|
var imageTag = stream["ImageTag"]?.ToString();
|
||||||
|
if (!string.IsNullOrEmpty(imageTag))
|
||||||
{
|
{
|
||||||
// Check for the image tag and try to form the image URL
|
return imageTag; // Return the album cover image tag
|
||||||
string imageTag = nowPlaying["ParentLogoImageTag"]?.ToString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(imageTag))
|
|
||||||
{
|
|
||||||
string itemId = nowPlaying["Id"]?.ToString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(itemId))
|
|
||||||
{
|
|
||||||
// Construct the URL for the album cover
|
|
||||||
return $"{_config.JellyfinBaseUrl}/emby/Items/{itemId}/Images/Primary?tag={imageTag}&api_key={_config.JellyfinApiKey}";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
return "album_cover";
|
||||||
}
|
|
||||||
|
|
||||||
// Fallback: Check if there is an explicit album cover URL in the item
|
|
||||||
string albumArtUrl = nowPlaying["ImageTags"]?["Primary"]?.ToString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(albumArtUrl))
|
|
||||||
{
|
|
||||||
return $"{_config.JellyfinBaseUrl}/emby/Items/{nowPlaying["Id"]}/Images/Primary?tag={albumArtUrl}&api_key={_config.JellyfinApiKey}";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fallback to a default cover if no album art is found
|
|
||||||
return "default_cover";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class Config
|
||||||
class Config
|
|
||||||
{
|
{
|
||||||
public string JellyfinBaseUrl { get; set; }
|
public string JellyfinBaseUrl { get; set; }
|
||||||
public string JellyfinApiKey { get; set; }
|
public string JellyfinApiKey { get; set; }
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||||
|
-->
|
||||||
|
<Project>
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
<PublishDir>bin\Release\net9.0\publish\win-x64\</PublishDir>
|
||||||
|
<PublishProtocol>FileSystem</PublishProtocol>
|
||||||
|
<_TargetId>Folder</_TargetId>
|
||||||
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
|
<SelfContained>false</SelfContained>
|
||||||
|
<PublishSingleFile>false</PublishSingleFile>
|
||||||
|
<PublishReadyToRun>false</PublishReadyToRun>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
BIN
JellyfinDiscordRPC/assets/jellyfin.png
Normal file
BIN
JellyfinDiscordRPC/assets/jellyfin.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 37 KiB |
Binary file not shown.
|
@ -1,106 +0,0 @@
|
||||||
{
|
|
||||||
"runtimeTarget": {
|
|
||||||
"name": ".NETCoreApp,Version=v9.0",
|
|
||||||
"signature": ""
|
|
||||||
},
|
|
||||||
"compilationOptions": {},
|
|
||||||
"targets": {
|
|
||||||
".NETCoreApp,Version=v9.0": {
|
|
||||||
"JellyfinDiscordRPC/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"DiscordRichPresence": "1.2.1.24"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"JellyfinDiscordRPC.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"DiscordRichPresence/1.2.1.24": {
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.Win32.Registry": "4.5.0",
|
|
||||||
"Newtonsoft.Json": "13.0.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/DiscordRPC.dll": {
|
|
||||||
"assemblyVersion": "1.2.1.24",
|
|
||||||
"fileVersion": "1.2.1.24"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.NETCore.Platforms/2.0.0": {},
|
|
||||||
"Microsoft.Win32.Registry/4.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"System.Security.AccessControl": "4.5.0",
|
|
||||||
"System.Security.Principal.Windows": "4.5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
|
||||||
"assemblyVersion": "13.0.0.0",
|
|
||||||
"fileVersion": "13.0.1.25517"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Security.AccessControl/4.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.NETCore.Platforms": "2.0.0",
|
|
||||||
"System.Security.Principal.Windows": "4.5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Security.Principal.Windows/4.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.NETCore.Platforms": "2.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libraries": {
|
|
||||||
"JellyfinDiscordRPC/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
},
|
|
||||||
"DiscordRichPresence/1.2.1.24": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-DVmmlFQ/oQmidNRmZhPzYjC7ryaT4beWcKaMKPVw6fhOzM/HOoY6NOL4KMOYEnD4M7SNsODjleYimvUNIZcbiA==",
|
|
||||||
"path": "discordrichpresence/1.2.1.24",
|
|
||||||
"hashPath": "discordrichpresence.1.2.1.24.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Microsoft.NETCore.Platforms/2.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-VdLJOCXhZaEMY7Hm2GKiULmn7IEPFE4XC5LPSfBVCUIA8YLZVh846gtfBJalsPQF2PlzdD7ecX7DZEulJ402ZQ==",
|
|
||||||
"path": "microsoft.netcore.platforms/2.0.0",
|
|
||||||
"hashPath": "microsoft.netcore.platforms.2.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Microsoft.Win32.Registry/4.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-+FWlwd//+Tt56316p00hVePBCouXyEzT86Jb3+AuRotTND0IYn0OO3obs1gnQEs/txEnt+rF2JBGLItTG+Be6A==",
|
|
||||||
"path": "microsoft.win32.registry/4.5.0",
|
|
||||||
"hashPath": "microsoft.win32.registry.4.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
|
|
||||||
"path": "newtonsoft.json/13.0.1",
|
|
||||||
"hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Security.AccessControl/4.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-vW8Eoq0TMyz5vAG/6ce483x/CP83fgm4SJe5P8Tb1tZaobcvPrbMEL7rhH1DRdrYbbb6F0vq3OlzmK0Pkwks5A==",
|
|
||||||
"path": "system.security.accesscontrol/4.5.0",
|
|
||||||
"hashPath": "system.security.accesscontrol.4.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Security.Principal.Windows/4.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-U77HfRXlZlOeIXd//Yoj6Jnk8AXlbeisf1oq1os+hxOGVnuG+lGSfGqTwTZBoORFF6j/0q7HXIl8cqwQ9aUGqQ==",
|
|
||||||
"path": "system.security.principal.windows/4.5.0",
|
|
||||||
"hashPath": "system.security.principal.windows.4.5.0.nupkg.sha512"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,12 +0,0 @@
|
||||||
{
|
|
||||||
"runtimeOptions": {
|
|
||||||
"tfm": "net9.0",
|
|
||||||
"framework": {
|
|
||||||
"name": "Microsoft.NETCore.App",
|
|
||||||
"version": "9.0.0"
|
|
||||||
},
|
|
||||||
"configProperties": {
|
|
||||||
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Binary file not shown.
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
"JellyfinBaseUrl": "https://jellyfin.diamondcreeper.org",
|
|
||||||
"JellyfinApiKey": "9b868f61663140d09406b50538c91b8a",
|
|
||||||
"JellyfinUserId": "b4f8289c703c48f6aa827655ca209681"
|
|
||||||
}
|
|
|
@ -14,7 +14,7 @@ using System.Reflection;
|
||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("JellyfinDiscordRPC")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("JellyfinDiscordRPC")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9330106c24c49cbac14fbc441fd4dfeb17b5e6b7")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("JellyfinDiscordRPC")]
|
[assembly: System.Reflection.AssemblyProductAttribute("JellyfinDiscordRPC")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("JellyfinDiscordRPC")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("JellyfinDiscordRPC")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
2e189d0dffba66b81eb9b145504dcd231f91e1098305af08ba9c25f348b380fa
|
2850d7fb1b219d71ca36ce27f283a88484554fa270adaed893963d07cc96c066
|
||||||
|
|
|
@ -8,7 +8,7 @@ build_property.PlatformNeutralAssembly =
|
||||||
build_property.EnforceExtendedAnalyzerRules =
|
build_property.EnforceExtendedAnalyzerRules =
|
||||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||||
build_property.RootNamespace = JellyfinDiscordRPC
|
build_property.RootNamespace = JellyfinDiscordRPC
|
||||||
build_property.ProjectDir = C:\Users\joshua\source\repos\JellyfinDiscordRPC\JellyfinDiscordRPC\
|
build_property.ProjectDir = C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\
|
||||||
build_property.EnableComHosting =
|
build_property.EnableComHosting =
|
||||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||||
build_property.EffectiveAnalysisLevelStyle = 9.0
|
build_property.EffectiveAnalysisLevelStyle = 9.0
|
||||||
|
|
Binary file not shown.
|
@ -16,3 +16,21 @@ C:\Users\joshua\source\repos\JellyfinDiscordRPC\JellyfinDiscordRPC\obj\Debug\net
|
||||||
C:\Users\joshua\source\repos\JellyfinDiscordRPC\JellyfinDiscordRPC\obj\Debug\net9.0\JellyfinDiscordRPC.pdb
|
C:\Users\joshua\source\repos\JellyfinDiscordRPC\JellyfinDiscordRPC\obj\Debug\net9.0\JellyfinDiscordRPC.pdb
|
||||||
C:\Users\joshua\source\repos\JellyfinDiscordRPC\JellyfinDiscordRPC\obj\Debug\net9.0\JellyfinDiscordRPC.genruntimeconfig.cache
|
C:\Users\joshua\source\repos\JellyfinDiscordRPC\JellyfinDiscordRPC\obj\Debug\net9.0\JellyfinDiscordRPC.genruntimeconfig.cache
|
||||||
C:\Users\joshua\source\repos\JellyfinDiscordRPC\JellyfinDiscordRPC\obj\Debug\net9.0\ref\JellyfinDiscordRPC.dll
|
C:\Users\joshua\source\repos\JellyfinDiscordRPC\JellyfinDiscordRPC\obj\Debug\net9.0\ref\JellyfinDiscordRPC.dll
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\bin\Debug\net9.0\JellyfinDiscordRPC.exe
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\bin\Debug\net9.0\JellyfinDiscordRPC.deps.json
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\bin\Debug\net9.0\JellyfinDiscordRPC.runtimeconfig.json
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\bin\Debug\net9.0\JellyfinDiscordRPC.dll
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\bin\Debug\net9.0\JellyfinDiscordRPC.pdb
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\bin\Debug\net9.0\DiscordRPC.dll
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\bin\Debug\net9.0\Newtonsoft.Json.dll
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\obj\Debug\net9.0\JellyfinDiscordRPC.csproj.AssemblyReference.cache
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\obj\Debug\net9.0\JellyfinDiscordRPC.GeneratedMSBuildEditorConfig.editorconfig
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\obj\Debug\net9.0\JellyfinDiscordRPC.AssemblyInfoInputs.cache
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\obj\Debug\net9.0\JellyfinDiscordRPC.AssemblyInfo.cs
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\obj\Debug\net9.0\JellyfinDiscordRPC.csproj.CoreCompileInputs.cache
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\obj\Debug\net9.0\Jellyfin.FC5C5640.Up2Date
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\obj\Debug\net9.0\JellyfinDiscordRPC.dll
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\obj\Debug\net9.0\refint\JellyfinDiscordRPC.dll
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\obj\Debug\net9.0\JellyfinDiscordRPC.pdb
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\obj\Debug\net9.0\JellyfinDiscordRPC.genruntimeconfig.cache
|
||||||
|
C:\Users\joshua\Documents\GitHub\jellyfin-discord-rpc\JellyfinDiscordRPC\obj\Debug\net9.0\ref\JellyfinDiscordRPC.dll
|
||||||
|
|
Binary file not shown.
|
@ -1 +1 @@
|
||||||
230f9294a7604eecab82305c77c4c9089de4c82cb2749e33c24c53a44ff224ba
|
593d3e37ea484aac9177fb6433f49c519e46953c7db165fd924c9f5746fc869a
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,17 +1,17 @@
|
||||||
{
|
{
|
||||||
"format": 1,
|
"format": 1,
|
||||||
"restore": {
|
"restore": {
|
||||||
"C:\\Users\\joshua\\source\\repos\\JellyfinDiscordRPC\\JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj": {}
|
"C:\\Users\\joshua\\Documents\\GitHub\\jellyfin-discord-rpc\\JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj": {}
|
||||||
},
|
},
|
||||||
"projects": {
|
"projects": {
|
||||||
"C:\\Users\\joshua\\source\\repos\\JellyfinDiscordRPC\\JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj": {
|
"C:\\Users\\joshua\\Documents\\GitHub\\jellyfin-discord-rpc\\JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"restore": {
|
"restore": {
|
||||||
"projectUniqueName": "C:\\Users\\joshua\\source\\repos\\JellyfinDiscordRPC\\JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj",
|
"projectUniqueName": "C:\\Users\\joshua\\Documents\\GitHub\\jellyfin-discord-rpc\\JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj",
|
||||||
"projectName": "JellyfinDiscordRPC",
|
"projectName": "JellyfinDiscordRPC",
|
||||||
"projectPath": "C:\\Users\\joshua\\source\\repos\\JellyfinDiscordRPC\\JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj",
|
"projectPath": "C:\\Users\\joshua\\Documents\\GitHub\\jellyfin-discord-rpc\\JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj",
|
||||||
"packagesPath": "C:\\Users\\joshua\\.nuget\\packages\\",
|
"packagesPath": "C:\\Users\\joshua\\.nuget\\packages\\",
|
||||||
"outputPath": "C:\\Users\\joshua\\source\\repos\\JellyfinDiscordRPC\\JellyfinDiscordRPC\\obj\\",
|
"outputPath": "C:\\Users\\joshua\\Documents\\GitHub\\jellyfin-discord-rpc\\JellyfinDiscordRPC\\obj\\",
|
||||||
"projectStyle": "PackageReference",
|
"projectStyle": "PackageReference",
|
||||||
"fallbackFolders": [
|
"fallbackFolders": [
|
||||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||||
|
|
|
@ -313,11 +313,11 @@
|
||||||
"project": {
|
"project": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"restore": {
|
"restore": {
|
||||||
"projectUniqueName": "C:\\Users\\joshua\\source\\repos\\JellyfinDiscordRPC\\JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj",
|
"projectUniqueName": "C:\\Users\\joshua\\Documents\\GitHub\\jellyfin-discord-rpc\\JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj",
|
||||||
"projectName": "JellyfinDiscordRPC",
|
"projectName": "JellyfinDiscordRPC",
|
||||||
"projectPath": "C:\\Users\\joshua\\source\\repos\\JellyfinDiscordRPC\\JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj",
|
"projectPath": "C:\\Users\\joshua\\Documents\\GitHub\\jellyfin-discord-rpc\\JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj",
|
||||||
"packagesPath": "C:\\Users\\joshua\\.nuget\\packages\\",
|
"packagesPath": "C:\\Users\\joshua\\.nuget\\packages\\",
|
||||||
"outputPath": "C:\\Users\\joshua\\source\\repos\\JellyfinDiscordRPC\\JellyfinDiscordRPC\\obj\\",
|
"outputPath": "C:\\Users\\joshua\\Documents\\GitHub\\jellyfin-discord-rpc\\JellyfinDiscordRPC\\obj\\",
|
||||||
"projectStyle": "PackageReference",
|
"projectStyle": "PackageReference",
|
||||||
"fallbackFolders": [
|
"fallbackFolders": [
|
||||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
{
|
{
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"dgSpecHash": "1MP9+VdKfz0=",
|
"dgSpecHash": "83oYIM0kfME=",
|
||||||
"success": true,
|
"success": true,
|
||||||
"projectFilePath": "C:\\Users\\joshua\\source\\repos\\JellyfinDiscordRPC\\JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj",
|
"projectFilePath": "C:\\Users\\joshua\\Documents\\GitHub\\jellyfin-discord-rpc\\JellyfinDiscordRPC\\JellyfinDiscordRPC.csproj",
|
||||||
"expectedPackageFiles": [
|
"expectedPackageFiles": [
|
||||||
"C:\\Users\\joshua\\.nuget\\packages\\discordrichpresence\\1.2.1.24\\discordrichpresence.1.2.1.24.nupkg.sha512",
|
"C:\\Users\\joshua\\.nuget\\packages\\discordrichpresence\\1.2.1.24\\discordrichpresence.1.2.1.24.nupkg.sha512",
|
||||||
"C:\\Users\\joshua\\.nuget\\packages\\microsoft.netcore.platforms\\2.0.0\\microsoft.netcore.platforms.2.0.0.nupkg.sha512",
|
"C:\\Users\\joshua\\.nuget\\packages\\microsoft.netcore.platforms\\2.0.0\\microsoft.netcore.platforms.2.0.0.nupkg.sha512",
|
||||||
|
|
Loading…
Add table
Reference in a new issue