From aa37e2b493554bd8416578d6c01ef3e351dc3206 Mon Sep 17 00:00:00 2001 From: SoFranci <100066266+cranci1@users.noreply.github.com> Date: Sat, 17 Feb 2024 20:13:14 +0100 Subject: [PATCH] nekosapi added --- AnimeGen.xcodeproj/project.pbxproj | 4 + .../UserInterfaceState.xcuserstate | Bin 62894 -> 65445 bytes AnimeGen/APIs/Hmtai.swift | 2 +- AnimeGen/APIs/nekosapi.swift | 84 ++++++++++++++++++ AnimeGen/ViewController.swift | 7 +- README.md | 15 +++- 6 files changed, 106 insertions(+), 6 deletions(-) create mode 100644 AnimeGen/APIs/nekosapi.swift diff --git a/AnimeGen.xcodeproj/project.pbxproj b/AnimeGen.xcodeproj/project.pbxproj index 92bce26a..5ec402c8 100644 --- a/AnimeGen.xcodeproj/project.pbxproj +++ b/AnimeGen.xcodeproj/project.pbxproj @@ -14,6 +14,7 @@ 130A805C2B78C0300028985F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 130A805B2B78C0300028985F /* Assets.xcassets */; }; 130A805F2B78C0300028985F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 130A805D2B78C0300028985F /* LaunchScreen.storyboard */; }; 138661232B81216D0062AC91 /* Hmtai.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138661222B81216D0062AC91 /* Hmtai.swift */; }; + 138661252B8136DC0062AC91 /* nekosapi.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138661242B8136DC0062AC91 /* nekosapi.swift */; }; 13910EBE2B80D380009BF17E /* ImageExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13910EBD2B80D380009BF17E /* ImageExtensions.swift */; }; 13910EC02B80D396009BF17E /* UIExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13910EBF2B80D396009BF17E /* UIExtensions.swift */; }; 13910EC52B80D5A6009BF17E /* pic-re.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13910EC42B80D5A6009BF17E /* pic-re.swift */; }; @@ -33,6 +34,7 @@ 130A805E2B78C0300028985F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 130A80602B78C0300028985F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 138661222B81216D0062AC91 /* Hmtai.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Hmtai.swift; sourceTree = ""; }; + 138661242B8136DC0062AC91 /* nekosapi.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = nekosapi.swift; sourceTree = ""; }; 13910EBD2B80D380009BF17E /* ImageExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageExtensions.swift; sourceTree = ""; }; 13910EBF2B80D396009BF17E /* UIExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIExtensions.swift; sourceTree = ""; }; 13910EC42B80D5A6009BF17E /* pic-re.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "pic-re.swift"; sourceTree = ""; }; @@ -93,6 +95,7 @@ 13910ECA2B80D5C8009BF17E /* waifu-pics.swift */, 13910EC82B80D5C2009BF17E /* nekos-best.swift */, 138661222B81216D0062AC91 /* Hmtai.swift */, + 138661242B8136DC0062AC91 /* nekosapi.swift */, ); path = APIs; sourceTree = ""; @@ -191,6 +194,7 @@ 138661232B81216D0062AC91 /* Hmtai.swift in Sources */, 13910EC52B80D5A6009BF17E /* pic-re.swift in Sources */, 13910EC02B80D396009BF17E /* UIExtensions.swift in Sources */, + 138661252B8136DC0062AC91 /* nekosapi.swift in Sources */, 13910EC92B80D5C2009BF17E /* nekos-best.swift in Sources */, 13910EBE2B80D380009BF17E /* ImageExtensions.swift in Sources */, ); diff --git a/AnimeGen.xcodeproj/project.xcworkspace/xcuserdata/Francesco.xcuserdatad/UserInterfaceState.xcuserstate b/AnimeGen.xcodeproj/project.xcworkspace/xcuserdata/Francesco.xcuserdatad/UserInterfaceState.xcuserstate index 275bc6f07138cde2104b1405f56564d74ff32a9c..759f1cdfc39778b504819ab1431b2b1ad4ee0a3a 100644 GIT binary patch delta 32020 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 delta 30776 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 z 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 diff --git a/AnimeGen/APIs/Hmtai.swift b/AnimeGen/APIs/Hmtai.swift index 5a31583a..5dca0dd2 100644 --- a/AnimeGen/APIs/Hmtai.swift +++ b/AnimeGen/APIs/Hmtai.swift @@ -2,7 +2,7 @@ // Hmtai.swift // AnimeGen // -// Created by Francesco on 17/02/24. +// Created by cranci on 17/02/24. // import UIKit diff --git a/AnimeGen/APIs/nekosapi.swift b/AnimeGen/APIs/nekosapi.swift new file mode 100644 index 00000000..e52e98e9 --- /dev/null +++ b/AnimeGen/APIs/nekosapi.swift @@ -0,0 +1,84 @@ +// +// nekosapi.swift +// AnimeGen +// +// Created by cranci on 17/02/24. +// + +import UIKit + +extension ViewController { + + func loadImageAndTagsFromNekosapi() { + startLoadingIndicator() + + let rating = ["safe", "suggestive"] + let randomrating = rating.randomElement() ?? "safe" + + let apiEndpoint = "https://api.nekosapi.com/v3/images/random?limit=1&rating=\(randomrating)" + + guard let url = URL(string: apiEndpoint) else { + print("Invalid URL") + stopLoadingIndicator() + return + } + + var request = URLRequest(url: url) + request.httpMethod = "GET" + + let task = URLSession.shared.dataTask(with: request) { (data, response, error) in + DispatchQueue.main.async { + if let error = error { + print("Error: \(error)") + self.stopLoadingIndicator() + return + } + + guard let httpResponse = response as? HTTPURLResponse else { + print("Invalid HTTP response") + self.stopLoadingIndicator() + return + } + + guard httpResponse.statusCode == 200 else { + print("Invalid status code: \(httpResponse.statusCode)") + self.stopLoadingIndicator() + return + } + + do { + if let jsonData = data, + let jsonResponse = try? JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any], + let items = jsonResponse["items"] as? [[String: Any]], + let firstItem = items.first, + let imageUrlString = firstItem["image_url"] as? String, + let imageUrl = URL(string: imageUrlString), + let tagsArray = firstItem["tags"] as? [[String: Any]] { + + self.currentImageURL = imageUrlString + + let tags = tagsArray.compactMap { $0["name"] as? String } + + if let data = try? Data(contentsOf: imageUrl), let newImage = UIImage(data: data) { + self.imageView.image = newImage + self.animateImageChange(with: newImage) + + self.updateUIWithTags(tags) + + self.stopLoadingIndicator() + } else { + print("Failed to load image data.") + self.stopLoadingIndicator() + } + } else { + print("Failed to parse JSON response or missing necessary data.") + self.stopLoadingIndicator() + } + } + } + } + + task.resume() + } + +} diff --git a/AnimeGen/ViewController.swift b/AnimeGen/ViewController.swift index d279756d..98804fa2 100644 --- a/AnimeGen/ViewController.swift +++ b/AnimeGen/ViewController.swift @@ -209,6 +209,8 @@ class ViewController: UIViewController { loadImageFromWaifuPics() case "Hmtai": loadImagesFromHmtai() + case "Nekos api": + loadImageAndTagsFromNekosapi() default: break } @@ -250,6 +252,9 @@ class ViewController: UIViewController { case "Hmtai": lastImage = imageView.image loadImagesFromHmtai() + case "Nekos api": + lastImage = imageView.image + loadImageAndTagsFromNekosapi() default: break } @@ -259,7 +264,7 @@ class ViewController: UIViewController { @objc func apiButtonTapped() { let alertController = UIAlertController(title: "Select API", message: nil, preferredStyle: .actionSheet) - let apiOptions = ["Hmtai", "waifu.pics", "nekos.best", "waifu.im", "pic.re"] + let apiOptions = ["Nekos api", "Hmtai", "waifu.pics", "nekos.best", "waifu.im", "pic.re"] for option in apiOptions { let action = UIAlertAction(title: option, style: .default) { _ in self.apiButton.setTitle(option, for: .normal) diff --git a/README.md b/README.md index 1b43fb95..fe5d0449 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,21 @@ # AnimeGen -AnimeGen is an app made in Swift. This app is developed using the [pic.re api](https://doc.pic.re/), [waifu.im api](https://docs.waifu.im/), [nekos.best api](https://docs.nekos.best/), [waifu.pics api](https://waifu.pics/docs), [Hmtai api](https://hmtai.hatsunia.cfd/endpoints), Its purpose is to save, generate, and share images. - ---- +AnimeGen is an app made in Swift. This app is developed using public APIs. The app purpose is to save, generate, and share images. ## Compatibility Its Made to support any iOS/iPadOS device running iOS 13+ +## Supported APIs + +- [pic.re api](https://doc.pic.re/) +- [waifu.im api](https://docs.waifu.im/) +- [nekos.best api](https://docs.nekos.best/) +- [waifu.pics api](https://waifu.pics/docs) +- [Hmtai api](https://hmtai.hatsunia.cfd/endpoints) +- [Nekos api](https://nekosapi.com/docs) + ## Third Party Softwares - [SDWebImage](https://github.com/SDWebImage/SDWebImage) (.gif images saves for the gallery) - [NineAnimator](https://github.com/SuperMarcus/NineAnimator) (Launchscreen Idea/Base) -- [Nekidev](https://github.com/Nekidev/anime-api) (Helped me finding the Htmai api) \ No newline at end of file +- [Nekidev](https://github.com/Nekidev/anime-api) (Helped me finding the Htmai api)