Merge branch 'main' into add-lidarr

pull/163/head
Jason Fischer 2 years ago
commit 7e99b3e505
No known key found for this signature in database

@ -136,5 +136,9 @@
"jackett": { "jackett": {
"configured": "Configured", "configured": "Configured",
"errored": "Errored" "errored": "Errored"
},
"bazarr": {
"missingEpisodes": "Missing Episodes",
"missingMovies": "Missing Movies"
} }
} }

@ -136,5 +136,9 @@
"jackett": { "jackett": {
"configured": "Configured", "configured": "Configured",
"errored": "Errored" "errored": "Errored"
},
"bazarr": {
"missingEpisodes": "Missing Episodes",
"missingMovies": "Missing Movies"
} }
} }

@ -90,6 +90,10 @@
"queued": "Queued", "queued": "Queued",
"books": "Books" "books": "Books"
}, },
"bazarr": {
"missingEpisodes": "Missing Episodes",
"missingMovies": "Missing Movies"
},
"ombi": { "ombi": {
"pending": "Pending", "pending": "Pending",
"approved": "Approved", "approved": "Approved",

@ -136,5 +136,9 @@
"jackett": { "jackett": {
"configured": "Configured", "configured": "Configured",
"errored": "Errored" "errored": "Errored"
},
"bazarr": {
"missingEpisodes": "Missing Episodes",
"missingMovies": "Missing Movies"
} }
} }

@ -145,7 +145,11 @@
"seed": "Seed" "seed": "Seed"
}, },
"jackett": { "jackett": {
"configured": "Configured", "configured": "Configuré",
"errored": "Errored" "errored": "En erreur"
},
"bazarr": {
"missingEpisodes": "Missing Episodes",
"missingMovies": "Missing Movies"
} }
} }

@ -136,5 +136,9 @@
"jackett": { "jackett": {
"configured": "Configured", "configured": "Configured",
"errored": "Errored" "errored": "Errored"
},
"bazarr": {
"missingEpisodes": "Missing Episodes",
"missingMovies": "Missing Movies"
} }
} }

@ -136,5 +136,9 @@
"jackett": { "jackett": {
"configured": "Configured", "configured": "Configured",
"errored": "Errored" "errored": "Errored"
},
"bazarr": {
"missingEpisodes": "Missing Episodes",
"missingMovies": "Missing Movies"
} }
} }

@ -136,5 +136,9 @@
"jackett": { "jackett": {
"configured": "Configured", "configured": "Configured",
"errored": "Errored" "errored": "Errored"
},
"bazarr": {
"missingEpisodes": "Missing Episodes",
"missingMovies": "Missing Movies"
} }
} }

@ -147,5 +147,9 @@
"jackett": { "jackett": {
"configured": "Configured", "configured": "Configured",
"errored": "Errored" "errored": "Errored"
},
"bazarr": {
"missingEpisodes": "Missing Episodes",
"missingMovies": "Missing Movies"
} }
} }

@ -136,5 +136,9 @@
"jackett": { "jackett": {
"configured": "Configured", "configured": "Configured",
"errored": "Errored" "errored": "Errored"
},
"bazarr": {
"missingEpisodes": "Missing Episodes",
"missingMovies": "Missing Movies"
} }
} }

@ -45,16 +45,16 @@
"radarr": { "radarr": {
"wanted": "Wanted", "wanted": "Wanted",
"queued": "Queued", "queued": "Queued",
"movies": "Movies" "movies": "Phim"
}, },
"readarr": { "readarr": {
"wanted": "Wanted", "wanted": "Đang tìm",
"queued": "Queued", "queued": "Đang chờ",
"books": "Books" "books": "Sách"
}, },
"ombi": { "ombi": {
"pending": "Pending", "pending": "Đang xử lý",
"approved": "Approved", "approved": "Đã duyệt",
"available": "Available" "available": "Available"
}, },
"jellyseerr": { "jellyseerr": {
@ -88,25 +88,25 @@
"total": "Total" "total": "Total"
}, },
"weather": { "weather": {
"current": "Current Location", "current": "Vị trí hiện tại",
"allow": "Click to allow", "allow": "Bấm để đồng ý",
"updating": "Updating", "updating": "Đang cập nhật",
"wait": "Please wait" "wait": "Vui lòng chờ"
}, },
"overseerr": { "overseerr": {
"pending": "Pending", "pending": "Pending",
"approved": "Approved", "approved": "Đã duyệt",
"available": "Available" "available": "Available"
}, },
"sabnzbd": { "sabnzbd": {
"rate": "Rate", "rate": "Rate",
"queue": "Queue", "queue": "Hàng chờ",
"timeleft": "Time Left" "timeleft": "Thời gian còn lại"
}, },
"nzbget": { "nzbget": {
"rate": "Rate", "rate": "Rate",
"remaining": "Remaining", "remaining": "Remaining",
"downloaded": "Downloaded" "downloaded": "Đã tải"
}, },
"coinmarketcap": { "coinmarketcap": {
"configure": "Configure one or more crypto currencies to track", "configure": "Configure one or more crypto currencies to track",
@ -136,5 +136,9 @@
"jackett": { "jackett": {
"configured": "Configured", "configured": "Configured",
"errored": "Errored" "errored": "Errored"
},
"bazarr": {
"missingEpisodes": "Missing Episodes",
"missingMovies": "Missing Movies"
} }
} }

@ -136,5 +136,9 @@
"jackett": { "jackett": {
"configured": "Configured", "configured": "Configured",
"errored": "Errored" "errored": "Errored"
},
"bazarr": {
"missingEpisodes": "Missing Episodes",
"missingMovies": "Missing Movies"
} }
} }

@ -136,5 +136,9 @@
"jackett": { "jackett": {
"configured": "Configured", "configured": "Configured",
"errored": "Errored" "errored": "Errored"
},
"bazarr": {
"missingEpisodes": "Missing Episodes",
"missingMovies": "Missing Movies"
} }
} }

@ -4,6 +4,7 @@ import Sonarr from "./widgets/service/sonarr";
import Radarr from "./widgets/service/radarr"; import Radarr from "./widgets/service/radarr";
import Lidarr from "./widgets/service/lidarr"; import Lidarr from "./widgets/service/lidarr";
import Readarr from "./widgets/service/readarr"; import Readarr from "./widgets/service/readarr";
import Bazarr from "./widgets/service/bazarr";
import Ombi from "./widgets/service/ombi"; import Ombi from "./widgets/service/ombi";
import Portainer from "./widgets/service/portainer"; import Portainer from "./widgets/service/portainer";
import Emby from "./widgets/service/emby"; import Emby from "./widgets/service/emby";
@ -31,6 +32,7 @@ const widgetMappings = {
radarr: Radarr, radarr: Radarr,
lidarr: Lidarr, lidarr: Lidarr,
readarr: Readarr, readarr: Readarr,
bazarr: Bazarr,
ombi: Ombi, ombi: Ombi,
portainer: Portainer, portainer: Portainer,
emby: Emby, emby: Emby,

@ -0,0 +1,36 @@
import useSWR from "swr";
import { useTranslation } from "react-i18next";
import Widget from "../widget";
import Block from "../block";
import { formatApiUrl } from "utils/api-helpers";
export default function Bazarr({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { data: episodesData, error: episodesError } = useSWR(formatApiUrl(config, "episodes"));
const { data: moviesData, error: moviesError } = useSWR(formatApiUrl(config, "movies"));
if (episodesError || moviesError) {
return <Widget error={t("widget.api_error")} />;
}
if (!episodesData || !moviesData) {
return (
<Widget>
<Block label={t("bazarr.missingEpisodes")} />
<Block label={t("bazarr.missingMovies")} />
</Widget>
);
}
return (
<Widget>
<Block label={t("bazarr.missingEpisodes")} value={episodesData.total} />
<Block label={t("bazarr.missingMovies")} value={moviesData.total} />
</Widget>
);
}

@ -69,6 +69,8 @@ export default function Search({ options }) {
autoCapitalize="off" autoCapitalize="off"
autoCorrect="off" autoCorrect="off"
autoComplete="off" autoComplete="off"
// eslint-disable-next-line jsx-a11y/no-autofocus
autoFocus={options.focus}
/> />
<button <button
type="submit" type="submit"

@ -14,6 +14,7 @@ const serviceProxyHandlers = {
sonarr: genericProxyHandler, sonarr: genericProxyHandler,
lidarr: genericProxyHandler, lidarr: genericProxyHandler,
readarr: genericProxyHandler, readarr: genericProxyHandler,
bazarr: genericProxyHandler,
speedtest: genericProxyHandler, speedtest: genericProxyHandler,
tautulli: genericProxyHandler, tautulli: genericProxyHandler,
traefik: genericProxyHandler, traefik: genericProxyHandler,

@ -2,6 +2,8 @@
import useSWR from "swr"; import useSWR from "swr";
import Head from "next/head"; import Head from "next/head";
import dynamic from "next/dynamic"; import dynamic from "next/dynamic";
import { useTranslation } from "react-i18next";
import { useEffect } from "react";
import ServicesGroup from "components/services/group"; import ServicesGroup from "components/services/group";
import BookmarksGroup from "components/bookmarks/group"; import BookmarksGroup from "components/bookmarks/group";
@ -30,7 +32,10 @@ export async function getStaticProps() {
}, },
}; };
} }
export default function Home({ settings }) { export default function Home({ settings }) {
const { i18n } = useTranslation();
const { data: services } = useSWR("/api/services"); const { data: services } = useSWR("/api/services");
const { data: bookmarks } = useSWR("/api/bookmarks"); const { data: bookmarks } = useSWR("/api/bookmarks");
const { data: widgets } = useSWR("/api/widgets"); const { data: widgets } = useSWR("/api/widgets");
@ -41,6 +46,12 @@ export default function Home({ settings }) {
wrappedStyle.backgroundSize = "cover"; wrappedStyle.backgroundSize = "cover";
} }
useEffect(() => {
if (settings.language) {
i18n.changeLanguage(settings.language);
}
}, [i18n, settings.language]);
return ( return (
<ColorProvider> <ColorProvider>
<ThemeProvider> <ThemeProvider>

@ -16,6 +16,7 @@ const formats = {
npm: `{url}/api/{endpoint}`, npm: `{url}/api/{endpoint}`,
lidarr: `{url}/api/v1/{endpoint}?apikey={key}`, lidarr: `{url}/api/v1/{endpoint}?apikey={key}`,
readarr: `{url}/api/v1/{endpoint}?apikey={key}`, readarr: `{url}/api/v1/{endpoint}?apikey={key}`,
bazarr: `{url}/api/{endpoint}/wanted?apikey={key}`,
sabnzbd: `{url}/api/?apikey={key}&output=json&mode={endpoint}`, sabnzbd: `{url}/api/?apikey={key}&output=json&mode={endpoint}`,
coinmarketcap: `https://pro-api.coinmarketcap.com/{endpoint}`, coinmarketcap: `https://pro-api.coinmarketcap.com/{endpoint}`,
gotify: `{url}/{endpoint}`, gotify: `{url}/{endpoint}`,

Loading…
Cancel
Save