summaryrefslogtreecommitdiff
path: root/Sora/Data/Booru/BooruManager.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Sora/Data/Booru/BooruManager.swift')
-rw-r--r--Sora/Data/Booru/BooruManager.swift25
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
}
}