diff options
Diffstat (limited to 'Sora/Data/Booru/BooruManager.swift')
| -rw-r--r-- | Sora/Data/Booru/BooruManager.swift | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/Sora/Data/Booru/BooruManager.swift b/Sora/Data/Booru/BooruManager.swift index 8cf1ac6..0fb0256 100644 --- a/Sora/Data/Booru/BooruManager.swift +++ b/Sora/Data/Booru/BooruManager.swift @@ -56,6 +56,9 @@ class BooruManager: ObservableObject { case .gelbooru: domain = "gelbooru.com" + + case .danbooru: + domain = "danbooru.donmai.us" } } @@ -95,10 +98,16 @@ class BooruManager: ObservableObject { if Task.isCancelled { return } DispatchQueue.main.async { - let newPosts = Array(Set(BooruPostXMLParser(data: data, provider: self.provider).parse())) - .sorted { lhs, rhs in - lhs.id > rhs.id - } + let newPosts = Array( + Set( + self.flavor == .danbooru + ? DanbooruPostParser(data: data).parse() + : BooruPostXMLParser(data: data, provider: self.provider).parse() + ) + ) + .sorted { lhs, rhs in + lhs.id > rhs.id + } if newPosts.isEmpty { self.endOfData = true @@ -166,6 +175,11 @@ class BooruManager: ObservableObject { let tagString = tags.joined(separator: "+") switch flavor { + case .danbooru: + return URL( + string: "https://\(domain)/posts.json?page=\(page)&tags=\(tagString)" + ) + case .moebooru: return URL(string: "https://\(domain)/post.xml?page=\(page)&limit=\(limit)&tags=\(tagString)") @@ -184,6 +198,9 @@ class BooruManager: ObservableObject { case .gelbooru: URL(string: "https://\(domain)/index.php?page=dapi&s=tag&q=index&limit=\(limit)") + + case .danbooru: + nil } } |