From db11dc7f06a128381e427db4cbf38c57ccd0b31c Mon Sep 17 00:00:00 2001 From: cranci1 <100066266+cranci1@users.noreply.github.com> Date: Tue, 24 Dec 2024 10:58:16 +0100 Subject: [PATCH] base user agent + mac catalist --- .github/workflows/build.yml | 14 ++++++- Sora.xcodeproj/project.pbxproj | 10 +++++ .../UserInterfaceState.xcuserstate | Bin 70482 -> 69302 bytes Sora/Sora.entitlements | 10 +++++ Sora/Utils/Extensions/URLSession.swift | 18 ++++++++ Sora/Utils/Modules/ModuleStruct.swift | 1 + Sora/Utils/Modules/ModulesManager.swift | 4 +- .../AnimeViews/AnimeInfoExtraction.swift | 4 +- Sora/Views/AnimeViews/AnimeInfoView.swift | 4 +- .../AnimeViews/EpisodeCell/EpisodeCell.swift | 2 +- .../Views/SearchViews/SearchResultsView.swift | 2 +- macbuild.sh | 39 ++++++++++++++++++ 12 files changed, 99 insertions(+), 9 deletions(-) create mode 100644 Sora/Sora.entitlements create mode 100644 Sora/Utils/Extensions/URLSession.swift create mode 100755 macbuild.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4a97205..edf8adb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,7 +5,7 @@ on: - main jobs: build: - name: Build IPA + name: Build IPA and Mac Catalyst runs-on: macOS-latest steps: - name: Use Node.js 20 @@ -27,3 +27,15 @@ jobs: name: Sora-IPA path: build/Sora.ipa compression-level: 0 + + - name: Run macbuild.sh + run: | + chmod +x macbuild.sh + ./macbuild.sh + + - name: Upload Mac Catalyst artifact + uses: actions/upload-artifact@v4 + with: + name: Sora-Catalyst + path: build/Sora-catalyst.zip + compression-level: 0 \ No newline at end of file diff --git a/Sora.xcodeproj/project.pbxproj b/Sora.xcodeproj/project.pbxproj index 755cd34..3d8897f 100644 --- a/Sora.xcodeproj/project.pbxproj +++ b/Sora.xcodeproj/project.pbxproj @@ -38,6 +38,7 @@ 132417D52D13240200B4F2D2 /* EpisodeCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 132417D42D13240200B4F2D2 /* EpisodeCell.swift */; }; 132417D72D13242400B4F2D2 /* CircularProgressBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 132417D62D13242400B4F2D2 /* CircularProgressBar.swift */; }; 132417D92D1328B900B4F2D2 /* VideoPlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 132417D82D1328B900B4F2D2 /* VideoPlayerView.swift */; }; + 1352BA712D1ABC30000A9AF9 /* URLSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1352BA702D1ABC30000A9AF9 /* URLSession.swift */; }; 13B3A4B22D1477F100BCC0D5 /* StorageSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13B3A4B12D1477F100BCC0D5 /* StorageSettingsView.swift */; }; /* End PBXBuildFile section */ @@ -73,6 +74,8 @@ 132417D42D13240200B4F2D2 /* EpisodeCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EpisodeCell.swift; sourceTree = ""; }; 132417D62D13242400B4F2D2 /* CircularProgressBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircularProgressBar.swift; sourceTree = ""; }; 132417D82D1328B900B4F2D2 /* VideoPlayerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VideoPlayerView.swift; sourceTree = ""; }; + 1352BA6F2D1AB113000A9AF9 /* Sora.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Sora.entitlements; sourceTree = ""; }; + 1352BA702D1ABC30000A9AF9 /* URLSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLSession.swift; sourceTree = ""; }; 13B3A4B12D1477F100BCC0D5 /* StorageSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StorageSettingsView.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -126,6 +129,7 @@ 132417822D13198000B4F2D2 /* Sora */ = { isa = PBXGroup; children = ( + 1352BA6F2D1AB113000A9AF9 /* Sora.entitlements */, 132417C52D131AA500B4F2D2 /* Info.plist */, 132417912D1319E800B4F2D2 /* Utils */, 132417A52D131A0600B4F2D2 /* Views */, @@ -170,6 +174,7 @@ isa = PBXGroup; children = ( 132417952D1319E800B4F2D2 /* Notification.swift */, + 1352BA702D1ABC30000A9AF9 /* URLSession.swift */, ); path = Extensions; sourceTree = ""; @@ -376,6 +381,7 @@ 1324179E2D1319E800B4F2D2 /* MiruDataStruct.swift in Sources */, 1308CFBE2D19844D004CD38C /* MusicProgressSlider.swift in Sources */, 132417D52D13240200B4F2D2 /* EpisodeCell.swift in Sources */, + 1352BA712D1ABC30000A9AF9 /* URLSession.swift in Sources */, 132417A02D1319E800B4F2D2 /* HistoryManager.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -504,6 +510,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = Sora/Sora.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"Sora/Preview Content\""; @@ -524,6 +531,7 @@ MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = me.cranci.Sora; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTS_MACCATALYST = YES; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -535,6 +543,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = Sora/Sora.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"Sora/Preview Content\""; @@ -555,6 +564,7 @@ MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = me.cranci.Sora; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTS_MACCATALYST = YES; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; diff --git a/Sora.xcodeproj/project.xcworkspace/xcuserdata/Francesco.xcuserdatad/UserInterfaceState.xcuserstate b/Sora.xcodeproj/project.xcworkspace/xcuserdata/Francesco.xcuserdatad/UserInterfaceState.xcuserstate index ce2f924c93130e1df47f2dfbaf7546a70c76c73f..946ce4e26aaa3f416a7285f6b1ee65b5f2f39b2f 100644 GIT binary patch literal 69302 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 f{QPkD!@UoA9s&m-Z2xg^>|B9!*Z%hR(B}UD literal 70482 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 oWNi*?4sH%_jy} + + + + com.apple.security.app-sandbox + + com.apple.security.network.client + + + diff --git a/Sora/Utils/Extensions/URLSession.swift b/Sora/Utils/Extensions/URLSession.swift new file mode 100644 index 0000000..0ec1021 --- /dev/null +++ b/Sora/Utils/Extensions/URLSession.swift @@ -0,0 +1,18 @@ +// +// URLSession.swift +// Sora +// +// Created by Francesco on 24/12/24. +// + +import Foundation + +extension URLSession { + static let custom: URLSession = { + let configuration = URLSessionConfiguration.default + configuration.httpAdditionalHeaders = [ + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" + ] + return URLSession(configuration: configuration) + }() +} diff --git a/Sora/Utils/Modules/ModuleStruct.swift b/Sora/Utils/Modules/ModuleStruct.swift index 20a05b7..72a3203 100644 --- a/Sora/Utils/Modules/ModuleStruct.swift +++ b/Sora/Utils/Modules/ModuleStruct.swift @@ -71,6 +71,7 @@ struct ModuleStruct: Codable { struct Episodes: Codable, Hashable { let selector: String let order: String + let pattern: String } } } diff --git a/Sora/Utils/Modules/ModulesManager.swift b/Sora/Utils/Modules/ModulesManager.swift index 3240c17..2539e88 100644 --- a/Sora/Utils/Modules/ModulesManager.swift +++ b/Sora/Utils/Modules/ModulesManager.swift @@ -30,7 +30,7 @@ class ModulesManager: ObservableObject { completion(.failure(ModuleError.invalidURL)) return } - let task = URLSession.shared.dataTask(with: url) { data, response, error in + let task = URLSession.custom.dataTask(with: url) { data, response, error in guard let data = data, error == nil else { completion(.failure(error ?? ModuleError.unknown)) return @@ -67,7 +67,7 @@ class ModulesManager: ObservableObject { func refreshModules() { for (name, urlString) in moduleURLs { guard let url = URL(string: urlString) else { continue } - let task = URLSession.shared.dataTask(with: url) { data, response, error in + let task = URLSession.custom.dataTask(with: url) { data, response, error in guard let data = data, error == nil else { return } do { let updatedModule = try JSONDecoder().decode(ModuleStruct.self, from: data) diff --git a/Sora/Views/AnimeViews/AnimeInfoExtraction.swift b/Sora/Views/AnimeViews/AnimeInfoExtraction.swift index c00c5dc..bb4ff47 100644 --- a/Sora/Views/AnimeViews/AnimeInfoExtraction.swift +++ b/Sora/Views/AnimeViews/AnimeInfoExtraction.swift @@ -12,7 +12,7 @@ extension AnimeInfoView { func fetchAnimeDetails() { guard let url = URL(string: anime.href.hasPrefix("https") ? anime.href : "\(module.module[0].details.baseURL)\(anime.href)") else { return } - URLSession.shared.dataTask(with: url) { data, response, error in + URLSession.custom.dataTask(with: url) { data, response, error in defer { isLoading = false } guard let data = data, error == nil else { return } @@ -101,7 +101,7 @@ extension AnimeInfoView { guard let url = URL(string: urlString) else { return } Logger.shared.log("Pressed episode button") - URLSession.shared.dataTask(with: url) { data, response, error in + URLSession.custom.dataTask(with: url) { data, response, error in guard let data = data, error == nil else { return } let html = String(data: data, encoding: .utf8) ?? "" diff --git a/Sora/Views/AnimeViews/AnimeInfoView.swift b/Sora/Views/AnimeViews/AnimeInfoView.swift index 43dbf2d..cb4ce88 100644 --- a/Sora/Views/AnimeViews/AnimeInfoView.swift +++ b/Sora/Views/AnimeViews/AnimeInfoView.swift @@ -133,7 +133,7 @@ struct AnimeInfoView: View { .fontWeight(.bold) ForEach(episodes.indices, id: \.self) { index in - let episodeURL = "\(module.module[0].details.baseURL)\(episodes[index])" + let episodeURL = episodes[index].hasPrefix("https") ? episodes[index] : "\(module.module[0].details.baseURL)\(episodes[index])" let lastPlayedTime = UserDefaults.standard.double(forKey: "lastPlayedTime_\(episodeURL)") let totalTime = UserDefaults.standard.double(forKey: "totalTime_\(episodeURL)") let progress = totalTime > 0 ? lastPlayedTime / totalTime : 0 @@ -278,7 +278,7 @@ struct AnimeInfoView: View { let parameters: [String: Any] = ["query": query] request.httpBody = try? JSONSerialization.data(withJSONObject: parameters) - URLSession.shared.dataTask(with: request) { data, response, error in + URLSession.custom.dataTask(with: request) { data, response, error in if let error = error { completion(.failure(error)) return diff --git a/Sora/Views/AnimeViews/EpisodeCell/EpisodeCell.swift b/Sora/Views/AnimeViews/EpisodeCell/EpisodeCell.swift index b0145b6..f0d148d 100644 --- a/Sora/Views/AnimeViews/EpisodeCell/EpisodeCell.swift +++ b/Sora/Views/AnimeViews/EpisodeCell/EpisodeCell.swift @@ -60,7 +60,7 @@ struct EpisodeCell: View { return } - URLSession.shared.dataTask(with: url) { data, response, error in + URLSession.custom.dataTask(with: url) { data, response, error in if let error = error { print("Failed to fetch episode details: \(error)") DispatchQueue.main.async { diff --git a/Sora/Views/SearchViews/SearchResultsView.swift b/Sora/Views/SearchViews/SearchResultsView.swift index 4e8d357..f36dfde 100644 --- a/Sora/Views/SearchViews/SearchResultsView.swift +++ b/Sora/Views/SearchViews/SearchResultsView.swift @@ -175,7 +175,7 @@ struct SearchResultsView: View { let urlString = "\(module.module[0].search.url)?\(module.module[0].search.parameter)=\(encodedSearchText)" guard let url = URL(string: urlString) else { return } - URLSession.shared.dataTask(with: url) { data, response, error in + URLSession.custom.dataTask(with: url) { data, response, error in defer { isLoading = false } guard let data = data, error == nil else { return } diff --git a/macbuild.sh b/macbuild.sh new file mode 100755 index 0000000..1472471 --- /dev/null +++ b/macbuild.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +set -e + +cd "$(dirname "$0")" + +WORKING_LOCATION="$(pwd)" +APPLICATION_NAME=Sora + +if [ ! -d "build" ]; then + mkdir build +fi + +cd build + +xcodebuild -project "$WORKING_LOCATION/$APPLICATION_NAME.xcodeproj" \ + -scheme "$APPLICATION_NAME" \ + -configuration Release \ + -derivedDataPath "$WORKING_LOCATION/build/DerivedDataApp" \ + -destination 'platform=macOS,variant=Mac Catalyst' \ + clean build \ + CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGN_ENTITLEMENTS="" CODE_SIGNING_ALLOWED="NO" + +DD_APP_PATH="$WORKING_LOCATION/build/DerivedDataApp/Build/Products/Release-maccatalyst/$APPLICATION_NAME.app" +TARGET_APP="$WORKING_LOCATION/build/$APPLICATION_NAME.app" + +if [ -e "$TARGET_APP" ]; then + rm -rf "$TARGET_APP" +fi + +cp -r "$DD_APP_PATH" "$TARGET_APP" + +codesign --remove "$TARGET_APP" +if [ -e "$TARGET_APP/_CodeSignature" ]; then + rm -rf "$TARGET_APP/_CodeSignature" +fi + +zip -vr "$APPLICATION_NAME-catalyst.zip" "$APPLICATION_NAME.app" +rm -rf "$APPLICATION_NAME.app"