summaryrefslogtreecommitdiff
path: root/Sora/Data/Danbooru/DanbooruPostXMLParser.swift
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-02-20 19:37:12 -0800
committerFuwn <[email protected]>2025-02-20 19:37:12 -0800
commit2a20920675c82a64131b7c41d5c5288f718c7a0b (patch)
treef29285405cffe545489ecaf2fa825eec56410b29 /Sora/Data/Danbooru/DanbooruPostXMLParser.swift
parentfeat: Development commit (diff)
downloadsora-testing-2a20920675c82a64131b7c41d5c5288f718c7a0b.tar.xz
sora-testing-2a20920675c82a64131b7c41d5c5288f718c7a0b.zip
feat: Development commit
Diffstat (limited to 'Sora/Data/Danbooru/DanbooruPostXMLParser.swift')
-rw-r--r--Sora/Data/Danbooru/DanbooruPostXMLParser.swift98
1 files changed, 0 insertions, 98 deletions
diff --git a/Sora/Data/Danbooru/DanbooruPostXMLParser.swift b/Sora/Data/Danbooru/DanbooruPostXMLParser.swift
deleted file mode 100644
index 3d99465..0000000
--- a/Sora/Data/Danbooru/DanbooruPostXMLParser.swift
+++ /dev/null
@@ -1,98 +0,0 @@
-import Foundation
-
-class DanbooruPostXMLParser: NSObject, XMLParserDelegate {
- private var posts: [DanbooruPost] = []
- private var currentPost: DanbooruPost?
- private var parser: XMLParser
-
- init(data: Data) {
- parser = XMLParser(data: data)
-
- super.init()
-
- parser.delegate = self
- }
-
- func parse() -> [DanbooruPost] {
- parser.parse()
-
- return posts
- }
-
- func parser(_: XMLParser, didStartElement elementName: String, namespaceURI _: String?, qualifiedName _: String?, attributes attributeDict: [String: String] = [:]) {
- if elementName == "post" {
- guard let id = attributeDict["id"],
- let heightStr = attributeDict["height"],
- let height = Int(heightStr),
- let score = attributeDict["score"],
- let fileUrl = attributeDict["file_url"],
- let parentId = attributeDict["parent_id"],
- let sampleUrl = attributeDict["sample_url"],
- let sampleWidthStr = attributeDict["sample_width"],
- let sampleWidth = Int(sampleWidthStr),
- let sampleHeightStr = attributeDict["sample_height"],
- let sampleHeight = Int(sampleHeightStr),
- let previewUrl = attributeDict["preview_url"],
- let rating = attributeDict["rating"],
- let tags = attributeDict["tags"],
- let widthStr = attributeDict["width"],
- let width = Int(widthStr),
- let change = attributeDict["change"],
- let md5 = attributeDict["md5"],
- let creatorId = attributeDict["creator_id"],
- let hasChildrenStr = attributeDict["has_children"],
- let createdAt = attributeDict["created_at"],
- let status = attributeDict["status"],
- let source = attributeDict["source"],
- let hasNotesStr = attributeDict["has_notes"],
- let hasCommentsStr = attributeDict["has_comments"],
- let previewWidthStr = attributeDict["preview_width"],
- let previewWidth = Int(previewWidthStr),
- let previewHeightStr = attributeDict["preview_height"],
- let previewHeight = Int(previewHeightStr)
- else {
- return
- }
-
- currentPost = DanbooruPost(
- id: id,
- height: height,
- score: score,
- fileURL: URL(string: fileUrl)!,
- parentID: parentId,
- sampleURL: URL(string: sampleUrl)!,
- sampleWidth: sampleWidth,
- sampleHeight: sampleHeight,
- previewURL: URL(string: previewUrl)!,
- rating: rating,
- tags: tags.components(separatedBy: " ").filter { !$0.isEmpty },
- width: width,
- change: change,
- md5: md5,
- creatorID: creatorId,
- hasChildren: hasChildrenStr == "true",
- createdAt: createdAt,
- status: status,
- source: source,
- hasNotes: hasNotesStr == "true",
- hasComments: hasCommentsStr == "true",
- previewWidth: previewWidth,
- previewHeight: previewHeight
- )
- }
- }
-
- func parser(_: XMLParser, didEndElement elementName: String, namespaceURI _: String?, qualifiedName _: String?) {
- if elementName == "post", let post = currentPost {
- posts.append(post)
-
- currentPost = nil
- }
- }
-
- #if DEBUG
- func parser(_: XMLParser, parseErrorOccurred parseError: any Error) {
- print(parseError)
- }
- #endif
-}