Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'uri'
- require 'net/http'
- require 'base64'
- class Animeindoco
- def initialize
- @mirror = {}
- @post = {}
- @page = {}
- end
- def getUpdate(user, page=1)
- page = page.to_i
- if page <= 1
- page = 1
- link = 'http://animeindo.co/'
- else
- link = 'http://animeindo.co/page/' + page.to_s + '/'
- end
- uri = URI(link)
- res = Net::HTTP.get_response(uri).body
- data = res.scan(/<a href="(.*?)">\n<div class="newepisode">\n<span class="viewer">(.*?)<\/span>\n<div class="newepisodetitle"><h3>(.*?)<\/h3><\/div>/)
- newset = []
- num = 1
- for link, type, title in data
- newset << "<b>#{num}. #{title}</b>[<b>#{type}</b>] #{link}"
- num += 1
- end
- @page[user.downcase] = [page, data, 0]
- output_ = newset[0, 5].join("<br/>")
- text = "Current Page <b>#{page}</b><br/>#{output_}"
- return text
- end
- def next(user)
- if @page.key?(user.downcase)
- page, data, setpage = @page[user.downcase]
- setpage += 5
- if setpage >= data.length
- setpage = data.length - 5
- end
- newset = []
- num = 1
- for link, type, title in data
- newset << "<b>#{num}. #{title}</b>[<b>#{type}</b>] #{link}"
- num += 1
- end
- @page[user.downcase] = [page, data, setpage]
- output_ = newset[setpage, 5].join("<br/>")
- text = "Current Page <b>#{page}</b><br/>#{output_}"
- else
- text = "no post, try ,newai first :>"
- end
- return text
- end
- def back(user)
- if @page.key?(user.downcase)
- page, data, setpage = @page[user.downcase]
- setpage -= 5
- if setpage <= 0
- setpage = 0
- end
- newset = []
- num = 1
- for link, type, title in data
- newset << "<b>#{num}. #{title}</b>[<b>#{type}</b>] #{link}"
- num += 1
- end
- @page[user.downcase] = [page, data, setpage]
- output_ = newset[setpage, 5].join("<br/>")
- text = "Current Page <b>#{page}</b><br/>#{output_}"
- else
- text = "no post, try ,newai first :>"
- end
- return text
- end
- def genSid
- return [*('a'..'z'),*('0'..'9')].shuffle[0,8].join
- end
- def getMirror(link)
- uri = URI(link)
- res = Net::HTTP.get_response(uri).body
- lm = res.match(/<(IFRAME SRC|iframe src)="(.*?)"/).captures
- data = res.match(/<ul>(.*?)<\/ul>/im).captures
- if @post.key? link
- return @post[link]
- end
- @post[link] = []
- if data
- m = data[0]
- m1 = m.match(/<a><div class="titlecur">(.*?)<\/div><\/a>/).captures
- if lm and m1
- sid = genSid
- @mirror[sid] = lm[1]
- @post[link] << [sid, m1[0]]
- end
- m2 = m.scan(/<a href="(.*?)"><div class="titlemor">(.*?)<\/div><\/a>/)
- for l, t in m2
- getLinkMirror(link, l, t)
- end
- end
- return @post[link]
- end
- def getLinkMirror(link, linkmirror, title)
- uri = URI(link + linkmirror)
- res = Net::HTTP.get_response(uri).body
- lm2 = res.match(/<(IFRAME SRC|iframe src)="(.*?)"/).captures
- if lm2
- lm2 = lm2[1]
- sid = genSid
- @post[link] << [sid, title]
- @mirror[sid] = lm2
- end
- end
- def getDirectLink(sid)
- if @mirror.key?(sid)
- link = @mirror[sid]
- directlink = getDirrectLinkMirror(link)
- return directlink
- end
- end
- def getDirrectLinkMirror(link)
- if link.include? "animedesu"
- direct = animedesu(link)
- return direct
- elsif link.include? "mp4upload"
- direct = mp4upload(link)
- return direct
- elsif link.include? "savefile"
- direct = savefile(link)
- return direct
- elsif link.include? "videonest"
- direct = videonest(link)
- return direct
- elsif link.include? "yourupload"
- direct = yourupload(link)
- return direct
- elsif link.include? "openload"
- direct = openload(link)
- return direct
- else
- return link
- end
- end
- def httpsrequest(link)
- uri = URI(link)
- http = Net::HTTP.new(uri.host, uri.port)
- http.use_ssl = true
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
- request = Net::HTTP::Get.new(uri.request_uri)
- response = http.request(request)
- return response.body
- end
- def httprequest(link)
- uri = URI(link)
- http = Net::HTTP.new(uri.host, uri.port)
- request = Net::HTTP::Get.new(uri.request_uri)
- response = http.request(request)
- return response.body
- end
- def animedesu(link)
- link = link.split("url=")[1].split("&")[0].gsub("%3D", "=")
- link = Base64.decode64(link)
- return link
- end
- def savefile(link)
- data = httprequest(link)
- dl = ""
- dlink = data.scan(/,'(.*?)'.split\('|'\)\)\)/)
- if dlink
- dl = dlink[3][0].split("|")
- co = dl[0].split("'")[-1]
- lset = ([co] + dl[1, dl.length]).reject{|i| i == ""}
- set = []
- hset = []
- for d in lset
- if d == "file"
- break
- end
- set << d
- end
- for d in set
- if d == "provider"
- break
- end
- hset << d
- end
- path = (set - hset).reverse - ["provider"]
- domain = hset.reverse - ["http", "type"]
- #return path, domain
- dl = "http://#{domain.join(".")}:#{path[0]}/d/#{path[1]}/#{path[2, path.length].join(".")}"
- end
- return dl
- end
- def videonest(link)
- data = httprequest(link)
- dl = ""
- dlink = data.match(/file: "(.*?)",/)
- if dlink
- dl = dlink.captures[0]
- end
- return dl
- end
- def mp4upload(link)
- data = httpsrequest(link)
- dl = ""
- dlink = data.match(/"file": "(.*?)",/)
- if dlink
- dl = dlink.captures[0]
- end
- return dl
- end
- def openload(link)
- dl = link.gsub("embed", "f")
- return dl
- end
- def yourupload(link)
- link = link.gsub("http://", "https://")
- data = httpsrequest(link)
- dl = ""
- dlink = data.match(/<source type="(.*?)" src="(.*?)" data-title="(.*?)"\/>/)
- if dlink
- dl = "http://www.yourupload.com" + dlink.captures[1].split("?")[0]
- end
- return "Link: #{link.gsub('embed', 'watch')} <br/>or try this: #{dl}"
- end
- end
Add Comment
Please, Sign In to add comment