import unicodedata import xbmcgui import urlresolver import hashlib import random from urlparse import urljoin from dudehere.routines import * from dudehere.routines.threadpool import ThreadPool from addon.common.net import Net, HttpResponse from BeautifulSoup import BeautifulSoup from dudehere.routines.vfs import VFSClass vfs = VFSClass() DECAY = 2 SCRAPER_DIR = os.path.dirname(os.path.abspath(__file__)) COOKIE_PATH = vfs.join(DATA_PATH,'cookies') if not vfs.exists(COOKIE_PATH): vfs.mkdir(COOKIE_PATH, recursive=True) sys.path.append(SCRAPER_DIR) RD_HOSTS = [] if ADDON.get_setting('database_type')=='1': DB_NAME = ADDON.get_setting('database_mysql_name') DB_USER = ADDON.get_setting('database_mysql_user') DB_PASS = ADDON.get_setting('database_mysql_pass') DB_PORT = ADDON.get_setting('database_mysql_port') DB_ADDRESS = ADDON.get_setting('database_mysql_host') DB_TYPE = 'mysql' from dudehere.routines.database import MySQLDatabase as DatabaseAPI else: DB_TYPE = 'sqlite' DB_FILE = xbmc.translatePath(ADDON.get_setting('database_sqlite_file')) from dudehere.routines.database import SQLiteDatabase as DatabaseAPI
import xbmcaddon root = xbmcaddon.Addon('script.module.dudehere.routines').getAddonInfo('path') schema = vfs.join(root, 'resources/database/trakt.schema.sql') if vfs.exists(schema): full_sql = vfs.read_file(schema) sql_stmts = full_sql.split(';') for SQL in sql_stmts: if SQL is not None and len(SQL.strip()) > 0: self.execute(SQL) print SQL self.commit() self.execute('INSERT OR REPLACE INTO version(db_version) VALUES(?)', [self.db_version]) self.commit() DB_LOCATION = vfs.join('special://userdata', 'addon_data/script.module.dudehere.routines') if not vfs.exists(DB_LOCATION): vfs.mkdir(DB_LOCATION) DB_FILE = vfs.join('special://userdata', 'addon_data/script.module.dudehere.routines/trakt.db') DB = MyDatabaseAPI(DB_FILE, init_flag='database_sqlite_init.trakt', version_flag='database_sqlite_version.trakt', version=4, connect=True) backdrop_sizes = ["w300","w780","w1280","original"] logo_sizes = ["w45","w92","w154","w185","w300","w500","original"] poster_sizes = ["w92","w154","w185","w342","w500","w780","original"] profile_sizes = ["w45","w185","h632","original"] still_sizes = ["w92","w185","w300","original" ] class TMDB_API(): api_key = ADDON.get_setting('tmdb_key') def __init__(self): if self.api_key == 'dude': temp = vfs.read_file("special://home/addons/metadata.themoviedb.org/tmdb.xml") match = re.search('api_key=([^&]+)', temp)
RETRY_ATTEMPTS = int(ADDON.get_setting('retry_attempts')) WINDOW_PREFIX = 'transmogrifier' WEB_ROOT = vfs.join(ROOT_PATH, 'resources/www/html') CONTROL_PORT = int(ADDON.get_setting('control_port')) VALID_TOKENS = [] NOTIFICATION = ADDON.get_setting('notification') if NOTIFICATION == 'None': NOTIFICATION = False else: NOTIFICATION = NOTIFICATION.replace(" ", "_").lower() ADDON.log("Work Directory: %s" % WORK_DIRECTORY) ADDON.log("Cache Directory: %s" % CACHE_DIRECTORY) if not vfs.exists(DATA_PATH): vfs.mkdir(DATA_PATH) if not vfs.exists(CACHE_DIRECTORY): vfs.mkdir(CACHE_DIRECTORY) if not vfs.exists(WORK_DIRECTORY): vfs.mkdir(WORK_DIRECTORY) if not vfs.exists(MOVIE_DIRECTORY): vfs.mkdir(MOVIE_DIRECTORY) if not vfs.exists(TVSHOW_DIRECTORY): vfs.mkdir(TVSHOW_DIRECTORY) def set_property(k, v): k = "%s.%s" % (WINDOW_PREFIX, k) xbmcgui.Window(10000).setProperty(k, str(v)) def get_property(k): k = "%s.%s" % (WINDOW_PREFIX, k) p = xbmcgui.Window(10000).getProperty(k) if p == 'false': return False if p == 'true': return True return p
self.commit() def do_init(self): do_init = True try: test = self.query("SELECT 1 FROM version WHERE db_version >= ?", [self.db_version], silent=True) if test: do_init = False except: do_init = True return do_init DB_LOCATION = vfs.join('special://userdata', 'addon_data/script.module.dudehere.routines') if not vfs.exists(DB_LOCATION): vfs.mkdir(DB_LOCATION) DB_FILE = vfs.join('special://userdata', 'addon_data/script.module.dudehere.routines/trakt.db') DB = MyDatabaseAPI(DB_FILE, version=7, connect=True) class TraktError(Exception): def __init__(self, value): self.value = value def __str__(self): try: s = self.value except Exception,e: print "-----",type(e),e return s class TraktTempError(Exception):
import xbmcgui import urlresolver import hashlib from dudehere.routines import * from dudehere.routines.threadpool import ThreadPool from addon.common.net import Net from BeautifulSoup import BeautifulSoup from dudehere.routines.vfs import VFSClass from __builtin__ import None vfs = VFSClass() DECAY = 2 SCRAPER_DIR = os.path.dirname(os.path.abspath(__file__)) COOKIE_PATH = vfs.join(DATA_PATH, "cookies") if not vfs.exists(COOKIE_PATH): vfs.mkdir(COOKIE_PATH, recursive=True) sys.path.append(SCRAPER_DIR) from dudehere.routines.database import SQLiteDatabase as DatabaseAPI class MyDatabaseAPI(DatabaseAPI): def _initialize(self): SQL = """ CREATE TABLE IF NOT EXISTS "search_cache" ( "cache_id" INTEGER PRIMARY KEY AUTOINCREMENT, "hash" TEXT NOT NULL, "service" TEXT NOT NULL, "host" TEXT NOT NULL, "display" TEXT NOT NULL, "quality" INTEGER DEFAULT 3,