Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.71 KB | None | 0 0
  1. func getThoseCookies() -> [String:String] {
  2. var storedCookies = [String:String]()
  3. let rawCookies = HTTPCookieStorage.shared.cookies(for:URL(string: "https://animeflv.net/")!)
  4. if let cookies = rawCookies {
  5. for x in cookies {
  6. if x.name == "cf_clearance" {
  7. storedCookies[x.name] = x.value
  8.  
  9. }
  10.  
  11. if x.name == "__cfduid" {
  12. storedCookies[x.name] = x.value
  13.  
  14. }
  15. }
  16. }
  17. return storedCookies
  18. }
  19.  
  20. }
  21.  
  22.  
  23. struct ultimosAnimes {
  24. var animeName: String
  25. var episode : String
  26. var imageNames: String
  27. var link : String
  28.  
  29.  
  30. static func lul( completion: @escaping ([ultimosAnimes],String)->()) {
  31.  
  32. let cf_clearance = UserDefaults.standard.string(forKey: "cf_clearance") ?? ""
  33.  
  34. let headers = ["device":"computer","cf_clearance":cf_clearance,"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.12 (KHTML, like Gecko) Version/11.1 Safari/605.1.12"]
  35. var epsArray = [ultimosAnimes]()
  36. Alamofire.request("https://animeflv.net", headers: headers as? HTTPHeaders ).responseString { response in
  37. if let content: String = response.result.value {
  38. if response.response?.statusCode == 200 {
  39.  
  40. do {
  41. print(response.response?.statusCode)
  42.  
  43. let doc: Document = try SwiftSoup.parse(content)
  44. let link: Elements = try doc.getElementsByClass("fa-play")
  45. for x in link {
  46. if try x.text() != "EN EMISION" {
  47. let link: String = try x.attr("href")
  48. let imageElement: Elements = try x.select("img[src]")
  49. let image : String = try imageElement.attr("src").description
  50. let episodes : Elements = try x.select("span")
  51. let title : Elements = try x.select("strong")
  52. let imageFixed : String = "https://animeflv.net\(image)"
  53. let newCategory = ultimosAnimes(animeName:try title.text(), episode:try episodes.text(), imageNames: imageFixed, link: link)
  54. epsArray.append(newCategory)
  55.  
  56. }
  57.  
  58. }
  59. completion(epsArray,"Yes")
  60. } catch {
  61. print(response.response?.statusCode as Any)
  62.  
  63. print("ther was an error xd")
  64. }
  65. } else {
  66. completion(epsArray,"No")
  67. print(response.response?.statusCode)
  68. //status code different 200
  69. }
  70.  
  71. }
  72.  
  73. }
  74. }
  75.  
  76. }
  77.  
  78.  
  79. struct searchedAnimes {
  80.  
  81. let animeName : String
  82. let animeType : String
  83. let animeImage : String
  84. let animeRate : String
  85. let animeLink : String
  86.  
  87. static func searchAnimes(typed: String, completion: @escaping ([searchedAnimes],String)->()) {
  88.  
  89. let cf_clearance = UserDefaults.standard.string(forKey: "cf_clearance") ?? ""
  90.  
  91. let headers = ["device":"computer","cf_clearance":cf_clearance,"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.12 (KHTML, like Gecko) Version/11.1 Safari/605.1.12"]
  92. var searched = [searchedAnimes]()
  93. Alamofire.request("https://animeflv.net/browse?q=\(typed)", headers: headers as? HTTPHeaders ).responseString { response in
  94. if let content: String = response.result.value {
  95. if response.response?.statusCode == 200 {
  96.  
  97. do {
  98. let doc: Document = try SwiftSoup.parse(content)
  99. let link: Elements = try doc.getElementsByClass("Anime alt B")
  100.  
  101. for x in link {
  102. var type = String()
  103. let titleElement : Element = try x.getElementsByClass("Title").first()!
  104. let imageElement: Elements = try x.select("img[src]")
  105. let animeLinkElement : Elements = try x.select("a[href]")
  106. let animeLink: String = try animeLinkElement.attr("href").description
  107. let image : String = try imageElement.attr("src").description
  108. let rateElement : Elements = try x.getElementsByClass("Vts fa-star")
  109. let typeElement : Elements = try x.getElementsByClass("Type tv")
  110. let typeMoviewElement : Elements = try x.getElementsByClass("Type movie")
  111.  
  112. if try typeElement.text() == "Anime Anime" {
  113. let animeElement : Element = typeElement.get(0)
  114.  
  115. type = try animeElement.text()
  116.  
  117. } else if try typeMoviewElement.text() == "Película Película" {
  118. let typeMovie : Element = typeMoviewElement.get(0)
  119.  
  120. type = try typeMovie.text()
  121.  
  122.  
  123. } else {
  124.  
  125. type = "OVA"
  126. }
  127. let newCategory = searchedAnimes(animeName: try titleElement.text(), animeType: type, animeImage: image, animeRate: "\(try rateElement.text()) ⭐️", animeLink: "\(animeLink)")
  128. searched.append(newCategory)
  129. }
  130.  
  131. completion(searched,"Yes")
  132.  
  133.  
  134. } catch {
  135.  
  136. print("Error")
  137.  
  138.  
  139. }
  140.  
  141.  
  142.  
  143. } else {
  144. completion(searched,"No")
  145. print("error need bypass")
  146. print(response.response?.statusCode as Any)
  147.  
  148. } // If status code is different 200
  149. } // First If
  150. } // Alamofire
  151. } // Func
  152. } // Esctruct Final
  153.  
  154. struct AnimePage {
  155.  
  156. let animeName : String
  157. let animeDesc : String
  158. let animeImage : String
  159. let numberEps : String
  160. let animeTipo : String
  161. let animeEstado : String
  162. let generos : [String]
  163. let calificacion : String
  164.  
  165. static func animeMainPage(link: String, completion: @escaping (AnimePage,String)->()) {
  166.  
  167. let cf_clearance = UserDefaults.standard.string(forKey: "cf_clearance") ?? ""
  168.  
  169. let headers = ["device":"computer","cf_clearance":cf_clearance,"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.12 (KHTML, like Gecko) Version/11.1 Safari/605.1.12"]
  170. Alamofire.request("https://animeflv.net\(link)", headers: headers as? HTTPHeaders ).responseString { response in
  171. if let content: String = response.result.value {
  172. if response.response?.statusCode == 200 {
  173. do {
  174. var epsNumber = String()
  175. var generos = [String]()
  176. var type = String()
  177. let doc: Document = try SwiftSoup.parse(content)
  178.  
  179. let imageElement: Elements = try doc.getElementsByClass("image")
  180. let imageSelect: Elements = try imageElement.select("img[src]")
  181. let image : String = try imageSelect.attr("src").description
  182.  
  183. let descriptionElement : Elements = try doc.getElementsByClass("Description")
  184.  
  185. let titleElement : Elements = try doc.select("h2.Title")
  186.  
  187. let typeElement : Elements = try doc.getElementsByClass("Type tv")
  188.  
  189. let typeMoview : Elements = try doc.getElementsByClass("Type movie")
  190.  
  191. let rate: Elements = try doc.getElementsByClass("vtprmd")
  192.  
  193. let estado : Elements = try doc.getElementsByClass("fa-tv")
  194.  
  195. let theGender : Elements = try doc.getElementsByClass("Nvgnrs")
  196.  
  197. let genderLinks : Elements = try theGender.select("a[href]")
  198.  
  199. let scriptTags = try! doc.select("script")
  200. for tag: Element in scriptTags {
  201. for node : DataNode in tag.dataNodes() {
  202. let myText = node.getWholeData()
  203. //let p = Pattern.compile("(src=\")([^/]*//[^\">]*)")
  204. let p = Pattern.compile("var episodes = (.*?),")
  205. let m: Matcher = p.matcher(in: myText)
  206. while( m.find() )
  207. {
  208. if m.count >= 1 {
  209. let group1 = m.group(1)
  210.  
  211. let epsArray = group1!.components(separatedBy: ",")
  212. epsNumber = epsArray[0]
  213. }
  214. }
  215. }
  216. }
  217.  
  218. for x in genderLinks {
  219.  
  220. let theLink: String = try x.attr("href").description
  221.  
  222. let filteredLink = theLink.replacingOccurrences(of: "/browse?genre=", with: "")
  223.  
  224. generos.append(filteredLink)
  225.  
  226.  
  227. }
  228.  
  229. if try typeElement.text() == "Anime" {
  230.  
  231. type = "Anime"
  232.  
  233. } else if try typeMoview.text() == "Película" {
  234.  
  235. type = "Película"
  236.  
  237.  
  238. } else {
  239.  
  240. type = "OVA"
  241. }
  242.  
  243. //let rateElement : Elements = try x.getElementsByClass("Vts fa-star")
  244. let newCategory = AnimePage(animeName:try titleElement.text(), animeDesc: try descriptionElement.text(), animeImage: "https://animeflv.net\(image)", numberEps: epsNumber, animeTipo: type, animeEstado: try estado.text(), generos: generos, calificacion: try rate.text())
  245.  
  246.  
  247.  
  248. completion(newCategory,"yes")
  249.  
  250.  
  251. } catch {
  252.  
  253. print("Error")
  254.  
  255.  
  256. }
  257.  
  258. } else {
  259. let lol = AnimePage(animeName:"lol", animeDesc: "lol", animeImage: "lol", numberEps: "lol", animeTipo: "lol", animeEstado: "lol", generos: ["lol"], calificacion: "lol")
  260. print("Bypass fucked")
  261. completion(lol,"No")
  262. // Response is not 200
  263. }
  264. }
  265. } // End almofire func
  266. }
  267. } // End struct
  268.  
  269. struct sub : Decodable {
  270. let SUB : [links]
  271. }
  272.  
  273. struct links: Decodable {
  274. let server : String
  275. let code : String
  276. }
  277.  
  278. struct AnimeLinks {
  279.  
  280.  
  281. static func aviableLinks(link: String, completion: @escaping ([[String:String]],String)->()) {
  282. let cf_clearance = UserDefaults.standard.string(forKey: "cf_clearance") ?? ""
  283.  
  284. let headers = ["device":"computer","cf_clearance":cf_clearance,"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.12 (KHTML, like Gecko) Version/11.1 Safari/605.1.12"]
  285. Alamofire.request(link, headers: headers as? HTTPHeaders ).responseString { response in
  286. if let content: String = response.result.value {
  287. if response.response?.statusCode == 200 {
  288.  
  289. do {
  290. let doc: Document = try SwiftSoup.parse(content)
  291. let scriptTags = try! doc.select("script")
  292. for tag: Element in scriptTags {
  293. for node : DataNode in tag.dataNodes() {
  294. let myText = node.getWholeData()
  295.  
  296. if myText.contains("var latest_seen = 0;") {
  297.  
  298. let J1 = myText.components(separatedBy: "var videos = ")
  299. let J2 = J1[1].components(separatedBy: "$(document).ready(function()")
  300. let J3 = J2[0].components(separatedBy: ";")
  301.  
  302.  
  303.  
  304.  
  305. let data = J3[0].data(using: .utf8)!
  306.  
  307. do {
  308. let theLinks = try JSONDecoder().decode(sub.self, from: data)
  309. var linksDict = [[String:String]]()
  310. for x in theLinks.SUB {
  311.  
  312. let linkCode = ["name":x.server,"link":x.code]
  313.  
  314. linksDict.append(linkCode)
  315.  
  316. }
  317.  
  318. completion(linksDict,"Yes")
  319.  
  320. } catch {
  321.  
  322. }
  323.  
  324. }
  325.  
  326. }
  327. }
  328.  
  329.  
  330. } catch {
  331.  
  332. print("Error")
  333.  
  334.  
  335. }
  336.  
  337.  
  338.  
  339. } else {
  340. print("error need bypass")
  341. completion([["":""]],"No")
  342. print(response.response?.statusCode as Any)
  343.  
  344. } // If status code is different 200
  345. } // First If
  346. } // Alamofire
  347. } // Func
  348. } // Esctruct Final
  349.  
  350.  
  351. struct fembedData : Decodable {
  352. let data : [fembedLinks]
  353. }
  354.  
  355. struct fembedLinks: Decodable {
  356. let file : String
  357. let label : String
  358. }
  359.  
  360. struct fembed {
  361.  
  362.  
  363. static func aviableLinks(link: String, completion: @escaping ([[String:String]],String)->()) {
  364.  
  365.  
  366.  
  367. let fixedLink = link.replacingOccurrences(of: "/v/", with: "/api/source/")
  368.  
  369. Alamofire.request(fixedLink, method:.post).responseString { response in
  370. if let content: String = response.result.value {
  371. if response.response?.statusCode == 200 {
  372.  
  373. do {
  374. var diccionarioLink = [[String:String]]()
  375.  
  376. let data = content.data(using: .utf8)!
  377.  
  378.  
  379. let theLinks = try JSONDecoder().decode(fembedData.self, from: data)
  380.  
  381. for x in theLinks.data{
  382.  
  383. let linkCode = ["label":x.label,"link":x.file]
  384. diccionarioLink.append(linkCode)
  385.  
  386. }
  387.  
  388. completion(diccionarioLink,"Yes")
  389. } catch {
  390.  
  391. print("Error")
  392.  
  393.  
  394. }
  395.  
  396.  
  397.  
  398. } else {
  399. print("error need bypass")
  400. completion([["":""]],"No")
  401. print(response.response?.statusCode as Any)
  402.  
  403. } // If status code is different 200
  404. } // First If
  405. } // Alamofire
  406. } // Func
  407.  
  408. }
  409.  
  410.  
  411.  
  412. struct rapidVideo {
  413.  
  414. static func aviableLinks(link: String, completion: @escaping ([[String:String]],String)->()) {
  415.  
  416. Alamofire.request(link).responseString { response in
  417. if let content: String = response.result.value {
  418. if response.response?.statusCode == 200 {
  419.  
  420. do {
  421. var diccionarioLink = [[String:String]]()
  422.  
  423. let doc: Document = try SwiftSoup.parse(content)
  424. let sourceTags = try! doc.select("source")
  425. for tag: Element in sourceTags {
  426.  
  427. let link : String = try tag.attr("src").description
  428. let label : String = try tag.attr("label").description
  429. let dict = ["label":label,"link":link]
  430. diccionarioLink.append(dict)
  431. }
  432.  
  433. completion(diccionarioLink,"Yes")
  434.  
  435.  
  436.  
  437. } catch {
  438.  
  439. print("Error")
  440.  
  441.  
  442. }
  443.  
  444.  
  445.  
  446. } else {
  447. print("error need bypass")
  448. completion([[String:String]](),"No")
  449. print(response.response?.statusCode as Any)
  450.  
  451. } // If status code is different 200
  452. } // First If
  453. } // Alamofire
  454. } // Func
  455.  
  456. }
  457.  
  458. struct natsukiLink: Decodable {
  459. let file : String
  460. }
  461.  
  462. struct natsuki {
  463.  
  464. static func aviableLinks(link: String, completion: @escaping (String,String)->()) {
  465.  
  466. let cf_clearance = UserDefaults.standard.string(forKey: "cf_clearance") ?? ""
  467.  
  468. let headers = ["device":"computer","cf_clearance":cf_clearance,"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.12 (KHTML, like Gecko) Version/11.1 Safari/605.1.12"]
  469. let fixedLink = link.replacingOccurrences(of: "embed", with: "check")
  470.  
  471. Alamofire.request(fixedLink, headers: headers as? HTTPHeaders ).responseString { response in
  472. if let content: String = response.result.value {
  473. if response.response?.statusCode == 200 {
  474.  
  475. do {
  476.  
  477.  
  478. let data = content.data(using: .utf8)!
  479.  
  480.  
  481. let theLinks = try JSONDecoder().decode(natsukiLink.self, from: data)
  482.  
  483. print(theLinks.file)
  484.  
  485.  
  486. completion(theLinks.file,"Yes")
  487.  
  488.  
  489.  
  490. } catch {
  491.  
  492. print("Error")
  493.  
  494.  
  495. }
  496.  
  497.  
  498.  
  499. } else {
  500. print("error need bypass")
  501. completion("no","No")
  502. print(response.response?.statusCode as Any)
  503.  
  504. } // If status code is different 200
  505. } // First If
  506. } // Alamofire
  507. } // Func
  508.  
  509. }
  510.  
  511. struct okruArray : Decodable {
  512. let videos : [okruQuality]
  513. }
  514.  
  515. struct okruQuality: Decodable {
  516. let name : String
  517. let url : String
  518. }
  519.  
  520. struct okru {
  521.  
  522. static func aviableLinks(link: String, completion: @escaping ([[String : String]],String)->()) {
  523.  
  524. Alamofire.request(link).responseString { response in
  525. if let content: String = response.result.value {
  526. if response.response?.statusCode == 200 {
  527.  
  528. do {
  529. var linksDict = [[String : String]]()
  530. let doc: Document = try SwiftSoup.parse(content)
  531. let scriptTags : Elements = try doc.select("[data-module=\"OKVideo\"]")
  532. var link : String = try scriptTags.attr("data-options").description
  533.  
  534. let J1 = link.components(separatedBy: "\\\"videos")
  535. let J2 = J1[1].components(separatedBy: ",\\\"metadataEmbedded")
  536.  
  537. link = "{\"videos" + J2[0].replacingOccurrences(of: "\\"", with: "\"").replacingOccurrences(of: "\\u0026", with: "&").replacingOccurrences(of: "\\", with: "").replacingOccurrences(of: "%3B", with: ";") + "}"
  538.  
  539.  
  540.  
  541. let data = link.data(using: .utf8)!
  542.  
  543. let theLinks = try JSONDecoder().decode(okruArray.self, from: data)
  544.  
  545. for x in theLinks.videos {
  546.  
  547. let dict = ["Quality": x.name, "link": x.url]
  548. linksDict.append(dict)
  549.  
  550. }
  551.  
  552. print(linksDict)
  553. completion(linksDict,"Yes")
  554.  
  555.  
  556.  
  557. } catch {
  558.  
  559. print("Error")
  560.  
  561.  
  562. }
  563.  
  564.  
  565.  
  566. } else {
  567. print("error need bypass")
  568. completion([[String : String]](),"No")
  569. print(response.response?.statusCode as Any)
  570.  
  571. } // If status code is different 200
  572. } // First If
  573. } // Alamofire
  574. } // Func
  575.  
  576.  
  577.  
  578.  
  579. }
  580.  
  581. extension WKWebView {
  582.  
  583. private var httpCookieStore: WKHTTPCookieStore { return WKWebsiteDataStore.default().httpCookieStore
  584. }
  585.  
  586.  
  587. func getCookies(for domain: String? = nil, completion: @escaping ([String : String])->()) {
  588. var cookieDict = [String : String]()
  589. httpCookieStore.getAllCookies { cookies in
  590. for cookie in cookies {
  591. if let domain = domain {
  592. if cookie.domain.contains(domain) {
  593. cookieDict[cookie.name] = cookie.value as String
  594. }
  595. } else {
  596. cookieDict[cookie.name] = cookie.value as String
  597. }
  598. }
  599. completion(cookieDict)
  600. }
  601. }
  602. }
  603.  
  604.  
  605.  
  606. extension WKWebView {
  607. func evaluate(script: String, completion: @escaping (String) -> ()) {
  608.  
  609. evaluateJavaScript(script) { (result, error) in
  610. if error == nil {
  611. if result != nil {
  612. completion(result as! String)
  613. }
  614. } else {
  615. completion(error as! String)
  616. }
  617. }
  618. }
  619. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement