class Xomphimhay: domain = "https://xem-phim.tv" api = "https://xem-phim.tv/api/v1/episodes/%s/player" def __init__(self): self.request = Request(session=True) if helper.has_file_path( 'xomphimhay.bin') and helper.get_last_modified_time_file( 'xomphimhay.bin') + 43200 < int(time.time()): helper.remove_file('xomphimhay.bin') if helper.has_file_path('xomphimhay.bin'): with open(helper.get_file_path('xomphimhay.bin')) as f: self.request.set_session(pickle.load(f)) cookies_jar = self.request.get_request_session().cookies cookies_jar.set('vietnamese', 'true', domain='xomphimhay.com', path='/') def updateSession(self): if not helper.has_file_path('xomphimhay.bin'): helper.write_file('xomphimhay.bin', '') with open(helper.get_file_path('xomphimhay.bin'), 'wb+') as f: pickle.dump(self.request.get_request_session(), f) def getCategory(self): response = self.request.get(self.domain) return Category().get(response), Channel().get(response) def getChannel(self, channel, page=1): channel = channel.replace(self.domain, "") if page > 1: url = '%s%s/trang-%d/' % (self.domain, channel, page) else: url = '%s%s' % (self.domain, channel) response = self.request.get(url) return Channel().get(response) def getMovie(self, url): response = self.request.get(url) url = Movie().get_movie_link(response) response = self.request.get(url) self.updateSession() return Movie().get(response, url) def getLink(self, movie): # https://xomphimhay.com/api/v1/episodes/1155146/player url, mid = movie['link'].split('|') response = self.request.get(self.api % mid) return Movie().get_link(response, self.domain, self.request, url) def search(self, text, page=1): url = "%s/tim-kiem/%s/" % (self.domain, urllib.quote_plus(text)) response = self.request.get(url) return Channel().get(response)
class Fcine: domain = "https://fcine.net" token = None member_id = None def __init__(self): if not helper.getSetting('fcine.username'): # helper.message('Please login to fcine.net', 'Login Required') self.username = '******' self.password = '******' else: self.username = helper.getSetting('fcine.username'), self.password = helper.getSetting('fcine.password'), self.request = Request(header={ 'User-Agent': 'Mozilla/5.0', 'origin': 'https://fcine.net', 'referer': 'https://fcine.net/login/', }, session=True) if helper.has_file_path( 'fcine.bin' ) and helper.get_last_modified_time_file('fcine.bin') + 43200 < int( time.time()): helper.remove_file('fcine.bin') if helper.has_file_path('fcine.bin'): self.request.set_session( pickle.loads(helper.read_file('fcine.bin', True))) else: self.login() def updateSession(self): helper.write_file('fcine.bin', pickle.dumps(self.request.get_request_session()), True) def get_token(self, response=None): if not response: response = self.request.get('%s/page/help/' % self.domain) self.token = re.search('csrfKey: "(.*)",', response).group(1) self.member_id = re.search('memberID: (\d+)', response).group(1) return self.token, self.member_id def login(self): self.get_token() params = { 'login__standard_submitted': 1, 'csrfKey': self.token, 'auth': self.username, 'password': self.password, 'remember_me': 1, 'remember_me_checkbox': 1 } response = self.request.post('%s/login/' % self.domain, params) self.updateSession() return response def getCategory(self): response = self.request.get(self.domain) movies = Channel().get(response, 1) movies['page'] = 1 return Category().get(response), movies def getChannel(self, channel, page=1): url = '%s?alphabet=all&page=%d' % (channel, page) response = self.request.get(url) return Channel().get(response, page) def getMovie(self, url): # self.get_token() # response = self.login( # self.username, # self.password, # {'referer': id}) return Movie().get(self.request.get(url)) def getLink(self, url): response = self.request.get(url) return Movie().get_link(response) def search(self, text): url = "%s/findContent/" % self.domain params = {'term': text} response = self.request.post(url, params) return Channel().get(response, 1)
class Hdvietnam: domain = "http://www.hdvietnam.com" def __init__(self): if not helper.getSetting('hdvietnam.username'): self.username = '******' self.password = '******' else: self.username = helper.getSetting('hdvietnam.username') self.password = helper.getSetting('hdvietnam.password') self.request = Request(header={ 'User-Agent': 'Mozilla/5.0', 'Origin': self.domain, 'Referer': self.domain }, session=True) if helper.has_file_path( 'hdvietnam.bin' ) and helper.get_last_modified_time_file('hdvietnam.bin') + 3600 < int( time.time()): helper.remove_file('hdvietnam.bin') if helper.has_file_path('hdvietnam.bin'): self.request.set_session( pickle.loads(helper.read_file('hdvietnam.bin', True))) else: self.login() def login(self, redirect='/'): params = { 'login': self.username, 'register': 0, 'password': self.password, 'remember': 1, 'cookie_check': 1, '_xfToken': '', 'redirect': redirect } response = self.request.post('%s/login/login' % self.domain, params) helper.write_file('hdvietnam.bin', pickle.dumps(self.request.get_request_session()), True) return response def thank(self, mid, token, postLink): params = { '_xfRequestUri': '/%s' % mid, '_xfToken': token, '_xfNoRedirect': 1, '_xfResponseType': 'json' } for v in postLink: url = '{}/{}'.format(self.domain, v) url = url.replace('likes', 'like') self.request.post(url, params=params) def getCategory(self): return Category().get(), None def getChannel(self, channel, page=1): channel = channel.replace(self.domain, "") if page > 1: url = '%s%spage-%d' % (self.domain, channel, page) else: url = '%s%s' % (self.domain, channel) response = Request().get(url) return Channel().get(response, page=page, domain=self.domain) def getMovie(self, movie): url = '%s/%s' % (self.domain, movie) self.login(url) response = self.request.get(url) parser = Movie() result, postLinks = parser.is_block(response) if result is True: token = re.findall(r'name="_xfToken"\svalue="(.*?)"\s', response) self.thank(movie, token[0], postLinks) response = self.request.get(url) parser.is_block(response) result = parser.get(response, url) return result def search(self, text): text = quote_plus(text) params = { 'keywords': text, 'nodes[]': [337, 116, 150, 33, 57, 123], 'type': 'post', 'order': 'date', 'child_nodes': 1 } url = "%s/search/search" % self.domain response = Request().post(url, params=params) return Channel().get_search(response)