Skip to content
This repository has been archived by the owner on Nov 14, 2024. It is now read-only.

Commit

Permalink
Various parser fixes (#245)
Browse files Browse the repository at this point in the history
* Fix Pantsudrive Parser
* Fix StreamSB parser
* Fix XStreamCDN Parser
* Fix FastStreamParser
  • Loading branch information
uttiya10 authored Apr 25, 2021
1 parent 8386e75 commit 49fa378
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 12 deletions.
14 changes: 11 additions & 3 deletions NineAnimator/Models/Anime Source/hanime.tv/HAnime+Featured.swift
Original file line number Diff line number Diff line change
Expand Up @@ -128,8 +128,16 @@ extension NASourceHAnime {
let tempUrl = try URL(string: url).tryUnwrap(.urlError)
let realUrl = "\(tempUrl.path)?quality=\(quality)"

return cdn == "cps"
? "https://i1.wp.com/static-assets.droidbuzz.top\(realUrl)"
: "https://i1.wp.com/dynamic-assets.imageg.top\(realUrl)"
if cdn == "cps" {
let cdns = [
"https://i1.wp.com/static-assets.airharte.top\(realUrl)",
"https://i1.wp.com/static-assets.akidoo.top\(realUrl)",
"https://i1.wp.com/static-assets.mobilius.top\(realUrl)"
]

return cdns.randomElement()!
}

return "https://i1.wp.com/dynamic-assets.imageg.top\(realUrl)"
}
}
4 changes: 3 additions & 1 deletion NineAnimator/Models/Media/Parser/FastStreamParser.swift
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,9 @@ class FastStreamParser: VideoProviderParser {
throw NineAnimatorError.providerError("Cannot find a streambale resource in the selected page")
}

guard let resourceUrl = URL(string: resourceUrlString) else {
guard let resourceUrl = URL(
string: resourceUrlString,
relativeTo: URL(string: "https://www1.animeultima.to")) else {
throw NineAnimatorError.urlError
}

Expand Down
8 changes: 4 additions & 4 deletions NineAnimator/Models/Media/Parser/PantsudriveParser.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import Foundation
class PantsudriveParser: VideoProviderParser {
var aliases: [String] { [] }

private static let apiURL = URL(string: "https://play.api-web.site/anime/videourl.php")!
private static let apiURL = URL(string: "https://gogo-stream.com/ajax.php")!

private func getVideoID(url: URL) -> String? {
guard let url = URLComponents(string: url.absoluteString) else {
Expand All @@ -33,7 +33,7 @@ class PantsudriveParser: VideoProviderParser {
}

private struct APIResponse: Codable {
let url: [PlaybackFiles]
let source: [PlaybackFiles]
}

private struct PlaybackFiles: Codable {
Expand Down Expand Up @@ -63,8 +63,8 @@ class PantsudriveParser: VideoProviderParser {
case .success(let response):
do {
let videoURLString = try response
.url
.first
.source
.last
.tryUnwrap(.decodeError("First Video URL"))
.file

Expand Down
22 changes: 20 additions & 2 deletions NineAnimator/Models/Media/Parser/StreamSBParser.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,31 @@ import Foundation
class StreamSBParser: VideoProviderParser {
var aliases: [String] { [] }

let videoSourceRegex = try! NSRegularExpression(
private let apiPath = URL(string: "https://streamsb.net/play")!

private let videoSourceRegex = try! NSRegularExpression(
pattern: #"file:"([^"]+)"#,
options: .caseInsensitive
)

private let embedIDRegex = try! NSRegularExpression(
pattern: #"(?<=embed-).+?(?=\.)"#,
options: .caseInsensitive
)

private func retrieveId(from path: String) -> String? {
self.embedIDRegex
.firstMatch(in: path)?
.first
}

func parse(episode: Episode, with session: Session, forPurpose purpose: Purpose, onCompletion handler: @escaping NineAnimatorCallback<PlaybackMedia>) -> NineAnimatorAsyncTask {
session.request(episode.target).responseString {
let videoID = retrieveId(from: episode.target.absoluteString) ?? episode.target.absoluteString
let requestURL = apiPath.appendingPathComponent(videoID)
return session.request(
requestURL,
parameters: [ "auto": 1, "referer": episode.link.identifier ]
).responseString {
response in
do {
let responseContent: String
Expand Down
4 changes: 2 additions & 2 deletions NineAnimator/Models/Media/Parser/XStreamParser.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import Foundation
class XStreamParser: VideoProviderParser {
var aliases: [String] { [ "XStream", "XStreamCDN", "fembed" ] }

private static let apiBaseSourceURL = URL(string: "https://www.xstreamcdn.com/api/source/")!
private static let apiBaseSourceURL = URL(string: "https://fcdn.stream/api/source/")!

private struct SourcesAPIResponse: Codable {
var success: Bool
Expand All @@ -51,7 +51,7 @@ class XStreamParser: VideoProviderParser {
return session.request(
XStreamParser.apiBaseSourceURL.appendingPathComponent(resourceIdentifier),
method: .post,
parameters: [ "r": "", "d": "www.xstreamcdn.com" ],
parameters: [ "r": "", "d": "fcdn.stream" ],
encoding: URLEncoding.default
) .responseJSON {
response in
Expand Down

0 comments on commit 49fa378

Please sign in to comment.