diff --git a/.gitignore b/.gitignore
index ba74660..7bade20 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,7 +14,6 @@ dist/
downloads/
eggs/
.eggs/
-lib/
lib64/
parts/
sdist/
diff --git a/resources/lib/__init__.py b/resources/lib/__init__.py
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/resources/lib/__init__.py
@@ -0,0 +1 @@
+
diff --git a/resources/lib/cinehub.py b/resources/lib/cinehub.py
new file mode 100644
index 0000000..c5ccf44
--- /dev/null
+++ b/resources/lib/cinehub.py
@@ -0,0 +1,184 @@
+# -*- coding: utf-8 -*-
+
+'''
+ Genesis Add-on
+ Copyright (C) 2015 Ratan Sunder Parai
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+'''
+
+from urllib import urlopen
+from BeautifulSoup import BeautifulSoup
+import requests
+from movieinfo import movieinfo
+from tmdbscraper import tmdbscraper
+import xbmcaddon
+import urllib
+import base64
+
+class cinehub:
+
+ # Perform login task and return request.session() object
+ def login(self):
+
+ # Login url
+ loginUrl = "http://www.cinehub24.com/auth/login"
+
+ myAddon = xbmcaddon.Addon()
+
+
+ USERNAME = myAddon.getSetting("user_name")
+ PASSWORD = myAddon.getSetting("user_password")
+
+
+
+ if USERNAME == "" or PASSWORD == "" :
+ myAddon.openSettings()
+
+ session_requests = requests.session()
+
+ # Create payload
+ payload = {
+ "user_name": USERNAME,
+ "user_password": PASSWORD,
+ 'doLogin' : 'true',
+ 'submit' : 'Login'
+ }
+
+ # Perform login
+ result = session_requests.post(loginUrl, data = payload, headers = dict(referer = loginUrl))
+
+ # check if login successfull
+ # TODO
+
+ return session_requests
+
+ def getAllMovieList(self, session, page=1):
+ URL = "http://www.cinehub24.com/net/section/english-movie/onlineContent.aspx/" + str(page)
+ return self.getMovieList(session, URL, page)
+
+
+ def getMovieList(self, session, URL, page = 1 ):
+ # url for all movie list
+ #URL = "http://www.cinehub24.com/net/section/english-movie/onlineContent.aspx/" + str(page)
+
+ # get the html
+ result = session.get(URL).content
+
+ # make it ready for scraping
+ soup = BeautifulSoup(result)
+
+ # get movie list box
+ movieBoxs = soup.findAll('div', attrs={'class': ['movie-list-hldr' , 'movie-list-hldr movielist-active']})
+
+
+
+ movielist = []
+
+ for movieBox in movieBoxs:
+ # movie link
+ movieLink = movieBox.find('div', attrs={'class' : 'movie-list-des'}).find('a')
+ #print movieLink['href']
+
+ # get real movie links
+ links = movieLink['href']
+
+ minfo = movieinfo()
+
+ minfo.url = self.getVideoLink(session, links)
+
+ #self.getVideoLink(session, links)
+
+ if minfo.url :
+
+ #movie title
+ movieTitle = movieLink.find('b')
+ #print movieTitle.string
+ minfo.name = movieTitle.string
+
+ movielist.append(minfo)
+
+
+ return movielist
+
+ def getVideoLink(self, session, URL):
+
+ # get html file
+ result = session.get(URL).content
+
+ # create soup for scrapping
+ soup = BeautifulSoup(result)
+
+ linkTable = soup.find('table', attrs={'id': 'travel'})
+
+ tdId = 1
+ for i in range(1,5):
+ try:
+ tempName = linkTable.find('tbody').findAll('td')[tdId].find('b').string
+ #print tempName
+
+ # video file format mp4, avi and mkv and not containing sample
+ if tempName.find('.mp4') != -1 or tempName.find('.avi') != -1 or tempName.find('.mkv') != -1 :
+ if tempName.lower().find("sample") != -1 or tempName.lower().find("trailer") != -1 :
+ pass
+ else:
+ tempVideoLink = linkTable.find('tbody').findAll('td')[tdId+3].find('a')['href']
+ result = session.get(tempVideoLink).content
+ soup = BeautifulSoup(result)
+ link = soup.find('div', attrs={'id': 'download_btn_r'}).find('a')['href']
+ return link.strip()
+ else:
+ tdId += 5
+ except:
+ break
+
+
+ def getMyMovieInfoList(self, page = 1):
+ session = self.login()
+ mymovieinfos = self.getAllMovieList(session, page)
+
+ movieList = []
+
+ print "getting mymovieinfo..."
+ for mymovieinfo in mymovieinfos:
+ tScrap = tmdbscraper()
+ mymovieinfo = tScrap.getMovieInfo(mymovieinfo)
+
+ if mymovieinfo.imdbid:
+ movieList.append(mymovieinfo)
+ print mymovieinfo.title
+
+ return movieList
+
+ def searchMovies(self, searchTerm):
+ searchTerm = searchTerm.strip()
+ searchTerm = searchTerm.replace(" ", "+")
+ URL = "http://www.cinehub24.com/search/{0}.aspx".format(searchTerm)
+
+ session = self.login()
+ mymovieinfos = self.getMovieList(session, URL, 1)
+
+ movieList = []
+ for mymovieinfo in mymovieinfos:
+ tScrap = tmdbscraper()
+ mymovieinfo = tScrap.getMovieInfo(mymovieinfo)
+ try:
+ if mymovieinfo.imdbid:
+ movieList.append(mymovieinfo)
+ print mymovieinfo.title
+ except:
+ pass
+ return movieList
+
+
diff --git a/resources/lib/movieinfo.py b/resources/lib/movieinfo.py
new file mode 100644
index 0000000..d5fada4
--- /dev/null
+++ b/resources/lib/movieinfo.py
@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+
+'''
+ Genesis Add-on
+ Copyright (C) 2015 Ratan Sunder Parai
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+'''
+
+class movieinfo:
+ name = ''
+ url = ''
+ title = ''
+ imdbid = ''
+ genres = ''
+ rating = ''
+ runtime = ''
+ tagline = ''
+ totalVote = ''
+ releaseDate = ''
+ overview = ''
+ posterImage = ''
+ backdropImage = ''
+ year = ''
+ writer = ''
+ director = ''
+ castandrole = []
\ No newline at end of file
diff --git a/resources/lib/tmdbscraper.py b/resources/lib/tmdbscraper.py
new file mode 100644
index 0000000..b69ca3e
--- /dev/null
+++ b/resources/lib/tmdbscraper.py
@@ -0,0 +1,137 @@
+# -*- coding: utf-8 -*-
+
+'''
+ Genesis Add-on
+ Copyright (C) 2015 Ratan Sunder Parai
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+'''
+
+from urllib import urlopen
+import json
+from movieinfo import movieinfo
+import re
+import urllib
+import base64
+
+
+class tmdbscraper:
+
+ API = base64.urlsafe_b64decode("N2U5MTYyMjM1NWFjZjI3NDM3ODQzNjcyMzRlOTFhODU=")
+
+ def searchMovie(self, name, year=""):
+ URL = "http://api.themoviedb.org/3/search/movie?api_key="+self.API+"&query=" + urllib.quote_plus(name) + "&year=" + str(year)
+ result = urlopen(URL)
+ moviejson = json.load(result)
+
+ if moviejson['total_results'] == 0 :
+ return 0
+
+ return moviejson['results'][0]['id']
+
+ def getMovieInfo(self, myMovieInfo):
+ name = myMovieInfo.name
+
+ # delete first bracket ( from name
+ name = name.replace("(", "")
+ name = name.replace(")", "")
+ name = name.replace("[", "")
+ name = name.replace("]", "")
+ name = name.replace(".", " ")
+ name = name.replace("_", " ")
+ name = name.replace("{", "")
+ name = name.replace("}", "")
+
+ mgroup = re.split('[0-9]{4}', name)
+
+ if mgroup :
+ searchName = mgroup[0].strip()
+ else:
+ searchName = name
+
+ m = re.search('[0-9]{4}', name)
+ if m:
+ searchYear = m.group(0)
+ else:
+ searchYear = ""
+
+ # invoke search
+ movieId = self.searchMovie(searchName, searchYear)
+
+ print "tmdbid : " + str(movieId)
+
+ if movieId == 0 :
+ return myMovieInfo
+
+ DETAIL_URL = "http://api.themoviedb.org/3/movie/"+ str(movieId) +"?api_key="+self.API
+
+ CREDIT_URL = "http://api.themoviedb.org/3/movie/"+ str(movieId) + "/credits?api_key="+ self.API
+
+ result = urlopen(DETAIL_URL)
+ mJson = json.load(result)
+
+ creditResult = urlopen(CREDIT_URL)
+ cJson = json.load(creditResult)
+
+ # encode strings to "utf-8" becuase kodi give error while showing unicode character
+ myMovieInfo.title = mJson['title'].encode('utf-8')
+ print "title = " + myMovieInfo.title
+ myMovieInfo.imdbid = mJson['imdb_id'].encode('utf-8')
+ myMovieInfo.totalVote = mJson['vote_average'] #rating
+ myMovieInfo.rating = mJson['vote_count']
+ myMovieInfo.overview = mJson['overview'].encode('utf-8')
+ myMovieInfo.runtime = mJson['runtime'] * 60
+ myMovieInfo.tagline = mJson['tagline'].encode('utf-8') #short description
+ myMovieInfo.releaseDate = mJson['release_date'].encode('utf-8')
+ tYear = mJson['release_date'].encode('utf-8')
+ myMovieInfo.year = tYear[0:4]
+
+ gList = []
+ for genre in mJson['genres'] :
+ gList.append(genre['name'].encode('utf-8'))
+
+ genres = ' / '.join(gList)
+
+ myMovieInfo.genres = genres
+
+ try:
+ myMovieInfo.posterImage = "https://image.tmdb.org/t/p/w396" + mJson['poster_path']
+ except:
+ pass
+ try:
+ myMovieInfo.backdropImage = "https://image.tmdb.org/t/p/w780" + mJson['backdrop_path']
+ except:
+ pass
+
+ try:
+ myMovieInfo.director = cJson['crew'][0]['name']
+ myMovieInfo.writer = cJson['crew'][1]['name']
+ except:
+ pass
+
+ listCast = cJson['cast']
+
+ castName = []
+ castChar = []
+ for cast in listCast:
+ name = cast['name']
+ castName.append(name)
+ character = cast['character']
+ castChar.append(character)
+
+ myMovieInfo.castandrole = zip(castName, castChar)
+
+ return myMovieInfo
+
+
\ No newline at end of file