Ejemplo n.º 1
0
 def get_videos(self, media):
     from dudehere.routines.vfs import VFSClass
     vfs = VFSClass()
     if media == 'tv':
         path = vfs.join(self.save_directory, "TV Shows")
     else:
         path = vfs.join(self.save_directory, "Movies")
     videos = vfs.ls(path, pattern="(avi|mp4|mkv|mov|flv)$")[1]
     return path, videos
Ejemplo n.º 2
0
	def get_videos(self, media):
		from dudehere.routines.vfs import VFSClass
		vfs = VFSClass()
		if media == 'tv':
			path = vfs.join(self.save_directory, "TV Shows")
		else:
			path = vfs.join(self.save_directory, "Movies")
		videos = vfs.ls(path, pattern="(avi|mp4|mkv|mov|flv)$")[1]
		return path, videos
Ejemplo n.º 3
0
	def get_cached_file(self, title, season=None, episode=None, year=None):
		from dudehere.routines.vfs import VFSClass
		vfs = VFSClass()
		if season is not None:
			for extension in ['avi', 'mkv', 'mov', 'mp4', 'flv']:
				path = vfs.join(self.save_directory, "TV Shows/%s %sx%s.%s" % (title, season, episode, extension))
				if vfs.exists(path):
					return path
			return False
		else:
			for extension in ['avi', 'mkv', 'mov', 'mp4', 'flv']:
				path = vfs.join(self.save_directory,"Movies/%s (%s).%s" % (title, year, extension))
				if vfs.exists(path):
					return path
			return False
Ejemplo n.º 4
0
	def get_cached_file(self, title, season=None, episode=None, year=None):
		from dudehere.routines.vfs import VFSClass
		vfs = VFSClass()
		if season is not None:
			for extension in ['avi', 'mkv', 'mov', 'mp4', 'flv']:
				path = vfs.join(self.save_directory, "TV Shows/%s %sx%s.%s" % (title, season, episode, extension))
				if vfs.exists(path):
					return path
			return False
		else:
			for extension in ['avi', 'mkv', 'mov', 'mp4', 'flv']:
				path = vfs.join(self.save_directory,"Movies/%s (%s).%s" % (title, year, extension))
				if vfs.exists(path):
					return path
			return False
Ejemplo n.º 5
0
	def clear_cache(self):
		if ADDON.get_setting('clear_cache') == "true":
			vfs = VFSClass()
			ADDON.log("Clearing download cache...")
			files = vfs.ls(WORK_DIRECTORY, pattern='state$|temp$|tail$')
			for foo in files[1]:
				path = vfs.join(WORK_DIRECTORY, foo)
				vfs.rm(path, quiet=True)
		ADDON.log("Clearing orphaned jobs...")
		self.DB.connect()
		self.DB.execute("UPDATE queue SET status=-1 WHERE status=2")
		self.DB.commit()
Ejemplo n.º 6
0
	def onPlayBackStopped(self):
		if get_property('streaming.started'):
			vfs = VFSClass()
			ADDON.log("Now I'm stopped")
			ADDON.log("Abort: %s" % get_property('file_id'))
			set_property("abort_id", get_property('file_id'))
			tail_file = vfs.join(WORK_DIRECTORY, get_property('file_id') + '.tail')
			if vfs.exists(tail_file):
				vfs.rm(tail_file,quiet=True)
			time.sleep(0.25)
			clear_property("abort_id")
			clear_property('playing')
			clear_property('file_id')
			clear_property('streaming.started')
			clear_property("streaming.total_bytes")
			clear_property("streaming.total_blocks")
			clear_property("streaming.file_id")
			clear_property("streaming.abort")
			clear_property("streaming.seek_block")
			clear_property('streaming.tail_requested')
Ejemplo n.º 7
0
    HANDLE_ID = int(sys.argv[1])
    ADDON_URL = sys.argv[0]
    PLUGIN_URL = sys.argv[0] + sys.argv[2]
except:
    HANDLE_ID = -1
    ADDON_URL = 'plugin://%s' % addon.getAddonInfo('name')
    PLUGIN_URL = 'plugin://%s' % addon.getAddonInfo('name')

ADDON_ID = addon.getAddonInfo('id')
ADDON_NAME = addon.getAddonInfo('name')
VERSION = addon.getAddonInfo('version')
ROOT_PATH = addon.getAddonInfo('path').decode('utf-8')
DATA_PATH = addon.getAddonInfo('profile').decode('utf-8')
ARTWORK = ROOT_PATH + '/resources/artwork/'
SHARED_ARTWORK = vfs.join(
    "special://home",
    "addons/script.module.dudehere.routines/resources/artwork/")

ALLOWED_CALLERS = [
    'plugin.video.theroyalwe', 'plugin.video.ugottoo', 'plugin.video.redbeard',
    'service.walter.sobchak'
]

try:
    KODI_LANGUAGE = xbmc.getLanguage().capitalize()
except:
    KODI_LANGUAGE = 'English'
LANGUAGE_PATH = VFSClass().join(ROOT_PATH,
                                'resources/language/' + KODI_LANGUAGE)

Ejemplo n.º 8
0
import time
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'))
Ejemplo n.º 9
0
import pickle
from Queue import Queue
from threading import Thread
from urlparse import urljoin, urlparse
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
from dudehere.routines import cloudflare
from dudehere.routines.plugin import ProgressBar, Plugin

vfs = VFSClass()
DECAY = 2
SCRAPER_DIR = os.path.dirname(os.path.abspath(__file__))
COOKIE_PATH = vfs.join(DATA_PATH, 'cookies')
CACHE_PATH = vfs.join(DATA_PATH, 'cache')
if not vfs.exists(COOKIE_PATH): vfs.mkdir(COOKIE_PATH, recursive=True)
if not vfs.exists(CACHE_PATH): vfs.mkdir(CACHE_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:
Ejemplo n.º 10
0
			do_init = True
		if do_init:
			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':
Ejemplo n.º 11
0
			self.execute('DELETE FROM version WHERE 1')
			self.execute('INSERT INTO version(db_version) VALUES(?)', [self.db_version])
			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
Ejemplo n.º 12
0
import json
import xbmcgui
from dudehere.routines import *
from dudehere.routines.vfs import VFSClass
vfs = VFSClass()
AUTH_PIN = ADDON.get_setting('auth_pin')

NUMBER_THREADS = int(ADDON.get_setting('thread_number'))
if ADDON.get_setting('enable_custom_work') == "true":
	WORK_DIRECTORY = ADDON.get_setting('work_directory')
else:
	WORK_DIRECTORY = vfs.join(DATA_PATH, 'work')

if ADDON.get_setting('enable_custom_output') == "true":
	CACHE_DIRECTORY = ADDON.get_setting('save_directory')
else:
	CACHE_DIRECTORY = vfs.join(DATA_PATH, 'downloads')

MOVIE_DIRECTORY = vfs.join(CACHE_DIRECTORY, 'Movies')
TVSHOW_DIRECTORY = vfs.join(CACHE_DIRECTORY, 'TV Shows')

BLOCK_SIZE = int(float(ADDON.get_setting('block_size')) * 1024 * 1024)
FRAME_SIZE = int(ADDON.get_setting('frame_size'))
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')
Ejemplo n.º 13
0
import hashlib
import time
import base64
import datetime
import socket
from os import curdir, sep
from urlparse import urlparse
from SocketServer import ThreadingMixIn
from BaseHTTPServer import BaseHTTPRequestHandler
from dudehere.routines import *
from dudehere.routines.vfs import VFSClass
from resources.lib.common import *
from resources.lib.database import *
from resources.lib.transmogrifier import OutputHandler, Transmogrifier
vfs = VFSClass()
LOG_FILE = vfs.join(DATA_PATH, 'access.log')
ADDON.log("Setting Access log to: %s" % LOG_FILE)

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

class RequestHandler(BaseHTTPRequestHandler):
	blacklist = ['transmogrified', 'transmogrifier', 'local']
import json
import unicodedata
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,