diff --git a/src/components/services/widgets/service/jellyfin.jsx b/src/components/services/widgets/service/jellyfin.jsx
index 03a8840a..9a713ea1 100644
--- a/src/components/services/widgets/service/jellyfin.jsx
+++ b/src/components/services/widgets/service/jellyfin.jsx
@@ -1,6 +1,50 @@
-import Emby from "./emby";
+import useSWR from "swr";
+import { useTranslation } from "react-i18next";
+
+import Widget from "../widget";
+import Block from "../block";
+
+import { formatApiUrl } from "utils/api-helpers";
-// Jellyfin and Emby share the same API, so proxy the Emby widget to Jellyfin.
export default function Jellyfin({ service }) {
- return ;
+ const { t } = useTranslation();
+
+ const config = service.widget;
+
+ const { data: sessionsData, error: sessionsError } = useSWR(formatApiUrl(config, "Sessions"));
+
+ if (sessionsError) {
+ return ;
+ }
+
+ if (!sessionsData) {
+ return (
+
+
+
+
+
+ );
+ }
+
+ console.log(sessionsData);
+
+ const playing = sessionsData.filter((session) => session?.NowPlayingItem);
+ const transcoding = sessionsData.filter(
+ (session) => session?.PlayState && session.PlayState.PlayMethod === "Transcode"
+ );
+
+ const bitrate = playing.reduce(
+ (acc, session) =>
+ acc + session.NowPlayingQueueFullItems[0].MediaSources.reduce((acb, source) => acb + source.Bitrate, 0),
+ 0
+ );
+
+ return (
+
+
+
+
+
+ );
}