diff --git a/Sora/Views/MediaInfoView/EpisodeCell/EpisodeCell.swift b/Sora/Views/MediaInfoView/EpisodeCell/EpisodeCell.swift index 2610762..1ddb47b 100644 --- a/Sora/Views/MediaInfoView/EpisodeCell/EpisodeCell.swift +++ b/Sora/Views/MediaInfoView/EpisodeCell/EpisodeCell.swift @@ -20,8 +20,6 @@ struct EpisodeCell: View { let episodeID: Int let progress: Double let itemID: Int - let useAnilist: Bool - let tmdbID: Int? let onTap: (String) -> Void let onMarkAllPrevious: () -> Void @@ -32,15 +30,12 @@ struct EpisodeCell: View { @State private var currentProgress: Double = 0.0 init(episodeIndex: Int, episode: String, episodeID: Int, progress: Double, - itemID: Int, useAnilist: Bool = true, tmdbID: Int? = nil, - onTap: @escaping (String) -> Void, onMarkAllPrevious: @escaping () -> Void) { + itemID: Int, onTap: @escaping (String) -> Void, onMarkAllPrevious: @escaping () -> Void) { self.episodeIndex = episodeIndex self.episode = episode self.episodeID = episodeID self.progress = progress self.itemID = itemID - self.useAnilist = useAnilist - self.tmdbID = tmdbID self.onTap = onTap self.onMarkAllPrevious = onMarkAllPrevious } @@ -140,11 +135,7 @@ struct EpisodeCell: View { } private func fetchEpisodeDetails() { - if useAnilist { - fetchAnimeEpisodeDetails() - } else { - fetchTMDBEpisodeDetails() - } + fetchAnimeEpisodeDetails() } private func fetchAnimeEpisodeDetails() { @@ -195,66 +186,4 @@ struct EpisodeCell: View { } }.resume() } - - private func fetchTMDBEpisodeDetails() { - guard let tmdbID = tmdbID else { - isLoading = false - return - } - - let seasonNumber = 1 - let apiKey = "738b4edd0a156cc126dc4a4b8aea4aca" - let urlString = "https://api.themoviedb.org/3/tv/\(tmdbID)/season/\(seasonNumber)/episode/\(episodeID + 1)?api_key=\(apiKey)" - - guard let url = URL(string: urlString) else { - isLoading = false - return - } - - URLSession.custom.dataTask(with: url) { data, response, error in - if let error = error { - Logger.shared.log("Failed to fetch TMDB episode details: \(error)", type: "Error") - DispatchQueue.main.async { - self.isLoading = false - } - return - } - - guard let data = data else { - DispatchQueue.main.async { - self.isLoading = false - } - return - } - - do { - let jsonObject = try JSONSerialization.jsonObject(with: data, options: []) - guard let episodeDetails = jsonObject as? [String: Any], - let name = episodeDetails["name"] as? String else { - Logger.shared.log("Invalid TMDB response format", type: "Error") - DispatchQueue.main.async { - self.isLoading = false - } - return - } - - let imageBasePath = "https://image.tmdb.org/t/p/w300" - var imageUrl = "" - if let stillPath = episodeDetails["still_path"] as? String { - imageUrl = imageBasePath + stillPath - } - - DispatchQueue.main.async { - self.episodeTitle = name - self.episodeImageUrl = imageUrl - self.isLoading = false - } - } catch { - Logger.shared.log("Error parsing TMDB data: \(error)", type: "Error") - DispatchQueue.main.async { - self.isLoading = false - } - } - }.resume() - } } diff --git a/Sora/Views/MediaInfoView/MediaInfoView.swift b/Sora/Views/MediaInfoView/MediaInfoView.swift index a24c262..70d52f4 100644 --- a/Sora/Views/MediaInfoView/MediaInfoView.swift +++ b/Sora/Views/MediaInfoView/MediaInfoView.swift @@ -241,8 +241,6 @@ struct MediaInfoView: View { episodeID: ep.number - 1, progress: progress, itemID: itemID ?? 0, - useAnilist: UserDefaults.standard.string(forKey: "metadataProviders") == "AniList", - tmdbID: tmdbID, onTap: { imageUrl in if !isFetchingEpisode { selectedEpisodeNumber = ep.number @@ -293,8 +291,6 @@ struct MediaInfoView: View { episodeID: ep.number - 1, progress: progress, itemID: itemID ?? 0, - useAnilist: UserDefaults.standard.string(forKey: "metadataProviders") == "AniList", - tmdbID: tmdbID, onTap: { imageUrl in if !isFetchingEpisode { selectedEpisodeNumber = ep.number @@ -376,25 +372,13 @@ struct MediaInfoView: View { DropManager.shared.showDrop(title: "Fetching Data", subtitle: "Please wait while fetching.", duration: 0.5, icon: UIImage(systemName: "arrow.triangle.2.circlepath")) fetchDetails() - if UserDefaults.standard.string(forKey: "metadataProviders") == "AniList" { - fetchItemID(byTitle: cleanTitle(title)) { result in - switch result { - case .success(let id): - itemID = id - case .failure(let error): - Logger.shared.log("Failed to fetch AniList ID: \(error)") - AnalyticsManager.shared.sendEvent(event: "error", additionalData: ["error": error, "message": "Failed to fetch AniList ID"]) - } - } - } else { - fetchTMDBID(byTitle: cleanTitle(title)) { result in - switch result { - case .success(let id): - tmdbID = id - case .failure(let error): - Logger.shared.log("Failed to fetch TMDB ID: \(error)") - AnalyticsManager.shared.sendEvent(event: "error", additionalData: ["error": error, "message": "Failed to fetch TMDB ID"]) - } + fetchItemID(byTitle: cleanTitle(title)) { result in + switch result { + case .success(let id): + itemID = id + case .failure(let error): + Logger.shared.log("Failed to fetch AniList ID: \(error)") + AnalyticsManager.shared.sendEvent(event: "error", additionalData: ["error": error, "message": "Failed to fetch AniList ID"]) } } @@ -873,42 +857,4 @@ struct MediaInfoView: View { } }.resume() } - - private func fetchTMDBID(byTitle title: String, completion: @escaping (Result) -> Void) { - let encodedTitle = title.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? "" - let apiKey = "738b4edd0a156cc126dc4a4b8aea4aca" - - let urlString = "https://api.themoviedb.org/3/search/multi?api_key=\(apiKey)&query=\(encodedTitle)" - - guard let url = URL(string: urlString) else { - completion(.failure(NSError(domain: "", code: 0, userInfo: [NSLocalizedDescriptionKey: "Invalid URL"]))) - return - } - - URLSession.custom.dataTask(with: url) { data, _, error in - if let error = error { - completion(.failure(error)) - return - } - - guard let data = data else { - completion(.failure(NSError(domain: "", code: 0, userInfo: [NSLocalizedDescriptionKey: "No data received"]))) - return - } - - do { - if let json = try JSONSerialization.jsonObject(with: data) as? [String: Any], - let results = json["results"] as? [[String: Any]], - let firstResult = results.first, - let id = firstResult["id"] as? Int { - completion(.success(id)) - } else { - let error = NSError(domain: "", code: 0, userInfo: [NSLocalizedDescriptionKey: "No matching TMDB content found"]) - completion(.failure(error)) - } - } catch { - completion(.failure(error)) - } - }.resume() - } } diff --git a/Sora/Views/SettingsView/SettingsSubViews/SettingsViewGeneral.swift b/Sora/Views/SettingsView/SettingsSubViews/SettingsViewGeneral.swift index f585236..ed21a08 100644 --- a/Sora/Views/SettingsView/SettingsSubViews/SettingsViewGeneral.swift +++ b/Sora/Views/SettingsView/SettingsSubViews/SettingsViewGeneral.swift @@ -17,7 +17,7 @@ struct SettingsViewGeneral: View { @AppStorage("mediaColumnsPortrait") private var mediaColumnsPortrait: Int = 2 @AppStorage("mediaColumnsLandscape") private var mediaColumnsLandscape: Int = 4 - private let metadataProvidersList = ["AniList", "TMDB"] + private let metadataProvidersList = ["AniList"] @EnvironmentObject var settings: Settings var body: some View {