From 84c6f363150155f5afcc7d2ae24800286d41b056 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 11 Feb 2012 23:06:14 +0100 Subject: [PATCH 001/102] Desktop files --- CouchPotato.py | 203 ++++++++++++++++++++++++++++++++++++++++++--------------- icon.icns | Bin 0 -> 69376 bytes icon.ico | Bin 0 -> 28858 bytes setup.py | 86 ++++++++++++++++++++++++ version.py | 1 + 5 files changed, 236 insertions(+), 54 deletions(-) mode change 100755 => 100644 CouchPotato.py create mode 100644 icon.icns create mode 100644 icon.ico create mode 100644 setup.py create mode 100644 version.py diff --git a/CouchPotato.py b/CouchPotato.py old mode 100755 new mode 100644 index 45f44cf..a07f235 --- a/CouchPotato.py +++ b/CouchPotato.py @@ -1,72 +1,167 @@ -#!/usr/bin/env python -from os.path import dirname -from signal import signal, SIGTERM +from threading import Thread +from wx.lib.softwareupdate import SoftwareUpdate import os -import subprocess import sys -import time +import webbrowser +import wx -# Root path -base_path = dirname(os.path.abspath(__file__)) +# Include proper dirs +if hasattr(sys, 'frozen'): + import libs + base_path = os.path.dirname(os.path.dirname(os.path.abspath(libs.__file__))) + print base_path +else: + base_path = os.path.dirname(os.path.abspath(__file__)) -# Insert local directories into path -sys.path.insert(0, os.path.join(base_path, 'libs')) +lib_dir = os.path.join(base_path, 'libs') -from couchpotato.core.logger import CPLog -log = CPLog(__name__) +sys.path.insert(0, base_path) +sys.path.insert(0, lib_dir) # Get options via arg from couchpotato.runner import getOptions -from couchpotato.core.helpers.variable import getDataDir -options = getOptions(base_path, sys.argv[1:]) -data_dir = getDataDir() - -def start(): - try: - args = [sys.executable] + [os.path.join(base_path, __file__)] + sys.argv[1:] - new_environ = os.environ.copy() - new_environ['cp_main'] = 'true' - - if os.name == 'nt': - for key, value in new_environ.iteritems(): - if isinstance(value, unicode): - new_environ[key] = value.encode('iso-8859-1') - - subprocess.call(args, env = new_environ) - return os.path.isfile(os.path.join(data_dir, 'restart')) - except KeyboardInterrupt, e: - pass - except Exception, e: - log.critical(e) - return 0 - from couchpotato.runner import runCouchPotato -def main(): - if os.environ.get('cp_main', 'false') == 'true': + + +class TaskBarIcon(wx.TaskBarIcon): + + TBMENU_OPEN = wx.NewId() + TBMENU_SETTINGS = wx.NewId() + TBMENU_ABOUT = wx.ID_ABOUT + TBMENU_EXIT = wx.ID_EXIT + + def __init__(self, frame): + wx.TaskBarIcon.__init__(self) + self.frame = frame + + icon = wx.Icon('icon.ico', wx.BITMAP_TYPE_ANY) + self.SetIcon(icon) + + self.Bind(wx.EVT_TASKBAR_LEFT_DCLICK, self.onTaskBarActivate) + + self.Bind(wx.EVT_MENU, self.onOpen, id = self.TBMENU_OPEN) + self.Bind(wx.EVT_MENU, self.onSettings, id = self.TBMENU_SETTINGS) + self.Bind(wx.EVT_MENU, self.onAbout, id = self.TBMENU_ABOUT) + self.Bind(wx.EVT_MENU, self.onTaskBarClose, id = self.TBMENU_EXIT) + + + def CreatePopupMenu(self): + menu = wx.Menu() + menu.Append(self.TBMENU_OPEN, "Open") + menu.Append(self.TBMENU_SETTINGS, "Settings") + menu.Append(self.TBMENU_ABOUT, "About") + menu.Append(self.TBMENU_EXIT, "Close") + return menu + + def onOpen(self, event): + url = self.frame.parent.getSetting('base_url') + webbrowser.open(url) + + def onSettings(self, event): + url = self.frame.parent.getSetting('base_url') + '/settings/' + webbrowser.open(url) + + def onAbout(self, event): + print 'onAbout' + + def onTaskBarActivate(self, evt): + if not self.frame.IsShown(): + self.frame.Show(True) + self.frame.Raise() + + def onTaskBarClose(self, evt): + wx.CallAfter(self.frame.Close) + + def makeIcon(self, img): + if "wxMSW" in wx.PlatformInfo: + img = img.Scale(16, 16) + elif "wxGTK" in wx.PlatformInfo: + img = img.Scale(22, 22) + + icon = wx.IconFromBitmap(img.CopyFromBitmap()) + return icon + + +class MainFrame(wx.Frame): + + def __init__(self, parent): + wx.Frame.__init__(self, None) + + self.parent = parent + self.tbicon = TaskBarIcon(self) + + +class WorkerThread(Thread): + + def __init__(self, desktop): + Thread.__init__(self) + self._desktop = desktop + + self.start() + + def run(self): + + args = ['--nogit', '--console_log']#, '--quiet'] + options = getOptions(base_path, args) + try: - runCouchPotato(options, base_path, sys.argv[1:]) + runCouchPotato(options, base_path, args, desktop = self._desktop) + except KeyboardInterrupt, e: + raise except Exception, e: - log.critical(e) - else: - while 1: - restart = start() - if not restart: - break + raise + finally: + pass - from couchpotato.core.event import fireEvent - fireEvent('app.crappy_shutdown', single = True) - time.sleep(1) - sys.exit() +class CouchPotatoApp(wx.App, SoftwareUpdate): -if __name__ == '__main__': + settings = {} + events = {} + restart = False + + def OnInit(self): - signal(SIGTERM, lambda signum, stack_frame: sys.exit(1)) + # Updater + base_url = 'http://couchpotatoapp.com/updates/' + self.InitUpdates(base_url, base_url + 'changelog.txt', + icon = wx.Icon('icon.ico')) - if options.daemon and options.pid_file and not os.environ.get('cp_main'): - from daemon import Daemon - daemon = Daemon(options.pid_file) - daemon.daemonize() + self.frame = MainFrame(self) + self.frame.Bind(wx.EVT_CLOSE, self.onClose) + + # CouchPotato thread + self.worker = WorkerThread(self) + + return True + + def setSettings(self, settings = {}): + self.settings = settings + + def getSetting(self, name): + return self.settings.get(name) + + def addEvents(self, events = {}): + for name in events.iterkeys(): + self.events[name] = events[name] + + def onClose(self, event): + onClose = self.events.get('onClose') + if self.events.get('onClose'): + onClose(event) + else: + self.afterShutdown() + + def afterShutdown(self, restart = False): + self.frame.Destroy() + self.restart = restart + + +if __name__ == '__main__': + app = CouchPotatoApp(redirect = False) + app.MainLoop() - main() + #path = os.path.join(sys.path[0].decode(sys.getfilesystemencoding()), sys.argv[0]) + #if app.restart: + # wx.Process.Open(sys.executable + ' ' + path) diff --git a/icon.icns b/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..04cbc86716a3ac1d1ed54800755fbbd9c52872ae GIT binary patch literal 69376 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 ToOBuJcI@k@zt(?s`se=xqhw`$ literal 0 HcmV?d00001 diff --git a/icon.ico b/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f93f9fbe77b7025a5dd2ed49855fcdd36ee60fbe GIT binary patch literal 28858 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

>Go}A*4f^PT%R)F}P{wcGg%zn)ha# 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 K|ETS+Q~v{Ai5s^7 literal 0 HcmV?d00001 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..c505c6b --- /dev/null +++ b/setup.py @@ -0,0 +1,86 @@ +from esky import bdist_esky +from setuptools import setup +import sys +import version +import os + + +# Include proper dirs +base_path = os.path.dirname(os.path.abspath(__file__)) +lib_dir = os.path.join(base_path, 'libs') + +sys.path.insert(0, base_path) +sys.path.insert(0, lib_dir) + + + +# Windows +if sys.platform == "win32": + import py2exe + + FREEZER = 'py2exe' + FREEZER_OPTIONS = dict( + compressed = 0, + optimize = 0, + bundle_files = 3, + dll_excludes = [ + 'MSVCP90.dll', + 'mswsock.dll', + 'powrprof.dll', + 'USP10.dll', + ], + packages = ['couchpotato', 'libs'], + includes = [ + 'telnetlib', + 'xml.etree.ElementTree', + 'xml.etree.cElementTree', + 'xml.dom', + 'xml.dom.minidom', + ], + ) + exeICON = 'icon.ico' + + +# OSX +elif sys.platform == "darwin": + import py2app + + FREEZER = 'py2app' + FREEZER_OPTIONS = dict( + argv_emulation = False, + iconfile = 'icon.icns', + plist = dict( + LSUIElement = True, + ), + packages = ['couchpotato', 'libs'], + includes = [ + 'telnetlib', + 'xml.etree.ElementTree', + 'xml.etree.cElementTree', + 'xml.dom', + 'xml.dom.minidom', + ], + ) + exeICON = None + +# Common +NAME = "CouchPotato" +APP = [bdist_esky.Executable("CouchPotato.py", gui_only = True, icon = exeICON,)] +DATA_FILES = ['icon.ico'] +ESKY_OPTIONS = dict( + freezer_module = FREEZER, + freezer_options = FREEZER_OPTIONS, + bundle_msvcrt = True, +) + + +# Build the app and the esky bundle +setup( + name = NAME, + scripts = APP, + version = version.VERSION, + data_files = DATA_FILES, + options = dict(bdist_esky = ESKY_OPTIONS), +) + + diff --git a/version.py b/version.py new file mode 100644 index 0000000..f424186 --- /dev/null +++ b/version.py @@ -0,0 +1 @@ +VERSION = '0.5' From 44dd8d9b9671c65079034b69f3852dcb5a2ff175 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 19 Feb 2012 12:37:25 +0100 Subject: [PATCH 002/102] Merge lists, not overwrite --- couchpotato/core/helpers/variable.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/couchpotato/core/helpers/variable.py b/couchpotato/core/helpers/variable.py index c3a9980..f38cf39 100644 --- a/couchpotato/core/helpers/variable.py +++ b/couchpotato/core/helpers/variable.py @@ -34,6 +34,8 @@ def mergeDicts(a, b): else: if isDict(current_src[key]) and isDict(current_dst[key]): stack.append((current_dst[key], current_src[key])) + elif isinstance(current_src[key], list) and isinstance(current_dst[key], list): + current_dst[key].extend(current_src[key]) else: current_dst[key] = current_src[key] return dst From d03f711d691ea5c3277f79f75b8ede689298d1cc Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 19 Feb 2012 12:45:22 +0100 Subject: [PATCH 003/102] kwargs in file.download for urlopen --- couchpotato/core/plugins/file/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/couchpotato/core/plugins/file/main.py b/couchpotato/core/plugins/file/main.py index ba84baa..dad6bdd 100644 --- a/couchpotato/core/plugins/file/main.py +++ b/couchpotato/core/plugins/file/main.py @@ -29,7 +29,7 @@ class FileManager(Plugin): from flask.helpers import send_from_directory return send_from_directory(cache_dir, filename) - def download(self, url = '', dest = None, overwrite = False): + def download(self, url = '', dest = None, overwrite = False, urlopen_kwargs = {}): if not dest: # to Cache dest = os.path.join(Env.get('cache_dir'), '%s.%s' % (md5(url), getExt(url))) @@ -38,7 +38,7 @@ class FileManager(Plugin): return dest try: - filedata = self.urlopen(url) + filedata = self.urlopen(url, **urlopen_kwargs) except: return False From 3e2d4c5d7bba2ff3b70727d70d1f71fa85dfc8b3 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 19 Feb 2012 12:48:54 +0100 Subject: [PATCH 004/102] Initial trailer support --- couchpotato/core/plugins/trailer/__init__.py | 34 ++++++++++++++++++ couchpotato/core/plugins/trailer/main.py | 32 +++++++++++++++++ couchpotato/core/providers/trailer/base.py | 8 +++++ .../core/providers/trailer/hdtrailers/main.py | 40 ++++++++++------------ 4 files changed, 92 insertions(+), 22 deletions(-) create mode 100644 couchpotato/core/plugins/trailer/__init__.py create mode 100644 couchpotato/core/plugins/trailer/main.py diff --git a/couchpotato/core/plugins/trailer/__init__.py b/couchpotato/core/plugins/trailer/__init__.py new file mode 100644 index 0000000..49b0cb9 --- /dev/null +++ b/couchpotato/core/plugins/trailer/__init__.py @@ -0,0 +1,34 @@ +from .main import Trailer + +def start(): + return Trailer() + +config = [{ + 'name': 'trailer', + 'groups': [ + { + 'tab': 'metadata', + 'name': 'trailer', + 'options': [ + { + 'name': 'enabled', + 'label': 'Search and download trailers', + 'default': False, + 'type': 'enabler', + }, + { + 'name': 'quality', + 'default': '720p', + 'type': 'dropdown', + 'values': [('1080P', '1080p'), ('720P', '720p'), ('480P', '480p')], + }, + { + 'name': 'automatic', + 'default': False, + 'type': 'bool', + 'description': 'Automaticly search & download for movies in library', + }, + ], + }, + ], +}] diff --git a/couchpotato/core/plugins/trailer/main.py b/couchpotato/core/plugins/trailer/main.py new file mode 100644 index 0000000..8f8e4ab --- /dev/null +++ b/couchpotato/core/plugins/trailer/main.py @@ -0,0 +1,32 @@ +from couchpotato.core.event import addEvent, fireEvent +from couchpotato.core.helpers.variable import getExt +from couchpotato.core.logger import CPLog +from couchpotato.core.plugins.base import Plugin +import os + +log = CPLog(__name__) + + +class Trailer(Plugin): + + def __init__(self): + addEvent('renamer.after', self.searchSingle) + + def searchSingle(self, group): + + if self.isDisabled() or len(group['files']['trailer']) > 0: return + + trailers = fireEvent('trailer.search', group = group, merge = True) + + for trailer in trailers.get(self.conf('quality'), []): + destination = '%s-trailer.%s' % (self.getRootName(group), getExt(trailer)) + if not os.path.isfile(destination): + fireEvent('file.download', url = trailer, dest = destination, urlopen_kwargs = {'headers': {'User-Agent': 'Quicktime'}}, single = True) + else: + log.debug('Trailer already exists: %s' % destination) + + # Download first and break + break + + def getRootName(self, data = {}): + return os.path.join(data['destination_dir'], data['filename']) diff --git a/couchpotato/core/providers/trailer/base.py b/couchpotato/core/providers/trailer/base.py index 17d2e5c..338ca9b 100644 --- a/couchpotato/core/providers/trailer/base.py +++ b/couchpotato/core/providers/trailer/base.py @@ -1,5 +1,13 @@ +from couchpotato.core.event import addEvent +from couchpotato.core.logger import CPLog from couchpotato.core.providers.base import Provider +log = CPLog(__name__) + class TrailerProvider(Provider): + type = 'trailer' + + def __init__(self): + addEvent('trailer.search', self.search) diff --git a/couchpotato/core/providers/trailer/hdtrailers/main.py b/couchpotato/core/providers/trailer/hdtrailers/main.py index 5fe476d..e662876 100644 --- a/couchpotato/core/providers/trailer/hdtrailers/main.py +++ b/couchpotato/core/providers/trailer/hdtrailers/main.py @@ -1,4 +1,5 @@ from BeautifulSoup import SoupStrainer, BeautifulSoup +from couchpotato.core.helpers.variable import mergeDicts from couchpotato.core.logger import CPLog from couchpotato.core.providers.trailer.base import TrailerProvider from string import letters, digits @@ -16,47 +17,40 @@ class HDTrailers(TrailerProvider): } providers = ['apple.ico', 'yahoo.ico', 'moviefone.ico', 'myspace.ico', 'favicon.ico'] - def find(self, movie): + def search(self, group): - movie_name = movie['library']['titles'][0]['title'] + movie_name = group['library']['titles'][0]['title'] - url = self.url['api'] % self.movieUrlName(movie_name) - try: - data = self.urlopen(url) - except: - return {} + url = self.urls['api'] % self.movieUrlName(movie_name) + data = self.getCache('hdtrailers.%s' % group['library']['identifier'], url) + + result_data = {} - p480 = [] - p720 = [] - p1080 = [] did_alternative = False for provider in self.providers: results = self.findByProvider(data, provider) # Find alternative if results.get('404') and not did_alternative: - results = self.findViaAlternative(movie_name) + results = self.findViaAlternative(group) did_alternative = True - p480.extend(results.get('480p')) - p720.extend(results.get('720p')) - p1080.extend(results.get('1080p')) + result_data = mergeDicts(result_data, results) - return {'480p':p480, '720p':p720, '1080p':p1080} + return result_data - def findViaAlternative(self, movie): + def findViaAlternative(self, group): results = {'480p':[], '720p':[], '1080p':[]} - url = "%s?%s" % (self.url['backup'], urlencode({'s':movie})) - try: - data = self.urlopen(url) - except: - return results + movie_name = group['library']['titles'][0]['title'] + + url = "%s?%s" % (self.url['backup'], urlencode({'s':movie_name})) + data = self.getCache('hdtrailers.alt.%s' % group['library']['identifier'], url) try: tables = SoupStrainer('div') html = BeautifulSoup(data, parseOnlyThese = tables) - result_table = html.findAll('h2', text = re.compile(movie)) + result_table = html.findAll('h2', text = re.compile(movie_name)) for h2 in result_table: if 'trailer' in h2.lower(): @@ -88,6 +82,8 @@ class HDTrailers(TrailerProvider): break if 'trailer' in trtext and not 'clip' in trtext and provider in trtext: nr = 0 + if 'trailer' not in tr.find('span', 'standardTrailerName').text.lower(): + continue resolutions = tr.findAll('td', attrs = {'class':'bottomTableResolution'}) for res in resolutions: results[str(res.a.contents[0])].insert(0, res.a['href']) From d4c9469c1aae8be24203a07b9ad2607a0768e7c7 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 19 Feb 2012 12:53:55 +0100 Subject: [PATCH 005/102] Remove nfo when not renaming as .orig.nfo --- couchpotato/core/plugins/renamer/main.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/couchpotato/core/plugins/renamer/main.py b/couchpotato/core/plugins/renamer/main.py index 72b0927..b67214f 100644 --- a/couchpotato/core/plugins/renamer/main.py +++ b/couchpotato/core/plugins/renamer/main.py @@ -6,7 +6,7 @@ from couchpotato.core.helpers.request import jsonified from couchpotato.core.helpers.variable import getExt, mergeDicts from couchpotato.core.logger import CPLog from couchpotato.core.plugins.base import Plugin -from couchpotato.core.settings.model import Library +from couchpotato.core.settings.model import Library, File from couchpotato.environment import Env import os import re @@ -123,6 +123,9 @@ class Renamer(Plugin): # Move nfo depending on settings if file_type is 'nfo' and not self.conf('rename_nfo'): log.debug('Skipping, renaming of %s disabled' % file_type) + if self.conf('clean_up'): + for current_file in group['files'][file_type]: + remove_files.append(current_file) continue # Subtitle extra @@ -301,11 +304,15 @@ class Renamer(Plugin): # Remove files for src in remove_files: + + if isinstance(src, File): + src = src.path + log.info('(fake) Removing "%s"' % src) # Remove matching releases for release in remove_releases: - log.info('(fake) Removing release %s' % release) + log.info('(fake) Removing release %s' % release.identifier) # Search for trailers etc fireEventAsync('renamer.after', group) From 1def62b1b10b8e8fe09a36e60d83ccfebe7939aa Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 19 Feb 2012 17:13:37 +0100 Subject: [PATCH 006/102] new Desktop runner --- CouchPotato.py | 288 +++++++++++++++++++++++++-------------------------------- Desktop.py | 188 +++++++++++++++++++++++++++++++++++++ setup.py | 2 +- 3 files changed, 313 insertions(+), 165 deletions(-) create mode 100644 Desktop.py diff --git a/CouchPotato.py b/CouchPotato.py index a07f235..88ba343 100644 --- a/CouchPotato.py +++ b/CouchPotato.py @@ -1,167 +1,127 @@ -from threading import Thread -from wx.lib.softwareupdate import SoftwareUpdate +#!/usr/bin/env python +from logging import handlers +from os.path import dirname +import logging import os +import signal +import subprocess import sys -import webbrowser -import wx - - -# Include proper dirs -if hasattr(sys, 'frozen'): - import libs - base_path = os.path.dirname(os.path.dirname(os.path.abspath(libs.__file__))) - print base_path -else: - base_path = os.path.dirname(os.path.abspath(__file__)) - -lib_dir = os.path.join(base_path, 'libs') - -sys.path.insert(0, base_path) -sys.path.insert(0, lib_dir) - -# Get options via arg -from couchpotato.runner import getOptions -from couchpotato.runner import runCouchPotato - - -class TaskBarIcon(wx.TaskBarIcon): - - TBMENU_OPEN = wx.NewId() - TBMENU_SETTINGS = wx.NewId() - TBMENU_ABOUT = wx.ID_ABOUT - TBMENU_EXIT = wx.ID_EXIT - - def __init__(self, frame): - wx.TaskBarIcon.__init__(self) - self.frame = frame - - icon = wx.Icon('icon.ico', wx.BITMAP_TYPE_ANY) - self.SetIcon(icon) - - self.Bind(wx.EVT_TASKBAR_LEFT_DCLICK, self.onTaskBarActivate) - - self.Bind(wx.EVT_MENU, self.onOpen, id = self.TBMENU_OPEN) - self.Bind(wx.EVT_MENU, self.onSettings, id = self.TBMENU_SETTINGS) - self.Bind(wx.EVT_MENU, self.onAbout, id = self.TBMENU_ABOUT) - self.Bind(wx.EVT_MENU, self.onTaskBarClose, id = self.TBMENU_EXIT) - - - def CreatePopupMenu(self): - menu = wx.Menu() - menu.Append(self.TBMENU_OPEN, "Open") - menu.Append(self.TBMENU_SETTINGS, "Settings") - menu.Append(self.TBMENU_ABOUT, "About") - menu.Append(self.TBMENU_EXIT, "Close") - return menu - - def onOpen(self, event): - url = self.frame.parent.getSetting('base_url') - webbrowser.open(url) - - def onSettings(self, event): - url = self.frame.parent.getSetting('base_url') + '/settings/' - webbrowser.open(url) - - def onAbout(self, event): - print 'onAbout' - - def onTaskBarActivate(self, evt): - if not self.frame.IsShown(): - self.frame.Show(True) - self.frame.Raise() - - def onTaskBarClose(self, evt): - wx.CallAfter(self.frame.Close) - - def makeIcon(self, img): - if "wxMSW" in wx.PlatformInfo: - img = img.Scale(16, 16) - elif "wxGTK" in wx.PlatformInfo: - img = img.Scale(22, 22) - - icon = wx.IconFromBitmap(img.CopyFromBitmap()) - return icon - - -class MainFrame(wx.Frame): - - def __init__(self, parent): - wx.Frame.__init__(self, None) - - self.parent = parent - self.tbicon = TaskBarIcon(self) - - -class WorkerThread(Thread): - - def __init__(self, desktop): - Thread.__init__(self) - self._desktop = desktop - - self.start() - - def run(self): - - args = ['--nogit', '--console_log']#, '--quiet'] - options = getOptions(base_path, args) - - try: - runCouchPotato(options, base_path, args, desktop = self._desktop) - except KeyboardInterrupt, e: - raise - except Exception, e: - raise - finally: - pass - - -class CouchPotatoApp(wx.App, SoftwareUpdate): - - settings = {} - events = {} - restart = False - - def OnInit(self): - - # Updater - base_url = 'http://couchpotatoapp.com/updates/' - self.InitUpdates(base_url, base_url + 'changelog.txt', - icon = wx.Icon('icon.ico')) - - self.frame = MainFrame(self) - self.frame.Bind(wx.EVT_CLOSE, self.onClose) - - # CouchPotato thread - self.worker = WorkerThread(self) - - return True - - def setSettings(self, settings = {}): - self.settings = settings - - def getSetting(self, name): - return self.settings.get(name) - - def addEvents(self, events = {}): - for name in events.iterkeys(): - self.events[name] = events[name] - - def onClose(self, event): - onClose = self.events.get('onClose') - if self.events.get('onClose'): - onClose(event) - else: - self.afterShutdown() - - def afterShutdown(self, restart = False): - self.frame.Destroy() - self.restart = restart - - +import traceback +  +  +# Root path +base_path = dirname(os.path.abspath(__file__)) +  +# Insert local directories into path +sys.path.insert(0, os.path.join(base_path, 'libs')) +  +from couchpotato.environment import Env +from couchpotato.core.helpers.variable import getDataDir +  +class Loader(object): +  +    do_restart = False +  +    def __init__(self): +  +        # Get options via arg +        from couchpotato.runner import getOptions +        self.options = getOptions(base_path, sys.argv[1:]) +  +        # Load settings +        settings = Env.get('settings') +        settings.setFile(self.options.config_file) +  +        # Create data dir if needed +        self.data_dir = os.path.expanduser(Env.setting('data_dir')) +        if self.data_dir == '': +            self.data_dir = getDataDir() +  +        if not os.path.isdir(self.data_dir): +            os.makedirs(self.data_dir) +  +        # Create logging dir +        self.log_dir = os.path.join(self.data_dir, 'logs'); +        if not os.path.isdir(self.log_dir): +            os.mkdir(self.log_dir) +  +        # Logging +        from couchpotato.core.logger import CPLog +        self.log = CPLog(__name__) +  +        formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s', '%H:%M:%S') +        hdlr = handlers.RotatingFileHandler(os.path.join(self.log_dir, 'error.log'), 'a', 500000, 10) +        hdlr.setLevel(logging.CRITICAL) +        hdlr.setFormatter(formatter) +        self.log.logger.addHandler(hdlr) +  +    def addSignals(self): +  +        signal.signal(signal.SIGINT, self.onExit) +        signal.signal(signal.SIGTERM, lambda signum, stack_frame: sys.exit(1)) +  +        from couchpotato.core.event import addEvent +        addEvent('app.after_shutdown', self.afterShutdown) +  +    def afterShutdown(self, restart): +        self.do_restart = restart +  +    def onExit(self, signal, frame): +        from couchpotato.core.event import fireEvent +        fireEvent('app.crappy_shutdown', single = True) +  +    def run(self): +  +        self.addSignals() +  +        from couchpotato.runner import runCouchPotato +        runCouchPotato(self.options, base_path, sys.argv[1:], data_dir = self.data_dir, log_dir = self.log_dir, Env = Env) +  +        if self.do_restart: +            self.restart() +  +    def restart(self): +        try: +            # remove old pidfile first +            try: +                if self.runAsDaemon(): +                    self.daemon.delpid() +            except: +                self.log.critical(traceback.format_exc()) +  +            args = [sys.executable] + [os.path.join(base_path, __file__)] + sys.argv[1:] +            subprocess.Popen(args) +        except: +            self.log.critical(traceback.format_exc()) +  +    def daemonize(self): +  +        if self.runAsDaemon(): +            try: +                from daemon import Daemon +                self.daemon = Daemon(self.options.pid_file) +                self.daemon.daemonize() +            except SystemExit: +                raise +            except: +                self.log.critical(traceback.format_exc()) +  +    def runAsDaemon(self): +        return self.options.daemon and  self.options.pid_file +  +  if __name__ == '__main__': - app = CouchPotatoApp(redirect = False) - app.MainLoop() - - #path = os.path.join(sys.path[0].decode(sys.getfilesystemencoding()), sys.argv[0]) - #if app.restart: - # wx.Process.Open(sys.executable + ' ' + path) +    try: +        l = Loader() +        l.daemonize() +        l.run() +    except KeyboardInterrupt: +        pass +    except SystemExit: +        raise +    except Exception as (nr, msg): +        if nr != 4: +            try: +                l.log.critical(traceback.format_exc()) +            except: +                print traceback.format_exc() diff --git a/Desktop.py b/Desktop.py new file mode 100644 index 0000000..2d533e9 --- /dev/null +++ b/Desktop.py @@ -0,0 +1,188 @@ +from threading import Thread +from wx.lib.softwareupdate import SoftwareUpdate +import os +import sys +import webbrowser +import wx + + +# Include proper dirs +if hasattr(sys, 'frozen'): + import libs + base_path = os.path.dirname(os.path.dirname(os.path.abspath(libs.__file__))) + print base_path +else: + base_path = os.path.dirname(os.path.abspath(__file__)) + +lib_dir = os.path.join(base_path, 'libs') + +sys.path.insert(0, base_path) +sys.path.insert(0, lib_dir) + +from couchpotato.environment import Env + +class TaskBarIcon(wx.TaskBarIcon): + + TBMENU_OPEN = wx.NewId() + TBMENU_SETTINGS = wx.NewId() + TBMENU_ABOUT = wx.ID_ABOUT + TBMENU_EXIT = wx.ID_EXIT + + def __init__(self, frame): + wx.TaskBarIcon.__init__(self) + self.frame = frame + + icon = wx.Icon('icon.ico', wx.BITMAP_TYPE_ANY) + self.SetIcon(icon) + + self.Bind(wx.EVT_TASKBAR_LEFT_DCLICK, self.onTaskBarActivate) + + self.Bind(wx.EVT_MENU, self.onOpen, id = self.TBMENU_OPEN) + self.Bind(wx.EVT_MENU, self.onSettings, id = self.TBMENU_SETTINGS) + self.Bind(wx.EVT_MENU, self.onAbout, id = self.TBMENU_ABOUT) + self.Bind(wx.EVT_MENU, self.onTaskBarClose, id = self.TBMENU_EXIT) + + + def CreatePopupMenu(self): + menu = wx.Menu() + menu.Append(self.TBMENU_OPEN, "Open") + menu.Append(self.TBMENU_SETTINGS, "Settings") + menu.Append(self.TBMENU_ABOUT, "About") + menu.Append(self.TBMENU_EXIT, "Close") + return menu + + def onOpen(self, event): + url = self.frame.parent.getSetting('base_url') + webbrowser.open(url) + + def onSettings(self, event): + url = self.frame.parent.getSetting('base_url') + '/settings/' + webbrowser.open(url) + + def onAbout(self, event): + print 'onAbout' + + def onTaskBarActivate(self, evt): + if not self.frame.IsShown(): + self.frame.Show(True) + self.frame.Raise() + + def onTaskBarClose(self, evt): + wx.CallAfter(self.frame.Close) + + def makeIcon(self, img): + if "wxMSW" in wx.PlatformInfo: + img = img.Scale(16, 16) + elif "wxGTK" in wx.PlatformInfo: + img = img.Scale(22, 22) + + icon = wx.IconFromBitmap(img.CopyFromBitmap()) + return icon + + +class MainFrame(wx.Frame): + + def __init__(self, parent): + wx.Frame.__init__(self, None) + + self.parent = parent + self.tbicon = TaskBarIcon(self) + + +class WorkerThread(Thread): + + def __init__(self, desktop): + Thread.__init__(self) + self.daemon = True + self._desktop = desktop + + self.start() + + def run(self): + + # Get options via arg + from couchpotato.runner import getOptions + args = ['--nogit', '--console_log'] + self.options = getOptions(base_path, args) + + # Load settings + settings = Env.get('settings') + settings.setFile(self.options.config_file) + + # Create data dir if needed + self.data_dir = os.path.expanduser(Env.setting('data_dir')) + if self.data_dir == '': + from couchpotato.core.helpers.variable import getDataDir + self.data_dir = getDataDir() + + if not os.path.isdir(self.data_dir): + os.makedirs(self.data_dir) + + # Create logging dir + self.log_dir = os.path.join(self.data_dir, 'logs'); + if not os.path.isdir(self.log_dir): + os.mkdir(self.log_dir) + + try: + from couchpotato.runner import runCouchPotato + runCouchPotato(self.options, base_path, args, data_dir = self.data_dir, log_dir = self.log_dir, Env = Env, desktop = self._desktop) + except: + pass + + self._desktop.frame.Close() + + +class CouchPotatoApp(wx.App, SoftwareUpdate): + + settings = {} + events = {} + restart = False + + def OnInit(self): + + # Updater + base_url = 'http://localhost/updates/' + self.InitUpdates(base_url, base_url + 'changelog.txt', + icon = wx.Icon('icon.ico')) + + self.frame = MainFrame(self) + self.frame.Bind(wx.EVT_CLOSE, self.onClose) + + # CouchPotato thread + self.worker = WorkerThread(self) + + return True + + def setSettings(self, settings = {}): + self.settings = settings + + def getSetting(self, name): + return self.settings.get(name) + + def addEvents(self, events = {}): + for name in events.iterkeys(): + self.events[name] = events[name] + + def onClose(self, event): + + onClose = self.events.get('onClose') + if self.events.get('onClose'): + onClose(event) + else: + self.afterShutdown() + + def afterShutdown(self, restart = False): + self.frame.Destroy() + self.restart = restart + + self.ExitMainLoop() + + +if __name__ == '__main__': + app = CouchPotatoApp(redirect = False) + app.MainLoop() + + path = os.path.join(sys.path[0].decode(sys.getfilesystemencoding()), sys.argv[0]) + if app.restart: + pass + #wx.Process.Open(path) diff --git a/setup.py b/setup.py index c505c6b..a4b0661 100644 --- a/setup.py +++ b/setup.py @@ -65,7 +65,7 @@ elif sys.platform == "darwin": # Common NAME = "CouchPotato" -APP = [bdist_esky.Executable("CouchPotato.py", gui_only = True, icon = exeICON,)] +APP = [bdist_esky.Executable("Desktop.py", name = NAME, gui_only = True, icon = exeICON,)] DATA_FILES = ['icon.ico'] ESKY_OPTIONS = dict( freezer_module = FREEZER, From 6962f441e6b16a7f622df818856de17ee63bf737 Mon Sep 17 00:00:00 2001 From: Ruud Date: Tue, 21 Feb 2012 18:50:34 +0100 Subject: [PATCH 007/102] Inno setup, start --- installer.iss | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 installer.iss diff --git a/installer.iss b/installer.iss new file mode 100644 index 0000000..7c8b088 --- /dev/null +++ b/installer.iss @@ -0,0 +1,24 @@ +#define MyAppName "CouchPotato" +#define MyAppVer GetFileVersion("./dist/"+MyAppName+".exe") + +[Setup] +AppName={#MyAppName} +AppVersion={#MyAppVer} +AppVerName={#MyAppName} +DefaultDirName={pf}\{#MyAppName} +DisableProgramGroupPage=yes +UninstallDisplayIcon={app}\icon.ico +OutputDir=./dist +OutputBaseFilename={#MyAppName}-{#MyAppVer}.win32.installer +AppPublisher=Your Mom +AppPublisherURL=http://couchpota.to + +[Files] +Source: "./*"; DestDir: "{app}" + +[Icons] +Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppName}.exe" +Name: "{userstartup}\{#MyAppName}"; Filename: "{app}\{#MyAppName}.exe" + +[Tasks] +Name: "startup"; Description: "Run {#MyAppName} at startup"; Flags: unchecked \ No newline at end of file From f498e7343a63b5011756a14ecd0e4dd1ca05c26f Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 25 Feb 2012 01:48:58 +0100 Subject: [PATCH 008/102] Better setup --- setup.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index a4b0661..86f2710 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,17 @@ lib_dir = os.path.join(base_path, 'libs') sys.path.insert(0, base_path) sys.path.insert(0, lib_dir) +def getDataFiles(dirs): + data_files = [] + for directory in dirs: + for root, dirs, files in os.walk(directory): + print files + if files: + for filename in files: + if filename[:-4] is not '.pyc': + data_files.append((root, [os.path.join(root, filename)])) + return data_files # Windows if sys.platform == "win32": @@ -21,7 +31,6 @@ if sys.platform == "win32": FREEZER = 'py2exe' FREEZER_OPTIONS = dict( compressed = 0, - optimize = 0, bundle_files = 3, dll_excludes = [ 'MSVCP90.dll', @@ -37,8 +46,10 @@ if sys.platform == "win32": 'xml.dom', 'xml.dom.minidom', ], + skip_archive = 1, ) exeICON = 'icon.ico' + DATA_FILES = getDataFiles([r'.\\couchpotato', r'.\\libs']) # OSX @@ -62,18 +73,17 @@ elif sys.platform == "darwin": ], ) exeICON = None + DATA_FILES = ['icon.ico'] # Common NAME = "CouchPotato" -APP = [bdist_esky.Executable("Desktop.py", name = NAME, gui_only = True, icon = exeICON,)] -DATA_FILES = ['icon.ico'] +APP = [bdist_esky.Executable("Desktop.py", name = NAME, icon = exeICON,)] ESKY_OPTIONS = dict( freezer_module = FREEZER, freezer_options = FREEZER_OPTIONS, bundle_msvcrt = True, ) - # Build the app and the esky bundle setup( name = NAME, From f7b0ee145bba9265a0b1c6097aeeb7076057e307 Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 30 Apr 2012 21:37:04 +0200 Subject: [PATCH 009/102] Change branch to desktop --- couchpotato/core/_base/updater/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/couchpotato/core/_base/updater/main.py b/couchpotato/core/_base/updater/main.py index eb34906..bbee05d 100644 --- a/couchpotato/core/_base/updater/main.py +++ b/couchpotato/core/_base/updater/main.py @@ -78,7 +78,7 @@ class BaseUpdater(Plugin): repo_user = 'RuudBurger' repo_name = 'CouchPotatoServer' - branch = 'develop' + branch = 'desktop' version = None update_failed = False From ea9e9a8c9024c37234eb0fdb79c8d4770c39d9cb Mon Sep 17 00:00:00 2001 From: Ruud Date: Tue, 1 May 2012 07:35:27 +0200 Subject: [PATCH 010/102] Updater base --- couchpotato/core/_base/updater/main.py | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/couchpotato/core/_base/updater/main.py b/couchpotato/core/_base/updater/main.py index bbee05d..d668364 100644 --- a/couchpotato/core/_base/updater/main.py +++ b/couchpotato/core/_base/updater/main.py @@ -21,7 +21,9 @@ class Updater(Plugin): def __init__(self): - if os.path.isdir(os.path.join(Env.get('app_dir'), '.git')): + if Env.get('desktop'): + self.updater = DesktopUpdater() + elif os.path.isdir(os.path.join(Env.get('app_dir'), '.git')): self.updater = GitUpdater(self.conf('git_command', default = 'git')) else: self.updater = SourceUpdater() @@ -333,3 +335,32 @@ class SourceUpdater(BaseUpdater): log.error('Failed getting latest request from github: %s' % traceback.format_exc()) return {} + + +class DesktopUpdater(Plugin): + + version = None + update_failed = False + update_version = None + last_check = 0 + + def __init__(self): + self.desktop = Env.get('desktop') + + def doUpdate(self): + pass + + def info(self): + return { + 'last_check': self.last_check, + 'update_version': self.update_version, + 'version': self.getVersion(), + 'branch': 'desktop_build', + } + + def check(self): + pass + + def getVersion(self): + return {} + From 20032b3a310fab6705464c77c7a07eba28e63f18 Mon Sep 17 00:00:00 2001 From: Ruud Date: Tue, 1 May 2012 07:35:44 +0200 Subject: [PATCH 011/102] Working PNG --- Desktop.py | 6 +++--- icon.png | Bin 0 -> 1547 bytes 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 icon.png diff --git a/Desktop.py b/Desktop.py index 2d533e9..ec9a803 100644 --- a/Desktop.py +++ b/Desktop.py @@ -32,7 +32,7 @@ class TaskBarIcon(wx.TaskBarIcon): wx.TaskBarIcon.__init__(self) self.frame = frame - icon = wx.Icon('icon.ico', wx.BITMAP_TYPE_ANY) + icon = wx.Icon('icon.png', wx.BITMAP_TYPE_PNG) self.SetIcon(icon) self.Bind(wx.EVT_TASKBAR_LEFT_DCLICK, self.onTaskBarActivate) @@ -141,8 +141,8 @@ class CouchPotatoApp(wx.App, SoftwareUpdate): def OnInit(self): # Updater - base_url = 'http://localhost/updates/' - self.InitUpdates(base_url, base_url + 'changelog.txt', + base_url = 'http://couchpota.to/updates/' + self.InitUpdates(base_url, base_url + 'changelog.html', icon = wx.Icon('icon.ico')) self.frame = MainFrame(self) diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f5815431ed3df7ed5afb6bd71f15d5beb71368bc GIT binary patch literal 1547 zcmV+m2K4!fP)4Tx04R}-Ro!pfR1`mnZ(O7nKcKOW4i$^9Ra0BJ8yc;~21%2p=|UR0&DbiW z$#rfTQ`a`O(`{9s_5yDV_yd5l2Of}kLK+Oj_Ok5(v`JGz71bo9J#^YYXp{DWs&KBa zQ@dTpxRI}aIp=pi@6k0t$5)!;m`NF6-tt{FpOKHBn3g+MAqmexC-gw4rh87hTrL7G z#)U`L!(So6-Zux@>;H3gR;i~0B%VTSS3P|m@o9jRsXML@Al^p#@G0Lx-0?i(9WEw_ zSYddU<1E8793KxjQ|c&UmW!mTC>k>?{om1c9S zUx<6_jj_!T&^M{wWM#>IBbOSf*xP<^F{$j$aOQ5Y{cT zROCL1M7^NKKL z&(yA}mSw#iM0^;IB{ZO5!wl{^Sg-*ysE~&Yz8!E;Qv(A`lu*=Clo*MpVGd>OdF6n^ zam1Jntk;<}MrqIC5$=Q>n{*R}?8oOIDUw5En2dl--Xw34!z7E+5pr-OgyQ-soSab)C%saskMla`aQLVzg0+MZf20tJU&K{hZoBrUc+U4e9&3o zw|KmGEe4#xz17wBu{f`SS_4i66?j31EjY7n{zGfhONK~c+td!TS#B}JoR}5UAd7p& z5phTyXSkK0xCeD3xaYP^o&J~#Xp9xFb0C;HHml5fA<%h1eR|qw7wxF+oNL9T1Aits?sKNIwvGaN)^WO$I^cUV)HzL_| z1K?{9p!>B*)`xfEv!4N6IG{J&h49W#Bz^(#YWw%`e_a{8n{G9m5AeR~_yl0%<7V@p z5 zl08ctVGzfE&-olViEcs~-IJ`sk;;IjU?6H?rRWC`QpGi;VB?oq5Yib_nsm`zdm*5( zUTGr;x(VbWD|nkZJ2_fB;yj#Q{*s5!Cjb*5|l=Rhg_d5!Ig@+yF@dOD3lRv;_fVZUnx5*3W?BaL=|;g#r(jmLf0_K}4vyuAG6?KsG_vLGUfX zx8yCzdytIt+96$ z%H`-7`cbh+u3W~?YQ8H)Rw>SbI?$EN0dNu9egG&%%@`h+-jUfqK>O3v=@y%5gBjt>NK_FyLtQ1vOJ=Piwx;%|#@ZXJ%xlSR~WY5%ChY+vwzWtcmTH z#_(`(kn!DJr2#H%n@-@`7))FVpfkCygzf@PdwODifX{^juWXxA7`DIJgiPe~GBq^R xx`V}qh34UWs#N}&-0wKex3|2kQZMm; Date: Wed, 2 May 2012 21:34:45 +0200 Subject: [PATCH 012/102] Import errors File icon --- Desktop.py | 3 +-- installer.iss | 7 ++++--- setup.py | 6 +++++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Desktop.py b/Desktop.py index ec9a803..0084d9c 100644 --- a/Desktop.py +++ b/Desktop.py @@ -10,7 +10,6 @@ import wx if hasattr(sys, 'frozen'): import libs base_path = os.path.dirname(os.path.dirname(os.path.abspath(libs.__file__))) - print base_path else: base_path = os.path.dirname(os.path.abspath(__file__)) @@ -143,7 +142,7 @@ class CouchPotatoApp(wx.App, SoftwareUpdate): # Updater base_url = 'http://couchpota.to/updates/' self.InitUpdates(base_url, base_url + 'changelog.html', - icon = wx.Icon('icon.ico')) + icon = wx.Icon('icon.png')) self.frame = MainFrame(self) self.frame.Bind(wx.EVT_CLOSE, self.onClose) diff --git a/installer.iss b/installer.iss index 7c8b088..7e31214 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer GetFileVersion("./dist/"+MyAppName+".exe") +#define MyAppVer "0.5" [Setup] AppName={#MyAppName} @@ -7,14 +7,15 @@ AppVersion={#MyAppVer} AppVerName={#MyAppName} DefaultDirName={pf}\{#MyAppName} DisableProgramGroupPage=yes -UninstallDisplayIcon={app}\icon.ico +UninstallDisplayIcon=./icon.ico +SetupIconFile=./icon.ico OutputDir=./dist OutputBaseFilename={#MyAppName}-{#MyAppVer}.win32.installer AppPublisher=Your Mom AppPublisherURL=http://couchpota.to [Files] -Source: "./*"; DestDir: "{app}" +Source: "./dist/{#MyAppName}-{#MyAppVer}.win32/*"; Flags: recursesubdirs; DestDir: "{app}" [Icons] Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppName}.exe" diff --git a/setup.py b/setup.py index 86f2710..30159c4 100644 --- a/setup.py +++ b/setup.py @@ -45,6 +45,8 @@ if sys.platform == "win32": 'xml.etree.cElementTree', 'xml.dom', 'xml.dom.minidom', + 'netrc', + 'csv', ], skip_archive = 1, ) @@ -70,10 +72,12 @@ elif sys.platform == "darwin": 'xml.etree.cElementTree', 'xml.dom', 'xml.dom.minidom', + 'netrc', + 'csv', ], ) exeICON = None - DATA_FILES = ['icon.ico'] + DATA_FILES = ['icon.png'] # Common NAME = "CouchPotato" From 7d0be0cefbd7a39dbf9fbd4d42d0e4ac2de0c8e1 Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 7 May 2012 22:55:54 +0200 Subject: [PATCH 013/102] remove --nogit tag --- Desktop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Desktop.py b/Desktop.py index 0084d9c..5297432 100644 --- a/Desktop.py +++ b/Desktop.py @@ -101,7 +101,7 @@ class WorkerThread(Thread): # Get options via arg from couchpotato.runner import getOptions - args = ['--nogit', '--console_log'] + args = ['--quiet'] self.options = getOptions(base_path, args) # Load settings From 978eeb16c9354c0a6995293dd9607f5eca9b0df5 Mon Sep 17 00:00:00 2001 From: Ruud Date: Tue, 15 May 2012 23:14:20 +0200 Subject: [PATCH 014/102] Update installer version --- installer.iss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/installer.iss b/installer.iss index 7e31214..9b26df9 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ -#define MyAppName "CouchPotato" -#define MyAppVer "0.5" +#define MyAppName "CouchPotato" +#define MyAppVer "2.0.0.pre2" [Setup] AppName={#MyAppName} From e096ec3b5b6465cae7e1f4f7b6335052573138e9 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 11 Feb 2012 23:06:14 +0100 Subject: [PATCH 015/102] Desktop files --- icon.icns | Bin 0 -> 69376 bytes icon.ico | Bin 0 -> 28858 bytes setup.py | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 icon.icns create mode 100644 icon.ico create mode 100644 setup.py diff --git a/icon.icns b/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..04cbc86716a3ac1d1ed54800755fbbd9c52872ae GIT binary patch literal 69376 zcmeFYcQ{<%*Ec-6sEHa;6G8MKh%N=uqjwU$i{2TLMD%Wy7!oar&Wv8dXrlyC#%R$d z>ZqghjC{Y}yF9<=zOUzf|9ju-KG!vS?{(JM+uH53K6{|pg!0)T`6>YwN40eA>RZ$TIUuc!wx9R|=@ z#O!xe00333J4b5(Kx2J3`e3BCyu5B;Z?C7l@$lmN%&*?+#>VQ-g@wlB)5f3WUB4E7 z%^(&Qe)X0OHv+m-L7=qs_}KKcwDhD_0H76|2?B+s6N5k*;2Hqn^YaJ*-tz1z}L>K^I8wS9E!NLH9wg5nkHjOP1fWyrV1Q6Mhs>jF@kk|onaD;?_I7D{D#9T3V z0Qf+AoDUy>_JsI21Tg>&Km;B>fENI;iv-|51puNLu$D2nV=Z%guLX4b+cL5+QmkF% zWMrh+9EY47NQSkG;ypRmE{eC<^gRWT{2#k0{-a$K6o1>LMg1S_Qp4JHni{%^|vsrq$; z|GCn&{I^wq{?xzf|6Tj1^v~M9xae(_gPfDcz>zb2a++fq_L zmsHe#Bz*^9VEa;8nwJ^Z*wirkYow#Tx&KQcq^Y%|JD2z^fRO|8y|tEN=u#+HumEJ`52fT#I;Ya^sQFR`QZJG8pAs;9RtD)v+E*RrY_XbcYEeo<{z zdC8Yg$?u@ueUOsEZ(Y6R#f>d(9i5%uJ38L+RWvlWeedk*>})83^;8$;7PNKc)U~#K z?|R!!*j(A%(%uPs+f7l>+F6>L1#WK5tgNqZYzk`*ZK*A)t8Zv*YHn_6Y0Ix~E67Ys zgSNa2OGr)yrKe}4r$-0IBqXJRGBUF=Q^O%mpHh?JDr(`Q!(vp(m&)B;qW#JWocxPF1kH_&kjmotEBw0p=C*cV2Y!2NQ$x*%EBpWpGCaI+ToRGm?_IEN zSXW05Z8$Cg9-(@GIaLIJ_(4lgZ(ncEXUY!%TtY*UNC2T=Gkjp+GZqbS`9<)s&>=i9 zTu2p(m4tAk0JxG_#MqQi5H}Nm%Oh}|a`RoMTs+q)C--%FpA(zn+$GAw0pR~N9srWJ zq_||HH&d?Ok>ZeGv-hL`%0DRuHYEd)|4B*zq$Jps9Ph@})y=poJTh_$ig)CAq}V*} z3P2V~jzdNke-%dlmLiP&-#dpxNcN5bhZNh*f9n_y9`+d=Qk;Lfg_VKV^1pQpkCKuM z=ij=8Pm1&Zuv`E5oBwUg{{LE}-CeuBjvxIOy=49y@5KKLJ?r24|EfOQ-+HV=|36;$ z{?-fqAGH7g``>!O|3c64x1RsM&~yE*=fe_+D#JXyGtZ{LPUlLcMD7+@1}Wu{O#jC zHO##laMmMrE*-pvqo(lJ4|e?DWYBXei`LDnEv#lUYLkPXA6mb zA5`-+EW*FRYWLX9D(qKGEPI;mBT@Ox8{dgwPbF3BEQkHTbwPZZ7+xPEt^b`5jPbF)BR>k-Et9UhgDL%$jsHTt%H|Il{t^v9*G$3 zFKxX{#orKu9b!}!4;ou0k%`GfOQNzx+!LYlmn}z!9#Jd)Njn?0EV1JUCP|X|NaXTh zA$w<+ua+F%i>Ghnn5-WxBt9j3ooUroa;!$ja8D(F)WJ*Fzxwfn)Pv--EhZ(uJ`0L^ zbGk#5>Uzw=8F-dsGOn5SJq(&RrL|QTw$@lpoyi#L{kkB}^_O_VN*1F_DJikmWzU-eRi>I-qlJ(qZA0Z4MtQL$bziJLbnc&Lo=e>A!>8e)bN{mED2^-T7oo z!8(K8n;fHRqZ`)sZBd6$yKkQ)2t6~-ZoRMmDN15*`XwnBq3_#`)kRamNg{C5fZ4Cp z2I4XS5B9k4^oI&TcXwJvT4gPuZXaJ4AzR0+H}ZsxH=4#08^2Tqq{Jh+Ffwr^)C|>C ztyLlV#Jsg%tQ=KpyfguL94;E5eS&24t#_nBAIte8<4Y|K5;S>9+%m|_L1fAmFAxHi zQt?}O5Syay{ctv0 zNK}?%!1GFzWK5Gvdwt_)UQg{_Sz3GJchs zd~?V5xF=M`9}@}E0Hm+Ea+PSho^mcE*z60x3O|(JXE|&RWRV#&(}S+hWuc+NC-Y~s zW~iBx%#7`l;{B~{v-wMKAo@xI6>|0|aHt`>&szKW4Sd`%dA6Ix*v#kd50^>V`@2}#{+D7rH_<P=y%+nC_pB z94R~l)?B(4nVci?u0H#DT{u_$G~rQ9P7G!Tqfl!%AFCI-nxrDE9c4YA^`we8k0dV` z@!ez^Hd@miP%Esj=A|bZMWwt*I`PSNo^TRcQ;Py$Flu~&Ie{$nOy^`A@E%DossNvH zXI{GuQs5L(91ZTwfl}HmlM5ZZWo2>W5;jTO7I=oHgFC@ts}r^(Ye`j3n*GY9)v`g-exP}Tkz1jet&_?etUF*ymH_~;djj#?Y`!vVrE&9z>`!`yyc&x zA0h{wgBck~go7hN2k)xlq?RljnzWtc#G~dLE`6iLD}r3AB!r|T;bOT|Im@h}SZ9_y zPW*c*Z=9`bIbHxae0)j4z1f7X!dxo`B1m(gA; z$38Nw#u(AO+U6OxdQ5zRt5~Fs0l-#V{@zEbYp>rwZ%Vlj^dlYcr^1v}yv>qE}QYjIvZ)pD-oSHC%8uJfEIqug_A6KZ%J%7>HQ1coR z;dq=h-NroAsjr-kn zxXXHM%neqK`ycV+nTF^c)Z(WLkPW$iaV_x@S(r*A^BI5DSA7`Om!{t62s)pXEOH5Z zGhNQqJmF=dBAAyg9#=|e=luFj#RxKX+Tg}oNk>Z>2F`d(%2f0L^NUlOK-_kH7PF?$ z?R4x8u!OE%F6{gm$6z7OxOvw^$a^n${rp{OYXiA*&|H;Ub?cn$J@;hGJcj9||X_7Bx(Ef|4?Z(YL>La;F{>PE@2O5-ZjyohGzr+Xy z#Q)HLF?Q^(5_7wN3=>(fA}J&jk{n*zas zd!uc1guO<>33(?xzurp3lr1U^*}6Y`xK%yAL>CbIKFlG`w*vD1`*^ZV(=GP~6KC%& z#<$y%eO!vHvzLQ4Z9eGLH~VYi6(JW9p{VK5LvUH&M0+{$lrJ9j#<&2y-+be-WW{dqaB|^EtJyI*#psnclhXw2FLbl1yVeI-Fmz*K?(uG z;Ay7g*!U4^;q5Z|Eas-(-SI3KxxxIg689s`yMMYdaXq#ZXk30=U`nIN2yVN9Ze;LL zmm#{1`neklDaDVX4l3{Qoy*~9-yE1n=KcDpfx#46860ypE553lEqLALlHoK++3SQh@vxV2Q!b0WIkwB^(^TEL2al|hPmXu`$ z`p=2TkD5>s4aICdrvoL6bu~ph{urTM+V*>opV1T75`@*`{z&7WUG-0zP>$Ls;MN3u zsy?+z|nq3~uGJ=FN*!2J>g# z1>%{`qfjnDy00`&CF^;o*v-dpiJ8D6V0L0xwY7x1@^6=2Pm`ttG1Q@D7cwrX7ONZj z!iWK?28PXs`sb!F-ldd_!RbJXbcWN%8IJvhLQ@xSt)#jPlwft?8{3;mx4UFxszip* z9+llIy!GW47O<6=uD$#&In$Wab9sl;S`G&~yi>`AQ5(gaUeV0%Ut$k}VrKA}RWqqE zK}*NQ!-@MYHlAy%pm?rhthauwOWb7uh;a1mdIk2x&!o=R-X7G;IgHfOKV!I^xPHDK zn66O1|D-7^=ia~>NRxCY@41u0?&2JL+gi^Bi9nhzPBBaijz@iN7H4iOJmbwYY$|_v(ykM*ijv72 z|HV7mu%Xpb-2k2N5L+X(+!%U7ThrSoik~NolXde)WdEFw#(u+rToo4}Z7ce!U^k;| zvVfkAoe(e(Bqy_)oITA9^YyI7EN-Zkz!-TasZFsUgvk<`-8 zrds)?P|bzoaTIz<{K|p9%}%u}T-Vkr!CGjt^Yb9a}SwZd@mRsA0N5G1mI+v$x<$ziTC#Zk9N|MbzTby>^Uz3I{ z-}in&Y`UU7`BE-Yd(V8hxvwU&qXSJU+>)sKHWvIVM_d7$UX2#78alJW{#ePzhQCMx zOdy`-#80_lk-|AR{5u6!G@b3&t4b5yoV_oVx0$lAFC!;fx8`WXcOI%soTkHrlm>FpQ zt0F(Tfl5%gE;0HD(#t(J1RWVipk(J1FB`~CzTVa(#IVcr&JtP71iGK_0(aTva~ZDD zj0fxHZZ>@%Q3P728<;0q(9Htsj{+A{yks03)SACS^^jaHeb(`D7+0|d)}WKZoV{D^ zspin%@#xuU*{fW$8zAoqhd{qqbLZOy) zcAfh*jmu3X?otPq&1~{#K3XgPwqhiUz7Qmp!_{rY%RT1@Y+CCW_d-3=*?$N1`Frgh z>3X0yY^uw~CJz%41vjReLN;%;TUL9OA5Yg+G;GlFuHBMv;$UOJ8CW0@yJ;_q>rRk6 zp4FC`EEu|5@u0j0A!xD!dyH55i57hqrmsI2Acq=TfAaHt!I#^;!J8^FGImEHdmY_y zxKELxx*YDoiS`yb%_Dp4POD|WLPf3r2Gn!A|6L=_n>57&1gXH>1eE@Sr)oIhlhN7j zT2ICbP`SCj${BV#AkF^nSF3`f%F?)x!zGQetmEai51XQn6T{8#Y)-pzkhcEKXzgHe zDfb=!df_*==q;jLL9i#I_y_9a@nx2j&T|J zMA0*sG=Qu!+fppV=c(qI#V0KK|h3_X#GJM)mtA4sA7IaVaiC*&zw4fp{ zdJ~fw7aTKFq+uXn#|f+E?tumCO``(ZA$rn#54_najjjh35H>p;VhnhywoA;Oo3F8+ zC9~}tTUX3px{?CYUWxp>HcC=Zg~=*jX6c2; z0;B9eQGL#+KbubJdehD0#hsqR-x+eM*Kxth^r!~M?8xt|zGKbs(XJbdUsnb<{3bfu z*&We|8PNX*eYWc2nH}`pCOW&d`!^C7$R21qW0bK)r!ewo#G`LwM?6~0hZoBs*0|=m zT{WD0QlgU@j_&gE(uJtQHau#Cl|f+R2krh%(t3iUCqlh(^SHmK^Gh2!hcZ$noY)L=OR5AEWc%26Z_M`W zUpU@+TLm>*MlY41_DI@$S*|vaR130!J-?n6IG!#kNwx5Vvt7@oEEf6X&mjJccHg?} z;sHJyw*fV*IQ`VyAwN0{5?4SyaDRk<+nQxA$>XBrXA_{s024KTqV{(4Qwy3S<3M|_ zKAu_<*RpFyeUte1b#Qog!JfU{NQm;-+t~tT0FYV}2b5QEma!6QOY+0^XDov-j#*re zXz?PE_g2aR>IlS z*|CI%y;dj4UsS08vC0h!89beRq%QLlb_g+-*y>STGTb)H?f2FX!TCL@$!jJ1fviNnN{RrdMxe4zQS4MxgYi-0yh+YX4 ztUh#j1S+texv34&o`fY*tRL>kLM;1i11j3BO%Ehzrj9vOFYWjhhfC-H&m;dbj0THi zYM(!LCq4&S_m#TCk1j2obSrQsr~x$&yj4T@rA)lV%vX_8Evh#noBCWcfAZSxR?hYG zybN?kOT5xw!W#LyIA-rTi2dpE3kb8+(u=QK^MJfoVD$s8WF^hTZ9{A z-15l&m}S5A+byU2)nzrwq%5kyRmA8;SUm2PyY>e7xPQf` z?D23_!o>^wc&fw(gT#ZAb3mm^eKa~W{;urEPph(vs-aYJXuxfRg%p?zgAbI!of2A^ zvR*;r9Zl=ZdG26$&YO2wXl}nXS1(k@1KYFwq*3L37*LvW!UafqnWNfH2h)`ta=CBu zh$6_EE7Z@`d3pPTascka+mSH6v)#N$R{pmc|JpOx0jn&vX6K;C5}tO=2vY#U9h&=fwi% zqd{muefMu#F(WWws$rhDc$+p>cx}k!>~?ExDjku^^xn6cXI%cSf^9R3;<#~}O2D7= zaInIqtUi`U%IA6$Z=SO`Gvf>W!fs&gHT7}n9z74e%o&Mb|IMERsu;^6d_EH`g(UOl zgCtb*rZm4x|2*!GctD3c$KR}${CY*0lbIoi1& z#Ulkf!1P)h6dg&T4JPBy?bsLV+GY+zE!Ok0>a#Bf&%a!Q0RJ_x^UvcLKe_-FHk@{4 zYKA0IAWhLHg<>J@OLw2aA@>EoE^Cxnz?y@Rh?BdIxaJCC4#VfV_S=xu!h8#Av zClchU`L7&Z-FKS>7#2F_ROZ~kKSqlduLl3(3a!}Rz3-MZxN!n$b7}+lRltIKSuSc| zz>9}3g9vuiAkN45xMkOHQik|h_UVCx2Qq1qc8mZZP9R3hG0qt*FdyBbxv&SydEmiM zV$Cjx_^1@GChfw4vpmsVWp*hjcp+#MDAK|puSt|H`4{bH2|MNo#4Fauli;dksbD4% zT?ZoVNoz+q{qJ}vNxGA&Qf8Ezos_LVS6IGf6J?@g1LAV% z+wD`zKw5^&sAjn6?BN3n&Y!-5+7^{%&YSEg=|nR`GP&;P=a;>)niI7U)QUB3xWr>*QiO1 ze~tfdUOnF@z9;{7lSVL;b4x*oFL{lx0|im(N{XgWozdZN6fAY({jllD!YXJbq;pAj zGyd#wle1lnp+{U$&CYKdw%4$I)Vte07~dUn8lL`I~qIq?a5*>tulo5F7Y_}7C0$k2M>Y2 zYun83toS}?y8T`fYb_XrU1|&d4G7C0q&L}Qk`7;BJ`s5yU4e`^-1nLQHoS?OnmsA! zK>}X$u#*%CsM^n!;oYGx5;gZzwg$d9`%5`@1qNE1-dH%h(mJJ;5AtVUfDD2o@c8FJ zaVpC%>xAO2@qg?3c(FB$Arkg9gX*KsWY|+JsP%&Kq_@SvUYtdIOIpgw0r-_(6{-hy z)g|INA8(EC_NIQ*K?-sEpOI}liwKpEJtbbF)sTjN;!!(yEtTD(e-dTs zS!;A4Y5HKHj#%&J=4wUcedIxrFoPGN?Wpx5k$8RVtVmyBQMY~HElWmF$&@2NwPFP{ zIevfhT$f?1Av+DGZUndY$5_ZR_0R%F!QRGWZn5^Rx(y-XET|GF_u<89DV{8ytbd}p zq-{^q2QEPG?$V+sww@b&T)=p#t&tUD ztz0BhRV_64Agu}BovLi_R1Gt6+7M3CHk0@%8J(&8!(jf>B~DyN&PVDTuG7lCTO@17 zHaT<4G0`=`opXoXfN4Y```v2WBn)T@Oi_?G1{nTOb{Dt1cs1Z~F##zf2~dS0LywqY z<4y*&og)v;a9)(+!4`Nr>gbl!wXB2F)P0KcrFhcL;IO4+t|-dZonY9**DG89d<$S< zbfMDJTdDU(G*IJU+L#vaOLh7yQho zfvdtDZXI@!4rRV2C42lQsFn8)8^nkkoshQn)M`cCb~)hN^&KY9xpRrhnCGAKIwgl0 zho&x@1|8*uxE&o0U1nXs5&boKf8y?Xu`b*7sbE9a9 z{dMjZMr}IUa2`Yhf*yfK+e}eAr#ZX%Zlu67wPALkVO8b#xqx(<@Q%nYNYVC3=CFni zYY?MOIdy*%dp+(e@1`a*KFSGaoSly+0tIhY0425wSSWc+bv*+woVz>4Z)8Wh#Y0I| zFY`2K53?@NCoOGPEusDx!N$;)_Z3(Byzv&^7DbaSSDGwm(0JKaZ=WeM2y5krvDm%& zH>E6roRfQJX%h{3Ez-|cB7NzIekfO4;p8gdD94rlH1Toj2v6H5dT-NK$LOrr!B7=^ zqK>K2PE0Dk+~$NIN>se^_TUIa$hTx4Bo$bj35DDRzJS=oBo0=)+0QuLp5jP*$C7f8 z!w215ZCk!?QF$tSR%7Wk`);8>3CB5RZ=4K-_2{?N#K@r@GD7oJYhSKkS?sf5iGws+ z{MWCn_D3g3X4H%yM(%1&DsC2Y)ru~15!%V-{ zhtjw7(Qm1)OR3w|9w%`W62*r09}9OB5db-gg%SJmtiH8~MYg_rm4{++o(t~o$qo}x zXtWl}_-y<1gO@}Qh8MW{s^B~;Q|j^sh-#N&%Q8&!N42i>ZbR%rQlNP>9Y6jLt<>7B zD5X<|S8rZn_R3CG#t20=JGA>)Ll7~l(r^M`T?0{jh}zUw24opSqe17l>!?oqt!G%6 zQ*sVxNm@(zz?rxEbsl{PWt9xQQt#vyYqfFN`k72GAT4Vw>0>lW6)j^iAyKF244#_~ zIZfrJ{sqghgZlOVHiFCA#e{U+_oYK-BV*@YAL6Kb#7{Yt%)WSOBSmG0sNI;HV3|7E zD()MD&E}24w9)B^-A$AE^?}g=?c%2&v-7+q`%=E4m|_xTL7ng(MBuNHXcPgvzH+qve&H(gt6JcIl_A0td5%i*r2V_Pm$hr!cJ z>)+ByFEQ!z?s;Z7^?kn?H-lQ$3|9)SY9R7{Ki9Jh&s5=Wd^0f7X~o-B#FSa*-(ZMp zuB+(9zU|m#Pca&Sq?*dy`ej3snRx|CyR^)}s==C~qeO~~>Gfwmy}^t!2Ka{f_vK7* zT#N%Pqw~G`=8Wfv7!%Cu`e!c}K4!O0Ky9P)WY_(yuldx%i$8s6FrxI)HjRL&JzDeK zbZ;J6T`dE(G}mv{q0iRbuC6YT&@z^`RoKQ-5wxl0$voJwW?$c&AR);xgSa7IrWSvW zTZ}IQDYKoerLusR%!kwqUs?1}eKkp=nr*U4@;wwh6r}8&Z8>}C0Y7Ch0nAt(Q1b5v zt2e^4kp#*fvLg&l;Y#`jJM2}f12 zhJhza948e*p1UU0HzRpi7ok_##4bKRp4+6%5Ym9hy9prKjElaw;B>II*GMsWsG)jjB zm{dFyXdUW?S1vb&Z2K;hN4!2&S$^%LQ(v#iZ9&;=TUMG~<5cJ#DBFNwwN`cwT|cNM zy@O=|!-4n*9mmZ%FVq%x?zZaz;PuQ+H{9xfGV`@;q{>~YwjKVko3r&zyCQFbJKN7| zdJ1JK$b%gdwEPCuGa{*S=Ci5vNM znAo-2N*L^cQ7OYoeOA1E)Ds&CsAgvmR>U6h!o$IIE&z+DXL)#xHq+3#rlCB`esbGl zG*u2R+KH+==lax(hpWyS?UEiiuzQbP-W;XsV6GJS+UxaR6x@}6&S%MFzM;k2wSLB= zn&^bjVg;H3>ic@C`dt&+K~2oC7NhSEm5ayq$OhUtpR_MTnPFsKTdHut-1?XfhRAmdS&SOojl`~5PY3&4(a2(ev#R( z^-P|XOUcDtD5o=AUgeqUEXNSSVD54heY&*L5t&mXHoRg&^33c~x$j0?(q0I{OF3GU zz#;M?ZSpcj73XP6n92=t(&~plCQ09E3F~}$Hlb_16iina$(~b~-e9`hEDbtIZ;hoS zb~c<9*jD)+7Ir-_Srz!rnr6;@)?AV(d-p$xo%sA3+&pSnz{+|CIHTlY7%4!f0rr_M03yNQ@(p#cR3xDpRYKxc4H6GQ^!j0z)&> zoSpLL4Q3n_uF^gWpfx}?pCcQsZzWY59u!x_i;`IT=B3|_Tq;|Ew(OX&p4W-woJZs| zURj}Q7;z&^l7Eqi<4?=r*cyLc?9ehv*%hr5#muHb<}75@A3<%{#rn<(Il)l4cdH!2 zpV4}8e6^9#b4eT^riNIX0n-7vHXUxbeq_o}@;}Ur0jDXf#)RtK^;8H>e@SWG+a1zT z{D?N2!d~F%!?5<&TW^|XXI@vM<>`?fAw8RxzV0t~YZC)WUVvwB9$yYiW03R0>ojh)*4={B$m}bh+*DNg%EPSoy}d#oSuMB8{H2E$ z)?96pjD63m2Ia(>%QfQF#P$xGr-SMe=>V`~LPQ=+NQbN>5YTUNw&DQX`yhWMN=!;r zO6^L&+)K}o{+zx`CxDRmt^+t;!R3l^u#qpnZerln`aEAw(@nf2#C@C_jYy9PtJ%~0w1{!Ke+3!hgKU?`FH9ON(gaW=ZV>y z2U#IdijQ@yXS0iDjxx|vuPu@>*L2f$_YsRCWL*w&-7S_OXXrIXDB+-=g8xglMF_e^ z$82;pOb`$tqwx&vJtEW|)QF+B@9eA>5rU(vA;Wjd!*9IgJkqdh2py;nt~wtV^joq^ zD{nfr`+yQ}g(s1UCS-$orr<9cTLB>D8*{vdJwa?Dx8n z)-3~fk_-TpQCWNrSA})k5atcngXE~Nn(~%s7;uij|M)F3d3z*HEvVU+mFTz8a|f0wI54GEKQ0}ab|Z&Iw{*04l+b4=I7>G`yqxWRcnhHS&$OOXC8{{r|Y{5 z;}zf-vCWC?gZ;9aU^2CO?ds-cQ)wTJ^DbBD9v5tMR9gtQB6EDj%XMPP@Q()bA%6XS?efO!3=g&!wj~}BC;1NGFK}+(!iE+&KBsxBUV|< z^VwoLm>Ilt=%Qz$Nt1=q2i)pB#Vmj@xt&I~9mXukenv9|$xf84e&3-VYRX5R7S+S$ z1jB?|JP?$Y|rT7kHW{^ z9xjUnzmiBSWJ!B4{_S?{te3x7>EdNizh>`~joRVo5cPF$N*}uK*JuWJ2V{A5n|MAb ztU~qptfYG#I0e9JMSg#=%F%)M#M5tt9w=pVu>|za4OIQiz+!AmcV3e<3QyC`E#5qM z)?2W}-TP24D{rLIP8{FpiUbuQIyuK{JJ+Z2SV`4K(e3slZ(#G}#?i2>-^F3*Ls{?j z%c6?5OF3s(H_bE%j@i(xd3LF_pnihjbx}R#F9rwtYf2zw*qsrXH)y{Sd!c8Lpq%PY@X=R*8batGM zj!x9s4bKH_Ra~wQ)8w4ZOu7|K4x|xg0MW zQ(N4S@dE|o$K^=n6>pR9zM{)g^WDfcso!Ma%CT{q{kjfy>KMYiDnza16-jX4rCqoS z%|=5$?h_$T7JmWwiKN9uyGhy(l*=k_Wta_w#(Us<_p%yq%IKmRCtyGT&5GQlnUtR8 z*N}O{Qy%Q4J+t!$TE89U?mn2O&zeEQHMF0`vCVERw>h;zBevzxxo3B0%Fgi1%9-xi z%R#T6+JqI3qhbHe4eO}zxDs`46TdZUULMBbz`&D}^oIDO0)E!If+Jm_=CXs)$cTOo zT}ii69}R?g61P5eDsxJ|&k&YT)3sRFau|>e=M}vn8HAPY>kAsLkn0Opos#QUO^Q{n z);<{0eJSeUKLigEmpJ8QG|7$OgwE_CDccUq<_~}983e!f_Vj#MZEEFYYf^Z?DMR-- z?ZBJE#GfSOF%w-y=*32~Q+WetU7ySEzQ9Q{Uo*+iQojk>!_0AB;gx;+M&snB~^^cs|jOc^NepJ*L;j` zGTo!?Q;z_sLkH)qObnxWr)BK7JGCdEVEA{`x=7PGzTgGTu+BkLmX3~k51Ulq!UYAI z@|Cl0<;ZQXH(x`YJu>{hZhllx)Nt`zzhUy;4Fi!1y`VNx4Lw*jcfV5IoDAN=?Y*5F z#71ym-mG{GB|LoQVZ?=!+h{nt7-tE4o=$!p7eTIe7-hsFHAP>6{#dWAef%HKORJzAV7E znd!x)rv%G`^B($H0EOXy*0girU#7H)Etm-`JODvYgXlun_C1lAATf_L~i|Ckb|&B%Vh# zITs%U+qNL{M!{#u`Mn+NtYf;;vg`N+-41^sXdihb(*e4EC4_VR^0di3(ICGHIdu}>#RyNP^gtE^wZ!zszbUUos5!)@QIZYxSzziEM4=P7j{ zFJ#o3(fDUJfl)RSoYSABV5nUA!zX62_+&M%ZQU8KJ}V?(lt;Ln(Ecv4EU7|tEdApX z_2iOi#ntZU`0m_nb33QS6+F%HCy}PY)9diF5yfrFJAKQ%XOf|d8e0Rv2q#4!yy;Aw zeebqrqoC!UiP1s%HH^CVQ?@AkzQN0Y2DizR)FG0-fU;yE}Cd&DO6b z=Yays88Mp6+wZm9H`kQi5laxZdQVfPP!H{M5bG45xfh84fir47b1>*=6*@e+JiHUM zd&c8&ut$4{sZB&l!VW#=F+$CzP5F~!u6ID2!DRD8OS$`}pL%3L{(-ETdqHGL(WmL( zsk6_e^?O%9I;={P)?J^gZ-1V?Biz!quAB!lTB-R#hdXvzd3bSKieFaX`=^{cjoq$d zO$V@%u`25R*cu;8|MjAf^|3tkHz8i~@5oB#r)5&VB%R1oEGQZa8OIM=$?=;J>MDd`bJjJPip~ z+>>n8;F5xM6EYm(Rk}Nrrd`&&55q=JaFB0SeA+9kp(3YVG7}*>cemKnM#f0fU2Z*u zD0Fm%sP7c>2Eg9)2EsBb*61oumi65`Wf)<-F+_TM6<@Z1oSH^F^x1^+O+T=7=w7%ItO>PPUxQ=7cN`WC%jDG9Y{>lrJtJ%PR3Q zE0^BqU$U(eHL5b59|e5nkrI=Vlsb>qcdI)!DqWVOpr9b603b{}r}d?+CBObmE04Rk zk2z*b=C`t>&?WJx`@AEWu6$0j=AC;FevzQ{n=vr*76+QQovAo045^OiEw$*Fit`yYGsXscc^P)A^(<#KaS!kKJynHzi#8DPXx}mvv3_)k8JcR{N4vQliSeCS1a8lG3sx>)ErVJQ zJX9~ACCM?iZ##a=PWCC67C84R9p`4Wp6h{ndY&HAn)u1SdQ5zq&t-_=sbo*z%4+8Z$08lO7S3=xzg3VBhl=zId)INgfk)d^U>LMHg@_4O{kh8}X6paoe+OzmFlnEKGuu}H#EH5JqEsYHFI z<*FWh;V_sU>yAHF>%Z65ECHK$T3we&B%to|@xk+_Jz9S^4r(9YE8y~FR%SJ2tcnf)x`SAok z@Q7m=|5Rb}{AZsR8BZMg*@ZpX&YjXzr_sBhviRc5=A8Hy7wms{43}=5^&)pRd4nJ$ zt2Ns^rC1DOc%eo@(-P&z&fXoOvK@~$w_Fa<0nca);BIEEUM9>uqo`JB*YkNQX?yFH z0m%z_9neM0QLZ!M1Cep9wqriw?=F1r3T)s)Dkl`5Lj zq7{VdF`bMD6ZaX2y=0|tDS;-Ese}bw)Vh$I);T?ftzd3Xn}onvXsWaDnofTvh@>py zr6pzXp*&6e^xSweip(n@Mb)WlSen?!K`kh?+aQawiJyVmaPgRF`2Oa_L)@B}zJC?w z^46tk^GdX>Melqm)ZXsWXNk>ivf2PYzk+PP&Gs{ zDU>hH3ijKPE-~YB)U(=;_;PsvY=zr#3F&e%2fAwWR+n;3U40% z%DqhFEVe zAk_F{OP6<>A2&Tmm9W?qBd<` z+c+8fWDeaEq9?0R+>*=@{%=9qaj%aX4Wkk_I6#zET51(KL5L@!Ii_j*Q5k23AHAGw zHhzn2XR2_j<n zoY_Hf$%AuclNZIC7eDgMeVH;>;$tTJ!sJC$vE-31_c*^tk(NOylgEcF%Ddl!ns-U0BA1| zaU?m9X*88pV0!Pky^w94tP^Cq>)55MuyYB}E#dq^re4UPBXVfVW z>O@^8^%2S_v@#)$0XubE9<7`}L?{3xKAIkU zUAgZ;Ezxf-FaCS~J1g9zP!)~)(4?ta%))7j1^B})LUm3icP9Wjt`}J3pl_gWAf?~1 z?_=|3Z+T}u^h8i@rVxyQ7_YT8<+U!y?E@x~?kFXTGoL&4`uMttQ`xCY!3A4Ww*Qb0*9au$~(sK&goZh@Tz8qW(y;ylI zRLlGpeO7lt&k?#6-O4*Z5rR76o=*#9cBy8U#k8`{W2&sPkb#VKEoC~-w%Y&s7Qni} z!u5aAbnfv?zwaL>l|CJ)5aqB+$Z;X(!;(-rtdc0R$qZ}e|DPi! zCTmG83Z61Og)`VYcuWx$PTS8dbufPN<7#3{;Zn}NXJ@b3Q?FqN4^Z^Wfe4IW{ST=zz(dz5(leB4Stgqn6ngmom0fh)>^wzHJFGZ&CLzmAILhmtEMeH6W#b z2kUI^g(}FYE~)8fH$Ua8dgdom43lmNM(lgfl*%Io5)@p|R5Zu1Cob$BOZBRf$TqT{ zxqMWYJuQb>@vn{SE^T&8b!~9~kZch%`!hH8RejyVEG)?ZS1@%{_IR*Obc{ok8__4S z;=a-5+^(cJwj;1-L7Oc2Y9%H z{_p6oHI6QhSLn4R`hEPW-}_{?4MTxZutl}O3ZVPC5=VBfuBGapcFZm?ioER>f)@w5 zfo(mk$grBscU!ka{cH8|m&+2DQzwe_$38<@|D$F=GF<$f-MuQD7v?;(-5`-rw!&Po&%MDBR-H|ArWvHNE&sJ=|y+g<44)PPt-Nv{@i;4IYz( z+E^>)u17s=uXoa#?^sJ{p4n$3jLiq-@-)!v!(xe$(~OU`%{ZgaIx`!~Mg8Z~i`}yR zD~&2rH`T;emnve1E)XH_lqzSIYM6Vv_Ko{!jdt}Z99e-^9VYtOKc z@x|$KPNs7HQ^;ek>-TEW@H@6V0*)~Cq3=~kF6T2NGHL#*YL=T?@6MA) zS9aXm=Z`j`1L;9+_Zp2Q3o%eN2Jm zbM@+k5dI96K6^4NG<^xFG5{&7{~CA8gtJ&^0c;!14>xX#P5C*Xo6^Sj;b8WY-@N2b zBTnd2$X+ta6IZhJ{X-VGpE@(ksfjNRs?}FuME&ui&lTwk_e_q~06G1vt88jE?w17Xl z=FNxq3OI$YRPs?@wd%#2?R)~(G#y!F%*hiNzoAH(E)*lV`H(5ZpT2DEx293MXyF(h zdtGC+o9aIGa?o})aMK|QP1nvE7`ulRD;~VOS&{b=OeQGD`DG#a0l_r}0{WvSeqS_g zGW+6Q8=aT>Eb8-E5!o0M#@0I*Kxf z-74ip!In=EBXh62oFjkRI5|bj*wr=BF*rX2LB@9_`OlIjYH>#_SdE%N%w}B>H@&ZX zMyO{4KVr5w)ni}5r?Pc_L-=%R@zVPAOso0l3+A$KItSea2F(H1C}>NeJj{(v7FVoo za=1vnFM22mIDEPWV|xMOGM8t-TM#Memv_Uf!C4sO69h9{bxW2b@fJtq$%P_#%Cj+; zv<#>_UwsFvN+6~-Pxe3*4dP351f62jV)Sdtl-uxjbN+|bUj|suyiPeCA{ntC{pDwO z@*a>VM+wp^B>Y9k>bnRJc5>~`(k=-R$`fGGu0^P z)5)FYfJljr<)QKb&`D(3r=U#4jdqy(ux8q!5ckJPU!?f*!N=lObCoPex%zjM$Uy*9 zHM02=T~V%bCaSCmhNVRdM|X31jgJqqHp`*58g2;Mitt>2f8IZ`60X*_9&o4SbbX30 zu=ZTNnDYbwBmbsMh3);i2^kLnNEgj^BhtA+BtC#vT}6dmwnfITogl9=o`UPGly||+ zY$wIBnuzyRqE(Ej3LI7^M%ocMy9`O+I`jv5{@IUQ0s=O@V0;p3ZaI+!s1+#~?P`h{ zcdFZuk?U7s9Ow1zN7b97x!Q=1%Z`=%Pu-!0xx&XLwqn1fFsBLw#*UgTqPOyHk8~eX z%y%AoR8w$T>P^42Ggg6-tFF;0m$HJmN?guO)u57wXiM(#?BDu2qsRG7IYc3Ib3vf{Yf(VvW^-m8A>h(B z^F|`(bfzw!kZ_QXOr;<=gdf+^^;QJ7olTiMxO<2m#s0#sEEyn091`^1qY)Fh=auwP zI{mbU+g7ZWhZxLnYUmQD_P?%lmn{}3kmk%ia%r44{y;s2>U_RSe!b){XfYh%A4OpJxF={u zy@d{XO^i=f6^I4Q%;;878wPDgGy?xZ;f-_4DO?STZ|V+G9`bf^TW|J1_!(&!HY)(u zZSb0kV@`HwVfN?KxBj#aB^+_waew>Yt#6WFd1tquPJf>K*O_Hy>bFr~R(|kk>(?~) zL|K=FHAt08wC@Eg(Soh1d8r$G)5O; ze`xU|v>?VTX#KAR2cO5JV~(p>8h^-^4&rfMGM z;8(9mgt%q9kD*ri20Ywpqg46Ko2r;Cq*p_L^N5g%io9;}Hg`xs5+oeTkXO}>MdU<^ z>nPP2G@lI?ST~?pCGsO-&ZSdJBFy7sFb zJT>Fb5xxrLc%xHqmvUGA=9V(**Yvs@Y_H58iH{fzVVz^Py$rQHOgMZla;sIkbpBIEfTHWtT!q_H1LStzpQHO`3tcK;&0hMur!c&}eSG0_ zcn4)@-zz@Lw;h==LOD&vQ%K!5% zlh#6oosHUOB~r<>kamy%qD^r=Q!oYu@@PK`pt)87Ih#M9C|*U6Ijc$Csg!LcmmHc`o^a zBWv(Y?{% zKi>B-h78#}2sC!So8pc@=%sX1gKCh`l9yHahZ9^`MEhcS*MOKar_1IIHK(xP?#h65 z$G8kX=r30p3~Z_7zL~bg`rchZYJ*^i8{#a^WAycfmkmGbs(ltoA^Y2y^?M~7vu8&yVOY->! zVNoMsPK-w_r-rUy124T&HQfwMXCYu4fQJ{hX95rT+gU%@AiyML&!V+|Z;o2pQezXn zDOoEPinsYJbXxA%>Xs%{sZa(JEKTlrm$1|(O$Me-lLxmFW-m9aLPTi#0_``kpgAwM zw_dN{ElJPOl!Ec7kR93frPuAZbQo|2w~+D0@I2?QgJ0AzT<`P5a4`_z3&nFi-X5gpCQy2n}*5kQ?+x|J!Ar%lJ{BHWz`<#nAcJV1P9uIam! zzB&OwnlA6>3T7caLx8$$Zf!qvrslI&WY;f!+xG^IqI(&wm7Lfcjyvst@p9wBS`Ak8ah!_X#e zC)+2I)&*M5D&Rhy^#gv|8k3CM4%~W_MHhV>0gw?stkHMncIv|f1bURPrfAYj-!`~p z8sPTjp<%Ul;)x;;?@EypIefyh&3&Fu$%Yl$r9apRPfdt;$kvfU)zZNUX^$(_jMjv= zWLhhAnsi?%@t-<*ivQgcFN)T~OrGcF@kr55sT8$N?20LpT^cQjExzjQrFN2POW%!d z+4^BKb5&b2v=>B=h*{d6H0O7cr%^(UAr`j5HX8}Gi|@_+M}Ti^3a^(Hs~s11F^?B3 zUN)&^1IQb0m$2x8I;6I3=+81dneA&1I(^N~Mtu9-zrW3^wjBl8BRl?#loC}E=oA3T zG~BFM?+sb~UGjZUmZ?yj54F1e&%m$}%dnN}*|gY$Y}Uc5W?pQ`19<_c!C=%bi5IaT zELBpHj=y7lRbq%s+SCE_+DGA`zzIKRe94P+S`?3DQ2vW3H5uXx8-}-UB!xI zmX}?0kA+SgNT_h=86fi93FS8e$rWPfigF{H?@Og; zxOkY>UmGm3yZtKAwgQ;uOtNo^g8T8k|VgFc8 z_2~x&TAfc{{?)wPl>{e`0I>HY!e#O&isU0jwLTKY!k*+zKDsd?Wc-?DS!tj;U4i(C z4gpBTodBN&b_1TqjIUdihQc1c3K3j?^~}+j?+aU!YQn41W7V;* zrf+sf_eGpaQz)5|5*s{#Pn|)rDIICl9z%h@ycr3}P;tA@LeKFwg~|vvx$f!VxX%{_ zG&l@N24?ciXfh-<6gN)qT}g-ATMGgLYa1?@+TVD^8$zCpl-3C6aW9T_`t9=b5!M?P zz&5*q5^+*u#Y;1hp=MrKp8$52R)T*x-|HL<)$JKA`)ZB?YHlyj9Ju`KDe=s2A4p&( zFryb74i`e}E`ha4f0yXQ7H74#JVoqOw#~#qzJ{(V0m3uly zGj)U#W+qqB4&T=-5Z09$N>(lA0bVFF?#j=CSPYQJThlDUuCpO7n@ap$SayNvjhkuI_3$iw)eOyXxo!pyfslUfa6 z2(}aWeVY7zviKZzOFMRg-AtrXXY1B;PXps@{<&be)TLMOVVjv}r)+XSA&~7Zk@X5v z*P2Ux$i0EsZ&$KY9w=lMx-B&KQ84nsg}>ev%g;pm9Xx3*&cD9V4yjZnm~uaE{k`|a zbK;r7@7Eq8Vgk`R+vj@kK$TpLr8GzSUPKZZcO(JRXNP7MOZDuHtoK;@C$tXnXTTSL zFCO-`Xa=CoDk^fe0v#rw_!^cAX(W~6$%zo{-G(nK73}d)`u`HUo}G&};uxIC3Z@)Y zSs?cOPj+S=t>>&w^K!>Dl!mn)yZ`0omkfA4d&2qB?)l@|I#zB4zRFzCoL<$E7Otl4vOzWz;XFkGS zdiXe-?zZ6F&oJIDnx4niHAB5(Kmg^S@?PXH!C)_8S$yiYE{*|szvS71Zx2*B|LE*v z$!nkEhc9jWR$KfsFHNkV$QP3ZEY7l-uV*ALptcBz?qpo8dP?;b(s9oJEi&(CAF}dxx6IM@(Ok$qYx!^6_-o&<9H{T zS=fm(dng8GUeKO+@XW~7@lxxZt7qfrBtKBX5spQ*C4sm6UO*439RIvq3v0ZwnWBHS6PKoVlzZ@H&VWM@Kyk-%)H?4fz#dPnKBZ?2bl#F+`pZpu#^61B;zlT2e5!u0OoBee z{N3)d@2>dKpr@k{*;{6icZW$RpkM4{%e+7hO#!TcB^uEz0w^Dx`77%uN?kTAA2gwg z14xf*ylwaf>;H!|uu2mHnR?Yp$~@oU`q-;Q&+cldFMV?%2)FaTXw0w+H4(OE&)=~W zwy_yjM-Rje5`FL38bhW68(olwNQ|WM)`1;@Y?4K1{9G}JJpnp(X zlvHwfv7LC}d|1JK812Ug=+^n5CLAspXGjv?^J_U%yBK)LD=cxO)Z-Q$1^>QaItPv) zyxwA;~2LSE{uJb z`?2j!*JDe>n=JN3ttd0q?+RuQS+(MCKIS@6rlITn+lN@{QVRqBj8rfGKKUGXe){iG zYNGFUlkePSNzqnSPm%4-nn&lk8IpkYZ-GUWc$25PO9t@_KT#m8JTY$Vy72mjTV6?S z19D(lJgso)Q~0VoHfI{{1!D8Xop*sD0R76@ZiX})b4W2kgG4^lm}ZL2F^3c+1iky6 zOdTaUt5I`PQ6^;SQ*TlQnw2xnjp5kg@MeNE%h(BeXold=Ou<$91Jq`&$PMi1hLhGqSHud5Tvbqy+PNq5c`W?s#&rQb+i zdam601hBJqTap$4t(?6C^~1>z|wE!IHhR{mkJR7xMVX?Y@C3u3#Rj!eY5e9Q| zyubd!iy9(0m6J=!UqbpvorPn0@ zwlb;Ol;{n_%dFv3>{BTRJy1pObV&AoC=~No^ir|5*URN$LxDTreYwb*Y!|E zE2{})&k2bW*YXL>-YI4`{Ver>pVmIY=4b{WW_r;O%m!C+$Kbopep1F+^T3BZk^Ha?v^puPlIStgVd#O^U0j1zWMi4n%p_o!&(PpBU3_V zQLgPMYFT#_&!NL4-w6>*1%76f)V~BT5}UdIs~>M3ov$1+^9W5ELf!pgRl!bI zj`k?hv;s>;!eNDq9R6gmqVWctSJZjNg|VUlg%wax)zS%Lq=ckoEq8y)Ak~+2sWVw2 zF0q&02KUuE(?k=LkKPKj`xO3U%0u&+K|FTgYf%rB|J(HU1FT@$bV9HUz!{2;uEm9W zi(;Uw_KO9Pv)x5i6je6fzg=Ei*u`Nnv%k2~ASSlSYpgLO%l`Kq?&BIS&uDW3H`;m~ zvv97~%nO!Cy6z22?ZQoVSOMPIPfm0X@E%SN)?a$bXc z-_HUGilvDU{`p^?qRpMYjJ!)Mj$@mqw4wY1b+#+2FctK*j&}B%p^aW_7Sqx`1+;f1 zrR#0<^_c|OBRg>ubVh9oQCv@n)>g6&36F`Kcu@N(2-dk@X&_h6oBjVR07lT-zerbY zgJ3%$$Jr5j{pCH+UH21q;)T~K?xaVNehSmm0rOC$T^VTHS?F?MZcky~$LqQUd9{bu z1&Pt2cP9fjRw@N7+yWwR+H-SdZZS%Zu{Pe8oxf`TEl1|?!@H%sHCu;568lOZk8N@5 z!g4aZUJ2Gz2=PusIP*32p>C`t0V_El(hB;OE7f_v6i! zV#L|wdRjI+dI4G2p{S+if$sZeQve!XaqkZU!*6VJ({R98A(%9&2tBP7(#P(gSiJ#S z&uM_x=6`KJW8E44XQFN;D)v~v>k|huBwxKppm*ke7QiqorP<+;g)Z*UDZ>rTOGo4V zpxXrLhVEx-Eyn(jz6>64$xr9J%{}*>^BYBpv_@=A>0<;u{}*n??Bx-Lc?nMi3r|DK zYHxbmb6*5TW}jA)sio=RyA7=cg11t8K73Ot@N&ZgK{vfF9pB(Bet6UfyW>v(R$5$t zFjQ6|Ie)D@5o@VA3{em(PH@-@_w?CPqBWk|l>i7|@@K{9k=9(d!deU5G@44mh;dV0jh7D^Q?Mk6{Zw!OVI zN@yHPS}L}tm&mR;E>oe;oR+C%{qa#=)wPYop)ssPuk@Zw6g~0W7olQkEXZmF*&3{& zYpUeK-+8kk5USbvq2M%MzrNSw&iAX8lDa9fs-yeiqT1o<1@qae2BUTCjg+!?+GgTQ zkbD^S@Rv$G!w`fVUeP-kaY=xt-&~I0&Bf$|=ivbnDF_J1@vB)b=Z}FAeAKs$+Rb=c zd(pI&?upVGx`A!GqZgjb#-((omksG zlhdEXu@PC4fV~7dEb4eN9N@)9YlbDQf%~YQ#Tuap?!w2(@#j7n;V~PkO{ZIB3_rdr zzV#C1j89ncqRD+{+m#48+`yIy$dq+hIGDs1HiK>g09N*ZV9HExtei(c699OyXu2c@ z`1sl6uqsbi%>CD%5&-5^80jz%Rw_&(=vF4qny+gcY||S3JaSX#pDBTxb>Y2c>__sA zA58T5n=-xvn;OG9@KS~TK1<@svNzBj&xqv}?VMS4KR_=nGf28U-cThxKNxAP3Cx}A zum{Iu@T*4~L!tD@Bp;VxvFA`UyM&h6b$!E=oIN*BV25h&6RkSj(w}pRIac|i+%9oK z3-t3(w^m-DD$(!!lMaeZX?NAGzFe|9jg_$HnG6aZG|uX+PCOs}P~_%ERRiP#k&yUh z3NUrOtg0IZ<9%s7HpV#}9S(Vz=Ps3F4)wCj;k)!znDsTgFv73Lp{3^}DAH}UP!S=} z>KKAjI;hT6X<18bUn+w`Wg7ROhooW+m$%Z9jP@Mj!^GJcrBeb^1ojabOO7kVCQiQv z!}qK3M=?j;zYZe&OQlleNA^o)XuYPldC!2g&pq%9&O4CJcg|#Y&hT1j?Nc;k$_K`0 zE{NAX|KZd^>0}hk%QR&St~8*^55H>^^E#WOB^wY!u9#|M5~Nlm3Ha22l~o=U8ognE zzw29mtsTJ=iKsC^n(UZ^bi>{VbWYUi{EvQ$3@9vr@H*tS-@0~rt(#5~&qfJd`T3Mj z!w>^jyw@hjF}qovd-dX@tNKl`b}53J4{tkN!G5`w7k)AQyYAQNc?FH9Y`Ym$UABcB zEq7x-Tjb34PPKGL&N+**LzCMv2JDX+dk|o|GLhU8`CSoN?j5nm^1KAzb`0LV6UF&> zDj-DJm~@-B++6tK^NxwBK5X;@mg=c4e<+MX4t@m8|+|BXtxgi74|(oKY~72{@p68AhUa%^&z$)uo<3f`8rY_Y35&5PBc;~>{?lN*6NAX zbu3{y;v9%ut$KUE@1ZwyDk+N1qVA{tP_qwGnTv0Jn<-LMD}J<(?Q?|xDN8T+LxoIdnon()8 zyf{>KJ?xI~?9el5DS(h5kkQ${1e~vUvAZeL`f2;Nka{RZg8S-3kuqE=%`Gnx!bhTC zv1!B)2AI@2w4U2iJI7+|d+>)0Ug7{xHJ?GxWPi`5NPK8~c$$&>YsXY`yN)dty*C(z zBQ$pjWF}aFf`;>P&G#a#k)Kv;6ZD&L*R^N?j9HkfDVbfIxL8U_G^;L)gK(D@+uuhQ z;!a5Ljj107R9OBz%5L_LswnOK*R;1!oq*vs_wo{J=iKXr>$GmvUQ6b*zLqTaCFdsO zp4c(oMG4-k{CDrY7tj6hDeBs%nb2#T?~mV);6HxqBlqzqpE)>B>ji$2kFHprjC|ZQ z<2U26ztsfeS+0A=^kceaXiU7YC@|ZK?D)JYW`Ecn60I=~@h-2~E7SBHZLsW z18-5rPRL&e#H^LiQyVUBzkqIRK8Bc>iq5|}c-`L3t(FfqIm@WMD|+(%EBVhImUypn zK_rLOrCiK0TRq4cL}UvMZ5MvfO=7GCc6Fw8C*DZ@isE>W|H8 z0pOmgjT>?+UXr)rf-LvZM;CmI=G*PV@_9|<>OLAl|Lflz5VSZJIehDQhrx?xDpets z`m+cu?{4q>E0V^IIv_+Mng`VcK!@;g*ggY3uZ^srPeylZHE!Bb65K4m9?b4qFsZZwr7X5-Msm@z>AFrv+)(B+IG)j zGl-?#yj^uv9H?Pug0&Zk+2pz-e>|$ahj00N;9uuzDZ=16uK6=JXt}g@xa>3He7IfiZb?pL&nA z=koV?0He3K(9CnCoSXwV|H?!@<-7GwT_rCnnz*@9F)|6~nCY$>!u-wimfrC4wR%cyk8?npE zkcsF5Q`Uu$rv-#pnI6lOtjBbQp-5%}-Of2&vHCg?d5fT5pc56*ZV+UnxTD>2kVb68 z8cBhc#f9ZO$?+YV{lv{b_5Y^SHRi-@@$HGkpv(#*^7%JY+#Jt}It=bsJ<2#PC=aQXbgP|AuC2hklq|j^aOi6qnV{k4cRGHpbH@byTn|ljIt%dR zadTNv{zV;*MBE}I0lOi9W3%@We+aO%J6I6l_yLU3I`oE|&Z*#XcC}J1&bWp6Ju8k_ zWX0LrUnLn>s{0_M_h@f#-Tr9Vx?qqgzOB=IAWR)vk2`krJ-#jO@FPEvoTh#PZGX9? zG6l>Un+SGMTwCFSX=Ji80jQN-{Sf8`?qK3KEhz*%D4i-Z=xgR4wF-#AS~@}PvH*&^ zpU(UX?96(w`j2GfZLa3(T%xRy?0O@AK(}-BxoZdC%#v^~B`vT+IczYvLwn+mX_;a* zSB56}B3M`Z-uy;sx!r1h+?IX>vyIEiA(kS5=+fcVImxYvQ=j%#6ol4MhiPID%0yiG z^cR9n-rxgg4|EE0gzwJUW(5KF4ZjgK1LjZzBYnM1_m!+}2twq1yQ+)cZN25~in!OY z5*2v8we(wsLWg2efOLz--u=C1%LAm!q=&A zA&i~-t>uniZ3p?8+??<|6yJ~v?=ju8kGzT3pDgCpB6GGt71h^TX+Fp^J2U`deODD` z&Jn<|@qR#P?}FmQe^}0u!2o zWgVO*XGD`T?OX01pj?d;v6H@R3<$GuHRqA5CQw-1y!~o{ zyJ&T#V7Qc#PJ58)L^`^ee!U>+k4{pQsOt z4?iP_3v7!H=E0xW|Jf2$GN?U%bwK~L?|C~ng@1Lsn!)E6ggIM8cWgN_mnvqsG`VLB z>^N?lV-N2xsExw@GVmd!u5|*dhXDqT!_H_QRozLrAPj4sY5wZUcQF05kt}EtMSj8* zKB^-g$sTmz0tmbIM~AWnEz4D4vqPIBUdY^GO85ujZ5g?x+v?9zF=fQF-Pf{af7*&< zX2kOK225v`;Jhz(&lkrly8Dh_w!J*@uaR&8_dDn(V;ry;kvHe94(u96m;c=sqG8*N z7O2{!vX#}WTmBu6y14D>@m2z|I6LU6Ea94396F?d_JtLN#7xV*V(v z#VJsFUpS}OsQ{su2ksoa9KK+P*zwk#m@1ypyXJs?^yDX<9ML5LplU28=_`&zz-c4P zSiK9Dpyw^;ty=lAtnS;rS2&}3n%^_cC$J&ygw5orY)C_qH-(TG!c=bArn$niSz95b zu@QJ#csx*m#j2-S`#f>^kMNW{hS$(}kzTJ-;dIOhI-%38esH0QKunJ^n^B*(5(CHK zy6RrJxNT?&q68USDd`!}1(_n7(Rux1MqY9D?ePW4T!71-c(GxxaTiye)i)>tg?S3M zf5VUN)z?2gIW9v%8+8to$Hw2q)$esU1s|KWnizfb^IEv8AZ1aj1yWN#4M9|B8UV?iDUx_!82Nd7pz0Ze|R>mJMq+0&Dkrey;b>n2G*8ETXH6T4X=gTjT>)C?iz8d zP606O{U)Bi@4ZLAN~cX!B`?Y3=A2+n|Xv4E;u6Mm@k=8Z|NWJpv?5d)joU>ZXFr8 z*m6BHTdB->_3xcKgcjn_Iba5=8-^n8798bSf&qo0$WpU$#zyPmboQ6~H671+|6~su z4X$Wg^`f=a2;Uv?FCx=R%EcC6Mil7u8pqNi(h5}bPfnO^RqSaaRWw#3zIDbtW}it) zN59cbc*RfU-cYS8831Bxx^;>W)rp|!J(8b{n&?XH783HF1iRQfAEYI!k`%hex=5mS z;{6p(^IcO!yP_f~Sh|SDr1X-D9X{_o5xG$y`M)R_UfZky+C}#w6#CXbzQ8noZoH*% zJH7YJv$(c+BSm*lr2QPXQAfYGzEhuW6}Njp*GPVrh>EAlbz!|gcL^oHT`bLe7O zD3nze!sPwfQo@SBwUEo3Yqh_;83`#`-4kS;6iAkAwduvX`5MbL7=H^|d=%ej3Z0hq zMv5*P{Tf);9h*`UM`Q-ZIBL7AA4I$kj;4DJE610F6~v6I0zzuX*=gbQ6%o*}e>6{1 z{P&ub{4P~);dpo%YI`DJu&oZD!T#dy0ZVqy9S~2&!I8U-OKIY@1uN#gwmiBMq7sCW zXT5r%5#|6bg0%m0?%VZ>hz^A7&xLdFcM3GGVQ!9;-<^)v=yzY4V6LF1SEa&Av;D?Z zcuf?g0xyH1Y(DAoO4PR%*Ahxh$7&~`>w!qq8RplhJ*x@|#f zu1Sr_jSR3FaZl8s8LExZYt*k?vD0;9(biY(?bbR*k`sme=;Az91QD#T=TGHGjX2_) zAA%bgyBboBVLJ3pJ5wqauUcE}#iLayuM|=#`KDsq%GKh8 zlkJw)`k6YPzFn}VcTKEOY4K7X3iTD$5#}ZK3oi!>;>_gSHSBb7kY&2_@!1LvK~%#U z*B!B@sNY?rd*3eDO?S19bQ$4&ga7L?CcpLOLH<(Mdu<{g*C?Vd7`V!}Z58J@`*rqq zM^PJMzIySE{ztClZf97>d6&1;7Y7kZO{W6MrLJK5`3kD}h@c(B)W#@8XrWyr=gXuTEG1w27UOk^)%+WK?|#3UIR%CVXm$#AB{51fGkb+ z{X6&B+1xRU_n6j+*!M{Lif1orfgo;kMOFgNnyP#RvQlG(?jHsSLdC)9mpXc?@;a)AyB1~aTs(d3*!q*y%MV?G?tV45{s{Sttd6Bcyp7T<(gHD4)1xIfrYaueR~&EB}nUM9ernx8RGTk1NF* zDq*e@T?xTFqaAaW4r`$rt%;#=Z#ByO$Q=o?`I5-eg;yoP&9it^BNYh>HCg%j>{5*F0u-Xmc z@`g4Nif%}1blpcM(ZCI;AliOz5MnPYR(*woi|HWo0fBdz~AQwQY&8+w8}` zZTHl*%aW>>?)c(S09tyhVYG*%?1++wU+&t2?G~`@16B=Dt@=-bGgix^iL{l-60H3$ zF%zR*)18jlyFa*U`tOrHjJ%_Rd&yK^vAN6M-yFc3`5QqdxK4w?dpw@*KA`8%+f!39 z-al}zX)xX`TR@9FkLG^ zGZ@k7+uAMJwXlD(uzj_2HT@VyU?I#^2Yz_)b5QBN%<|mBAUG4pk$nIrW}jdYsb}7m z_oJ@;IxzasDA5bsFUg0#^!i%l&x|{)umrc%u}^;ac*b@~`cZo4if}~97fR6Qa-kVY zVv1_ufn8a8>NNdljB8An(XXULn@r9U~394UFpOt^7<~ zp#&knGHI0EfS#D00^xzj(zLP|i9ayn^>*i4>Ha`}UsgXjdu#h#TmWFaWa#>M>+m!7 z7B)w3W4dZV#W<`oN>BW;Qt(-7 zKwwGtiW5`(#@`cTxMt&hmFs56Pt3V+da<>N^Fou(1VaB0UQqC&SZKhzZq+QIdb^Al zr*yyntMx7xB#%W|tzHo{@7mPv=`W#@s^O^O1xn9fVjIlU=OupDH6h02)MP~s*2)n&w zv)nEN6UAlO^itweXLmbsEk%ma3$ex--5U-6pnc6Rt8`BjC-Us)!n3WWJ1S9LE8o^H zZ@mq_VWdU+Ip>{n%u*#;=go;-%`~U8?(S}k+@bb#$`z7B0PG{qC78-_2vnjs|6pjIAXj`Ikg!90F z3&f?=sJTGVs#k=?sMkbmeGsADZ%8>bN`TjRXKGaY`~v0bTiqk)oKuKn1j6=q(GNJi zsyrJ*MpC6{8TV~8j2vlcA*KgeUpF&lsEdQz8q7ry`Oo??h%vBUaE4IMU>c55SGW0H zR@?UaKlPKoi8^MTIIBm{FrH<$p383BfaJbUK}>v3RV79YaZj3Ta*BN)?-I;4qfd7Q zn{^q99DG7ocPaswC+~OZm{p8Ut^={})=Lt3^UE(8qw1bp6K;oP*=B__>~#E9jg|bT zy?OaYMPK`#h(bq+phkyb=z;TRp0Y{Tfq2hAarbSVSD5ZK5oPGoYH>tf=4|yMzGu>n zh1dSEr9!wyKr2qT>DjajnIQV;z_p3`D`;bk?Ly$Y)su#9 zyZj#K4#Wgg;m2;doBe9`Vhdk1?K&BJ6f=tRBS=qJx9-E^WA$NTWDO zD_>Kf7gTE1Ubs&Pn?X<6@OdjM7@q6U_R{Xo5FVJB7+=`GIV>^X3$cW$?h>b?+c$ zP}co{Z?=NVn2NjvnfdAiBdeg07XHu?np`AwpU{6V(Eb!r!zb0S>8ym zA_Jb9xpc=Y#!y%y7o;K!HG%I}zuf)|FBLWyjtF!ir6oJ*1iT(3i(Le4t%ql{=nB{z zF+v2x`EpD59Ez$QsEb2lRd!0}Xm6h2BQE=w&GvW=bwrR1KbI)1At2LeJ%s(v>W#Q4 zU*^#*<8sJo{cELP8nzw7FLxT8hRX%_lmr21vzlLqDi)q7dt{!iu7fk^F~!=0(K9-O z2hRYP+g}B=*~&L8Qkpn_u9S~0=q;3}Y#6bKp?Bl4wAiCH>WJXR_AzwlTzpAVf8m)I z$Fo1kYTyou12n(?WpZ>`b|&|fS)dCjDnG*g>}0LF{5~2U6uB)?>GP$JOyF<85*a}I zpL+Wma^s6frEQqSM;AQk+BdFIS31dB0-Ic`K0jbP*E>=}Q%Mp-&`%Y0{FI$ixSXP0 z+JwfsfBLL~-5NwV;IcBS8#u6WBRXt77KL|_5iM`B0tSDT7oOl1 zeoS${f&f%59-I?arRfG#mG2;LR*6yUaxbWOy8z$Gg7zD_okcRO2BmnCYZBpzA8m~e znZpor#O3WhB@j$c_u^vKo5!B-v=!;O`4H8H%qqbYAXukF3Zw!d_eqQ+E1(l9hE&cT zx_)2bJwz;@DcC;R#%VGmK%|XzCRL!F__5_F?eKRti~-c3{;r@dH_80x7_qqRNuKp9 zgS&Xvj~;eifmtp~xgHvx8;?jonwU7Ky>frtCO*A zk3{YX1+m7!^9PWa?4q`IwHl3Vbm_vQZarjqjH5z=Vntb1iWpHB5|>Nx4f%4$DQ<$Y zs|<8sP8o&DDvXDoc|ShD*V*;5>LMSIBCU{WC+fW$5rq{nHtT9UH+W@rXrfSUd349_ zm97x{_?vk-5%Fv@5M1cGJ?c!#z%g(K#{S@Z+b)%NPs<$iZ+-1=y zkyh)&K7ZYsinKxcuGOlLaA~gM!D}aspG!mT*B!RAF&phPC$HsQ`E0c(t&?x!nYq&| zr#_7g!E9s)mjr=nuYxJ*I(ob;&ZmR8}^VOJpu6;xtZLW6C(q+hZ4b$$PV_k#C*&U4PW@B7^6F3PAoyEk${{#e1Su)&pf_}+{C%Igh9{QoP zCI;tKqbBEE!QN!jyp7W=rtTvAxp@-Ihu+3-%Re>irm~%W-cH*-yNr*(@2*A3+Gm-& zW3e2lonx_a&DOi9$*l)>cAMEtyGCVsJ71c1H&$O*?QT)vVf$Yh%<8RSKFC&l8~_0#Dj2eRGLU`|iyQRvDMyHTXA zM!6>Pvz>u3Cb*Mumz6u-g@X`fLsR)1mYfK}M{i~#F3om%_-0d)lB!}1sE1RwX-b!Q8Ea-8F21l?*g)7D2$%UY%KQGb-IxQTS$Cs->@mT+l_&=9Wi2h)cCG9Sn^)3ehe9ro(z0r%hU-hOW(YP zG~HS%X^CFn{Ucf#MUThuR*s8Lz3RT2t-a8*_T$58%b%dznHFX1zW!kksG+}5RvBL^ z;4|Q?>DOl4Xv={HArbHRK~g1QfA5std%E=)iaJ)Tqf9>2d3Jo8kyvOeVKm4IX+m|4 z=se1HwU*T%({qrI4X}wHrA3Rik=&d>a09b05517WavdtQF3X4<$$xo!z2$Yxc972W z&#hNuTND*QZ&Z)X60U9xx&{S2;fZ}bEVf5f=?}xHCv{&>b?NSg7c9p{dg$ft{`AdL zmR6Rt6TiV#Y;t@mQ?&Xm3oEyo{A^IQKjO_$nmNWTq)aFD59I)+iy{QsL{|zVNB)os z{r-bNVkGQUOg=!B(bonm7%u+e0RaJV!j7j5mb>eQUf>YFF42sl49l4HRz)Q3G0QL5 zgquao=1a*@zl5J)gG`A#$5?@dEj3iDKcm+Vkdg`Qq?9qo$d-h}jq*smc^QHKF2?Ay z-3_-K`PUd7lv@+QaAAFYt5r&n7%Jd#_!h?C<=7q@$LO~m!A8N*QfI*f_0fc`6Awrg z4olGoE_z0fQW8XrJHnn*cEd7wUuEqF<{o{hTue#kM*LcuH(QT~C z-jkHB7?7J?5*arf%26WtM;s0dOp%uI};NQ-S-Tr*A08$m+u<263>_d%$s~Sb2jW6ntA4DTE+y0Cj56*)KV)c(Pz%7X3`>zad687Cl6;>W^iV;T3nm6KwkC6jiic^%=B zfM&QBh4wGO;J&^KxKz>D?V*i1O;C1Z&vm*+_P(eyyGJHIswx!QTr)Tlv>siT+4Xb! zOlKRae)Ehb6B2I>@S#<<@c2%9`|PBawhYrfz?{8+t@{BrIFZ!cmPtLLx_>yoy6zLI z^Sn}e?Y3^fn8wq#>|d#UH!p+VH&I`2%BzXBo7 z%69aigz{YHAnccrD0~NXCRvt6t+FT$^!H6VGp&=1!}qr@k*B0%nB^BPH?mP1l604y zr~T{)|P>|8|NYDkA@y8Rzh)r6D~I4PaPzFnyG%J+BNa6F616 zwT34VmcWZE37v+A~GefR1_O8v2n)|W>ALA+s}XCq%_8%E7^ z&MxgzfC_5{y7^@`A}?xvt=-lW5g}$b5jJXezFa6+lFLI;oX} zTQ^kbk55w~I;_o}uqA0%O67$)cE$I7AR+$)%L?NY?(l9U^DlWynP9IIO$%G=ZA~)8 zM+aVqq#%9*-SE`sC7m2MZs2Ds2YOR{A4Uq_puQr3yd^TE@0$SaM%pE*a+hnoD)OEL zuH`U)I;dvN#?R<|ADz({_RbF%sGU~EB7SJm1arSl8FgLQNUb<#+8({Him1MflFI&C z#eW^LLN{Bj@fw3S+?v))`q?|vhIz<8J=XyX^CqBQG^CR@eswRD_0zYEnn0WXIMILZ zATkCR;M;2_O>th=+Hc*BSTLixeL}Eiw4wGVYz34L5GD#zom#D7zEU}JCcS!PfV84B z=BNUz4B>oI^69Z%QL{PJN3cO-%QQ_rJB0|Tx$K$o;M8311!RABEFXLUzdeFs=_d=W zq+usR2V^v@9n1fXlaPO<)Alc+2xYIXx;Wi9R9g)To-!ga_C@Exy}lhK`eI~_K9~%S zhq3`DHesf-)t2EDC~^PAE1<(=EWB{$pPYhGe6|&_U0O+79%77d(R#%aE6<2tP~cuK z$N>$^86EWeH4jKEu{%xLOSDB$?i{V}0!uBrawfY`e#Z++Vd37{(C>b1u2C>NF4KRy zo3=YFDrov+sA)r|EEl;tC;`g(R{=Y6>dsZ|XWOdL`$iO3Dr;6R**I)89*S%)@4OTC zdeGn-xZkEAlj=N@Z>I5&N8^9T%kOf#wi{W>xD7;*$nW{GOa_&hwdOJJ8`5E}3 z^bpgzW<_n<-N)|~B&=NN52$yuhTC>))OlPF)R(R;=I?z_|I-nP5o>Caa@-LiA2`CK zCz$Ed20qfOY>?U~3Q6s&gFtQ8hT4tt8Q!{QLN+B^<*xOY{(aTPx&2bIKjnn3&(Vr> zb1~!hz&28%ycx_XR~@glv}L7NFD9lLSM_!?1D6Q~<6VZ*7dwyh0P59Zci1UCP)Sy^ zyHvJxM$TUf+yLGCkpodf*kC%(a;8@YRtIwoS+Mg#=$ljcI8j1j(repP5VujXM>^Pe?xrTYo@}Ps)u7&r^*DyOw z1Ar)6L^m*H;d$5z-usrC*Ik>Xmzn2y+eKvtpWk&5cI@%rb&7O8ncfgyyGXD|4oq&~ zqd$9pHT=;)Nw;g?oJ!}F^)%mPd7*7^c%*Q`B2W9bVnU8K0w4&zmlc|ma`U#u>^l=X z9Ib}$WtY86>t0<2l9pNBv~&PRJHd7G@%P90t_-vfw14w?SZ+El|C+&-90v>Spd$#?%MNm(hXx-;8g)DNHnmJCZ`d-1_jIge%M!WbkuN;Mq@gp`s%#~RNxl^Zp(!psnu}nm5EfTZ ztpr|39IehnIAy8}P&e@03=ONP5$=*Rzy<>cN zn-y|fZ1-rZJAt|z_-~8#W9{6Y8EpVcsxt(ddo^kUKR7Rwc}f-PmY1EP;nW3By147f z{8R5%1<1tIYID8cDvFc?RSlaoLAk#!xO;T;Q(|G>k74`1MBytpaS4<;zc!n#{Gs;& zOY8Sb_%r2z+T`gVVZRMj`j3*;X+XPGOZXz5e_~|;@pa>oBa9_gK3a#o$dUkhvKIgV zW}R3S9%PJ*h5wY!xQ7SlTQyCZ&m(TsOm-TZRxwjEr5>uQ1OGiL_={11)p2qF z0%%uywetR*T-v*QC0=wIn)qb^JQFP>2c=R&o(2T1-0TQWuAGe1jp|};b=xC0$N!Za zE+00YIVJEA1f`%~t(}U)7R^jv&?zk+SPf5F>pxes>84>C8nAT`IYXFU@81ng?|J7V z7AiK6zxyU$S}EE(ZHYqLlPQYp`+XP|z(%DXYI-b2paef$7S~K#tO_5fPrB<-mQ!Bx zQu=m$N~!^uzhhRjau=)mmKtx0PQ7JYQR~HveFdV+)M=NM@oD$DuT?ezNmb{Nd-!KC zWLFdDYWDXT14Eq(zGGs;?Fl-Ncx``9wS(pZMr zb@{n?JhN-xk%zE0NjyfVeGx7w0Qxh^v`5V4ewK|Dlwum%{7@0 zo-F@LF{JZxSFNZ)Fq8cNI=d%1;(d>32NHmgcvyLS$hi>AX))of2q$?V&@bA|Ps;f~ z3@PjE1pm#;#4qsooNS7}upaXp=AlF9shBtV?>scQqVL9IvrDGC!bg0?lEJAA&SF7= zWb(-?pM28{gcs*Ice^AlLvG0q@4W8kO^Eghnilq3Q8&2QeiM)Ru-9EgCd{SH<^(~66gTQB#h+O+VTQedfU)E6DEU=sLPWe}k!2CQH7}U% z)5)8Q*ATI*RyRxiklO??J8;j0#2hepmG8Vxy2USQtIu6fUhTGTyhqKK-eF`T*UxSx zSSie(s7xprpQcPjw3H0u@J8v?FcAeGzcQPr>lCoF)e8-fMsDnme~f3FxI8@+Pbj+n zYdr|YsX_$B4qc-H9&hnJ9{3|o36}pFzYN9t+in3v?YU|NmPBY_*ZBTHB-nzZ1cwoEX}E07q zgqm7Ewbn_wLbHi1R*KR{+65;m?=8(j?7vOwL5z^z>YdIb9**$eVla9?$4!saQc^`| zFL&zbik&n@aa1GzLoV6(eE&@8Cy4DJh5tbND&3$t2VmjlN)_i;>}^phQ6r7Y)>_TFn7C`f12 zcfWXoq7=ebpN!s)^t%7YEUL!f!^%K~bM8S|rwArGt6QF2;UZsS8&=4~dS-qBCUDzP z!vD^ZS;icq&;Fk97}B*|V|>I)TMpjp_Wj1tHt0iuv(sMEy$ z8bN5@G}pSx##f+dp@ZEpY5})_LaY(g+ee7rS8yAH?E^+?vaH0(L(@z2lX86pu4C!zi6MB@$g%KW6Z89HG9%mdr?k{s$JMc6o_)OT1k(7q zr9Dr8e>9=te!0q-%dmJCSQ>t>v`ldJoxfgHh;TyP2sv_cj86=gh%Q7**@m^`(PQo2 zrcK?X7bSIW<)bDzt}9<|GyKws`yw0cMywce-&~M=E3xgxT z`HHCaA`!-&vKwc28vL!61F0BZXpfO+&q(0l$TOGeQoYESTYg}k1b+KB&)CG{=RvpJ7HmdbZ@}|M z`0;Kx^^B$0iv7Fub~iB!zB`S^LkDT!&sd$yVeU3;;2WJOSznZKyq{!Jo57JU73<2 z{U#LTG2um}QvVx^m@j~Iy5nhQThME?^EUs!o3*EY>2X`PGNyTH;9_E+{blM4)b1LK zy(9101!`1*)MxizuIWCh|C{xTpTCY&>O^|k&gnuoT?C@4#Zjwpgl(9uS;fxM%la2J z$EcE1^iWo{FAv~;)^E8JC_(&x*OUJoKfC6h?86aO42*nk#QJfB`+W|v)VV#-+P?8E z`NgMqp+Hyv^x@Nl&iz>p z0Nwi_H7({iih3hr`nEeij$J!}P*~Pipn~K(TB{}bO@|ldZ@B`Qt@e6uL1QqSROdf6 zFIzP$8KzCKt(SW4Ma?;?x|M5M;lhWsJl=c(Vtrv4)+@{n)AN;AylgjoO`?2l!lF3W zzhdtlB%RCUx*%}aWPG)tLyO&74Gm_sMDqL3H_6r)jAfK3GSri1S}yA^*K1`z&~3O* za830Jo7JkBe0M7Vxe&>BQVU`-n%2F?-(Kc5pwZ6YfCct=QKzEEq@V}(csc(H$hV( ziJ_C9h#uHfae+NA!h;N>`O3c;%wMNJUfuJeG4547Y=iq4QdW1~XOH&e;g3*tMn~^C zlcGE0*V2GzIF{(opArncq1a6pj&ejR1bvSo+%dLjf$b=1} z$(voh!lExUL$mg(-Z&W`<-N_ZCwsef)kbo@EW&UEXfz!V;uypwyh!Mq#xrbnFN>?v z^57Ez3N%tUgZ;AMR71zd*Tdb?9E6}{NyF??mrFhuge6W5U|23+H60=;Z}UvXj*_k= zo4^*jhd-{%1|G6X%=4YgdgQ+j|4TZ<5#6k3?`a?Z#_Wv=jX5%LXHu3#ymE^pofO%oU7*zUQD$1JHz*m#M_u@5E8xkcti!HENxjAI+e2G?(1eN3mJp-&X@EUoDM6EKdtqd4>9(TyfSznWK>+(U%KQ0Q2LFGQ zi4~Y+UYGg0!(`ddxhM*fStv;=@Q_EGW-W42M10&yOucN z&c7Gw^&rjS-$59`drQ+Hx9SVnR4e;{|4yQ@@V5Sn`h`%ni&&2o;RE(R1j7;C*;7Vi zXe?gQ1RG{HTmoI!^MAtWz+AMVt$vAj(-Eg($#2?< zef)zM=0%}$uB}*MVygCb{?kk6LaWKdkCWfJ3X+HJLx|rJsTt1r8TBR5exdeClLJ-t6eu0cX?rWP!XZLsvmtAG;8jdXPMv-XO*D7c@?+VJ9ZWDZ?h zZ&345rS=Ts1V?V()V7EKL_kHI))SW+?nejD!Yz}Rvhy`EC6f!C9J1<((Yer~j7H4- zN(s??y&4(e8Z}@9TjAe>5I(o0$ClhZ0lQ4hj+(LzOgCyRVyKjRNMA<$n$C?_Mox5~ z^Z^YA&-5~S%3j6f{UDQC2s%B(VuTK%|laH(oyrK)My{46%n zZel_!|!>{Y{kNqdx2Z=pwGWLDE<^R{}=cj%0I-8pio3nEtW|SAU?gO79 zNlN0YQKm*(-FpfW;3t^8XGt>lvm}9HmvLr^=W1~pusW#38BbZgB&7RMFh%2P4s27O z>h$G6(iqS(^3j}N54!6NyZBxAT&51U&UeMqpHkCPQA*^fIgJ(|Rz~MswmpRB%Y^PD zQ5?zZT@Py>;R^+aE$Ik;u5231{oQLnT8JAz8}t;DP&CsedKvaitZPzX;bet9cdOdJ z=U1dgbu@$tGeJ8@fPt(e;;i+EHci3;6fDMvDLv zu2TGOjwg>;*A(k!JATc_ULK!>hZuP;LAo%a-~o^&WqG`wsf3)?EfDhBmxA%g1^)eY z4J2%3bWI`j)_Qd?M0?jjH0fG*j*Y)D@FBVJeMPA=zCWg@Y!TiF!2w;O)l~GoT(aQC z7$73e7y!`k=6$mXZz(MGOtSaXdgz+$Q5Zd8}bt{SRf@cp@}=@B0OA z+ioKmID`nCPY8JrTwGICU|LRlPD3?w(p4*97Gx>K@Ps8$Sb=l~u z&$j;{uoOC|q(0Ccw+&?Q0ElZcVM=)IPzXre(w`pG`}fHIX#spnASeSuL0~Do-McC^ zFj;j^`z5FO)Qu^gLhWw`PZF|`nO4g9J+#}w0fO3;=Du@Gb$`0?PA3Cp$ z#4t4Pa88=MObBCZ529GzA*DXOz~ptK&$i>(m`_&J-y$?4JBlG1y5&)(Q#0*CIBJ9% zkHZ|)k4n(h6<79*POpWnmlT*Jha{KI{1czm??2W4p(Hw~1BG^Lyc8%Hp@OT7>rHZr zx2IUR2N5gEk6fQ4JiEece=Br95BlPaQd&RvYw{L9zOba^xUKLca<#{Lli{NxSRfRX z=|laKVRK&EtxgQd(!Ye#UPNe#-FSqgcF;OchoUP+3oZ4gD_lFTlP<@u6u&LWol(nc zdyfV5pa9QecS!ukP#DJ=Yt+(YW3&f5%py9n2F?0J?q+bF|7wreY>kwpc_{FLcaBbW z@t|Dl(^zU@HJzKrn1GhR|Lv*zn_O1NNf%|iw-Uz3t=CJkUZR1o=FlXLJGDwelkZt3 zbAfih_MkzsE20W!3^P&Q?Y#a!oN0V5{Df}6jZ$Z3|C06(qB>kfE}$0vVuXM{=ud$A zPD#(d%cC)D!tfvIwZ<#!tCM_07U?o{JQqBxgIz<$C4K0om3$S=LKptr@fX@7jgwhE z9(fsCI+=1`0)Qk&PV{*3rRKLAYt)p-fe9;!bOZkT&17RqZ{vF6ol#ZkdFU4LR~8## z%fb9j$bgV?=(kF3g%ad~OK$idsKxi5!Y&Qxsg3((+wDf)Di|QZftIbKt(lefnEfOf z*{j|)`MrTmkCEciE&J^1X`8t+u5Gq`N_w9jZc?*lyeYd7T!Y^v&yK2B#OtP;nf#1i z+>35Z{E&!QAJMc*<-w(?!2mrXM)y^lhMVt5yM4g@8hwOVKl!{^mR^eR8nmE@hS4brPT5G`mo-?(e& zX>j07%)P+akS`!;qq(3faT_GP&i(bqw9>ru8s0jC?c5aN8nG=WA z&BXC%17mcBF8-9@%e(KZw;<|ygPN0qHCHzzoKt7FQ!Fh`uO+ZnePq34Vud*=Od4xh zq@0T*W*Mdvj<6db{TV)%079oe4G}2+LWn;#wh4(wukASrYToxVDHVMh79n1?@IL6@ z9o}wJn@OCdX1uIz1q)_}-a7!xO$bRT1@`1KmdKYyLP@p@;5h~bP-3@&%_+ALR~-kA z9f{GX5<+!#+dh#c?m(9YmYKHBB>7rln+C?IphE=V7OO~l>Uh92xGzR9tG!galK;}2 zb6Qv}k;+^)@1rP>nSfe3pnICj9#1-Zjy*Jv;D7Ehzn!eMh-lvc@>Nl1i%odWvBt=! zx=y4wJ3!Bocvb6Lc_oH#-CL^^{zw-<>q-qC3%AVA-NSQNpl8> zM+VJE*MCYzib$O5rdBN<6S1aNA-|3?=gsCZh6bwo+>tqc;(UHXcW^1AFL&^aA%+7K zXxPtG`9wZKK8I`~a%{WczZ;4znl`0DP7yqbbi>R%4_o7e8t<)hlN9gs`2(nPa{42L zpAjE&N5#u+0|J)=XzEb9S)Msoih$o&0=O%Y)5^d|mTpXSV7bUQqsCxIVd9@8hr+aGRa!e^Yr)m-FJQpzS>1wc{@LV^sZCZGi?01-89u4v2)<%yv7bk%4$-u<-aiM0rIVSp);tbBWxr;Yzfy@lP+%Qkte$85WQ@J zIU_}B=($j+UzrU=c`IeDuF;!9@$LTLfn|`=H{57$<>SiS+IeIDT3JPSdv^+V+kiezV`jSy%4CDF~ydA3uH-WwU! zhQK#bW_!U`8S#=f#!|ytVN#&S2;*!%*ffbC*-MgH(<)|l0n(~6^m;+I?RrV-R ze|RL%WBJ?QM!su4W_C!gNo*r&vl;UMMKLPcBYXw3VxR5&2=L6k1))DBe8imNXq7`@ z-}Zb!)isrT1KG!qQmaQ?jZ`R)f3qg-DJ8?*h1meaHIl&rl7{on4-*Fr$IR{+_<4eH z!IV&_NABNiGp=^IvUC$$|57>?)U&+T4h<|SpM0Qg9X->bQ5~oNxh#WyM>sE-&9}|O z5hlCeFuNb;l}8qTMFp^PdU9&TQga}sGb)rC5)*XOt3J#;Y}nKp-%p+Kmo(=(PWTTR z$AmoZ8ecmVymt6k_jdPnAL$aM^WU-49F9};Xqod|ah9wbvQn{gKDSCb)wvMD>c^0f zw3;jnnyt`2SMK$7Y5TKC*3FwzCm>f>H0SGcbr0p$a+@!KI?cWAi@@=%F9MUuO)jWh z*HXIi7lBoJ)ZS}l!2i|IcQ(*k>GgV6zo%Obn!{(LTD8u+FD!WkXMFJ*;7@(trR}U9 zJCvS3rcH+h32zjSE}KOL{i4m=+7UR%NiMa<3lYE|=OC{yhf22$oKe^DNuV0n_%5v2 ztf*BRE0>pKmt+Q8C`W~Cb=r@*-p3Dv7{ip2Rhqo%&sO-C2N|TDkYB+!W`VEJy0odz z@`HN23jvB6VNfeQ`7ZE;!~+eSgbiE(ma^r-6TByt)^1dCL-(&QRVYHzMnY+3*!)a-jTU?Z5zR;~?s#Kciyb6u}uTn!e(oWLCXpiDsQP9z( z=hcWx@tp!^rWvxYO2bUM-^?r(i8CnOPJ@Fig;zE^e`+e@v`_l4K3)6^s7pv6)7toDtvQ#%(S%DG8^=KMksi?Zy ztNh}btKo{Qo+592V|++So-LZu<6odl0T4J!A?VbmS6uz`!kH(;pJ%k~^ij!3Fw75o zhy7iophN5x9T;IyTE@MdQr_5$G0G6nf*vX|Z5y1uSz0chNu%6E?#iN@5e}!d8^Zp7`{+`CMLtzPYlonEXz^ z?0mw+y6n$y;Mi7((?_L{|5asrI&fH3v&2Rl%6eTViev)KPQ2$(Q-Sho%wX}vBulx` zn9P6eepD7}w|nNWEy+(H>Y9Z&`b4bKkgJd5w>yK4+8{?-O+3E}GkD^eEM3Fx?(1l` zoQT9Zjf}E%(siJIQaJvp7xcq6{dSg)ApqI0{&i$2*vFaUl`q&DqGerb_x9FlYElBZ z^3L2t2CKh~2_9H}o;WLPdoNBidZwvs;;K010`>IZ^gEPlz}@3Co!n{&^?8J~>|$&# zca3RW1ZOw+Br{9+sUJ#F@#X|Kg)Z?+~>*xdR5g816gUZ+??&i+I+aXn=C(!10V|JAl|=M zlNwAq-<|{Rd^%z30-q9ocnR*pbY5gT6^+OB!vts8s!sRD56gy|t_T?!m>W4@;_ZWi zU)G!gBaYemH(+ELeYC3Zm*}MgZKJJBxysT0?&OE45P(>;-YT zzGQoqT;H#6f({#M-G^-&DX}$7{^0?x3l%1rKbOkA)+i6bRv1hAnX4YsfP?nAv^hvd zY>2~r15Be!YeevV@^t%u;pc)7Jv;=Po@1^2yt0;vMUjjV0dwZDRhOJ@SUz(sic)Nb zJhj`793Lw?=IXUNA;7&;aq|2sde#a^OD2L+mD7JtjC`JJ)fH{}@2FhokoX}abBfrv zG=e6D=uf`QAqpP7%>j#&%ryHKgBt?w*~5MDJt&COFRB$V?Qp^TktS}9yi19!Qj!aP zE8u>NF_({gGg!7je!9e_5e#5qQ{PfFplt^6fIy=8sbCdC$B!rtm02% z(~MFZ&EP>B*AV^!e*dnMFBzjk-xG9b^TPevV^%O+ay-}&J+%5emKqyk;Ag<^++*Er z9^k>u_^SvI+tY=6!zq(S_}og1JS~#f&hfxo+%ceftqc_pbauIFqO>D79=O@v&<|ML zpJA;xJ+#(FdYT|I)Ti=XS{ zBcxi*#^G2(S0~z^)R!?TxrNFhX*aFk50IWU>37iybjZm=%vsn9XW3IzzH`25cB&^7 zW77~3wfyCTe$ToojSHcjE47T9Y3y%%ZNb{t{jLT`&z$2D0X0l*9dqp_W)vhn%Liaj zNacY7?>isVBy%N^tNe!t$=JsvchQ@68*?XU4_I0x__?Lv37aEx1`dtOJU@d(|H;cu z*#f|DQ>l3a=BiePeA&ReCP(+F&z!b^3mF=OH+L!dXi5g$$f*?P>x~dTuW!2^S<{m@ zn31>Q=-KG7T46KAceX?4z=!bhRK;AfzcCz*;5ki$e7F2mq|+3x%+ff_IU-QSa0Ft# zs9ye0&e`>A07ZdkusWS$RH5yb=eGIL@kK_ZUol^o8WKm#vH|*3P%i))phZ1E(-WH9 zNanJ)SZwnl2I&wjvS^R3hd^4#KR=&eQd?e1bJ%iCVsj@vQ8Z{5!j4^DV|40Zt!B;c ztNEAkJP86xo_0B3&Z60=x@;mBfUv4PtoOWHS-7_@Yz`oe2!-+f3zd`FOq*^ymDpaC z8Q3<z8sQR>3YC3kje*0nzAnDfe$3Cy|4P#TuE&NPVX8X zATUHuB!ChYsJEKNcH~Xa8KfdGkwTNeORS#_$%h$YC@JJjO%a;dAjh;0AN> z;)Ij{6^_ofexkYCb~m21t$P5`~&wzwCZIUvstWe9-QxPfKb(w}X z04$symT&H;*ttzRExLeHB3D{w>Zao`S3U8|CxFp^=K*d9Qd}AU@DV zp#c$oNhX-W4L-V5$E@ecXS+^FfD4#7(%!*6_l{i^bS7xV!j#T+qUQi}D!U%h+Ule< z$s=Fx1PvXn*hQ0wL`y`13YJ`XUQZ2Z{ZomF!Ejumc-T=tSU^LmhQWKCr)xz zw6z#YKQK@2ymySdWG*^v=Sg~3auxjA)?{883&`7^N@_T_TjXbAn(qwhno~-~Dmp9` zdoF@wUbzmJo{uX8G686WzWjN=^LAjY!0ZMS*bJY(6~Zk2KKM7fomDDo^>X*90gPncXF4Y(ew zJ0&e-z1q~e;g-qzQ~$neHRwm{Orn&Le63B1n^Zm+5jNoJIs zO_wCzgP6$9+a$5}*_9(l*7rdF9?HurT4~};g#IxU%lcE`a-`Mf%ZO}^Lp%`;$T69J zHpCSc4=PHvs{}VS#Q@u(T}M)5^FSsryO&*JokAYDZp-e$8;5xdKRwCYBd!qX=jrSsyUB^=fyE!BLt5UUgg*|VQCY; zvd(gXIcEjsJ#!NBHY-mKaiUn1NxbWXNnyYnTe0+J+X)kWKfNeO7m_C|(~;GLk!a&D z?TkyHgL$-C8kKFhQN9#euGA!B(sd509@`%uSZUDXuWid-I3^fq_6&F#3 zxGZ7xvJ91!J1q~zrhwOdm@}_5yP4x&A8KUjYeL_xhbq40S4y=2iShJ!?j}&AS zUCHlC&RRv_`ndGSH-~ww48TQaUxbBx@`;p{&_QMarnl;fgIN$cE<<^cE|le-o9hK|JU`ZR8KA z?1@!LE{fSuBN!bW&07|>C$oXoJKLRiwl8HQ=x?S479wv>R~QdvEXytT7<6p?eBAgj zp+a>b(U2bwYe&S%=NQL79Rn=Z0QBlE?|537H!Ir-?BDHSUbdM5)qgD%{JxgzbPVi%XfslIEf67X5R$chu-QJF%fLsJns{o1pxE zZ8dcJvM+&Nr^DxpzGyOa0oiRL;RXQq)DE}4FAeSvF6pp`W|i!i2Yk$D$-sOR)gu&1Vb|~1r9J!kCmGeBAmNw$(7*C5nwg;pZF4t9+nd3 zC77fpSaz*jK1a)MlcvaX{ItL%M|1!sn5VT|P6FpeOho?8ruP{T)YkRk?H!6WhoXj< z$~WmR`g}@;Q0QH<=c5N1w6&iseT}kpg?sHDFCk51YvEtp*;+$uC!rXnmWuVutjkEfKdzzdGu<~j@7r^RW)F$T?<)-2t_x~iGy+VDE; z?u~<0g2ZQoB&pOBaU00d*f6UUNAskzvzrB$}U6GkAgabQTmn?@zmo0~tY$5O3y3`5}=69W%}A^|SC z@SY`cV!!PCIm0UQ#lPqu;HWVMyufQ>Xi-^o^dZJ!^R3Tc9v_DDkwa20I*Xk`2Q4A}O- zvKsa+3yqU6>R&chn%e)8derm}27s*;&3wyO!*TCk4P>1?XSJOlQfBp88^;*n2fKM% zPMtZYx^OX>ojVIaXgS2?uWmz}>j&!-gxc9)E|1U?{8{HR$$P zzUVRm(8Uy@eP|D+Kf+qY3fFw+H=_kS2xkCZUCB|@!%nMPry7YtUX9(p57Bgjvy)0d z6MjJO+1~Qm*$^kH$2?Q(tMU>8u9JgiWu#Vvjk5ztthSydvz5dNnEPMOR7P%Sv2@Etemfna&Tl588eANnETU$hx5-quJtaIfJK=) zPM#{cqRZ2rO(pL_K(OHUwgE-}ruClHo6J13OtY~R!`u-qOAzb+!k87KPat4Jzq@4X z{zWB`7zg(p2~wN;xLeP2J0M}mI(`!)=k4((${R|?g z2mSM*&%-}u6f9UjisW+k z#EKNw_b7HZ1hgtzTTFNrwcT_I>$Hy6>16suG#`c+g<59N&4~}Rm%<+&YVIC%$gLiE zDLW{=@(c)>_{UV8Qp#c`(lxglhQ)(}zTo3J6@8L4b4e_VYSpYMaz(4*|Ncpdq&K5Y z{Y9gSwLjA%;*u(jCw2HIC)$rs%w0ubj7A$8Ya3#}{CAcVsroUsFTs8`RxMMVliz)w zKI45N%>82wtbBm6*6)4DRORIXMAOxteR;8a9zxfIR~x(URXAF-shqb#P;4W)%Prr| zVr0_c>3E+*)%o4p)sm!jgzSg*mOh9)E4BwG48LEI{Hz)lBnBk$6plmG0V7*`V5`(* zXz?pCd1zi0@DD63OiH{MwApGiF>~0O_b0;Y8A z{h!%J&|1&a=nhA9+u{WKgRs!M(Vcdq;kU2hZ}A01!r#~48yd1{!VQznyXn>{SRs1Y zX9`>siLbn=%awTLY;EtYj26fA6htX4{SbNdr(7MbbMdEyiGC1x^QN|2TpGwM?xp$A z2IDy}xYl^73|Pw|=N1En@V3H-Y$%9v^>doHUWN@sLz;+6O#3D zjr(s2Ewm0&|GLs1fwlt`eevn^N@jEAOfyJlacs!_(z}wFgq-NQ4aPBwrWKs?Yl(lU z>lhh#85RS(oC?2ykC?|h+g?4GW3sYV{uP98Ls*rXN@ngRBQW=WfsSgmugw7Kthlel zAKz7Zj~M5NWVm#@cA`pgRWR~AV^FERC%1D{Fo*w2qMO4=nL@QL&?&JJy zI4R08@6|zeNedkfl?2Pm_)y$-vpBm80|6!+st6J4x=ov2oL1Z7w+?=%Dl_=BL$^!a z^7GuymV4uSqd8g-jmkWRVPr(~B53l_u$>kDDu z?5q^@u+4jkzkhJQ2)f2|-U#wGgPG>QZ~qUNA+`q0GUEYHp^_BPS>F$|_!$MKF~00U zC^8ZxSPI*CK*b&!NqEGBP5YFZpjQuz`<0=CX?eKSVxMG<1_OMvr4sBRbK)_@E2!~s z=M|l)p{xW-M{9_K-y3e~1p{4Ulb`kF2Yw4{JXiOBS^z^^u8A10q8{4hs;yE3RjeiT zkvC7Kr-qFLUCMwbhN=KiCSoB)>U{;03igYjfb^3~D7PvH*Ip%6zZ=Pv-^X~#O0Reg z5dqh>f$lpMEn6TElf^sP3FWOpa)8fZhWC`E>ak76QsIP8p#W zW-YnRebNcgzxd04Lm1xvIy#A&wIOqrlW(JDJkXZUlogy>uHs*>4dy7bI@HHtrm@B) zuLH*rLA-~zX)AFOTJywA3@28!&s_zYQWk?Xe9&r7=HIly3GxQ7q| zo%!wa&PSNly7(kVH*Iuzfb`nIQaFb?<8~m2`6#fo774riSF2iVG*8?-%WSdFHvYTl zT{6uJkRdLjFWG!9vNWqdT;QFwl!?KF@{t4tyd zUXiD=i^t4P0H-ou`kl`SxYsJ9XN55hv?=~zy0)5jd3sg6j&IQ1yFeA8wZ&%y+viXw zZtj%qny~nrJ%TjtT+OHp%DzdD#CrqKh@>;v9#AK9gv(@&*s>uffMN}b*J+eK8z;Y@ z8V6n~6$OK%0+RvTg(~kbeDaVBbNaNQKbaU`pi*E*nZBv)ebnEy2)4s8tdgZg!29!ACJ^A9wl0gP}u zqRwIkeVwpO-oN+ z5w>;8l^`jaQUaQ{2!zVSOC(+pQ&0qyyZC44f6nXw+y9I6hF9?8`QD!I^Lsv@=krvO z&=Zoo``qWYci%5~_A=_mjo6)std`+g{jI3=JAd;`id=R9%Y9DH%YlzWp07FDm>p!T z7v{=KA~wv`_vPJr_VQ?P&d~`H5jFV?<|qBB=w(nLzT;qwaB!QRq8ujJ-nYFqm{pyL z-FxpGYkFoUO?U9p84V;fsmQdtr=a=SWZW6q4-&7VhiHW74W7ItzDpSC9qTsXlj$E! zf8vzSK;X88*H^yqQhfb)(o_6PY4f@-VvaN5)@yC&!5wvBJHNWjBs@V~+p2-*7_48c za!-Gqmk@%L*42cz{Z7YS>R}%Xn0|r0aigO2;*a9ydhD&RMIa)*LyP z{!fsr9dxz_go9Q8y|HZj4j8dV^`<4qhA*6(@pJgmzZXhscta3hMd96Z>19eDi9F#~ zIdBULE6%TIg?&Mi<=&``+6m9?ZQqpzUH!nnIRj)!d(P=ANbE;TI9izKQh`kYg+Rcyzfk2 zDRzmAEDlxa7qQcKaY!VlZ!@8BV|pe;Z?D>ZL>!Zs($|!~>lSMdqJdxK!qS!+zbVdU z(l@8xSmE#qnuhd6+Ikh}drz>J-A>mAueV$LU{Enm2v* zt*guI_8%1&>_0!D)OXuVQqI}G(|H$C-{Pa6^!_vYo33k{Hxq6&6Lgi8(~ZxeNBsx4 z+bbTcYFECSL*-uKJdC%;>$_W#%L<*gWrFoE^!^>d;A_Qpu^ASjO?ScM%V*IaTjPjb z+**3m40DNF%#VTDE2=Z)46FP!UsdJDfSP(qYr^1i^DEVCwamPgaCD}njCXtEY50+K zxt-JqlX7yQfemN&`WGu;k9B!AlV*~edPHo6&fgb6_`iyQ5e2v3+uKw7A({E>w1?o-)aws2fGzDd-Ki!%iB;uaKJ;bPL_l?z`BmxD>vL!=@VITixv zBw+B&8JVDGB&&t6n59uAqeifcHZh-;b0;&I(p3bnvIY64mcIx=SF*1Sd96{%kO@s>{pFZbp6=b;|tdWnbJY+Qp0CYbcRQ0knU|EHF-V zYN>J5i2?O1%2$2~8DcX=w?b0UYA9j;CF6C2DiTKUn$WK;A_r;LL8$(qX%@#C+907w z!oy#a=BXw+(S8{dsMD`+F_rZRhG|t2Z*1uyqUcs_aCzAv&+)V4ce!eiDzEGUqi(vZmNS-fPd-a z2WUQEy)-<{ApQ{C^SnQGUXm@?@tys}!O5Xco5+trht#)eZwa!}UiLoj(r=~yA!F6( zt6#@Y`rg3k3PHUUq?f{Onc_JzGTI7F?y0M4=~gp*Aq4z2E>gYJH*J2cAeoM#8T@P9 z;?^?9Vm|17aEu^YRj=)Ow>uRv*@G^52B?w5jVmIRO;~3?6kB zID3m|+oYUbMO!Nye6jW#*d!r+a_)vT?N0ZV2spGS$#h(y@Hbhs_D%B9HHSaF`SV{2 z*hz#qU_cPq6G`q;lQWP}4O_%rNr)%t?i8ow&`J zOk5amq?2ycqh+>OKQl`X^DN3TaH+P1se4Poe;xI;)TO-rJT%B0V%|@LTW5+jTM7s)uA=J-WS5~{fYzQR#egg8$>b{us3y+G_KwsWGN=>ey=YXFbj>p%;_}gR@KZ(>O~&6Ja84 z@}KuG1oX7hQaCJmj&(aZH_keips4mCq)qL4WZ?E{XMAQ;g@rL$b*SQwMx8gXNXNBh z=uxKqz0TPA{vnuhTK=??Hfe9&E>8is5^u@Oc110W^e_JHh|v=km&>qbv<`om3co3d zoG+w&YCTQx7j8AjbfnQ_212$wYf7?wmn#xdE82 zW*>{_yPnKZ)jPNsNh9tW8s1d7WGF2a5a%R)Jk`L*yqPxwnPe=5FO6K3cZZR<yRsZfHMp zBUHYQ3nEg|ZK~M(owa?-7>b+-=6M-alK%1(ptYxRYiTkdbMEfAeyy+1LL2MQ7>=#| zjhZSvNp^!4lckYN{$?Y;+_E{btb(*B_3qs=xX~WN2xqOz&cDB>wIYPKRZMr%P9v_Z zx%AaXRbH{zD_WsJ>>R-dugv3bVz8%rP6q_Bz+XAKrf!w5DT{!|&VM$kszuHvW9e(q z2ojr2Dyxu857r9tr3#tyjmR6>aU^1);4?kmo06jCEp-VvPipDSO8K;sJ)NU2MeMT zuf^)SeEUz#C$o(G(u4Rwif(uaW{M6p%2^jHNIP9xEUChQ@X_ZODQR_eSOe!X0;UYE zN=@{s)_BT%$P^)Pt5G28D6OU|sOs?_!-FEEmA8*17EucOYPyHlAiRQyWxg3&e*_`P z@bGLIjCA}^@Q(ob6Clavdj^mZ26dOLJrBS(No(YB_UB%*?aJGNp(y*8K5jo;`tbZj zmwGdU_VdzipZS!IRmq>V0`~J}I`g;}^Rxv&$Gdy^mdmyVc&+TarY)t6 zr+||TJm2Ty$WiU?>2v3#VVYpf2}saHeu}V?nb4H`hmP!PdT{_LrB5f8)N!ud;e>al zA}ooO5doAe_vExCOn{&kpBpv%ubux4wP=Rrj)de%L#9)YvZwo z=WqzOkN&=n^U-I&I#pZjhcPwabz!VD&bt=jD=^PyO{(C}tOj$s7Eq(L;hcBY7^^5J z{hWLVBi~XT0dG})qGq2Os1W;F&R(U;-C-Kc@qHQ=gHC$&Gq2ro$*cchD4U=>O><*+Slrs4xwFv9P2+d%4^#ep>$T~paUf6~SCz5`WJv_-# zrJ^qqQRT~9t6`+Q)b2`{6%%5`Iqi(;3id!xO|1wt5Uw`%h##y$f_xJPi#4Wcp2V&{ zUk={r*D-_f=TXxaaV@QNK1-NpHT?{~H7Eo+jGK_}jS3IWU9*MBW<^j9Z}W_jc!*Jy z46GyPj*avRhO}R%7i*_iZhZ&8(5y`Xgw6DyC|cqn8q&Bl-T+_m{N-fyjpj6*ey%sX zp^)Q}HQSvE4Dhm?6+tkpwY}!yF_}U;=Pbbh1H|;@hg{i}9I^=W(=I5s7O5@KIb%qr zM_070G##JDJqNUHik*%2Ux z&CmYRh2s)mUh7A93)+c!UDN30)7Gz^;l8`L=cvBsmLj6m4p#qVi5nfbeYtr|gk<`7 z6!Himt^SmTG~58PK8RG4rSgTyd}B#JVfdMGykX4L3BMR6Wvk`{cBQKw<*%*c<@U8v z=;bhS2I6KvTCcEw4pRHHS^`*MLH6XDr6;LCshD(}qheU+jRA<2+E{}T-rk0=ZQ?dr z45gt^QLoG+&>tG3+JjTOq7~{DPMG0djj{2zSTRF?1fRnS%XtH^d}~BgfdJdqXvNgrTuE*iNvu>9YfpO|~{2rjvqX^niIIYzZ)tE^9JM8@WP@Qjy`KBw6 zLdT`=S|*&gVYqC{`a$2)L!_Is!7aH-rb(~T7e&&K-Kb50UQ zAOe2ihRF!|UqCTvQUMq<;9lrBLT80fMkVZ{p8=dR=x;PHkn8hju;VjWc6Vb}EkBim zmf^>Us62JP%qBtkVR|N7&Z-m-`VtKNv}D#cKgM=mTMQ4jlP7Rq>oAf=<5XGv;~d*@Z2%)|8DH6ZPn{vj#9^SBI<$Wjb8+r3^-SVy_xMeSOXNTPkfvl!3_Q%g zL2?(T6NN?<$ev%Mum-)|>9>PhCOn{mAF1XV{;OKa^e;@F)-SMkhs{V)(IuD-t=I|a zZ#3uiQV0m?>|zJ$d@sDQjv7_=?>~LtU%HNvtRg=%u$Maac#Y4M%d1>P_*0ljb# z&r7BA7N>^6gkn9Lset&5vK89o^c!-xH?qD#`9V*A6?&;EAt@&jLnNxlIcj>}hl8m= z3c3`ME8)^9b3vIC`Jz)OYg!EKq3Rto6C{|(W6Qk*Lyaf;dsQW+;TTT5j5?5)IELZT zudKWvpqDoHkMt+z*MfBorsz4;{Cet7_YQJ$Mq||YBDmb6ULe1iRAzae=nZC0s%|n# zQ5%Vqw_RB<(ZKanCBXLbIpM0q6$2h${`NzdARpTB3Bov*d#96|Z2(vrpEca${|*+8 zpr1Sl>eUVx5A)7QSdLsa#4=L5M@bxQiN zG*R8p$c)Jn_4)drS99kJJ)~6%f7|DQrVr(mJ`^Ub%~b(IX*0X>YGP*ijj7K5P};U? zN+G5AR(Y_+umF6bZGI4p0f%jcWM3^6-sU<_4Gs9{uS)Sv)q6xTt0@B960Uw!V`0HC`E0ahFCH5WI>0PPWBk!U&2?;Gv!<*gwE8(^5VEqZKc@s$R5rK?gMVEXH?=a^@=f_touTyIiPn4jxk3CSDUSIen{B>K6*s8hY|h? z>D)-QuewzI%}w&BGya|-MEPawug&uIGbsO}r8CvlungNCKoPhozm)4$b~h5Ci)6OJ zgKc9xDIOEnjNw5X(S2vZi^QMyfG8S8#Avon)Ia#t2)%q4-0LK`04+oR<6>5G6r+L8 zS|ttz5#&*t#JvCoJs97P&PF8{53*@GMk<@%jR|0cKxaC?M0-JvT1t;UgN(P0s4#E} zZ|F9z_;yV&K{hO_Ofo?ja>qVw-*rOSq0X61*9SKh?|YpcIXY~vN|;k!mffZ-HRJPn z@5-GLOii0=4AiSQZ~t!b6?NIgUdV-=uLH$A<&%m zOYLYh^x?qs9YzUJ+vxmlhXLQr-3zU=zV53MRr^?Sf0FW~oqKVnPab&!=aXZk3oRZk zXQyQLhpB=xJR1KhRoJB$Wj4Gc$Rngzawf(5Mp3wtw+|pIn|jaf0WVjA%B|kw-rspx z`6bY!>sur01+MldfkxwSUUgm_r)J5&D1ja9iUH_Z!|v1`6gF~%cD9k3)pAzCW|4OH zYPO1BMM=!J{51od;m(WciJa)RDi`IKf^AQ*`7`LdF4$LnbmdF8Bw$sN==+acDK0pf zVzF-c_IRMCJr+gyTF}=V!fy7Lz~jOQ2yaBG+GH(7Q5D3i8Yj#b`~Zzsu*ZX}lvRbIi&-^bExmnv1c z3zT|;B$@wgPtw6ifW;kbY+4S-?ChTIXE z6Fk-EY!LQ9;*vWThqp4GE9id-wMQyrtNGmqdx$-sV@hETAE~#f_7v&X7ROexiaJe{>LEcBS?MQ~~ zm92Kw(I@~Zf4ZV8-+!3QDhIgh4QGDv12R)sk?WO-`Qq++GO!AI7S$7n{-DRD!8D0T zok|3D(vEEKpH93LBP=Peqx_*B*vL5xC3p)(0j6IV^EYz)TflP6dpP;!hCi6*pVB!V zK>}8W`3!qebq|-jB=mSx?n7dX8+?=JmO>PRGq(t={whDU0i_~DNS}N4*I(q|4NVzR zGC{>t)ROnLC2W<&qDj$5;ZR$g=74Z8~m8x59V<^tgf*@Mn zc_Jy_o=_6X>@Q?z-Xp#E`4Dn_#HpT{c)zj+=4H+h$o2vQtaq(A**aC8tt1n^?Z&ym zotAlx3?a17*D^;b)^4wI%11W=;v1Ly?%p(xi>A(~s{aU!PAD9;)P)7*1n|;^-65!a z`|mGGI%&F5fVq+7MH5%KmVd-UZ%Mk*aN(q1D8W#hRTK!Yspj=s zOvu2Biy+tGc9qV<3;~(!*d7;()SX*rKbC8gU#~$CW1%)zdRSc&y3c37e(?UWdI2Rm zI)HaNe`i4oEQkqF%2ed{4TY7p2trTBJsp?c8WhdEIJgc{+cyF(lEEir#j>y9zc5`r zDKhtObYuE5i-DAX>f$aCTTI6`x+x?n`r1pAdzaCF?c5D5+t!tp7y1UKlBRl5T}DPC&;gPh%mJaXIkP^(u8}Nqw{GeE1{b9 zXn$UvqpJjov)@Bt4_uwr9EM@%Fo8U2&x3t!sAM)d$^J7jdB2yu8?QY+sR-Z%`iCe&L8)S9Clh6BluXJj9sB>$)z~!nE`{zx7^ys@ z=}>)3QvPN!x5roHQlM*+hlv&I&}R${YT(lYD+iqqR+499 zvhvyUlq4t!>w2*|&d15+CGktm-*^C(u^tR@VkO#||2=ZoP?u;bZYm~L4pYT*B6E{0 zkgL^0g?(u+sY^a;LIWTx@ia?&yCElOwrV@v-&!|a)@+#a#?IaLq$Vy*Kd&k-lC?5- zA!ev67Kwda=bV4b^hJzQb)Q;hTc1%Vs<2HC6$rtz^Obh~6Qy%bnXC7n#ms6~9_dL? zx7Pb&&T{eCQH1T~TcC3sI7%_M@`Q*#cc%L#aB=l=jL_hpyJInG2|oRJV}f=Lg#N=tlqO z2lXD1!VT?ROXKlJmX8!X-bS79=2!rIL?zMG<%=3p=+?INF80Tj4=t7^Q^U@lNsI`j zBr$gSoBu|Kk(2lNlx2-sOn#uNHCa87^49Q&yuCCwu6sVqysoTW$D!w=cb*K2QyLe=#ZgY;!pr%0Wl95iLh+DoL@gbGq7_*D?mA#mW z6-Tv@XIF*2N6vD5Bw2OI$KA~tunNv5Q`xZtL}?q(Frf-kcrw?S^>lTaQb`(SUe<1)8Ej|h{K@Pq)6b#2Kz@B zs3!H1sN))Urk-^N=u;+y?ic*d8O>YP9zjzy*HHNGn%krxOkcAh1({^8jz>X9wt-wY zID%;5p?Ptx{AOA3;5%DZlH76}f}4*PYWE?6$Qs-@G~2*9@C_}2$Kl#9QT;JO)w?&$ zih?i-wppH%9+_m&9y>oJhHxT%0$lNW|I@99>W)dTYaky@r*OPE8KkpwwQ?y)rx_K* z5|f~7l({NYY=cKe@ylK_R~1DK25f9qbW$3+B-lL_vh4wx6n4UVC#fMduJv?-4%3TK za-U4PkIO74+V!0ay*}^FBX+vtgl^@^@L;Kro8^R?reLy106lMN?U?S>9kML-4AS68_^<5@!_%8G{;+-RnXttR^`wR#p8DvF|85_PysaeRJ*aP7Ypf?<8D_5eJx1%S(-=?~BWBnW_cx7*zu z`mieiyD;aUnl2rV(<#GT%U!Z2ip-k4qZ4zi>s8#FN;fiPWv3h5fpVH0TiSZTNW5Fd z3di9OxYQd71lpCyZ>b85r(0vqs|5>NdqKrhyY*Mk!!$*&Q!cx(_aFZ+XQAAc#OAuQ z?Gjg0iq7r+GH7nt9vVF;e6inl&wUVTF>U2urF$HQ*-O0!#yO9NrN+DyER zs#}|k!rYJxG8U&9q6Sx>uBn%llOXbgF_iq76ok?Ag$tw28Z&6!Q*TuG-~*vOx_&82 z;fI}=KaoI65jsAX`MQuJl6bEaJ|nL5ENWXE&#z_r7?XP7gRIW%N^_pXz8j(Yi$u^L zdI289*ET#Tt%lCJY6X@!g~2ZW+v2I2;_m?UdYfW1+k~uYSeWTMY>?i6atbS=HO>LU#(;J0^rwJ9Wua1=xiFmw?wdnZ<1HZVmHdkw$p8^_V+Gd8c(iahyN;m zPS2Vj@Cho23(O>AyB-pt5NML9`NBLDYRi~&F9R0gD}ttDC&N1;nM0J=YEPwa1`0y` zdJxSXs7G;r7Y$?sy8_I=;+!Sqv4ZBfccyNy!Jqlk#z2xFik~%ts?M>M9;K6x)jN+^ zPa?5>-dNE2!Yh7AfA}1^rm7`ypCAZU)({<#928JMA6(m7tS2Ba;ayzXkoIT*vIs&B zEM0>v3XbEYP5pcq7b(3wc>u>cHJ(3Cn6m#Uf1YxF-o2%GX_<` zn^;96H+5U*HZ+O^%^Ttwrag`owGFSKivizT)AT6+UG4WVuJ)Z`fwwETJfzv1ni#>b zf6=4<+BaOX^+{LLSh=pSbMH6d5$o#!Q8%jWSfMMa-|>Bmi>J~MW0095BGs>2&`FlS z>Fu0!gYpwxUt4+pw2N#K%t_|z*aveGMdFK;eQk@}^SAT-(N89Zj}|Gp?~(w7{x=wUA|2%Us1^1I0X@vWgWLF@$UObiCJ>!R#xHOnZSQlp`IgmG64V`m^GYg<7Iz-Ex zNIgGwr*e7bzKcX_oDBe(KOR(&dnQUj4EwDkRJ$tO_<9z*wOO^;L$m zXSd{u8$;%L>k7dWRA096Hjf}VQ?p98 zr#Q#P^`cMe>`EWzD#!a{WE@psa)*8cEN6zi>xcv@(oM7$3t#F##E#4cz|eH0MaB{uk@g z`=s~8N7|%&Zp$w96G}ODFB4MA9^+UZIdct*j++u`NlUSh_cU?0@k_k zBm1>TkKX3zQ$9w+K>K!o<&ik``2oyE#N@Ew^j;)&_RMi0beLc(9+yX(F}(@?@eFjR*8KfD_6ZLK?JLyTKOu z86Fwl^ZNeDBnwYsTaSA6GbI<(=ng@1e_ zx`>$MwcVfOa>6a|`@2x3UPZXcF*L{pGhBT>EU+<8AvHnqF%Urhdxi%2*mX!Vs2HXX zb>Z~9c|~iKF_)Q7o(P@2+1V?LmUHc)?v`7CBKNDp$C5L=*tBl0XCZBs`s1i{+d_LR zJcmr0Nk+l=!mxUv&!DVGqbn}hIVCbYy?0cKcF2i z>&359!Dk7cKAOFZhUM3y9T}bp(vV_hs|E>pfS$rz=F2#bWs z`K}l{>Wn-Mm#IMFyI5$HrL;Vpg*u~t2tmSvtoio1;M&`FYFdMqG7P?~j#-e4lR{tY zO9n~Xy2x|aBC(u-<)=#q_+Ieza5ZD*P-kM->+lOW6aG<9i23$%KZX%(!9+yKUop*p zb3SQs#5(#XC$<{E#RcYQLt(qL)&6gpFtHdVJ`ohr?ZzqUi=*4vr){i+XsnF z(_t+~R=6BjEIxT+D70;hpU+ zf+NS05j$_*aSFSI8;!jo+m}h%m*9$!bLv%>T2XeJaoB-HW?|uvsQ?0^3A^4#-3?eTi_3 z^@H)oZHpijlIV6A4X?F!tsL!LLKbPzPW{`r%#|K4W<`Bxl6h6t0n`|DM;9_aA~ZZa zo%lsRQnThNhuZ2DShiOB)m*|Kj9B;vU;r8T1u;;)qH1;8GhbFKS1)|L4D9VbvSRL? zlDLSB=6h@ZdFRjaqV8Ass691w?-QXxlagU3-3qBzERNstyLcvsztPgDJ(s>g9t<5b z{UZuL^+rsWI|}DMgOdud)BMY_QG8ztd|4&ByHZ`x9mVw%=C61U<80ot5y?2AX0CEX z)oCPMP)7%CFW3=dT4PS!BJA!9DO}2$tZw<1#?WB|xl%3|o@92y4 z_c}z7r%f3sBFV}>5~%nDAwHq4Jc$UNLar8GOnBX~#BY~IIpYm zA#8uNz-=+cv#{WxeX~*HT)CJ4i_ComD!$VBo0~(q%gdz~?>p~L+MPP(tbf)bj4IOq zcpd41EL?tv#3C}x{E2HFNa{A^aY32mY~|o{(RQW%7`1y_L^Xd4!iX+sQWU_UHztt) zIc2{X+b1T)PvHjYEtnyViFl1kbP$0Mru{%|UxH2Dta?>`sG%?h9xEu4hDl3F1?Crt ztbyl9Y?Q{)WYN;hk`;0S0v?!KU<>W-2K>+_G+-_X;q_Eff=aP6o=8?2yJf6DzgoP5 zH8?I<=*U6K5_)DpUUUIEoMduXR+)#H`TUO>bfy%j>Q2GSk=gtvCrLv?_DwjQZpg+q?JiT#i7|7f4}_s zcWXzBSCeB63{mawhyt0iZ)K-cHhIwLq^8@AlR~Gtyq9WTx#Ks+Etfq-3xt;As+Lub zJIM~i*fIHuU2Zw`0gQcKNg3P~yM?wQI2g5-dcorGu2}<2u+p9+0=CFgbQ`9whCSjf z4Ewc)o~t+YZ99A-E0O>H>*YRBQ{y^V)MfInSwwv!3$pgbE%R}q%;>7vHopR-g&TNB zCMRm`Oy89;pzy_**Dmt=_$TCz#^GMTGsW*M)K*<~_`s^eHLa+>j-Bph_CaSH7R%E< zZaHAi>KlL2csq1ieJT#M_QBz8mhK^!3kJU}yST|hrA_$07xu{~(|mX#DBR6wWin5kKm8DPDC)4IkBKHpFwn_7!#JB+ z5Sg3Pn055zSYGt6%0b}br1hf^a~0OlIXpT|<2&|_**069xTVhk zZoN!9_#inqmh4=AQ)r?_MkZ!|yI(e2-&`_ZbjzWQG@bnK z*FRs_xGkpz5efS;6EAcv=M>G+?Y_@Br8&n5o9yW{_Ti>^J~r*m_2yM64hU;h37vwOseSmXcWtF^a| ToOBuJcI@k@zt(?s`se=xqhw`$ literal 0 HcmV?d00001 diff --git a/icon.ico b/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f93f9fbe77b7025a5dd2ed49855fcdd36ee60fbe GIT binary patch literal 28858 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

>Go}A*4f^PT%R)F}P{wcGg%zn)ha# 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 K|ETS+Q~v{Ai5s^7 literal 0 HcmV?d00001 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..c505c6b --- /dev/null +++ b/setup.py @@ -0,0 +1,86 @@ +from esky import bdist_esky +from setuptools import setup +import sys +import version +import os + + +# Include proper dirs +base_path = os.path.dirname(os.path.abspath(__file__)) +lib_dir = os.path.join(base_path, 'libs') + +sys.path.insert(0, base_path) +sys.path.insert(0, lib_dir) + + + +# Windows +if sys.platform == "win32": + import py2exe + + FREEZER = 'py2exe' + FREEZER_OPTIONS = dict( + compressed = 0, + optimize = 0, + bundle_files = 3, + dll_excludes = [ + 'MSVCP90.dll', + 'mswsock.dll', + 'powrprof.dll', + 'USP10.dll', + ], + packages = ['couchpotato', 'libs'], + includes = [ + 'telnetlib', + 'xml.etree.ElementTree', + 'xml.etree.cElementTree', + 'xml.dom', + 'xml.dom.minidom', + ], + ) + exeICON = 'icon.ico' + + +# OSX +elif sys.platform == "darwin": + import py2app + + FREEZER = 'py2app' + FREEZER_OPTIONS = dict( + argv_emulation = False, + iconfile = 'icon.icns', + plist = dict( + LSUIElement = True, + ), + packages = ['couchpotato', 'libs'], + includes = [ + 'telnetlib', + 'xml.etree.ElementTree', + 'xml.etree.cElementTree', + 'xml.dom', + 'xml.dom.minidom', + ], + ) + exeICON = None + +# Common +NAME = "CouchPotato" +APP = [bdist_esky.Executable("CouchPotato.py", gui_only = True, icon = exeICON,)] +DATA_FILES = ['icon.ico'] +ESKY_OPTIONS = dict( + freezer_module = FREEZER, + freezer_options = FREEZER_OPTIONS, + bundle_msvcrt = True, +) + + +# Build the app and the esky bundle +setup( + name = NAME, + scripts = APP, + version = version.VERSION, + data_files = DATA_FILES, + options = dict(bdist_esky = ESKY_OPTIONS), +) + + From 6962cfc3f5d46a0027bdb5d868f961d09811d6ea Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 19 Feb 2012 17:13:37 +0100 Subject: [PATCH 016/102] new Desktop runner --- Desktop.py | 188 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ setup.py | 2 +- 2 files changed, 189 insertions(+), 1 deletion(-) create mode 100644 Desktop.py diff --git a/Desktop.py b/Desktop.py new file mode 100644 index 0000000..2d533e9 --- /dev/null +++ b/Desktop.py @@ -0,0 +1,188 @@ +from threading import Thread +from wx.lib.softwareupdate import SoftwareUpdate +import os +import sys +import webbrowser +import wx + + +# Include proper dirs +if hasattr(sys, 'frozen'): + import libs + base_path = os.path.dirname(os.path.dirname(os.path.abspath(libs.__file__))) + print base_path +else: + base_path = os.path.dirname(os.path.abspath(__file__)) + +lib_dir = os.path.join(base_path, 'libs') + +sys.path.insert(0, base_path) +sys.path.insert(0, lib_dir) + +from couchpotato.environment import Env + +class TaskBarIcon(wx.TaskBarIcon): + + TBMENU_OPEN = wx.NewId() + TBMENU_SETTINGS = wx.NewId() + TBMENU_ABOUT = wx.ID_ABOUT + TBMENU_EXIT = wx.ID_EXIT + + def __init__(self, frame): + wx.TaskBarIcon.__init__(self) + self.frame = frame + + icon = wx.Icon('icon.ico', wx.BITMAP_TYPE_ANY) + self.SetIcon(icon) + + self.Bind(wx.EVT_TASKBAR_LEFT_DCLICK, self.onTaskBarActivate) + + self.Bind(wx.EVT_MENU, self.onOpen, id = self.TBMENU_OPEN) + self.Bind(wx.EVT_MENU, self.onSettings, id = self.TBMENU_SETTINGS) + self.Bind(wx.EVT_MENU, self.onAbout, id = self.TBMENU_ABOUT) + self.Bind(wx.EVT_MENU, self.onTaskBarClose, id = self.TBMENU_EXIT) + + + def CreatePopupMenu(self): + menu = wx.Menu() + menu.Append(self.TBMENU_OPEN, "Open") + menu.Append(self.TBMENU_SETTINGS, "Settings") + menu.Append(self.TBMENU_ABOUT, "About") + menu.Append(self.TBMENU_EXIT, "Close") + return menu + + def onOpen(self, event): + url = self.frame.parent.getSetting('base_url') + webbrowser.open(url) + + def onSettings(self, event): + url = self.frame.parent.getSetting('base_url') + '/settings/' + webbrowser.open(url) + + def onAbout(self, event): + print 'onAbout' + + def onTaskBarActivate(self, evt): + if not self.frame.IsShown(): + self.frame.Show(True) + self.frame.Raise() + + def onTaskBarClose(self, evt): + wx.CallAfter(self.frame.Close) + + def makeIcon(self, img): + if "wxMSW" in wx.PlatformInfo: + img = img.Scale(16, 16) + elif "wxGTK" in wx.PlatformInfo: + img = img.Scale(22, 22) + + icon = wx.IconFromBitmap(img.CopyFromBitmap()) + return icon + + +class MainFrame(wx.Frame): + + def __init__(self, parent): + wx.Frame.__init__(self, None) + + self.parent = parent + self.tbicon = TaskBarIcon(self) + + +class WorkerThread(Thread): + + def __init__(self, desktop): + Thread.__init__(self) + self.daemon = True + self._desktop = desktop + + self.start() + + def run(self): + + # Get options via arg + from couchpotato.runner import getOptions + args = ['--nogit', '--console_log'] + self.options = getOptions(base_path, args) + + # Load settings + settings = Env.get('settings') + settings.setFile(self.options.config_file) + + # Create data dir if needed + self.data_dir = os.path.expanduser(Env.setting('data_dir')) + if self.data_dir == '': + from couchpotato.core.helpers.variable import getDataDir + self.data_dir = getDataDir() + + if not os.path.isdir(self.data_dir): + os.makedirs(self.data_dir) + + # Create logging dir + self.log_dir = os.path.join(self.data_dir, 'logs'); + if not os.path.isdir(self.log_dir): + os.mkdir(self.log_dir) + + try: + from couchpotato.runner import runCouchPotato + runCouchPotato(self.options, base_path, args, data_dir = self.data_dir, log_dir = self.log_dir, Env = Env, desktop = self._desktop) + except: + pass + + self._desktop.frame.Close() + + +class CouchPotatoApp(wx.App, SoftwareUpdate): + + settings = {} + events = {} + restart = False + + def OnInit(self): + + # Updater + base_url = 'http://localhost/updates/' + self.InitUpdates(base_url, base_url + 'changelog.txt', + icon = wx.Icon('icon.ico')) + + self.frame = MainFrame(self) + self.frame.Bind(wx.EVT_CLOSE, self.onClose) + + # CouchPotato thread + self.worker = WorkerThread(self) + + return True + + def setSettings(self, settings = {}): + self.settings = settings + + def getSetting(self, name): + return self.settings.get(name) + + def addEvents(self, events = {}): + for name in events.iterkeys(): + self.events[name] = events[name] + + def onClose(self, event): + + onClose = self.events.get('onClose') + if self.events.get('onClose'): + onClose(event) + else: + self.afterShutdown() + + def afterShutdown(self, restart = False): + self.frame.Destroy() + self.restart = restart + + self.ExitMainLoop() + + +if __name__ == '__main__': + app = CouchPotatoApp(redirect = False) + app.MainLoop() + + path = os.path.join(sys.path[0].decode(sys.getfilesystemencoding()), sys.argv[0]) + if app.restart: + pass + #wx.Process.Open(path) diff --git a/setup.py b/setup.py index c505c6b..a4b0661 100644 --- a/setup.py +++ b/setup.py @@ -65,7 +65,7 @@ elif sys.platform == "darwin": # Common NAME = "CouchPotato" -APP = [bdist_esky.Executable("CouchPotato.py", gui_only = True, icon = exeICON,)] +APP = [bdist_esky.Executable("Desktop.py", name = NAME, gui_only = True, icon = exeICON,)] DATA_FILES = ['icon.ico'] ESKY_OPTIONS = dict( freezer_module = FREEZER, From dbf0192c8e10b37716c640a4bfa98878ec728989 Mon Sep 17 00:00:00 2001 From: Ruud Date: Tue, 21 Feb 2012 18:50:34 +0100 Subject: [PATCH 017/102] Inno setup, start --- installer.iss | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 installer.iss diff --git a/installer.iss b/installer.iss new file mode 100644 index 0000000..7c8b088 --- /dev/null +++ b/installer.iss @@ -0,0 +1,24 @@ +#define MyAppName "CouchPotato" +#define MyAppVer GetFileVersion("./dist/"+MyAppName+".exe") + +[Setup] +AppName={#MyAppName} +AppVersion={#MyAppVer} +AppVerName={#MyAppName} +DefaultDirName={pf}\{#MyAppName} +DisableProgramGroupPage=yes +UninstallDisplayIcon={app}\icon.ico +OutputDir=./dist +OutputBaseFilename={#MyAppName}-{#MyAppVer}.win32.installer +AppPublisher=Your Mom +AppPublisherURL=http://couchpota.to + +[Files] +Source: "./*"; DestDir: "{app}" + +[Icons] +Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppName}.exe" +Name: "{userstartup}\{#MyAppName}"; Filename: "{app}\{#MyAppName}.exe" + +[Tasks] +Name: "startup"; Description: "Run {#MyAppName} at startup"; Flags: unchecked \ No newline at end of file From ee3fc384329b830577da7d3e49364fd6f54d7456 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 25 Feb 2012 01:48:58 +0100 Subject: [PATCH 018/102] Better setup --- setup.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index a4b0661..86f2710 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,17 @@ lib_dir = os.path.join(base_path, 'libs') sys.path.insert(0, base_path) sys.path.insert(0, lib_dir) +def getDataFiles(dirs): + data_files = [] + for directory in dirs: + for root, dirs, files in os.walk(directory): + print files + if files: + for filename in files: + if filename[:-4] is not '.pyc': + data_files.append((root, [os.path.join(root, filename)])) + return data_files # Windows if sys.platform == "win32": @@ -21,7 +31,6 @@ if sys.platform == "win32": FREEZER = 'py2exe' FREEZER_OPTIONS = dict( compressed = 0, - optimize = 0, bundle_files = 3, dll_excludes = [ 'MSVCP90.dll', @@ -37,8 +46,10 @@ if sys.platform == "win32": 'xml.dom', 'xml.dom.minidom', ], + skip_archive = 1, ) exeICON = 'icon.ico' + DATA_FILES = getDataFiles([r'.\\couchpotato', r'.\\libs']) # OSX @@ -62,18 +73,17 @@ elif sys.platform == "darwin": ], ) exeICON = None + DATA_FILES = ['icon.ico'] # Common NAME = "CouchPotato" -APP = [bdist_esky.Executable("Desktop.py", name = NAME, gui_only = True, icon = exeICON,)] -DATA_FILES = ['icon.ico'] +APP = [bdist_esky.Executable("Desktop.py", name = NAME, icon = exeICON,)] ESKY_OPTIONS = dict( freezer_module = FREEZER, freezer_options = FREEZER_OPTIONS, bundle_msvcrt = True, ) - # Build the app and the esky bundle setup( name = NAME, From a09132570cc3447de89f4ed5a87351c7ab0aa958 Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 30 Apr 2012 21:37:04 +0200 Subject: [PATCH 019/102] Change branch to desktop --- couchpotato/core/_base/updater/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/couchpotato/core/_base/updater/main.py b/couchpotato/core/_base/updater/main.py index c12c4b9..dd1c3d0 100644 --- a/couchpotato/core/_base/updater/main.py +++ b/couchpotato/core/_base/updater/main.py @@ -80,7 +80,7 @@ class BaseUpdater(Plugin): repo_user = 'RuudBurger' repo_name = 'CouchPotatoServer' - branch = 'develop' + branch = 'desktop' version = None update_failed = False From 0d624af01d43b72515862ed3ecec617ad253afcf Mon Sep 17 00:00:00 2001 From: Ruud Date: Tue, 1 May 2012 07:35:44 +0200 Subject: [PATCH 020/102] Working PNG --- Desktop.py | 6 +++--- icon.png | Bin 0 -> 1547 bytes 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 icon.png diff --git a/Desktop.py b/Desktop.py index 2d533e9..ec9a803 100644 --- a/Desktop.py +++ b/Desktop.py @@ -32,7 +32,7 @@ class TaskBarIcon(wx.TaskBarIcon): wx.TaskBarIcon.__init__(self) self.frame = frame - icon = wx.Icon('icon.ico', wx.BITMAP_TYPE_ANY) + icon = wx.Icon('icon.png', wx.BITMAP_TYPE_PNG) self.SetIcon(icon) self.Bind(wx.EVT_TASKBAR_LEFT_DCLICK, self.onTaskBarActivate) @@ -141,8 +141,8 @@ class CouchPotatoApp(wx.App, SoftwareUpdate): def OnInit(self): # Updater - base_url = 'http://localhost/updates/' - self.InitUpdates(base_url, base_url + 'changelog.txt', + base_url = 'http://couchpota.to/updates/' + self.InitUpdates(base_url, base_url + 'changelog.html', icon = wx.Icon('icon.ico')) self.frame = MainFrame(self) diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f5815431ed3df7ed5afb6bd71f15d5beb71368bc GIT binary patch literal 1547 zcmV+m2K4!fP)4Tx04R}-Ro!pfR1`mnZ(O7nKcKOW4i$^9Ra0BJ8yc;~21%2p=|UR0&DbiW z$#rfTQ`a`O(`{9s_5yDV_yd5l2Of}kLK+Oj_Ok5(v`JGz71bo9J#^YYXp{DWs&KBa zQ@dTpxRI}aIp=pi@6k0t$5)!;m`NF6-tt{FpOKHBn3g+MAqmexC-gw4rh87hTrL7G z#)U`L!(So6-Zux@>;H3gR;i~0B%VTSS3P|m@o9jRsXML@Al^p#@G0Lx-0?i(9WEw_ zSYddU<1E8793KxjQ|c&UmW!mTC>k>?{om1c9S zUx<6_jj_!T&^M{wWM#>IBbOSf*xP<^F{$j$aOQ5Y{cT zROCL1M7^NKKL z&(yA}mSw#iM0^;IB{ZO5!wl{^Sg-*ysE~&Yz8!E;Qv(A`lu*=Clo*MpVGd>OdF6n^ zam1Jntk;<}MrqIC5$=Q>n{*R}?8oOIDUw5En2dl--Xw34!z7E+5pr-OgyQ-soSab)C%saskMla`aQLVzg0+MZf20tJU&K{hZoBrUc+U4e9&3o zw|KmGEe4#xz17wBu{f`SS_4i66?j31EjY7n{zGfhONK~c+td!TS#B}JoR}5UAd7p& z5phTyXSkK0xCeD3xaYP^o&J~#Xp9xFb0C;HHml5fA<%h1eR|qw7wxF+oNL9T1Aits?sKNIwvGaN)^WO$I^cUV)HzL_| z1K?{9p!>B*)`xfEv!4N6IG{J&h49W#Bz^(#YWw%`e_a{8n{G9m5AeR~_yl0%<7V@p z5 zl08ctVGzfE&-olViEcs~-IJ`sk;;IjU?6H?rRWC`QpGi;VB?oq5Yib_nsm`zdm*5( zUTGr;x(VbWD|nkZJ2_fB;yj#Q{*s5!Cjb*5|l=Rhg_d5!Ig@+yF@dOD3lRv;_fVZUnx5*3W?BaL=|;g#r(jmLf0_K}4vyuAG6?KsG_vLGUfX zx8yCzdytIt+96$ z%H`-7`cbh+u3W~?YQ8H)Rw>SbI?$EN0dNu9egG&%%@`h+-jUfqK>O3v=@y%5gBjt>NK_FyLtQ1vOJ=Piwx;%|#@ZXJ%xlSR~WY5%ChY+vwzWtcmTH z#_(`(kn!DJr2#H%n@-@`7))FVpfkCygzf@PdwODifX{^juWXxA7`DIJgiPe~GBq^R xx`V}qh34UWs#N}&-0wKex3|2kQZMm; Date: Wed, 2 May 2012 21:34:45 +0200 Subject: [PATCH 021/102] Import errors File icon --- Desktop.py | 3 +-- installer.iss | 7 ++++--- setup.py | 6 +++++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Desktop.py b/Desktop.py index ec9a803..0084d9c 100644 --- a/Desktop.py +++ b/Desktop.py @@ -10,7 +10,6 @@ import wx if hasattr(sys, 'frozen'): import libs base_path = os.path.dirname(os.path.dirname(os.path.abspath(libs.__file__))) - print base_path else: base_path = os.path.dirname(os.path.abspath(__file__)) @@ -143,7 +142,7 @@ class CouchPotatoApp(wx.App, SoftwareUpdate): # Updater base_url = 'http://couchpota.to/updates/' self.InitUpdates(base_url, base_url + 'changelog.html', - icon = wx.Icon('icon.ico')) + icon = wx.Icon('icon.png')) self.frame = MainFrame(self) self.frame.Bind(wx.EVT_CLOSE, self.onClose) diff --git a/installer.iss b/installer.iss index 7c8b088..7e31214 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer GetFileVersion("./dist/"+MyAppName+".exe") +#define MyAppVer "0.5" [Setup] AppName={#MyAppName} @@ -7,14 +7,15 @@ AppVersion={#MyAppVer} AppVerName={#MyAppName} DefaultDirName={pf}\{#MyAppName} DisableProgramGroupPage=yes -UninstallDisplayIcon={app}\icon.ico +UninstallDisplayIcon=./icon.ico +SetupIconFile=./icon.ico OutputDir=./dist OutputBaseFilename={#MyAppName}-{#MyAppVer}.win32.installer AppPublisher=Your Mom AppPublisherURL=http://couchpota.to [Files] -Source: "./*"; DestDir: "{app}" +Source: "./dist/{#MyAppName}-{#MyAppVer}.win32/*"; Flags: recursesubdirs; DestDir: "{app}" [Icons] Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppName}.exe" diff --git a/setup.py b/setup.py index 86f2710..30159c4 100644 --- a/setup.py +++ b/setup.py @@ -45,6 +45,8 @@ if sys.platform == "win32": 'xml.etree.cElementTree', 'xml.dom', 'xml.dom.minidom', + 'netrc', + 'csv', ], skip_archive = 1, ) @@ -70,10 +72,12 @@ elif sys.platform == "darwin": 'xml.etree.cElementTree', 'xml.dom', 'xml.dom.minidom', + 'netrc', + 'csv', ], ) exeICON = None - DATA_FILES = ['icon.ico'] + DATA_FILES = ['icon.png'] # Common NAME = "CouchPotato" From 1cef3b0c93070ec6ab28cfde67254b50d19a261f Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 7 May 2012 22:55:54 +0200 Subject: [PATCH 022/102] remove --nogit tag --- Desktop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Desktop.py b/Desktop.py index 0084d9c..5297432 100644 --- a/Desktop.py +++ b/Desktop.py @@ -101,7 +101,7 @@ class WorkerThread(Thread): # Get options via arg from couchpotato.runner import getOptions - args = ['--nogit', '--console_log'] + args = ['--quiet'] self.options = getOptions(base_path, args) # Load settings From 7924cac5f90c7061cd6ceaccd252007af32173bf Mon Sep 17 00:00:00 2001 From: Ruud Date: Tue, 15 May 2012 23:14:20 +0200 Subject: [PATCH 023/102] Update installer version --- installer.iss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/installer.iss b/installer.iss index 7e31214..9b26df9 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ -#define MyAppName "CouchPotato" -#define MyAppVer "0.5" +#define MyAppName "CouchPotato" +#define MyAppVer "2.0.0.pre2" [Setup] AppName={#MyAppName} From ac081d3e107c9f4942332d4847ceaab89f7f7ec6 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 9 Sep 2012 17:28:23 +0200 Subject: [PATCH 024/102] Getting ready for build --- Desktop.py | 81 ++++++++++++++++++++++++++++++++++++++++++------------------- icon.icns | Bin 69376 -> 67417 bytes icon.ico | Bin 28858 -> 353118 bytes icon.png | Bin 1547 -> 543 bytes setup.py | 41 +++++++++++++++---------------- 5 files changed, 76 insertions(+), 46 deletions(-) diff --git a/Desktop.py b/Desktop.py index 5297432..457a52a 100644 --- a/Desktop.py +++ b/Desktop.py @@ -2,8 +2,10 @@ from threading import Thread from wx.lib.softwareupdate import SoftwareUpdate import os import sys +import time import webbrowser import wx +import subprocess # Include proper dirs @@ -24,9 +26,12 @@ class TaskBarIcon(wx.TaskBarIcon): TBMENU_OPEN = wx.NewId() TBMENU_SETTINGS = wx.NewId() - TBMENU_ABOUT = wx.ID_ABOUT TBMENU_EXIT = wx.ID_EXIT + closed = False + menu = False + enabled = False + def __init__(self, frame): wx.TaskBarIcon.__init__(self) self.frame = frame @@ -34,21 +39,42 @@ class TaskBarIcon(wx.TaskBarIcon): icon = wx.Icon('icon.png', wx.BITMAP_TYPE_PNG) self.SetIcon(icon) - self.Bind(wx.EVT_TASKBAR_LEFT_DCLICK, self.onTaskBarActivate) + self.Bind(wx.EVT_TASKBAR_LEFT_UP, self.OnTaskBarClick) + self.Bind(wx.EVT_TASKBAR_RIGHT_UP, self.OnTaskBarClick) self.Bind(wx.EVT_MENU, self.onOpen, id = self.TBMENU_OPEN) self.Bind(wx.EVT_MENU, self.onSettings, id = self.TBMENU_SETTINGS) - self.Bind(wx.EVT_MENU, self.onAbout, id = self.TBMENU_ABOUT) self.Bind(wx.EVT_MENU, self.onTaskBarClose, id = self.TBMENU_EXIT) + def OnTaskBarClick(self, evt): + menu = self.CreatePopupMenu() + self.PopupMenu(menu) + menu.Destroy() + + def enable(self): + self.enabled = True + + if self.menu: + self.open_menu.Enable(True) + self.setting_menu.Enable(True) + + self.open_menu.SetText('Open') def CreatePopupMenu(self): - menu = wx.Menu() - menu.Append(self.TBMENU_OPEN, "Open") - menu.Append(self.TBMENU_SETTINGS, "Settings") - menu.Append(self.TBMENU_ABOUT, "About") - menu.Append(self.TBMENU_EXIT, "Close") - return menu + + if not self.menu: + self.menu = wx.Menu() + self.open_menu = self.menu.Append(self.TBMENU_OPEN, 'Open') + self.setting_menu = self.menu.Append(self.TBMENU_SETTINGS, 'About') + self.exit_menu = self.menu.Append(self.TBMENU_EXIT, 'Quit') + + if not self.enabled: + self.open_menu.Enable(False) + self.setting_menu.Enable(False) + + self.open_menu.SetText('Loading...') + + return self.menu def onOpen(self, event): url = self.frame.parent.getSetting('base_url') @@ -58,17 +84,16 @@ class TaskBarIcon(wx.TaskBarIcon): url = self.frame.parent.getSetting('base_url') + '/settings/' webbrowser.open(url) - def onAbout(self, event): - print 'onAbout' + def onTaskBarClose(self, evt): + if self.closed: + return - def onTaskBarActivate(self, evt): - if not self.frame.IsShown(): - self.frame.Show(True) - self.frame.Raise() + self.closed = True - def onTaskBarClose(self, evt): + self.RemoveIcon() wx.CallAfter(self.frame.Close) + def makeIcon(self, img): if "wxMSW" in wx.PlatformInfo: img = img.Scale(16, 16) @@ -82,7 +107,7 @@ class TaskBarIcon(wx.TaskBarIcon): class MainFrame(wx.Frame): def __init__(self, parent): - wx.Frame.__init__(self, None) + wx.Frame.__init__(self, None, style = wx.FRAME_NO_TASKBAR) self.parent = parent self.tbicon = TaskBarIcon(self) @@ -136,6 +161,7 @@ class CouchPotatoApp(wx.App, SoftwareUpdate): settings = {} events = {} restart = False + closing = False def OnInit(self): @@ -152,6 +178,9 @@ class CouchPotatoApp(wx.App, SoftwareUpdate): return True + def onAppLoad(self): + self.frame.tbicon.enable() + def setSettings(self, settings = {}): self.settings = settings @@ -164,24 +193,26 @@ class CouchPotatoApp(wx.App, SoftwareUpdate): def onClose(self, event): - onClose = self.events.get('onClose') - if self.events.get('onClose'): + if not self.closing: + self.closing = True + self.frame.tbicon.onTaskBarClose(event) + + onClose = self.events.get('onClose') onClose(event) - else: - self.afterShutdown() def afterShutdown(self, restart = False): self.frame.Destroy() self.restart = restart - self.ExitMainLoop() if __name__ == '__main__': + app = CouchPotatoApp(redirect = False) app.MainLoop() - path = os.path.join(sys.path[0].decode(sys.getfilesystemencoding()), sys.argv[0]) + time.sleep(1) + if app.restart: - pass - #wx.Process.Open(path) + args = [sys.executable] + [os.path.join(base_path, 'Desktop.py')] + sys.argv[1:] + subprocess.Popen(args) diff --git a/icon.icns b/icon.icns index 04cbc86716a3ac1d1ed54800755fbbd9c52872ae..3be592a0341edd336954e9eccae620fc4c1d441b 100644 GIT binary patch literal 67417 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 ToOBuJcI@k@zt(?s`se=xqhw`$ diff --git a/icon.ico b/icon.ico index f93f9fbe77b7025a5dd2ed49855fcdd36ee60fbe..224b9c1293b31ea81b39f4500cd8b8ffdf752c90 100644 GIT binary patch literal 353118 zcmeGF2efbZRUP`DbMIBRB%6?gmjpw2g9iwk_Cg5(LbDAH7;Ix~z`a|RtK8Ik@BLo& z-g_^WU>m1Ef*rsAKQDp2#{dICU`sl0e(wEE{PoT`SCTQ(4P$GJIo5agwdR_0 z?R}1p<)x+NrR|pdv%K`}OW*zN8w^zoZ11?dbYS-Vzz=NMzVbVlmM;J9?Uug% z+ZWqUURrw2bGBQ0a-!>BzhP|3_qe*5p=ZoBP&WNqw_V}Dz?|8^5>?U{eq$NskU%-8?zHL(_lf7iX=+WlA4 z=vsL`mi=ozbMy0lG~Rexy!a2E^{i*Dd%Olf-upWSPtWsS791R$7@YEVkL5fA9*<|u z&zO0BEE;%RwRuu{b4ajfeE7?W-|^%pKiNC^arr0T{@dq4-@ClLwD0orH+^Pl>HGg` zY3XUf_y6_M(hmeb82q2XzX*P0fgel!m%)z@_*aX4_JecaM}r?;z==A^ z@IApE!S@b$TGmrMJ^PC9%es(j^KH)Z9`QrjF61#nZAEh(W9wGSh}Jlb<>1l8a@cdb zy;{Wa*NfHe*L~Axcl*)AY3A@Kb;A09rZJYpq$d_XxW zXCfZ)iC6rVYrNwh^aJ#!y=w3DalZlkX06xlJsr>kUC_s<7y6+idK&dbZ*)h0v`LT8 z3;t<9r}i~>{Z^~mant@yduH1)JUJg1>Q=A14hZD^&iL$IE9=+)+85*fm+Y{^4&NIu z`aRs^_RlfL9J`!{t>0mXCqHew?OyeVTex`BL*XvD$#0+FfZ&ke@ZhN6nBe%}q~MeR zCue!O^I&~ z%9Z>Ycscr?+V_tfLiulV86uu7dSBSpg?|wJmq{?pl&r3H~_V&a|-q2p}-5S zz#2}S;IwR?KH!Y3!M?7?cxLuL62|kV>+xCEoOmc9QlFaJ=cx~DJBADAtC^nErWU!&lh5{C*|6c2|9$)IcmJvQaQA0C;~9_J zyWfymSy|!#rKdmrr@mvuhS&Ycx^-sbTa%j^`kuh7GKak*&1^H=JnI}Zz@qX7?`hSuNiC>gZ*y`%xie-0_OSK1GC+nH}4C%nyKUa!TUn~ z2Q6Us7R_a?_r5wo{=Qp4J>CJ{Z)z+D>K=g)?}xr48od*|8%Fef-1ql1o|p4i!};0& zNLcMU`=-z6c5@l?v-WK;t;e=H^?$708ZZ40z!%=|hf658-ihOPfcGPv&|1F%+OPKT zfE?R@f%e*Wfd0R00DaK#-T~bdz5{5B&gqQaVEhKK|0jc|1)eV#dC{@_s{Do{B!Zemu#LlZ+g># z--3+J55Jz}dkf!s0{m`2 z&)4g?g7(+Z|bMU zbF!~qJ1=YgyO z3w-ec{>tSz6L4Mb^`Si(e>NCrf`002=fQzl>%0D&2m3BSA9Mm{0nm_nKv(odXY^L> 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 BpT__I literal 28858 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

>Go}A*4f^PT%R)F}P{wcGg%zn)ha# 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 K|ETS+Q~v{Ai5s^7 diff --git a/icon.png b/icon.png index f5815431ed3df7ed5afb6bd71f15d5beb71368bc..040f039f059f393339ea68d9e2b8ca353d892ceb 100644 GIT binary patch delta 518 zcmV+h0{Q)m44(v$BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz z!AV3xRCwBAWWWU$a{q_3zkx|chRm;E#{d5aDJGl-@G&CTTsT!Ru;7$o1scEyWq{8aohUe`x7HB7l0%nIt7u;Mt?O7#Zo4Mu7Vi`F_00b z;$tGhwM-V4`aovz-Dl4jq9@-$QMfc$g+W((;7{`&3o+wb2uvxM8(HE|q2&T#bGH-@*2jKG*< zWcUtL_z#GAI5@xt{D6wR1sMQj{{gD?`SZv0hn<}%<2o*`>1qN38MlD`7Gq&%kWEPi zM*}Eue#^;0lEb4%aIwd8W;49{^Or#l7#_Die3-#F6@MtG&BS!~>c4+VOw7!XFo8zT zcW4-KLR|z4@qd5+g7n-2>QM%#gTMd(zXd8%`U8~si=>bfOLT#(V2A2~OXg~8uW^x- z{Lern0I3D(0UHd84n{`CS|D2=mTd6oeGjEC0`YwyUIGwc0Juz{Jh@FGivR!s07*qo IM6N<$f&}R6wEzGB delta 1530 zcmV4Tx04R}-Ro!pfR1`mnZ(O7nKcKOW z4i$^9Ra0BJ8yc;~21%2p=|UR0&DbiW$#rfTQ`a`O(`{9s_5yDV_yd5l2Of}kLK+Oj z_Ok5(v`JGz71bo9J#^YYXp{DWs&KBaQ@dTpxRI}aIp=pi?|;!XK*v{_pO}_ARv`(`K_~P;r>1*Ox?C;-F2;pN*27;R!QM9q+Ux&wbylgT10KeMtdQo=mnqksdx=&F5&oys0TJd`E>GI|#kK((J)n0eU)DVBJ zYq?3pFC)I@_!%aD74f~sTqTWoFF^8{ntPr?L_-if$s_=TxZzG%&qCb(^K zdCoqnhMa4x{ z6hi)zV+ON`xsmg3L#>3I8=9NTb3f!hwJM>{)UK+QWxX9ld>D=;G@xL^4DLEuumLit zkcSMu9e;39Qv(A`lu*=Clo*MpVGd>OdF6n^am1Jntk;<}MrqIC5$=Q>n{*R}?8oOI zDUw5En2dl--Xw34!z7E+5pr%d2c?H4INKjdmEV*< zl@;X+<-BrtTbJ8*N%&OwR`^l)PWWE<8D!y-a9Q|CxFUQbT#TL7ym&1JoWQ-+)%LMCuYy_wP6ZWs zL5D3kvu*xEYtl=GNMYO54zpQqF~pph71JP#d&LoPNE~Olm7ll=btAavwoIM=mAd9q7A z>MqdgAh7QszoH+g!S^k(^Lixn-v&7J7v5PnBH45U;A;<{`?W~chj-$$p8;Grpf}uw z@Xk*pegW`m`}gsGT^YQaZZ(?^@V@H!1YqOiX7iurW^?09^uGph$@~{t0C9N4D1X90 z00009a7bBm000XU000XU0RWnu7ytkP!AV3xR5*>5l08ctVGzfE&-olViEcs~-IJ`s zk;;IjU?6H?rRWC`QpGi;VB?oq5Yib_nsm`zdm*5(UTGr;x(VbWDS%jt>v{5QfY?4{ij$ ze%8-`<8aTmQH25zmX;zg5kW+#xUQUm)Ic^t)B$j7pWOJujB-7Cm@e;S&=;U^+iS3uh@NjUD@!ege0WNHtPT<-Y zOk4?|Gr6vW?gCDGdSZTn&xHc7Y@1RTw!hhgOyu)2H8j+^gT;k~=HYy*RQ{RV?>No3 gx4f)UFY$lmH+X2g<3%&jX8-^I07*qoM6N<$f(8EcU;qFB diff --git a/setup.py b/setup.py index 30159c4..1611d9c 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,6 @@ def getDataFiles(dirs): data_files = [] for directory in dirs: for root, dirs, files in os.walk(directory): - print files if files: for filename in files: if filename[:-4] is not '.pyc': @@ -24,6 +23,19 @@ def getDataFiles(dirs): return data_files +includes = [ + 'telnetlib', + 'xml.etree.ElementTree', + 'xml.etree.cElementTree', + 'xml.dom', + 'xml.dom.minidom', + 'netrc', + 'csv', + 'HTMLParser', + 'version', + 'distutils', +] + # Windows if sys.platform == "win32": import py2exe @@ -39,19 +51,12 @@ if sys.platform == "win32": 'USP10.dll', ], packages = ['couchpotato', 'libs'], - includes = [ - 'telnetlib', - 'xml.etree.ElementTree', - 'xml.etree.cElementTree', - 'xml.dom', - 'xml.dom.minidom', - 'netrc', - 'csv', - ], + includes = includes, skip_archive = 1, ) - exeICON = 'icon.ico' + exeICON = os.path.join(base_path, 'icon.ico') DATA_FILES = getDataFiles([r'.\\couchpotato', r'.\\libs']) + DATA_FILES.append('icon.png') # OSX @@ -60,28 +65,22 @@ elif sys.platform == "darwin": FREEZER = 'py2app' FREEZER_OPTIONS = dict( + strip = True, argv_emulation = False, + site_packages = False, iconfile = 'icon.icns', plist = dict( LSUIElement = True, ), packages = ['couchpotato', 'libs'], - includes = [ - 'telnetlib', - 'xml.etree.ElementTree', - 'xml.etree.cElementTree', - 'xml.dom', - 'xml.dom.minidom', - 'netrc', - 'csv', - ], + includes = includes, ) exeICON = None DATA_FILES = ['icon.png'] # Common NAME = "CouchPotato" -APP = [bdist_esky.Executable("Desktop.py", name = NAME, icon = exeICON,)] +APP = [bdist_esky.Executable("Desktop.py", name = NAME, icon = exeICON, gui_only = True,)] ESKY_OPTIONS = dict( freezer_module = FREEZER, freezer_options = FREEZER_OPTIONS, From d68d2dfdb6ffe97d68d57dcc88d3cf031a8ca88f Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 9 Sep 2012 21:48:38 +0200 Subject: [PATCH 025/102] Updated installer --- installer.iss | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/installer.iss b/installer.iss index 9b26df9..6b9ee9a 100644 --- a/installer.iss +++ b/installer.iss @@ -1,9 +1,9 @@ -#define MyAppName "CouchPotato" -#define MyAppVer "2.0.0.pre2" +#define MyAppName "CouchPotato" +#define MyAppVer "2.0.0.pre1" [Setup] AppName={#MyAppName} -AppVersion={#MyAppVer} +AppVersion=2 AppVerName={#MyAppName} DefaultDirName={pf}\{#MyAppName} DisableProgramGroupPage=yes @@ -15,11 +15,14 @@ AppPublisher=Your Mom AppPublisherURL=http://couchpota.to [Files] -Source: "./dist/{#MyAppName}-{#MyAppVer}.win32/*"; Flags: recursesubdirs; DestDir: "{app}" +Source: "./dist/{#MyAppName}-{#MyAppVer}.win32/*"; Flags: recursesubdirs; DestDir: "{app}" [Icons] Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppName}.exe" -Name: "{userstartup}\{#MyAppName}"; Filename: "{app}\{#MyAppName}.exe" +Name: "{userstartup}\{#MyAppName}"; Filename: "{app}\{#MyAppName}.exe"; Tasks: startup [Tasks] -Name: "startup"; Description: "Run {#MyAppName} at startup"; Flags: unchecked \ No newline at end of file +Name: "startup"; Description: "Run {#MyAppName} at startup"; Flags: unchecked + +[UninstallDelete] +Type: filesandordirs; Name: "{app}\*.*" \ No newline at end of file From 578fb457851f5147fdbf594b9099d94ab801d004 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 16 Sep 2012 11:35:56 +0200 Subject: [PATCH 026/102] Installer 1 up --- installer.iss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer.iss b/installer.iss index 6b9ee9a..be20446 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.0.0.pre1" +#define MyAppVer "2.0.0.pre2" [Setup] AppName={#MyAppName} From 0e2f8a612ce269693c66aceb732108c7841d8f24 Mon Sep 17 00:00:00 2001 From: Ruud Date: Wed, 19 Sep 2012 15:29:07 +0200 Subject: [PATCH 027/102] Extract zip after build, for testing --- setup.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 1611d9c..18f098a 100644 --- a/setup.py +++ b/setup.py @@ -1,8 +1,9 @@ from esky import bdist_esky from setuptools import setup +import os import sys import version -import os +import zipfile # Include proper dirs @@ -57,6 +58,7 @@ if sys.platform == "win32": exeICON = os.path.join(base_path, 'icon.ico') DATA_FILES = getDataFiles([r'.\\couchpotato', r'.\\libs']) DATA_FILES.append('icon.png') + file_ext = 'win32.zip' # OSX @@ -65,6 +67,7 @@ elif sys.platform == "darwin": FREEZER = 'py2app' FREEZER_OPTIONS = dict( + optimize = 2, strip = True, argv_emulation = False, site_packages = False, @@ -78,6 +81,8 @@ elif sys.platform == "darwin": exeICON = None DATA_FILES = ['icon.png'] + file_ext = 'macosx-10_6-intel.zip' + # Common NAME = "CouchPotato" APP = [bdist_esky.Executable("Desktop.py", name = NAME, icon = exeICON, gui_only = True,)] @@ -96,4 +101,7 @@ setup( options = dict(bdist_esky = ESKY_OPTIONS), ) - +distpath = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'dist') +zipfilename = os.path.join(distpath, '%s-%s.%s' % (NAME, version.VERSION, file_ext)) +zfile = zipfile.ZipFile(zipfilename, "r") +zfile.extractall(distpath) From aa1fa3eb9a418f0f9df23660e4726bbbccdcac2d Mon Sep 17 00:00:00 2001 From: Ruud Date: Wed, 19 Sep 2012 15:42:33 +0200 Subject: [PATCH 028/102] Add description --- setup.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/setup.py b/setup.py index 18f098a..c3a687e 100644 --- a/setup.py +++ b/setup.py @@ -97,6 +97,9 @@ setup( name = NAME, scripts = APP, version = version.VERSION, + author = "Ruud", + author_email = "info@couchpota.to", + description = ("Download movies automatically, easily and in the best quality as soon as they are released, via usenet or torrents"), data_files = DATA_FILES, options = dict(bdist_esky = ESKY_OPTIONS), ) From 41c0f34d95ccf0ae3b2cf1b6f299088a5bdfe33c Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 27 Oct 2012 18:22:40 +0200 Subject: [PATCH 029/102] Properly restart --- Desktop.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/Desktop.py b/Desktop.py index 457a52a..70b32c7 100644 --- a/Desktop.py +++ b/Desktop.py @@ -1,3 +1,4 @@ +from esky.util import appdir_from_executable #@UnresolvedImport from threading import Thread from wx.lib.softwareupdate import SoftwareUpdate import os @@ -5,8 +6,6 @@ import sys import time import webbrowser import wx -import subprocess - # Include proper dirs if hasattr(sys, 'frozen'): @@ -214,5 +213,18 @@ if __name__ == '__main__': time.sleep(1) if app.restart: - args = [sys.executable] + [os.path.join(base_path, 'Desktop.py')] + sys.argv[1:] - subprocess.Popen(args) + + def appexe_from_executable(exepath): + appdir = appdir_from_executable(exepath) + exename = os.path.basename(exepath) + + if sys.platform == "darwin": + if os.path.isdir(os.path.join(appdir, "Contents", "MacOS")): + return os.path.join(appdir, "Contents", "MacOS", exename) + + return os.path.join(appdir, exename) + + exe = appexe_from_executable(sys.executable) + os.chdir(os.path.dirname(exe)) + + os.execv(exe, [exe] + sys.argv[1:]) From 1a56191f8320dcbdd137bdf6c1f8181eb6e7ef2d Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 27 Oct 2012 18:22:50 +0200 Subject: [PATCH 030/102] Don't unzip --- setup.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index c3a687e..9f83166 100644 --- a/setup.py +++ b/setup.py @@ -104,7 +104,7 @@ setup( options = dict(bdist_esky = ESKY_OPTIONS), ) -distpath = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'dist') -zipfilename = os.path.join(distpath, '%s-%s.%s' % (NAME, version.VERSION, file_ext)) -zfile = zipfile.ZipFile(zipfilename, "r") -zfile.extractall(distpath) +#distpath = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'dist') +#zipfilename = os.path.join(distpath, '%s-%s.%s' % (NAME, version.VERSION, file_ext)) +#zfile = zipfile.ZipFile(zipfilename, "r") +#zfile.extractall(distpath) From d6522d8f380b07136faae3c53436163732552dc3 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 27 Oct 2012 18:49:44 +0200 Subject: [PATCH 031/102] One up installer --- installer.iss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer.iss b/installer.iss index be20446..8d7540d 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.0.0.pre2" +#define MyAppVer "2.0.1" [Setup] AppName={#MyAppName} From 938b14ba18fda579a0195f92fa7aa74330603398 Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 29 Oct 2012 20:45:17 +0100 Subject: [PATCH 032/102] One up installer --- installer.iss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer.iss b/installer.iss index 8d7540d..2cbcb91 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.0.1" +#define MyAppVer "2.0.1.1" [Setup] AppName={#MyAppName} From e71da1f14de5d8f85b65fb32d53afdb8c46ecbe4 Mon Sep 17 00:00:00 2001 From: Ruud Date: Fri, 2 Nov 2012 18:24:13 +0100 Subject: [PATCH 033/102] Use proper description for binary build. fix #1005 --- setup.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 9f83166..23b0dfc 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,6 @@ from setuptools import setup import os import sys import version -import zipfile # Include proper dirs @@ -99,7 +98,7 @@ setup( version = version.VERSION, author = "Ruud", author_email = "info@couchpota.to", - description = ("Download movies automatically, easily and in the best quality as soon as they are released, via usenet or torrents"), + description = 'CouchPotato %s' % version.VERSION, data_files = DATA_FILES, options = dict(bdist_esky = ESKY_OPTIONS), ) From 25f1b8c7a7fefdfd10d0f96174f887102afeed90 Mon Sep 17 00:00:00 2001 From: Ruud Date: Fri, 2 Nov 2012 18:32:15 +0100 Subject: [PATCH 034/102] Fedora init fix #1009 --- init/fedora | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init/fedora b/init/fedora index 0adefd0..c9ebbf2 100644 --- a/init/fedora +++ b/init/fedora @@ -28,7 +28,7 @@ pidfile=${CP_PIDFILE-/var/run/couchpotato/couchpotato.pid} ## pidpath=`dirname ${pidfile}` -options=" --daemon --pid_file=${pidfile} --datadir=${datadir}" +options=" --daemon --pid_file=${pidfile} --data_dir=${datadir}" # create PID directory if not exist and ensure the couchpotato user can write to it if [ ! -d $pidpath ]; then From 7849e7170d82d90cf2c60e89fd06d036b7c1e19a Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 1 Dec 2012 12:16:51 +0100 Subject: [PATCH 035/102] Uninstall only create files, no wildcard *.* --- installer.iss | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/installer.iss b/installer.iss index 2cbcb91..9cdb9a2 100644 --- a/installer.iss +++ b/installer.iss @@ -25,4 +25,10 @@ Name: "{userstartup}\{#MyAppName}"; Filename: "{app}\{#MyAppName}.exe"; Tasks: s Name: "startup"; Description: "Run {#MyAppName} at startup"; Flags: unchecked [UninstallDelete] -Type: filesandordirs; Name: "{app}\*.*" \ No newline at end of file +Type: filesandordirs; Name: "{app}\appdata" +Type: filesandordirs; Name: "{app}\Microsoft.VC90.CRT" +Type: filesandordirs; Name: "{app}\updates" +Type: filesandordirs; Name: "{app}\CouchPotato*" +Type: filesandordirs; Name: "{app}\python27.dll" +Type: filesandordirs; Name: "{app}\unins000.dat" +Type: filesandordirs; Name: "{app}\unins000.exe" From c9e732651f4ccd40af53f29e8cfd04b073390eec Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 1 Dec 2012 12:16:58 +0100 Subject: [PATCH 036/102] One up --- installer.iss | 2 +- version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/installer.iss b/installer.iss index 9cdb9a2..81bde5a 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.0.1.1" +#define MyAppVer "2.0.2" [Setup] AppName={#MyAppName} diff --git a/version.py b/version.py index 930b506..74829e7 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.0.1' +VERSION = '2.0.2' BRANCH = 'desktop' From 96472a9a8f1bf6c3ae40851ddee40e755326cd3c Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 16 Dec 2012 23:51:58 +0100 Subject: [PATCH 037/102] One up --- installer.iss | 2 +- version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/installer.iss b/installer.iss index 81bde5a..19b4d99 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.0.2" +#define MyAppVer "2.0.3" [Setup] AppName={#MyAppName} diff --git a/version.py b/version.py index 74829e7..9d1ded2 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.0.2' +VERSION = '2.0.3' BRANCH = 'desktop' From 5941d0bf77e81448c2ae8d8411d7b3342d74b744 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 29 Dec 2012 00:03:36 +0100 Subject: [PATCH 038/102] Add version to update url --- Desktop.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Desktop.py b/Desktop.py index 70b32c7..fde68dc 100644 --- a/Desktop.py +++ b/Desktop.py @@ -1,5 +1,6 @@ from esky.util import appdir_from_executable #@UnresolvedImport from threading import Thread +from version import VERSION from wx.lib.softwareupdate import SoftwareUpdate import os import sys @@ -165,7 +166,7 @@ class CouchPotatoApp(wx.App, SoftwareUpdate): def OnInit(self): # Updater - base_url = 'http://couchpota.to/updates/' + base_url = 'http://couchpota.to/updates/%s/' % VERSION self.InitUpdates(base_url, base_url + 'changelog.html', icon = wx.Icon('icon.png')) From 9a314cfbc4c546d5a1958e7c6ff503f6c9efb2b7 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 29 Dec 2012 00:03:45 +0100 Subject: [PATCH 039/102] One up --- installer.iss | 2 +- version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/installer.iss b/installer.iss index 19b4d99..604f6a1 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.0.3" +#define MyAppVer "2.0.4" [Setup] AppName={#MyAppName} diff --git a/version.py b/version.py index 9d1ded2..c73f870 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.0.3' +VERSION = '2.0.4' BRANCH = 'desktop' From 0582f7d694389de106c338527a105bb53ace038b Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 7 Jan 2013 23:10:06 +0100 Subject: [PATCH 040/102] Urlencode spotweb id. fix #1213 --- couchpotato/core/providers/nzb/newznab/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/couchpotato/core/providers/nzb/newznab/main.py b/couchpotato/core/providers/nzb/newznab/main.py index f1f0d48..b1e93bc 100644 --- a/couchpotato/core/providers/nzb/newznab/main.py +++ b/couchpotato/core/providers/nzb/newznab/main.py @@ -73,8 +73,8 @@ class Newznab(NZBProvider, RSS): 'name': self.getTextElement(nzb, 'title'), 'age': self.calculateAge(int(time.mktime(parse(date).timetuple()))), 'size': int(self.getElement(nzb, 'enclosure').attrib['length']) / 1024 / 1024, - 'url': (self.getUrl(host['host'], self.urls['download']) % nzb_id) + self.getApiExt(host), - 'detail_url': '%sdetails/%s' % (cleanHost(host['host']), nzb_id), + 'url': (self.getUrl(host['host'], self.urls['download']) % tryUrlencode(nzb_id)) + self.getApiExt(host), + 'detail_url': '%sdetails/%s' % (cleanHost(host['host']), tryUrlencode(nzb_id)), 'content': self.getTextElement(nzb, 'description'), }) From 51e747049d5677d703b7c4a749252803e351e4cc Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 7 Jan 2013 23:10:42 +0100 Subject: [PATCH 041/102] One up --- installer.iss | 2 +- version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/installer.iss b/installer.iss index 604f6a1..946a9f9 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.0.4" +#define MyAppVer "2.0.5" [Setup] AppName={#MyAppName} diff --git a/version.py b/version.py index c73f870..3ff7c5c 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.0.4' +VERSION = '2.0.5' BRANCH = 'desktop' From 506871b506accdb2d95e9e5e6c5c0b59156f3c3e Mon Sep 17 00:00:00 2001 From: Ruud Date: Wed, 23 Jan 2013 23:10:55 +0100 Subject: [PATCH 042/102] One up --- installer.iss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer.iss b/installer.iss index 946a9f9..3832cbf 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.0.5" +#define MyAppVer "2.0.6" [Setup] AppName={#MyAppName} From 9e260a89afa7991348bbbb741148048d8aa7184b Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 26 Jan 2013 14:51:39 +0100 Subject: [PATCH 043/102] One up --- installer.iss | 2 +- version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/installer.iss b/installer.iss index 3832cbf..7013ca9 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.0.6" +#define MyAppVer "2.0.6.1" [Setup] AppName={#MyAppName} diff --git a/version.py b/version.py index bc24536..c8f00b5 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.0.6' +VERSION = '2.0.6.1' BRANCH = 'desktop' From f08ccd4fd829bc1e233da7b8443737303ef39e5f Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 17 Mar 2013 22:34:04 +0100 Subject: [PATCH 044/102] One up installer --- installer.iss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer.iss b/installer.iss index 7013ca9..f4c9cf8 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.0.6.1" +#define MyAppVer "2.0.7" [Setup] AppName={#MyAppName} From 1ed58586a105de2010ad188d61470172057d765b Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 18 Mar 2013 23:56:54 +0100 Subject: [PATCH 045/102] Force install install in AppData Add images to installer --- installer.iss | 11 ++++++++++- installer_banner.bmp | Bin 0 -> 154544 bytes installer_icon.bmp | Bin 0 -> 9800 bytes 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 installer_banner.bmp create mode 100644 installer_icon.bmp diff --git a/installer.iss b/installer.iss index f4c9cf8..2acbe8b 100644 --- a/installer.iss +++ b/installer.iss @@ -5,14 +5,23 @@ AppName={#MyAppName} AppVersion=2 AppVerName={#MyAppName} -DefaultDirName={pf}\{#MyAppName} +DefaultDirName={userappdata}\{#MyAppName}\application DisableProgramGroupPage=yes +DisableDirPage=yes UninstallDisplayIcon=./icon.ico SetupIconFile=./icon.ico OutputDir=./dist OutputBaseFilename={#MyAppName}-{#MyAppVer}.win32.installer AppPublisher=Your Mom AppPublisherURL=http://couchpota.to +PrivilegesRequired=none +WizardSmallImageFile=installer_icon.bmp +WizardImageFile=installer_banner.bmp +UsePreviousAppDir=no + +[Messages] +WelcomeLabel1=Installing [name]! +WelcomeLabel2=This wizard will install [name] to your AppData folder. It does this so it can use the build in updater without needing admin rights. [Files] Source: "./dist/{#MyAppName}-{#MyAppVer}.win32/*"; Flags: recursesubdirs; DestDir: "{app}" diff --git a/installer_banner.bmp b/installer_banner.bmp new file mode 100644 index 0000000000000000000000000000000000000000..834bb11bab0af79cff67cfff7e93e33fc7c674c4 GIT binary patch literal 154544 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 F{68YqWL5wG literal 0 HcmV?d00001 diff --git a/installer_icon.bmp b/installer_icon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..05d9d381514cdbdbb5f9608c88fc48fdeb5fee91 GIT binary patch literal 9800 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 Date: Tue, 19 Mar 2013 20:46:00 +0100 Subject: [PATCH 046/102] Use https for changelog --- Desktop.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Desktop.py b/Desktop.py index fde68dc..a284d0a 100644 --- a/Desktop.py +++ b/Desktop.py @@ -166,8 +166,8 @@ class CouchPotatoApp(wx.App, SoftwareUpdate): def OnInit(self): # Updater - base_url = 'http://couchpota.to/updates/%s/' % VERSION - self.InitUpdates(base_url, base_url + 'changelog.html', + base_url = 'https://couchpota.to/updates/%s' + self.InitUpdates(base_url % VERSION + '/', base_url % 'changelog.html', icon = wx.Icon('icon.png')) self.frame = MainFrame(self) From 88579cd71a7c8b816412d97d7b44b985176e458f Mon Sep 17 00:00:00 2001 From: Ruud Date: Tue, 19 Mar 2013 20:52:07 +0100 Subject: [PATCH 047/102] One up --- version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.py b/version.py index 59f8fe0..aa75885 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.0.7' +VERSION = '2.0.7.1' BRANCH = 'desktop' From 607b5ea7665a99a91a4388dd60863dbb216e1770 Mon Sep 17 00:00:00 2001 From: Ruud Date: Tue, 19 Mar 2013 21:22:07 +0100 Subject: [PATCH 048/102] Run exe after install --- installer.iss | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/installer.iss b/installer.iss index 2acbe8b..e9171e3 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.0.7" +#define MyAppVer "2.0.7.1" [Setup] AppName={#MyAppName} @@ -22,6 +22,9 @@ UsePreviousAppDir=no [Messages] WelcomeLabel1=Installing [name]! WelcomeLabel2=This wizard will install [name] to your AppData folder. It does this so it can use the build in updater without needing admin rights. + +[CustomMessages] +LaunchProgram=Launch {#MyAppName} right now. [Files] Source: "./dist/{#MyAppName}-{#MyAppVer}.win32/*"; Flags: recursesubdirs; DestDir: "{app}" @@ -33,6 +36,10 @@ Name: "{userstartup}\{#MyAppName}"; Filename: "{app}\{#MyAppName}.exe"; Tasks: s [Tasks] Name: "startup"; Description: "Run {#MyAppName} at startup"; Flags: unchecked +[Run] +Filename: {app}\{#MyAppName}.exe; Description: {cm:LaunchProgram,{#MyAppName}}; Flags: nowait postinstall skipifsilent + + [UninstallDelete] Type: filesandordirs; Name: "{app}\appdata" Type: filesandordirs; Name: "{app}\Microsoft.VC90.CRT" From 821f68909d79780e52650919c06ebed743faaf34 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 5 May 2013 21:19:10 +0200 Subject: [PATCH 049/102] One up --- installer.iss | 2 +- version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/installer.iss b/installer.iss index e9171e3..eab2678 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.0.7.1" +#define MyAppVer "2.0.8" [Setup] AppName={#MyAppName} diff --git a/version.py b/version.py index aa75885..7068c0d 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.0.7.1' +VERSION = '2.0.8' BRANCH = 'desktop' From 88e738c6cd24c9dbf6cd6e298b59ae6c3dcad625 Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 3 Jun 2013 22:22:35 +0200 Subject: [PATCH 050/102] Don't show double updater name --- couchpotato/static/scripts/page/about.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/couchpotato/static/scripts/page/about.js b/couchpotato/static/scripts/page/about.js index ba451c8..71270de 100644 --- a/couchpotato/static/scripts/page/about.js +++ b/couchpotato/static/scripts/page/about.js @@ -117,7 +117,7 @@ var AboutSettingTab = new Class({ var self = this; var date = new Date(json.version.date * 1000); self.version_text.set('text', json.version.hash + (json.version.date ? ' ('+date.toLocaleString()+')' : '')); - self.updater_type.set('text', json.version.type + ', ' + json.branch); + self.updater_type.set('text', (json.version.type != json.branch) ? (json.version.type + ', ' + json.branch) : json.branch); } }); From e2852407ea311dd109d8fe7f34f00d121d8cfa24 Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 3 Jun 2013 22:22:44 +0200 Subject: [PATCH 051/102] One up --- installer.iss | 2 +- version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/installer.iss b/installer.iss index eab2678..349b15e 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.0.8" +#define MyAppVer "2.0.8.1" [Setup] AppName={#MyAppName} diff --git a/version.py b/version.py index 7068c0d..aed01e5 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.0.8' +VERSION = '2.0.8.1' BRANCH = 'desktop' From c31b10c798f3f855a3164a91182c75482b530301 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 6 Jul 2013 00:24:57 +0200 Subject: [PATCH 052/102] Ignore current suggested results --- couchpotato/core/plugins/suggestion/main.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/couchpotato/core/plugins/suggestion/main.py b/couchpotato/core/plugins/suggestion/main.py index e913bb6..0e7d701 100644 --- a/couchpotato/core/plugins/suggestion/main.py +++ b/couchpotato/core/plugins/suggestion/main.py @@ -65,6 +65,7 @@ class Suggestion(Plugin): # Combine with previous suggestion_cache cached_suggestion = self.getCache('suggestion_cached') new_suggestions = [] + ignored = [] if not ignored else ignored if ignore_imdb: for cs in cached_suggestion: @@ -79,9 +80,7 @@ class Suggestion(Plugin): .filter(or_(*[Movie.status.has(identifier = s) for s in ['active', 'done']])).all() movies = [x.library.identifier for x in active_movies] - if ignored: - ignored.extend([x.get('imdb') for x in new_suggestions]) - + ignored.extend([x.get('imdb') for x in cached_suggestion]) suggestions = fireEvent('movie.suggest', movies = movies, ignore = list(set(ignored)), single = True) if suggestions: From 3b7376fd187bac66b98d146b4d6c1b4975b5b4cb Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 6 Jul 2013 01:01:26 +0200 Subject: [PATCH 053/102] One up --- installer.iss | 2 +- version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/installer.iss b/installer.iss index 349b15e..f8d58c9 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.0.8.1" +#define MyAppVer "2.1.0" [Setup] AppName={#MyAppName} diff --git a/version.py b/version.py index aed01e5..be8d96b 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.0.8.1' +VERSION = '2.1.0' BRANCH = 'desktop' From f20aaa2d9da5714402518d663259ff6fa68a084c Mon Sep 17 00:00:00 2001 From: Ruud Date: Fri, 20 Sep 2013 16:23:42 +0200 Subject: [PATCH 054/102] Hide IE clear button on search --- couchpotato/core/media/movie/_base/static/search.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/couchpotato/core/media/movie/_base/static/search.css b/couchpotato/core/media/movie/_base/static/search.css index dc74734..80c1815 100644 --- a/couchpotato/core/media/movie/_base/static/search.css +++ b/couchpotato/core/media/movie/_base/static/search.css @@ -59,6 +59,11 @@ .search_form.shown .input input { opacity: 1; } + + .search_form input::-ms-clear { + width : 0; + height: 0; + } @media all and (max-width: 480px) { .search_form .input input { From 651a063f94e4ec098a13302e406050f115a9abd1 Mon Sep 17 00:00:00 2001 From: Ruud Date: Fri, 20 Sep 2013 16:33:01 +0200 Subject: [PATCH 055/102] Fix about submenu --- Desktop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Desktop.py b/Desktop.py index a284d0a..b90f48e 100644 --- a/Desktop.py +++ b/Desktop.py @@ -81,7 +81,7 @@ class TaskBarIcon(wx.TaskBarIcon): webbrowser.open(url) def onSettings(self, event): - url = self.frame.parent.getSetting('base_url') + '/settings/' + url = self.frame.parent.getSetting('base_url') + 'settings/about/' webbrowser.open(url) def onTaskBarClose(self, evt): From eeeb845ef311e3897d2e6900c6913728f8f54112 Mon Sep 17 00:00:00 2001 From: Ruud Date: Fri, 20 Sep 2013 17:30:11 +0200 Subject: [PATCH 056/102] Simplify string before checking on imdb --- couchpotato/core/helpers/variable.py | 7 +++++-- couchpotato/core/plugins/scanner/main.py | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/couchpotato/core/helpers/variable.py b/couchpotato/core/helpers/variable.py index 1e7fc83..d93c941 100644 --- a/couchpotato/core/helpers/variable.py +++ b/couchpotato/core/helpers/variable.py @@ -123,9 +123,12 @@ def cleanHost(host): return host -def getImdb(txt, check_inside = True, multiple = False): +def getImdb(txt, check_inside = False, multiple = False): - txt = ss(txt) + if not check_inside: + txt = simplifyString(txt) + else: + txt = ss(txt) if check_inside and os.path.isfile(txt): output = open(txt, 'r') diff --git a/couchpotato/core/plugins/scanner/main.py b/couchpotato/core/plugins/scanner/main.py index ff17b64..0662d00 100644 --- a/couchpotato/core/plugins/scanner/main.py +++ b/couchpotato/core/plugins/scanner/main.py @@ -565,7 +565,7 @@ class Scanner(Plugin): if not imdb_id: try: for nf in files['nfo']: - imdb_id = getImdb(nf) + imdb_id = getImdb(nf, check_inside = True) if imdb_id: log.debug('Found movie via nfo file: %s', nf) nfo_file = nf @@ -578,7 +578,7 @@ class Scanner(Plugin): try: for filetype in files: for filetype_file in files[filetype]: - imdb_id = getImdb(filetype_file, check_inside = False) + imdb_id = getImdb(filetype_file) if imdb_id: log.debug('Found movie via imdb in filename: %s', nfo_file) break From d08c7c57a86e541d8be901624b3a78e087e4db30 Mon Sep 17 00:00:00 2001 From: Ruud Date: Fri, 20 Sep 2013 17:46:54 +0200 Subject: [PATCH 057/102] One up! --- installer.iss | 2 +- version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/installer.iss b/installer.iss index f8d58c9..2450d86 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.1.0" +#define MyAppVer "2.2.0" [Setup] AppName={#MyAppName} diff --git a/version.py b/version.py index be8d96b..b25bfb3 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.1.0' +VERSION = '2.2.0' BRANCH = 'desktop' From 8d108b92bfb37c934e05db18cb726d793c14a21d Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 23 Sep 2013 21:48:12 +0200 Subject: [PATCH 058/102] One Up --- installer.iss | 2 +- version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/installer.iss b/installer.iss index 2450d86..47e46b4 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.2.0" +#define MyAppVer "2.2.1" [Setup] AppName={#MyAppName} diff --git a/version.py b/version.py index b25bfb3..4a5a581 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.2.0' +VERSION = '2.2.1' BRANCH = 'desktop' From 5d913e87c3672e1cec9fc031cf15b7d140215630 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 17 Nov 2013 20:20:18 +0100 Subject: [PATCH 059/102] One up! --- installer.iss | 2 +- version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/installer.iss b/installer.iss index 47e46b4..622f245 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.2.1" +#define MyAppVer "2.3.0" [Setup] AppName={#MyAppName} diff --git a/version.py b/version.py index 4a5a581..a946260 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.2.1' +VERSION = '2.3.0' BRANCH = 'desktop' From f79fcda27faa1ee8597085655865a719589bac9c Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 17 Nov 2013 21:22:24 +0100 Subject: [PATCH 060/102] Small one up --- installer.iss | 2 +- version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/installer.iss b/installer.iss index 622f245..d92d294 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.3.0" +#define MyAppVer "2.3.1" [Setup] AppName={#MyAppName} diff --git a/version.py b/version.py index a946260..bebaee8 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.3.0' +VERSION = '2.3.1' BRANCH = 'desktop' From dbaa377770748b6148622f6d7f179b8023c1e8e1 Mon Sep 17 00:00:00 2001 From: Ruud Date: Fri, 17 Jan 2014 16:29:29 +0100 Subject: [PATCH 061/102] version.master --- version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.py b/version.py index d3f24ba..12e96b5 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ VERSION = None -BRANCH = 'develop' +BRANCH = 'master' From 2c9d48761479b2230ee01f9cf8fa22fc8e7e79b0 Mon Sep 17 00:00:00 2001 From: Ruud Date: Tue, 25 Feb 2014 21:20:59 +0100 Subject: [PATCH 062/102] Update build url --- Desktop.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Desktop.py b/Desktop.py index b90f48e..918b8fe 100644 --- a/Desktop.py +++ b/Desktop.py @@ -166,8 +166,8 @@ class CouchPotatoApp(wx.App, SoftwareUpdate): def OnInit(self): # Updater - base_url = 'https://couchpota.to/updates/%s' - self.InitUpdates(base_url % VERSION + '/', base_url % 'changelog.html', + base_url = 'https://api.couchpota.to/updates/%s' + self.InitUpdates(base_url % VERSION + '/', 'https://couchpota.to/updates/%s' % 'changelog.html', icon = wx.Icon('icon.png')) self.frame = MainFrame(self) From d3efda74b2cbb01e994d8dc098a3a446c0374100 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 16 Mar 2014 09:44:44 +0100 Subject: [PATCH 063/102] One up --- installer.iss | 4 ++-- version.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/installer.iss b/installer.iss index d92d294..b15e815 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.3.1" +#define MyAppVer "2.4.0" [Setup] AppName={#MyAppName} @@ -22,7 +22,7 @@ UsePreviousAppDir=no [Messages] WelcomeLabel1=Installing [name]! WelcomeLabel2=This wizard will install [name] to your AppData folder. It does this so it can use the build in updater without needing admin rights. - + [CustomMessages] LaunchProgram=Launch {#MyAppName} right now. diff --git a/version.py b/version.py index bebaee8..c3a0eab 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.3.1' +VERSION = '2.4.0' BRANCH = 'desktop' From fbccba77a7eb49a036ac64be6d751a18d6196672 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 16 Mar 2014 13:00:09 +0100 Subject: [PATCH 064/102] 64Bit installer setup --- installer.iss | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/installer.iss b/installer.iss index b15e815..a9752cb 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,7 @@ -#define MyAppName "CouchPotato" +#define MyAppName "CouchPotato" #define MyAppVer "2.4.0" +#define MyAppBit "win32" +//#define MyAppBit "win-amd64" [Setup] AppName={#MyAppName} @@ -11,7 +13,7 @@ DisableDirPage=yes UninstallDisplayIcon=./icon.ico SetupIconFile=./icon.ico OutputDir=./dist -OutputBaseFilename={#MyAppName}-{#MyAppVer}.win32.installer +OutputBaseFilename={#MyAppName}-{#MyAppVer}.{#MyAppBit}.installer AppPublisher=Your Mom AppPublisherURL=http://couchpota.to PrivilegesRequired=none @@ -27,7 +29,7 @@ WelcomeLabel2=This wizard will install [name] to your AppData folder. It does th LaunchProgram=Launch {#MyAppName} right now. [Files] -Source: "./dist/{#MyAppName}-{#MyAppVer}.win32/*"; Flags: recursesubdirs; DestDir: "{app}" +Source: "./dist/{#MyAppName}-{#MyAppVer}.{#MyAppBit}/*"; Flags: recursesubdirs; DestDir: "{app}" [Icons] Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppName}.exe" From b69f8b7ed520930dcab53dc27c1eb58a0c2afbf4 Mon Sep 17 00:00:00 2001 From: Ruud Date: Wed, 19 Mar 2014 22:33:14 +0100 Subject: [PATCH 065/102] Files not properly send to sabnzbd --- couchpotato/core/helpers/variable.py | 2 +- couchpotato/core/plugins/base.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/couchpotato/core/helpers/variable.py b/couchpotato/core/helpers/variable.py index 8be6f29..6616673 100644 --- a/couchpotato/core/helpers/variable.py +++ b/couchpotato/core/helpers/variable.py @@ -290,7 +290,7 @@ def isSubFolder(sub_folder, base_folder): return base_folder and sub_folder and ss(os.path.normpath(base_folder).rstrip(os.path.sep) + os.path.sep) in ss(os.path.normpath(sub_folder).rstrip(os.path.sep) + os.path.sep) # From SABNZBD -re_password = [re.compile(r'([^/\\]+)[/\\](.+)'), re.compile(r'(.+){{([^{}]+)}}$'), re.compile(r'(.+)\s+password\s*=\s*(.+)$', re.I)] +re_password = [re.compile(r'(.+){{([^{}]+)}}$'), re.compile(r'(.+)\s+password\s*=\s*(.+)$', re.I)] def scanForPassword(name): m = None for reg in re_password: diff --git a/couchpotato/core/plugins/base.py b/couchpotato/core/plugins/base.py index d7487a1..20ae850 100644 --- a/couchpotato/core/plugins/base.py +++ b/couchpotato/core/plugins/base.py @@ -296,7 +296,7 @@ class Plugin(object): return '%s%s' % (toSafeString(toUnicode(release_name)[:max_length]), tag) def createFileName(self, data, filedata, media): - name = sp(os.path.join(self.createNzbName(data, media))) + name = self.createNzbName(data, media) if data.get('protocol') == 'nzb' and 'DOCTYPE nzb' not in filedata and '' not in filedata: return '%s.%s' % (name, 'rar') return '%s.%s' % (name, data.get('protocol')) From 240283405e5389a77642ccfd68d619313142635e Mon Sep 17 00:00:00 2001 From: Ruud Date: Wed, 7 May 2014 11:50:36 +0200 Subject: [PATCH 066/102] variable 'year' referenced before assignment --- couchpotato/core/plugins/scanner/main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/couchpotato/core/plugins/scanner/main.py b/couchpotato/core/plugins/scanner/main.py index 3031236..4304bdd 100644 --- a/couchpotato/core/plugins/scanner/main.py +++ b/couchpotato/core/plugins/scanner/main.py @@ -843,6 +843,7 @@ class Scanner(Plugin): cleaned = ' '.join(re.split('\W+', simplifyString(release_name))) cleaned = re.sub(self.clean, ' ', cleaned) + year = None for year_str in [file_name, release_name, cleaned]: if not year_str: continue year = self.findYear(year_str) From e11b07b55916988451d096865c81066b1ef7459d Mon Sep 17 00:00:00 2001 From: Ruud Date: Fri, 6 Jun 2014 17:26:45 +0200 Subject: [PATCH 067/102] Don't save profile order twice --- couchpotato/core/plugins/profile/static/profile.css | 6 +++--- couchpotato/core/plugins/quality/static/quality.js | 20 ++++++++++++++------ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/couchpotato/core/plugins/profile/static/profile.css b/couchpotato/core/plugins/profile/static/profile.css index 073fa57..f8a1b42 100644 --- a/couchpotato/core/plugins/profile/static/profile.css +++ b/couchpotato/core/plugins/profile/static/profile.css @@ -159,9 +159,6 @@ } #profile_ordering li { - cursor: -webkit-grab; - cursor: -moz-grab; - cursor: grab; border-bottom: 1px solid rgba(255,255,255,0.2); padding: 0 5px; } @@ -183,6 +180,9 @@ background: url('../../images/handle.png') center; width: 20px; float: right; + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: grab; } #profile_ordering .formHint { diff --git a/couchpotato/core/plugins/quality/static/quality.js b/couchpotato/core/plugins/quality/static/quality.js index 285ed1d..601438d 100644 --- a/couchpotato/core/plugins/quality/static/quality.js +++ b/couchpotato/core/plugins/quality/static/quality.js @@ -135,20 +135,28 @@ var QualityBase = new Class({ }); // Sortable + var sorted_changed = false; self.profile_sortable = new Sortables(profile_list, { 'revert': true, - 'handle': '', + 'handle': '.handle', 'opacity': 0.5, - 'onComplete': self.saveProfileOrdering.bind(self) + 'onSort': function(){ + sorted_changed = true; + }, + 'onComplete': function(){ + if(sorted_changed){ + self.saveProfileOrdering(); + sorted_changed = false; + } + } }); }, saveProfileOrdering: function(){ - var self = this; - - var ids = []; - var hidden = []; + var self = this, + ids = [], + hidden = []; self.profile_sortable.list.getElements('li').each(function(el, nr){ ids.include(el.get('data-id')); From d10536a829171cd06ca18d9544bf80b790c9a54b Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 23 Jun 2014 20:00:00 +0200 Subject: [PATCH 068/102] Remove path from getOptions --- Desktop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Desktop.py b/Desktop.py index 918b8fe..cab1d97 100644 --- a/Desktop.py +++ b/Desktop.py @@ -127,7 +127,7 @@ class WorkerThread(Thread): # Get options via arg from couchpotato.runner import getOptions args = ['--quiet'] - self.options = getOptions(base_path, args) + self.options = getOptions(args) # Load settings settings = Env.get('settings') From c4aaa1030853e6fda29235a59387625fec03c6ae Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 23 Jun 2014 20:00:06 +0200 Subject: [PATCH 069/102] One up --- version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.py b/version.py index c3a0eab..7991d65 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.4.0' +VERSION = '2.5.0' BRANCH = 'desktop' From ae8f66df1a8ed1941e4c1007df1394e89a981e93 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 29 Jun 2014 21:56:39 +0200 Subject: [PATCH 070/102] Exit main loop on crash --- Desktop.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Desktop.py b/Desktop.py index cab1d97..486d4ad 100644 --- a/Desktop.py +++ b/Desktop.py @@ -154,6 +154,7 @@ class WorkerThread(Thread): pass self._desktop.frame.Close() + self._desktop.ExitMainLoop() class CouchPotatoApp(wx.App, SoftwareUpdate): From 68dcba8853cc853384cba6cb8477f994ceefcf47 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 29 Jun 2014 21:56:51 +0200 Subject: [PATCH 071/102] One up 2/2 --- installer.iss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/installer.iss b/installer.iss index a9752cb..88577b1 100644 --- a/installer.iss +++ b/installer.iss @@ -1,7 +1,7 @@ -#define MyAppName "CouchPotato" -#define MyAppVer "2.4.0" +#define MyAppName "CouchPotato" +#define MyAppVer "2.5.0" #define MyAppBit "win32" -//#define MyAppBit "win-amd64" +//#define MyAppBit "win-amd64" [Setup] AppName={#MyAppName} From f16931906fca1632fc4cfafdd5c51e9b955906fb Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 29 Jun 2014 23:15:36 +0200 Subject: [PATCH 072/102] Don't remove pyc files when using desktop updater --- couchpotato/core/_base/updater/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/couchpotato/core/_base/updater/main.py b/couchpotato/core/_base/updater/main.py index 9f6613a..7730d3b 100644 --- a/couchpotato/core/_base/updater/main.py +++ b/couchpotato/core/_base/updater/main.py @@ -143,7 +143,7 @@ class Updater(Plugin): } def doShutdown(self, *args, **kwargs): - if not Env.get('dev'): + if not Env.get('dev') and not Env.get('desktop'): removePyc(Env.get('app_dir'), show_logs = False) return super(Updater, self).doShutdown(*args, **kwargs) From 0622e6e5abc8e4037195e6f411375614e89c285b Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 29 Jun 2014 23:16:09 +0200 Subject: [PATCH 073/102] One up --- installer.iss | 4 ++-- version.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/installer.iss b/installer.iss index 88577b1..932d14f 100644 --- a/installer.iss +++ b/installer.iss @@ -1,6 +1,6 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.5.0" -#define MyAppBit "win32" +#define MyAppVer "2.5.1" +#define MyAppBit "win32" //#define MyAppBit "win-amd64" [Setup] diff --git a/version.py b/version.py index 7991d65..bbda093 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.5.0' +VERSION = '2.5.1' BRANCH = 'desktop' From 9b35a0fb20de7ea7dcae69ca9e34ddbbc11f0aa7 Mon Sep 17 00:00:00 2001 From: Ruud Date: Tue, 8 Jul 2014 21:21:22 +0200 Subject: [PATCH 074/102] Only trigger onClose when it's set --- Desktop.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Desktop.py b/Desktop.py index 486d4ad..aebc051 100644 --- a/Desktop.py +++ b/Desktop.py @@ -163,6 +163,7 @@ class CouchPotatoApp(wx.App, SoftwareUpdate): events = {} restart = False closing = False + triggered_onClose = False def OnInit(self): @@ -198,7 +199,9 @@ class CouchPotatoApp(wx.App, SoftwareUpdate): self.closing = True self.frame.tbicon.onTaskBarClose(event) - onClose = self.events.get('onClose') + onClose = self.events.get('onClose') + if onClose and not self.triggered_onClose: + self.triggered_onClose = True onClose(event) def afterShutdown(self, restart = False): From 07a7f8cbcf566127c7c70efb7f1fead91daa5dd2 Mon Sep 17 00:00:00 2001 From: Ruud Date: Wed, 16 Jul 2014 10:32:02 +0200 Subject: [PATCH 075/102] Change fanart api url --- couchpotato/core/media/movie/providers/info/fanarttv.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/couchpotato/core/media/movie/providers/info/fanarttv.py b/couchpotato/core/media/movie/providers/info/fanarttv.py index 8bfa92c..fcd3891 100644 --- a/couchpotato/core/media/movie/providers/info/fanarttv.py +++ b/couchpotato/core/media/movie/providers/info/fanarttv.py @@ -14,7 +14,7 @@ autoload = 'FanartTV' class FanartTV(MovieProvider): urls = { - 'api': 'http://api.fanart.tv/webservice/movie/b28b14e9be662e027cfbc7c3dd600405/%s/JSON/all/1/2' + 'api': 'http://webservice.fanart.tv/v3/movies/%s?api_key=b28b14e9be662e027cfbc7c3dd600405' } MAX_EXTRAFANART = 20 @@ -36,9 +36,8 @@ class FanartTV(MovieProvider): fanart_data = self.getJsonData(url) if fanart_data: - name, resource = fanart_data.items()[0] - log.debug('Found images for %s', name) - images = self._parseMovie(resource) + log.debug('Found images for %s', fanart_data.get('name')) + images = self._parseMovie(fanart_data) except: log.error('Failed getting extra art for %s: %s', @@ -95,7 +94,7 @@ class FanartTV(MovieProvider): for image in images: if tryInt(image.get('likes')) > highscore: highscore = tryInt(image.get('likes')) - image_url = image.get('url') + image_url = image.get('url') or image.get('href') return image_url @@ -118,7 +117,9 @@ class FanartTV(MovieProvider): if tryInt(image.get('likes')) > highscore: highscore = tryInt(image.get('likes')) best = image - image_urls.append(best.get('url')) + url = best.get('url') or best.get('href') + if url: + image_urls.append(url) pool.remove(best) return image_urls From e75a8529c99996a0ba20fdcf83d424b6597bc3f8 Mon Sep 17 00:00:00 2001 From: Ruud Date: Thu, 17 Jul 2014 22:24:48 +0200 Subject: [PATCH 076/102] Try fix migration failure from 2.5.1 --- couchpotato/core/database.py | 30 +++++++++++++++++++++++++++++- couchpotato/runner.py | 7 +++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/couchpotato/core/database.py b/couchpotato/core/database.py index c7051f5..47be7f5 100644 --- a/couchpotato/core/database.py +++ b/couchpotato/core/database.py @@ -3,10 +3,11 @@ import os import time import traceback +from CodernityDB.database import RecordNotFound from CodernityDB.index import IndexException, IndexNotFoundException, IndexConflict from couchpotato import CPLog from couchpotato.api import addApiView -from couchpotato.core.event import addEvent, fireEvent +from couchpotato.core.event import addEvent, fireEvent, fireEventAsync from couchpotato.core.helpers.encoding import toUnicode, sp from couchpotato.core.helpers.variable import getImdb, tryInt @@ -226,6 +227,33 @@ class Database(object): from couchpotato import Env db = self.getDB() + + # Try fix for migration failures on desktop + if Env.get('desktop'): + try: + list(db.all('profile', with_doc = True)) + except RecordNotFound: + + failed_location = '%s_failed' % db.path + old_db = os.path.join(Env.get('data_dir'), 'couchpotato.db.old') + + if not os.path.isdir(failed_location) and os.path.isfile(old_db): + db.close() + + # Rename database folder + os.rename(db.path, '%s_failed' % db.path) + + # Rename .old database to try another migrate + os.rename(old_db, old_db[:-4]) + + fireEventAsync('app.restart') + else: + log.error('Migration failed and couldn\'t recover database. Please report on GitHub, with this message.') + db.reindex() + + return + + # Check size and compact if needed size = db.get_db_details().get('size') prop_name = 'last_db_compact' last_check = int(Env.prop(prop_name, default = 0)) diff --git a/couchpotato/runner.py b/couchpotato/runner.py index e5f9bca..5d3f62b 100644 --- a/couchpotato/runner.py +++ b/couchpotato/runner.py @@ -87,6 +87,13 @@ def runCouchPotato(options, base_path, args, data_dir = None, log_dir = None, En # Do db stuff db_path = sp(os.path.join(data_dir, 'database')) + old_db_path = os.path.join(data_dir, 'couchpotato.db') + + # Remove database folder if both exists + if os.path.isdir(db_path) and os.path.isfile(old_db_path): + db = SuperThreadSafeDatabase(db_path) + db.open() + db.destroy() # Check if database exists db = SuperThreadSafeDatabase(db_path) From 5df14d67e16c189472cbd8a1412d74791c355ff5 Mon Sep 17 00:00:00 2001 From: Ruud Date: Thu, 17 Jul 2014 22:28:32 +0200 Subject: [PATCH 077/102] One up --- installer.iss | 2 +- version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/installer.iss b/installer.iss index 932d14f..2f71f26 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.5.1" +#define MyAppVer "2.5.2" #define MyAppBit "win32" //#define MyAppBit "win-amd64" diff --git a/version.py b/version.py index bbda093..3bdb313 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.5.1' +VERSION = '2.5.2' BRANCH = 'desktop' From 6772b9d9650466759449c0be2338bd38d66a1198 Mon Sep 17 00:00:00 2001 From: Ruud Date: Thu, 17 Jul 2014 23:09:26 +0200 Subject: [PATCH 078/102] Don't migrate when db is closed --- couchpotato/core/database.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/couchpotato/core/database.py b/couchpotato/core/database.py index 47be7f5..10ae26c 100644 --- a/couchpotato/core/database.py +++ b/couchpotato/core/database.py @@ -238,6 +238,7 @@ class Database(object): old_db = os.path.join(Env.get('data_dir'), 'couchpotato.db.old') if not os.path.isdir(failed_location) and os.path.isfile(old_db): + log.error('Corrupt database, trying migrate again') db.close() # Rename database folder @@ -331,6 +332,8 @@ class Database(object): log.info('Getting data took %s', time.time() - migrate_start) db = self.getDB() + if not db.opened: + return # Use properties properties = migrate_data['properties'] From 1991792291f866643939938ad1ca336c13bd260f Mon Sep 17 00:00:00 2001 From: Ruud Date: Wed, 27 Aug 2014 22:04:33 +0200 Subject: [PATCH 079/102] Remove ending seperator --- couchpotato/core/plugins/renamer.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/couchpotato/core/plugins/renamer.py b/couchpotato/core/plugins/renamer.py index 238f150..7e4814b 100644 --- a/couchpotato/core/plugins/renamer.py +++ b/couchpotato/core/plugins/renamer.py @@ -847,13 +847,15 @@ Remove it if you want it to be renamed (again, or at least let it try again) replaces = [ ('\.+', '.'), ('_+', '_'), ('-+', '-'), ('\s+', ' '), (' \\\\', '\\\\'), (' /', '/'), - ('(\s\.)+', '.'), ('(-\.)+', '.'), ('(\s-)+', '-'), ('([\s\.\,\_\-\/\\]$)', ''), + ('(\s\.)+', '.'), ('(-\.)+', '.'), ('(\s-)+', '-'), ] for r in replaces: reg, replace_with = r string = re.sub(reg, replace_with, string) + string = string.rstrip(',_-/\\ ') + return string def checkSnatched(self, fire_scan = True): From 7fe5a271dc812b7db16f6d4816fd770b213dd3dc Mon Sep 17 00:00:00 2001 From: Ruud Date: Thu, 18 Sep 2014 22:00:59 +0200 Subject: [PATCH 080/102] Make sure original_folder isn't empty fix #3747 --- couchpotato/core/plugins/renamer.py | 3 +++ couchpotato/core/plugins/scanner.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/couchpotato/core/plugins/renamer.py b/couchpotato/core/plugins/renamer.py index 9decf08..4c7aa3b 100755 --- a/couchpotato/core/plugins/renamer.py +++ b/couchpotato/core/plugins/renamer.py @@ -344,6 +344,9 @@ class Renamer(Plugin): replacements['original'] = os.path.splitext(os.path.basename(current_file))[0] replacements['original_folder'] = fireEvent('scanner.remove_cptag', group['dirname'], single = True) + if not replacements['original_folder'] or len(replacements['original_folder']) == 0: + replacements['original_folder'] = replacements['original'] + # Extension replacements['ext'] = getExt(current_file) diff --git a/couchpotato/core/plugins/scanner.py b/couchpotato/core/plugins/scanner.py index 8e835b5..a1b5cf8 100644 --- a/couchpotato/core/plugins/scanner.py +++ b/couchpotato/core/plugins/scanner.py @@ -694,7 +694,7 @@ class Scanner(Plugin): def removeCPTag(self, name): try: - return re.sub(self.cp_imdb, '', name) + return re.sub(self.cp_imdb, '', name).strip() except: pass return name From 55e489cc51c134f2b373dcb44cfd21aa8715dc83 Mon Sep 17 00:00:00 2001 From: Ruud Date: Fri, 19 Sep 2014 00:14:52 +0200 Subject: [PATCH 081/102] Mark faulty movies done --- couchpotato/core/media/_base/media/main.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/couchpotato/core/media/_base/media/main.py b/couchpotato/core/media/_base/media/main.py index e0a7886..aa1ee38 100755 --- a/couchpotato/core/media/_base/media/main.py +++ b/couchpotato/core/media/_base/media/main.py @@ -90,9 +90,15 @@ class MediaPlugin(MediaBase): # Wrongly tagged media files def cleanupFaults(self): - medias = fireEvent('media.with_status', 'ignored', with_doc = False, single = True) + medias = fireEvent('media.with_status', 'ignored', single = True) or [] + + db = get_db() for media in medias: - self.restatus(media.get('_id'), tag_recent = False) + try: + media['status'] = 'done' + db.update(media) + except: + pass def refresh(self, id = '', **kwargs): handlers = [] From c8a3b646245ef4b6f19a367b13e4a7fa4be636f8 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 11 Oct 2014 22:45:31 +0200 Subject: [PATCH 082/102] Set black icon for mac --- Desktop.py | 12 +++++++++--- icon.png | Bin 543 -> 0 bytes icon_mac.png | Bin 0 -> 435 bytes icon_windows.png | Bin 0 -> 543 bytes setup.py | 4 ++-- 5 files changed, 11 insertions(+), 5 deletions(-) delete mode 100644 icon.png create mode 100644 icon_mac.png create mode 100644 icon_windows.png diff --git a/Desktop.py b/Desktop.py index aebc051..2d523e1 100644 --- a/Desktop.py +++ b/Desktop.py @@ -15,6 +15,13 @@ if hasattr(sys, 'frozen'): else: base_path = os.path.dirname(os.path.abspath(__file__)) +def icon(): + icon = 'icon_windows.png' + if os.path.isfile('icon_mac.png'): + icon = 'icon_mac.png' + + return wx.Icon(icon, wx.BITMAP_TYPE_PNG) + lib_dir = os.path.join(base_path, 'libs') sys.path.insert(0, base_path) @@ -36,8 +43,7 @@ class TaskBarIcon(wx.TaskBarIcon): wx.TaskBarIcon.__init__(self) self.frame = frame - icon = wx.Icon('icon.png', wx.BITMAP_TYPE_PNG) - self.SetIcon(icon) + self.SetIcon(icon()) self.Bind(wx.EVT_TASKBAR_LEFT_UP, self.OnTaskBarClick) self.Bind(wx.EVT_TASKBAR_RIGHT_UP, self.OnTaskBarClick) @@ -170,7 +176,7 @@ class CouchPotatoApp(wx.App, SoftwareUpdate): # Updater base_url = 'https://api.couchpota.to/updates/%s' self.InitUpdates(base_url % VERSION + '/', 'https://couchpota.to/updates/%s' % 'changelog.html', - icon = wx.Icon('icon.png')) + icon = icon()) self.frame = MainFrame(self) self.frame.Bind(wx.EVT_CLOSE, self.onClose) diff --git a/icon.png b/icon.png deleted file mode 100644 index 040f039f059f393339ea68d9e2b8ca353d892ceb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 543 zcmV+)0^t3LP){8aohUe z`x7HB7l0%nIt7u;Ml}q@QYM0~f*A%ekP)ZiV_+u1d796!!*^xHRvw~UOym}6x44pjILhE;?Bmk)e=>Z!IiVj9b##$g-AC_$J=zR~R hF9Pv>AYK9xU;wyGp**=wB8vb3002ovPDHLkV1k*=?MVOt diff --git a/icon_mac.png b/icon_mac.png new file mode 100644 index 0000000000000000000000000000000000000000..6cdda5cba6f1a09336b5df94a1d3e7a7eb679745 GIT binary patch literal 435 zcmV;k0ZjghP)kdg0004cNkl&+qbaW z<8cz}aZcbE0;^#Q@T@UVmu6xeCv}0|3UDC%*8UbY#h)ejN`bBkq9Q7WIK)>%;Ujdb zTYzmTP^QN-JbOZ*@Lt}QTi9@Cd6H|50ylAWPy|JcF=m(n4?Ph+_ThoIpeN#kZ))7j zAVZ$zjH}&5(8m!0g`{_*tbsK5W`PznoZ%Z05h{8aohUe z`x7HB7l0%nIt7u;Ml}q@QYM0~f*A%ekP)ZiV_+u1d796!!*^xHRvw~UOym}6x44pjILhE;?Bmk)e=>Z!IiVj9b##$g-AC_$J=zR~R hF9Pv>AYK9xU;wyGp**=wB8vb3002ovPDHLkV1k*=?MVOt literal 0 HcmV?d00001 diff --git a/setup.py b/setup.py index 23b0dfc..8def7da 100644 --- a/setup.py +++ b/setup.py @@ -56,7 +56,7 @@ if sys.platform == "win32": ) exeICON = os.path.join(base_path, 'icon.ico') DATA_FILES = getDataFiles([r'.\\couchpotato', r'.\\libs']) - DATA_FILES.append('icon.png') + DATA_FILES.append('icon_windows.png') file_ext = 'win32.zip' @@ -78,7 +78,7 @@ elif sys.platform == "darwin": includes = includes, ) exeICON = None - DATA_FILES = ['icon.png'] + DATA_FILES = ['icon_mac.png'] file_ext = 'macosx-10_6-intel.zip' From 0567504394192b4a099580831cc1d2a9c3f146ad Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 11 Oct 2014 22:46:45 +0200 Subject: [PATCH 083/102] One up! --- icon_windows.png | Bin 543 -> 367 bytes installer.iss | 2 +- version.py | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/icon_windows.png b/icon_windows.png index 040f039f059f393339ea68d9e2b8ca353d892ceb..d45baabd84031d790452010abb945efb6283c8ec 100644 GIT binary patch delta 341 zcmV-b0jmC=1n&ZnBYy!lNklC`?zC&xa5bKAv7 z$lA4&CO8Nk+(LpSQ=y=uQo0F_6)Zl0gLRbS`7hVYg%U|T@Dcd$_x}*ey=jdNp-}qL zeN{G;zU+W80{%Z>j}*GcI%`nQrQnDmr(AXf{B=*qN5Qh+kADTe?sj*|$nXXS?#{sc zu)caH;!ojDNQq22MW)~2z%|7yqTt5!R5_rsTFlM`8g*mHR^8u6Qe?|M82b_Pee z=%7ou+e+p2Tu#E!brlyvBuq4s&O!}bbm;dMj)VW{8aohUe`x7HB7l0%nIt7u;Mt?O7#Zo4Mu7Vi`F_00b z;$tGhwM-V4`aovz-Dl4jq9@-$QMfc$g+W((;7{`&3o+wb2uvxM8(HE|q2&T#bGH-@*2jKG*< zWcUtL_z#GAI5@xt{D6wR1sMQj{{gD?`SZv0hn<}%<2o*`>1qN38MlD`7Gq&%kWEPi zM*}Eue#^;0lEb4%aIwd8W;49{^Or#l7#_Die3-#F6@MtG&BS!~>c4+VOw7!XFo8zT zcW4-KLR|z4@qd5+g7n-2>QM%#gTMd(zXd8%`U8~si=>bfOLT#(V2A2~OXg~8uW^x- z{Lern0I3D(0UHd84n{`CS|D2=mTd6oeGjEC0`YwyUIGwc0Juz{Jh@FGivR!s07*qo IM6N<$g1Zjv4*&oF diff --git a/installer.iss b/installer.iss index 2f71f26..81a1f58 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.5.2" +#define MyAppVer "2.6.0" #define MyAppBit "win32" //#define MyAppBit "win-amd64" diff --git a/version.py b/version.py index 3bdb313..51b5a16 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.5.2' +VERSION = '2.6.0' BRANCH = 'desktop' From 86edf5eb04fbcb92cb825cba669a5bfe709d7d44 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 12 Oct 2014 16:19:27 +0200 Subject: [PATCH 084/102] Exclude libs --- setup.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 8def7da..7ac41a3 100644 --- a/setup.py +++ b/setup.py @@ -36,22 +36,43 @@ includes = [ 'distutils', ] +excludes = [ + 'doctest', + 'pdb', + 'unittest', + 'difflib', + 'bsddb', + 'pywin.debugger', 'pywin.debugger.dbgcon', 'pywin.dialogs', + 'Tkconstants', 'Tkinter', + 'curses', + '_gtkagg', '_tkagg', +] + # Windows if sys.platform == "win32": import py2exe + sys.path.append('C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_bcb86ed6ac711f91') + FREEZER = 'py2exe' FREEZER_OPTIONS = dict( compressed = 0, bundle_files = 3, dll_excludes = [ - 'MSVCP90.dll', + 'msvcp90.dll', + 'msvcr90.dll', + 'msvcr71.dll', 'mswsock.dll', 'powrprof.dll', 'USP10.dll', + 'libgdk-win32-2.0-0.dll', + 'libgobject-2.0-0.dll', + 'tcl84.dll', + 'tk84.dll' ], packages = ['couchpotato', 'libs'], includes = includes, + excludes = excludes, skip_archive = 1, ) exeICON = os.path.join(base_path, 'icon.ico') @@ -66,6 +87,7 @@ elif sys.platform == "darwin": FREEZER = 'py2app' FREEZER_OPTIONS = dict( + arch = 'intel', optimize = 2, strip = True, argv_emulation = False, @@ -76,6 +98,7 @@ elif sys.platform == "darwin": ), packages = ['couchpotato', 'libs'], includes = includes, + excludes = excludes, ) exeICON = None DATA_FILES = ['icon_mac.png'] From 5873a5c8e265f70550a180b69acc6f87cacdf9b5 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 9 Nov 2014 13:50:43 +0100 Subject: [PATCH 085/102] Force include lxml --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 7ac41a3..10e100e 100644 --- a/setup.py +++ b/setup.py @@ -34,6 +34,7 @@ includes = [ 'HTMLParser', 'version', 'distutils', + 'lxml', 'lxml.etree', 'lxml._elementpath', 'gzip', ] excludes = [ From cd55966575dd2aeb2cdb89e795a284a42336ba42 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 9 Nov 2014 13:50:52 +0100 Subject: [PATCH 086/102] One up! --- installer.iss | 2 +- version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/installer.iss b/installer.iss index 81a1f58..47990ae 100644 --- a/installer.iss +++ b/installer.iss @@ -1,5 +1,5 @@ #define MyAppName "CouchPotato" -#define MyAppVer "2.6.0" +#define MyAppVer "2.6.1" #define MyAppBit "win32" //#define MyAppBit "win-amd64" diff --git a/version.py b/version.py index 51b5a16..96780f9 100644 --- a/version.py +++ b/version.py @@ -1,2 +1,2 @@ -VERSION = '2.6.0' +VERSION = '2.6.1' BRANCH = 'desktop' From 0088584a5026b529ccf4909e3ac5e83a4a0fdda1 Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 16 Feb 2015 16:23:02 +0100 Subject: [PATCH 087/102] Revert "Merge branch 'desktop' of github.com:RuudBurger/CouchPotatoServer" This reverts commit 40cd1b4e0830a95cd0ee097281280a1645c7ea52, reversing changes made to 5b1dd68675c3fb55316bc60191c2ae53cc68dcd5. --- Desktop.py | 241 ------------------------------- couchpotato/static/scripts/page/about.js | 2 +- icon.icns | Bin 67417 -> 0 bytes icon.ico | Bin 353118 -> 0 bytes icon_mac.png | Bin 435 -> 0 bytes icon_windows.png | Bin 367 -> 0 bytes installer.iss | 52 ------- installer_banner.bmp | Bin 154544 -> 0 bytes installer_icon.bmp | Bin 9800 -> 0 bytes setup.py | 133 ----------------- version.py | 4 +- 11 files changed, 3 insertions(+), 429 deletions(-) delete mode 100644 Desktop.py delete mode 100644 icon.icns delete mode 100644 icon.ico delete mode 100644 icon_mac.png delete mode 100644 icon_windows.png delete mode 100644 installer.iss delete mode 100644 installer_banner.bmp delete mode 100644 installer_icon.bmp delete mode 100644 setup.py diff --git a/Desktop.py b/Desktop.py deleted file mode 100644 index 2d523e1..0000000 --- a/Desktop.py +++ /dev/null @@ -1,241 +0,0 @@ -from esky.util import appdir_from_executable #@UnresolvedImport -from threading import Thread -from version import VERSION -from wx.lib.softwareupdate import SoftwareUpdate -import os -import sys -import time -import webbrowser -import wx - -# Include proper dirs -if hasattr(sys, 'frozen'): - import libs - base_path = os.path.dirname(os.path.dirname(os.path.abspath(libs.__file__))) -else: - base_path = os.path.dirname(os.path.abspath(__file__)) - -def icon(): - icon = 'icon_windows.png' - if os.path.isfile('icon_mac.png'): - icon = 'icon_mac.png' - - return wx.Icon(icon, wx.BITMAP_TYPE_PNG) - -lib_dir = os.path.join(base_path, 'libs') - -sys.path.insert(0, base_path) -sys.path.insert(0, lib_dir) - -from couchpotato.environment import Env - -class TaskBarIcon(wx.TaskBarIcon): - - TBMENU_OPEN = wx.NewId() - TBMENU_SETTINGS = wx.NewId() - TBMENU_EXIT = wx.ID_EXIT - - closed = False - menu = False - enabled = False - - def __init__(self, frame): - wx.TaskBarIcon.__init__(self) - self.frame = frame - - self.SetIcon(icon()) - - self.Bind(wx.EVT_TASKBAR_LEFT_UP, self.OnTaskBarClick) - self.Bind(wx.EVT_TASKBAR_RIGHT_UP, self.OnTaskBarClick) - - self.Bind(wx.EVT_MENU, self.onOpen, id = self.TBMENU_OPEN) - self.Bind(wx.EVT_MENU, self.onSettings, id = self.TBMENU_SETTINGS) - self.Bind(wx.EVT_MENU, self.onTaskBarClose, id = self.TBMENU_EXIT) - - def OnTaskBarClick(self, evt): - menu = self.CreatePopupMenu() - self.PopupMenu(menu) - menu.Destroy() - - def enable(self): - self.enabled = True - - if self.menu: - self.open_menu.Enable(True) - self.setting_menu.Enable(True) - - self.open_menu.SetText('Open') - - def CreatePopupMenu(self): - - if not self.menu: - self.menu = wx.Menu() - self.open_menu = self.menu.Append(self.TBMENU_OPEN, 'Open') - self.setting_menu = self.menu.Append(self.TBMENU_SETTINGS, 'About') - self.exit_menu = self.menu.Append(self.TBMENU_EXIT, 'Quit') - - if not self.enabled: - self.open_menu.Enable(False) - self.setting_menu.Enable(False) - - self.open_menu.SetText('Loading...') - - return self.menu - - def onOpen(self, event): - url = self.frame.parent.getSetting('base_url') - webbrowser.open(url) - - def onSettings(self, event): - url = self.frame.parent.getSetting('base_url') + 'settings/about/' - webbrowser.open(url) - - def onTaskBarClose(self, evt): - if self.closed: - return - - self.closed = True - - self.RemoveIcon() - wx.CallAfter(self.frame.Close) - - - def makeIcon(self, img): - if "wxMSW" in wx.PlatformInfo: - img = img.Scale(16, 16) - elif "wxGTK" in wx.PlatformInfo: - img = img.Scale(22, 22) - - icon = wx.IconFromBitmap(img.CopyFromBitmap()) - return icon - - -class MainFrame(wx.Frame): - - def __init__(self, parent): - wx.Frame.__init__(self, None, style = wx.FRAME_NO_TASKBAR) - - self.parent = parent - self.tbicon = TaskBarIcon(self) - - -class WorkerThread(Thread): - - def __init__(self, desktop): - Thread.__init__(self) - self.daemon = True - self._desktop = desktop - - self.start() - - def run(self): - - # Get options via arg - from couchpotato.runner import getOptions - args = ['--quiet'] - self.options = getOptions(args) - - # Load settings - settings = Env.get('settings') - settings.setFile(self.options.config_file) - - # Create data dir if needed - self.data_dir = os.path.expanduser(Env.setting('data_dir')) - if self.data_dir == '': - from couchpotato.core.helpers.variable import getDataDir - self.data_dir = getDataDir() - - if not os.path.isdir(self.data_dir): - os.makedirs(self.data_dir) - - # Create logging dir - self.log_dir = os.path.join(self.data_dir, 'logs'); - if not os.path.isdir(self.log_dir): - os.mkdir(self.log_dir) - - try: - from couchpotato.runner import runCouchPotato - runCouchPotato(self.options, base_path, args, data_dir = self.data_dir, log_dir = self.log_dir, Env = Env, desktop = self._desktop) - except: - pass - - self._desktop.frame.Close() - self._desktop.ExitMainLoop() - - -class CouchPotatoApp(wx.App, SoftwareUpdate): - - settings = {} - events = {} - restart = False - closing = False - triggered_onClose = False - - def OnInit(self): - - # Updater - base_url = 'https://api.couchpota.to/updates/%s' - self.InitUpdates(base_url % VERSION + '/', 'https://couchpota.to/updates/%s' % 'changelog.html', - icon = icon()) - - self.frame = MainFrame(self) - self.frame.Bind(wx.EVT_CLOSE, self.onClose) - - # CouchPotato thread - self.worker = WorkerThread(self) - - return True - - def onAppLoad(self): - self.frame.tbicon.enable() - - def setSettings(self, settings = {}): - self.settings = settings - - def getSetting(self, name): - return self.settings.get(name) - - def addEvents(self, events = {}): - for name in events.iterkeys(): - self.events[name] = events[name] - - def onClose(self, event): - - if not self.closing: - self.closing = True - self.frame.tbicon.onTaskBarClose(event) - - onClose = self.events.get('onClose') - if onClose and not self.triggered_onClose: - self.triggered_onClose = True - onClose(event) - - def afterShutdown(self, restart = False): - self.frame.Destroy() - self.restart = restart - self.ExitMainLoop() - - -if __name__ == '__main__': - - app = CouchPotatoApp(redirect = False) - app.MainLoop() - - time.sleep(1) - - if app.restart: - - def appexe_from_executable(exepath): - appdir = appdir_from_executable(exepath) - exename = os.path.basename(exepath) - - if sys.platform == "darwin": - if os.path.isdir(os.path.join(appdir, "Contents", "MacOS")): - return os.path.join(appdir, "Contents", "MacOS", exename) - - return os.path.join(appdir, exename) - - exe = appexe_from_executable(sys.executable) - os.chdir(os.path.dirname(exe)) - - os.execv(exe, [exe] + sys.argv[1:]) diff --git a/couchpotato/static/scripts/page/about.js b/couchpotato/static/scripts/page/about.js index f36f7e4..a2482f8 100644 --- a/couchpotato/static/scripts/page/about.js +++ b/couchpotato/static/scripts/page/about.js @@ -117,7 +117,7 @@ var AboutSettingTab = new Class({ var self = this; var date = new Date(json.version.date * 1000); self.version_text.set('text', json.version.hash + (json.version.date ? ' ('+date.toLocaleString()+')' : '')); - self.updater_type.set('text', (json.version.type != json.branch) ? (json.version.type + ', ' + json.branch) : json.branch); + self.updater_type.set('text', json.version.type + ', ' + json.branch); } }); diff --git a/icon.icns b/icon.icns deleted file mode 100644 index 3be592a0341edd336954e9eccae620fc4c1d441b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67417 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%0D&2m3BSA9Mm{0nm_nKv(odXY^L> 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 BpT__I diff --git a/icon_mac.png b/icon_mac.png deleted file mode 100644 index 6cdda5cba6f1a09336b5df94a1d3e7a7eb679745..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 435 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 F{68YqWL5wG diff --git a/installer_icon.bmp b/installer_icon.bmp deleted file mode 100644 index 05d9d381514cdbdbb5f9608c88fc48fdeb5fee91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9800 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 Date: Mon, 10 Aug 2015 11:26:02 +0000 Subject: [PATCH 088/102] Added Gitter badge --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 1ccf689..31aadb7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ CouchPotato ===== +[![Join the chat at https://gitter.im/RuudBurger/CouchPotatoServer](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/RuudBurger/CouchPotatoServer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + CouchPotato (CP) is an automatic NZB and torrent downloader. You can keep a "movies I want"-list and it will search for NZBs/torrents of these movies every X hours. Once a movie is found, it will send it to SABnzbd or download the torrent to a specified directory. From 89fd4e1188acb682edc132b2dd09394697371aad Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 24 Jan 2016 10:42:44 +0100 Subject: [PATCH 089/102] Use master coverall and travis --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3a41cd3..6be0bc5 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ CouchPotato ===== [![Join the chat at https://gitter.im/RuudBurger/CouchPotatoServer](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/RuudBurger/CouchPotatoServer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -[![Build Status](https://travis-ci.org/RuudBurger/CouchPotatoServer.svg?branch=develop)](https://travis-ci.org/RuudBurger/CouchPotatoServer) -[![Coverage Status](https://coveralls.io/repos/RuudBurger/CouchPotatoServer/badge.svg?branch=develop&service=github)](https://coveralls.io/github/RuudBurger/CouchPotatoServer?branch=develop) +[![Build Status](https://travis-ci.org/RuudBurger/CouchPotatoServer.svg?branch=master)](https://travis-ci.org/RuudBurger/CouchPotatoServer) +[![Coverage Status](https://coveralls.io/repos/RuudBurger/CouchPotatoServer/badge.svg?branch=master&service=github)](https://coveralls.io/github/RuudBurger/CouchPotatoServer?branch=master) CouchPotato (CP) is an automatic NZB and torrent downloader. You can keep a "movies I want"-list and it will search for NZBs/torrents of these movies every X hours. Once a movie is found, it will send it to SABnzbd or download the torrent to a specified directory. From b4db3fdadf42f05aa9e4b9b01bcedaf510401142 Mon Sep 17 00:00:00 2001 From: Ruud Date: Tue, 9 Feb 2016 22:32:11 +0100 Subject: [PATCH 090/102] Type definition not working --- couchpotato/core/settings.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/couchpotato/core/settings.py b/couchpotato/core/settings.py index 6e9993f..98959d8 100644 --- a/couchpotato/core/settings.py +++ b/couchpotato/core/settings.py @@ -133,7 +133,7 @@ class Settings(object): return None try: - type = self.getType(section, option) + type = self.getType(section, option) if not type else type if hasattr(self, 'get%s' % type.capitalize()): return getattr(self, 'get%s' % type.capitalize())(section, option) @@ -230,7 +230,7 @@ class Settings(object): if (not value): value = [] try : value = map(soft_chroot.abs2chroot, value) - except : value = [] + except : value = [] values[section][option_name] = value @@ -259,7 +259,7 @@ class Settings(object): try: type = self.types[section][option] except: type = 'unicode' if not type else type return type - + def addOptions(self, section_name, options): # no additional actions (related to ro-rw options) are required here if not self.options.get(section_name): @@ -331,7 +331,7 @@ class Settings(object): return { 'success' : False, } - + from couchpotato.environment import Env soft_chroot = Env.get('softchroot') From 447642343c9bfbe66006c97fa0cefeb1f12abd86 Mon Sep 17 00:00:00 2001 From: Ruud Date: Wed, 10 Feb 2016 17:13:45 +0100 Subject: [PATCH 091/102] Use proper branch on travis and coverall --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ea20d2d..3cf497e 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ CouchPotato ===== [![Join the chat at https://gitter.im/CouchPotato/CouchPotatoServer](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/CouchPotato/CouchPotatoServer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -[![Build Status](https://travis-ci.org/CouchPotato/CouchPotatoServer.svg?branch=develop)](https://travis-ci.org/CouchPotato/CouchPotatoServer) -[![Coverage Status](https://coveralls.io/repos/CouchPotato/CouchPotatoServer/badge.svg?branch=develop&service=github)](https://coveralls.io/github/CouchPotato/CouchPotatoServer?branch=develop) +[![Build Status](https://travis-ci.org/CouchPotato/CouchPotatoServer.svg?branch=master)](https://travis-ci.org/CouchPotato/CouchPotatoServer) +[![Coverage Status](https://coveralls.io/repos/CouchPotato/CouchPotatoServer/badge.svg?branch=master&service=github)](https://coveralls.io/github/CouchPotato/CouchPotatoServer?branch=master) CouchPotato (CP) is an automatic NZB and torrent downloader. You can keep a "movies I want"-list and it will search for NZBs/torrents of these movies every X hours. Once a movie is found, it will send it to SABnzbd or download the torrent to a specified directory. From 658eb610a85e972561405e45e3af30bddb700d72 Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 22 Feb 2016 20:45:12 +0100 Subject: [PATCH 092/102] Issue templates --- .github/contributing.md | 40 ++++++++++++++++++++++++++++++++++++++++ .github/issue_template.md | 14 ++++++++++++++ .github/pull_request_template.md | 5 +++++ contributing.md | 40 ---------------------------------------- 4 files changed, 59 insertions(+), 40 deletions(-) create mode 100644 .github/contributing.md create mode 100644 .github/issue_template.md create mode 100644 .github/pull_request_template.md delete mode 100644 contributing.md diff --git a/.github/contributing.md b/.github/contributing.md new file mode 100644 index 0000000..9af7d0a --- /dev/null +++ b/.github/contributing.md @@ -0,0 +1,40 @@ +# Contributing to CouchPotatoServer + +1. [Contributing](#contributing) +2. [Submitting an Issue](#issues) +3. [Submitting a Pull Request](#pull-requests) + +## Contributing +Thank you for your interest in contributing to CouchPotato. There are several ways to help out, even if you've never worked on an open source project before. +If you've found a bug or want to request a feature, you can report it by [posting an issue](https://github.com/CouchPotato/CouchPotatoServer/issues/new) - be sure to read the [guidelines](#issues) first! +If you want to contribute your own work, please read the [guidelines](#pull-requests) for submitting a pull request. +Lastly, for anything related to CouchPotato, feel free to stop by the [forum](http://couchpota.to/forum/) or the [#couchpotato](http://webchat.freenode.net/?channels=couchpotato) IRC channel at irc.freenode.net. + +## Issues +Issues are intended for reporting bugs and weird behaviour or suggesting improvements to CouchPotatoServer. +Before you submit an issue, please go through the following checklist: + * **FILL IN ALL THE FIELDS ASKED FOR** + * **POST MORE THAN A SINGLE LINE LOG**, if you do, you'd better have a easy reproducable bug + * Search through existing issues (*including closed issues!*) first: you might be able to get your answer there. + * Double check your issue manually, because it could be an external issue. + * Post logs with your issue: Without seeing what is going on, the developers can't reproduce the error. + * Check the logs yourself before submitting them. Obvious errors like permission or HTTP errors are often not related to CouchPotato. + * What movie and quality are you searching for? + * What are your settings for the specific problem? + * What providers are you using? (While your logs include these, scanning through hundreds of lines of logs isn't our hobby) + * Post the logs from the *config* directory, please do not copy paste the UI. Use pastebin to store these logs! + * Give a short step by step of how to reproduce the error. + * What hardware / OS are you using and what are its limitations? For example: NAS can be slow and maybe have a different version of python installed than when you use CP on OS X or Windows. + * Your issue might be marked with the "can't reproduce" tag. Don't ask why your issue was closed if it says so in the tag. + * If you're running on a NAS (QNAP, Austor, Synology etc.) with pre-made packages, make sure these are set up to use our source repository (CouchPotato/CouchPotatoServer) and nothing else! + * Do not "bump" issues with "Any updates on this" or whatever. Yes I've seen it, you don't have to remind me of it. There will be an update when the code is done or I need information. If you feel the need to do so, you'd better have more info on the issue. + +The more relevant information you provide, the more likely that your issue will be resolved. +If you don't follow any of the checks above, I'll close the issue. If you are wondering why (and ask) I'll block you from posting new issues and the repo. + +## Pull Requests +Pull requests are intended for contributing code or documentation to the project. Before you submit a pull request, consider the following: + * Make sure your pull request is made for the *develop* branch (or relevant feature branch). + * Have you tested your PR? If not, why? + * Does your PR have any limitations I should know of? + * Is your PR up-to-date with the branch you're trying to push into? diff --git a/.github/issue_template.md b/.github/issue_template.md new file mode 100644 index 0000000..dd24310 --- /dev/null +++ b/.github/issue_template.md @@ -0,0 +1,14 @@ +### Steps to reproduce: +1. .. +2. .. + +### Information: +Movie(s) I have this with: ... +Quality of the movie being searched: ... +Providers I use: ... +Version of CouchPotato: ... +Running on: ... + +### Logs: +``` +``` diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..fe31e26 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,5 @@ +### Description of what this fixes: +... + +### Related issues: +... diff --git a/contributing.md b/contributing.md deleted file mode 100644 index 9af7d0a..0000000 --- a/contributing.md +++ /dev/null @@ -1,40 +0,0 @@ -# Contributing to CouchPotatoServer - -1. [Contributing](#contributing) -2. [Submitting an Issue](#issues) -3. [Submitting a Pull Request](#pull-requests) - -## Contributing -Thank you for your interest in contributing to CouchPotato. There are several ways to help out, even if you've never worked on an open source project before. -If you've found a bug or want to request a feature, you can report it by [posting an issue](https://github.com/CouchPotato/CouchPotatoServer/issues/new) - be sure to read the [guidelines](#issues) first! -If you want to contribute your own work, please read the [guidelines](#pull-requests) for submitting a pull request. -Lastly, for anything related to CouchPotato, feel free to stop by the [forum](http://couchpota.to/forum/) or the [#couchpotato](http://webchat.freenode.net/?channels=couchpotato) IRC channel at irc.freenode.net. - -## Issues -Issues are intended for reporting bugs and weird behaviour or suggesting improvements to CouchPotatoServer. -Before you submit an issue, please go through the following checklist: - * **FILL IN ALL THE FIELDS ASKED FOR** - * **POST MORE THAN A SINGLE LINE LOG**, if you do, you'd better have a easy reproducable bug - * Search through existing issues (*including closed issues!*) first: you might be able to get your answer there. - * Double check your issue manually, because it could be an external issue. - * Post logs with your issue: Without seeing what is going on, the developers can't reproduce the error. - * Check the logs yourself before submitting them. Obvious errors like permission or HTTP errors are often not related to CouchPotato. - * What movie and quality are you searching for? - * What are your settings for the specific problem? - * What providers are you using? (While your logs include these, scanning through hundreds of lines of logs isn't our hobby) - * Post the logs from the *config* directory, please do not copy paste the UI. Use pastebin to store these logs! - * Give a short step by step of how to reproduce the error. - * What hardware / OS are you using and what are its limitations? For example: NAS can be slow and maybe have a different version of python installed than when you use CP on OS X or Windows. - * Your issue might be marked with the "can't reproduce" tag. Don't ask why your issue was closed if it says so in the tag. - * If you're running on a NAS (QNAP, Austor, Synology etc.) with pre-made packages, make sure these are set up to use our source repository (CouchPotato/CouchPotatoServer) and nothing else! - * Do not "bump" issues with "Any updates on this" or whatever. Yes I've seen it, you don't have to remind me of it. There will be an update when the code is done or I need information. If you feel the need to do so, you'd better have more info on the issue. - -The more relevant information you provide, the more likely that your issue will be resolved. -If you don't follow any of the checks above, I'll close the issue. If you are wondering why (and ask) I'll block you from posting new issues and the repo. - -## Pull Requests -Pull requests are intended for contributing code or documentation to the project. Before you submit a pull request, consider the following: - * Make sure your pull request is made for the *develop* branch (or relevant feature branch). - * Have you tested your PR? If not, why? - * Does your PR have any limitations I should know of? - * Is your PR up-to-date with the branch you're trying to push into? From c4fad95cd24bffd814572e8fd08c4f2f5d14f59b Mon Sep 17 00:00:00 2001 From: Ruud Date: Wed, 24 Feb 2016 15:05:59 +0100 Subject: [PATCH 093/102] Updater check every 24h --- couchpotato/core/_base/updater/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/couchpotato/core/_base/updater/main.py b/couchpotato/core/_base/updater/main.py index 6435a15..d28ac76 100644 --- a/couchpotato/core/_base/updater/main.py +++ b/couchpotato/core/_base/updater/main.py @@ -72,7 +72,7 @@ class Updater(Plugin): fireEvent('schedule.remove', 'updater.check', single = True) if self.isEnabled(): - fireEvent('schedule.interval', 'updater.check', self.autoUpdate, hours = 6) + fireEvent('schedule.interval', 'updater.check', self.autoUpdate, hours = 24) self.autoUpdate() # Check after enabling def autoUpdate(self): From d9d8a40caf46c2b9bf4770e24dfd5bede1733e18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jozef=20Holl=C3=BD?= Date: Tue, 24 May 2016 17:17:13 +0200 Subject: [PATCH 094/102] Change log level when checking NZBGet https://github.com/nzbget/nzbget/wiki/API-Method-%22writelog%22 --- couchpotato/core/downloaders/nzbget.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/couchpotato/core/downloaders/nzbget.py b/couchpotato/core/downloaders/nzbget.py index 44f1726..35a7185 100644 --- a/couchpotato/core/downloaders/nzbget.py +++ b/couchpotato/core/downloaders/nzbget.py @@ -122,7 +122,7 @@ class NZBGet(DownloaderBase): rpc = self.getRPC() try: - if rpc.writelog('INFO', 'CouchPotato connected to check status'): + if rpc.writelog('DETAIL', 'CouchPotato connected to check status'): log.debug('Successfully connected to NZBGet') else: log.info('Successfully connected to NZBGet, but unable to send a message') From 825e78d909ef28e46aa7fb447b7a429d4bcd231f Mon Sep 17 00:00:00 2001 From: Justin P Date: Thu, 3 Nov 2016 10:51:20 -0500 Subject: [PATCH 095/102] Changing the CHMOD to 0750 This allows monitoring software, like monit, to be able to use the .pid file to track if its running. Plus, I don't think I've ever seen permissions that restrictive? --- init/ubuntu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init/ubuntu b/init/ubuntu index 2353963..a1b5986 100755 --- a/init/ubuntu +++ b/init/ubuntu @@ -61,7 +61,7 @@ start_cp() { # (but refuse to touch any pre-existing ones) for D in "$(dirname "$CP_PIDFILE")" "$CP_DATA"; do [ ! -d "$D" ] && { - install --directory --owner="$CP_USER" --group=root --mode=0700 "$D" || exit 1; + install --directory --owner="$CP_USER" --group=root --mode=0750 "$D" || exit 1; } done From dbcc4d007b8e2f2a64c5f4346b2a037099fe0cff Mon Sep 17 00:00:00 2001 From: carl lambert Date: Sun, 6 Nov 2016 15:53:24 +0000 Subject: [PATCH 096/102] issue with none ascii chars in title name. decode to utf-8 and encode to ascii strips (for some reason the simple encode didn't work? --- couchpotato/core/media/movie/providers/automation/base.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/couchpotato/core/media/movie/providers/automation/base.py b/couchpotato/core/media/movie/providers/automation/base.py index 1a8d981..e606e7f 100644 --- a/couchpotato/core/media/movie/providers/automation/base.py +++ b/couchpotato/core/media/movie/providers/automation/base.py @@ -45,7 +45,8 @@ class Automation(AutomationBase): def search(self, name, year = None, imdb_only = False): - prop_name = 'automation.cached.%s.%s' % (name, year) + cache_name = name.decode('utf-8').encode('ascii', 'ignore') + prop_name = 'automation.cached.%s.%s' % (cache_name, year) cached_imdb = Env.prop(prop_name, default = False) if cached_imdb and imdb_only: return cached_imdb From 601d23dd8ea2694c92a027214d7805ff3677faee Mon Sep 17 00:00:00 2001 From: root Date: Tue, 10 Apr 2018 13:31:53 +0000 Subject: [PATCH 097/102] Fixing Torrentleech with new interface based on JS and json --- .../media/_base/providers/torrent/torrentleech.py | 48 +++++++++------------- 1 file changed, 20 insertions(+), 28 deletions(-) diff --git a/couchpotato/core/media/_base/providers/torrent/torrentleech.py b/couchpotato/core/media/_base/providers/torrent/torrentleech.py index da13822..10886bc 100644 --- a/couchpotato/core/media/_base/providers/torrent/torrentleech.py +++ b/couchpotato/core/media/_base/providers/torrent/torrentleech.py @@ -1,5 +1,5 @@ import traceback - +import json from bs4 import BeautifulSoup from couchpotato.core.helpers.variable import tryInt from couchpotato.core.logger import CPLog @@ -17,8 +17,8 @@ class Base(TorrentProvider): 'login': 'https://www.torrentleech.org/user/account/login/', 'login_check': 'https://torrentleech.org/user/messages', 'detail': 'https://www.torrentleech.org/torrent/%s', - 'search': 'https://www.torrentleech.org/torrents/browse/index/query/%s/categories/%s', - 'download': 'https://www.torrentleech.org%s', + 'search': 'https://www.torrentleech.org/torrents/browse/list/categories/%s/query/%s', + 'download': 'https://www.torrentleech.org/download/%s/%s', } http_time_between_calls = 1 # Seconds @@ -26,37 +26,29 @@ class Base(TorrentProvider): cat_backup_id = None def _searchOnTitle(self, title, media, quality, results): - - url = self.urls['search'] % self.buildUrl(title, media, quality) + urlParms = self.buildUrl(title, media, quality) + url = self.urls['search'] % (urlParms[1], urlParms[0]) data = self.getHTMLData(url) + jsonResults = json.loads(data) - if data: - html = BeautifulSoup(data) + if jsonResults: try: - result_table = html.find('table', attrs = {'id': 'torrenttable'}) - if not result_table: - return - - entries = result_table.find_all('tr') - - for result in entries[1:]: - - link = result.find('td', attrs = {'class': 'name'}).find('a') - url = result.find('td', attrs = {'class': 'quickdownload'}).find('a') - details = result.find('td', attrs = {'class': 'name'}).find('a') - - results.append({ - 'id': link['href'].replace('/torrent/', ''), - 'name': six.text_type(link.string), - 'url': self.urls['download'] % url['href'], - 'detail_url': self.urls['download'] % details['href'], - 'size': self.parseSize(result.find_all('td')[4].string), - 'seeders': tryInt(result.find('td', attrs = {'class': 'seeders'}).string), - 'leechers': tryInt(result.find('td', attrs = {'class': 'leechers'}).string), - }) + for torrent in jsonResults['torrentList']: + link = self.urls['detail'] % torrent['fid'] + url = self.urls['download'] % (torrent['fid'], torrent['filename']) + currentResult = { + 'id': torrent['fid'], + 'name': six.text_type(torrent['name']), + 'url': url, + 'detail_url': link, + 'size': torrent['size']/1024/1024, + 'seeders': torrent['seeders'], + 'leechers': torrent['leechers'], + } + results.append(currentResult) except: log.error('Failed to parsing %s: %s', (self.getName(), traceback.format_exc())) From 05806c203470cb2215996bfb7a52ad18bb3bbabc Mon Sep 17 00:00:00 2001 From: Gabrial MacLeod Date: Mon, 23 Apr 2018 12:00:56 -0600 Subject: [PATCH 098/102] Add category ID for UHD 4K/2160p --- couchpotato/core/media/movie/providers/torrent/iptorrents.py | 1 + 1 file changed, 1 insertion(+) diff --git a/couchpotato/core/media/movie/providers/torrent/iptorrents.py b/couchpotato/core/media/movie/providers/torrent/iptorrents.py index fd83a0a..699d5b9 100644 --- a/couchpotato/core/media/movie/providers/torrent/iptorrents.py +++ b/couchpotato/core/media/movie/providers/torrent/iptorrents.py @@ -13,6 +13,7 @@ class IPTorrents(MovieProvider, Base): ([87], ['3d']), ([89], ['bd50']), ([48], ['720p', '1080p']), + ([101], ['2160p']), ([48, 20], ['brrip']), ([7, 77], ['dvdrip']), ([6], ['dvdr']), From b8276a96138feebe95439124a5a4be805397ddee Mon Sep 17 00:00:00 2001 From: AnilDaoud Date: Fri, 13 Dec 2019 21:48:50 +0800 Subject: [PATCH 099/102] do not choke on utf8 file names --- couchpotato/core/plugins/renamer.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/couchpotato/core/plugins/renamer.py b/couchpotato/core/plugins/renamer.py index 43f3d5e..8d69ca6 100755 --- a/couchpotato/core/plugins/renamer.py +++ b/couchpotato/core/plugins/renamer.py @@ -4,6 +4,7 @@ import re import shutil import time import traceback +import sys from couchpotato import get_db from couchpotato.api import addApiView @@ -31,6 +32,8 @@ class Renamer(Plugin): checking_snatched = False def __init__(self): + reload(sys) + sys.setdefaultencoding('utf8') addApiView('renamer.scan', self.scanView, docs = { 'desc': 'For the renamer to check for new files to rename in a folder', 'params': { @@ -364,7 +367,7 @@ class Renamer(Plugin): if self.conf('use_tab_threed') and replacements['3d_type_short']: if 'OU' in replacements['3d_type_short']: replacements['3d_type_short'] = replacements['3d_type_short'].replace('OU','TAB') - + for file_type in group['files']: From b4b27f0dfcb2aabbc0f95c35fb861e4f47ed9953 Mon Sep 17 00:00:00 2001 From: AnilDaoud Date: Fri, 13 Dec 2019 21:56:04 +0800 Subject: [PATCH 100/102] qbittorrent apiv2 (4.1+) --- libs/qbittorrent/__init__.py | 2 +- libs/qbittorrent/client.py | 417 ++++++++++++++++++++++++++++--------------- 2 files changed, 274 insertions(+), 145 deletions(-) diff --git a/libs/qbittorrent/__init__.py b/libs/qbittorrent/__init__.py index b650ceb..cce384d 100644 --- a/libs/qbittorrent/__init__.py +++ b/libs/qbittorrent/__init__.py @@ -1 +1 @@ -__version__ = '0.2' +__version__ = '0.3' diff --git a/libs/qbittorrent/client.py b/libs/qbittorrent/client.py index 9b8faef..c524464 100644 --- a/libs/qbittorrent/client.py +++ b/libs/qbittorrent/client.py @@ -1,6 +1,7 @@ import requests import json + class LoginRequired(Exception): def __str__(self): return 'Please login first.' @@ -11,14 +12,22 @@ class QBittorrentClient(object): def __init__(self, url): if not url.endswith('/'): url += '/' - self.url = url + self.url = url + 'api/v2/' session = requests.Session() - check_prefs = session.get(url+'query/preferences') - + check_prefs = session.get(self.url+'app/preferences') if check_prefs.status_code == 200: self._is_authenticated = True self.session = session + + elif check_prefs.status_code == 404: + self._is_authenticated = False + raise RuntimeError(""" + This wrapper only supports qBittorrent applications + with version higher than 4.1.x. + Please use the latest qBittorrent release. + """) + else: self._is_authenticated = False @@ -68,6 +77,7 @@ class QBittorrentClient(object): request = rq.post(final_url, data, **kwargs) request.raise_for_status() + request.encoding = 'utf_8' if len(request.text) == 0: data = json.loads('{}') @@ -93,7 +103,7 @@ class QBittorrentClient(object): :return: Response to login request to the API. """ self.session = requests.Session() - login = self.session.post(self.url+'login', + login = self.session.post(self.url+'auth/login', data={'username': username, 'password': password}) if login.text == 'Ok.': @@ -105,7 +115,7 @@ class QBittorrentClient(object): """ Logout the current session. """ - response = self._get('logout') + response = self._get('auth/logout') self._is_authenticated = False return response @@ -114,70 +124,63 @@ class QBittorrentClient(object): """ Get qBittorrent version. """ - return self._get('version/qbittorrent') + return self._get('app/version') @property def api_version(self): """ Get WEB API version. """ - return self._get('version/api') + return self._get('app/webapiVersion') - @property - def api_min_version(self): + def shutdown(self): """ - Get minimum WEB API version. + Shutdown qBittorrent. """ - return self._get('version/api_min') + return self._get('app/shutdown') - def shutdown(self): + def get_default_save_path(self): """ - Shutdown qBittorrent. + Get default save path. """ - return self._get('command/shutdown') + return self._get('app/defaultSavePath') - def torrents(self, status='active', label='', sort='priority', - reverse=False, limit=10, offset=0): + def get_log(self, **params): + """ + Returns a list of log entries matching the supplied params. + + :param normal: Include normal messages (default: true). + :param info: Include info messages (default: true). + :param warning: Include warning messages (default: true). + :param critical: Include critical messages (default: true). + :param last_known_id: Exclude messages with "message id" <= last_known_id (default: -1). + + :return: list(). + For example: qb.get_log(normal='true', info='true') + """ + return self._get('log/main', params=params) + + def torrents(self, **filters): """ Returns a list of torrents matching the supplied filters. - :param status: Current status of the torrents. - :param label: Fetch all torrents with the supplied label. qbittorrent < 3.3.5 - :param category: Fetch all torrents with the supplied label. qbittorrent >= 3.3.5 + :param filter: Current status of the torrents. + :param category: Fetch all torrents with the supplied label. :param sort: Sort torrents by. :param reverse: Enable reverse sorting. :param limit: Limit the number of torrents returned. :param offset: Set offset (if less than 0, offset from end). :return: list() of torrent with matching filter. + For example: qb.torrents(filter='downloading', sort='ratio'). """ + params = {} + for name, value in filters.items(): + # make sure that old 'status' argument still works + name = 'filter' if name == 'status' else name + params[name] = value - STATUS_LIST = ['all', 'downloading', 'completed', - 'paused', 'active', 'inactive'] - if status not in STATUS_LIST: - raise ValueError("Invalid status.") - - if self.api_version < 10: - params = { - 'filter': status, - 'label': label, - 'sort': sort, - 'reverse': reverse, - 'limit': limit, - 'offset': offset - } - - elif self.api_version >= 10: - params = { - 'filter': status, - 'category': label, - 'sort': sort, - 'reverse': reverse, - 'limit': limit, - 'offset': offset - } - - return self._get('query/torrents', params=params) + return self._get('torrents/info', params=params) def get_torrent(self, infohash): """ @@ -185,7 +188,7 @@ class QBittorrentClient(object): :param infohash: INFO HASH of the torrent. """ - return self._get('query/propertiesGeneral/' + infohash.lower()) + return self._get('torrents/properties?hash=' + infohash.lower()) def get_torrent_trackers(self, infohash): """ @@ -193,7 +196,7 @@ class QBittorrentClient(object): :param infohash: INFO HASH of the torrent. """ - return self._get('query/propertiesTrackers/' + infohash.lower()) + return self._get('torrents/trackers?hash=' + infohash.lower()) def get_torrent_webseeds(self, infohash): """ @@ -201,7 +204,7 @@ class QBittorrentClient(object): :param infohash: INFO HASH of the torrent. """ - return self._get('query/propertiesWebSeeds/' + infohash.lower()) + return self._get('torrents/webseeds?hash=' + infohash.lower()) def get_torrent_files(self, infohash): """ @@ -209,14 +212,34 @@ class QBittorrentClient(object): :param infohash: INFO HASH of the torrent. """ - return self._get('query/propertiesFiles/' + infohash.lower()) + return self._get('torrents/files?hash=' + infohash.lower()) + + def get_torrent_piece_states(self, infohash): + """ + Get list of all pieces (in order) of a specific torrent. + + :param infohash: INFO HASH of the torrent. + :return: array of states (integers). + """ + return self._get('torrents/pieceStates?hash=' + infohash.lower()) + + def get_torrent_piece_hashes(self, infohash): + """ + Get list of all hashes (in order) of a specific torrent. + + :param infohash: INFO HASH of the torrent. + :return: array of hashes (strings). + """ + return self._get('torrents/pieceHashes?hash=' + infohash.lower()) + @property def global_transfer_info(self): """ - Get JSON data of the global transfer info of qBittorrent. + :return: dict{} of the global transfer info of qBittorrent. + """ - return self._get('query/transferInfo') + return self._get('transfer/info') @property def preferences(self): @@ -239,7 +262,7 @@ class QBittorrentClient(object): qb.preferences() """ - prefs = self._get('query/preferences') + prefs = self._get('app/preferences') class Proxy(Client): """ @@ -278,51 +301,59 @@ class QBittorrentClient(object): return Proxy(self.url, prefs, self._is_authenticated, self.session) - def sync(self, rid=0): + def sync_main_data(self, rid=0): """ - Sync the torrents by supplied LAST RESPONSE ID. - Read more @ http://git.io/vEgXr + Sync the torrents main data by supplied LAST RESPONSE ID. + Read more @ https://git.io/fxgB8 :param rid: Response ID of last request. """ return self._get('sync/maindata', params={'rid': rid}) - def download_from_link(self, link, - save_path=None, label=''): + def sync_peers_data(self, infohash, rid=0): + """ + Sync the torrent peers data by supplied LAST RESPONSE ID. + Read more @ https://git.io/fxgBg + + :param infohash: INFO HASH of torrent. + :param rid: Response ID of last request. + """ + return self._get('sync/torrentPeers', params={'hash': infohash.lower(), 'rid': rid}) + + def download_from_link(self, link, **kwargs): """ Download torrent using a link. :param link: URL Link or list of. - :param save_path: Path to download the torrent. - :param label: Label of the torrent(s). qbittorrent < 3.3.5 - :param category: Label of the torrent(s). qbittorrent >= 3.3.5 + :param savepath: Path to download the torrent. + :param category: Label or Category of the torrent(s). :return: Empty JSON data. """ - if not isinstance(link, list): - link = [link] - data = {'urls': link} + # old:new format + old_arg_map = {'save_path': 'savepath'} # , 'label': 'category'} + + # convert old option names to new option names + options = kwargs.copy() + for old_arg, new_arg in old_arg_map.items(): + if options.get(old_arg) and not options.get(new_arg): + options[new_arg] = options[old_arg] - if save_path: - data.update({'savepath': save_path}) - if self.api_version < 10 and label: - data.update({'label': label}) - - elif self.api_version >= 10 and label: - data.update({'category': label}) - + options['urls'] = link - return self._post('command/download', data=data) + # workaround to send multipart/formdata request + # http://stackoverflow.com/a/23131823/4726598 + dummy_file = {'_dummy': (None, '_dummy')} - def download_from_file(self, file_buffer, - save_path=None, label=''): + return self._post('torrents/add', data=options, files=dummy_file) + + def download_from_file(self, file_buffer, **kwargs): """ Download torrent using a file. :param file_buffer: Single file() buffer or list of. :param save_path: Path to download the torrent. - :param label: Label of the torrent(s). qbittorrent < 3.3.5 - :param category: Label of the torrent(s). qbittorrent >= 3.3.5 + :param label: Label of the torrent(s). :return: Empty JSON data. """ @@ -330,21 +361,14 @@ class QBittorrentClient(object): torrent_files = {} for i, f in enumerate(file_buffer): torrent_files.update({'torrents%s' % i: f}) - print torrent_files else: torrent_files = {'torrents': file_buffer} - data = {} + data = kwargs.copy() - if save_path: - data.update({'savepath': save_path}) - if self.api_version < 10 and label: - data.update({'label': label}) - - elif self.api_version >= 10 and label: - data.update({'category': label}) - - return self._post('command/upload', data=data, files=torrent_files) + if data.get('save_path'): + data.update({'savepath': data['save_path']}) + return self._post('torrents/add', data=data, files=torrent_files) def add_trackers(self, infohash, trackers): """ @@ -352,13 +376,36 @@ class QBittorrentClient(object): :param infohash: INFO HASH of torrent. :param trackers: Trackers. + :note %0A (aka LF newline) between trackers. Ampersand in tracker urls MUST be escaped. """ data = {'hash': infohash.lower(), 'urls': trackers} - return self._post('command/addTrackers', data=data) + return self._post('torrents/addTrackers', data=data) + + def set_torrent_location(self, infohash_list, location): + """ + Set the location for the torrent + + :param infohash: INFO HASH of torrent. + :param location: /mnt/nfs/media. + """ + data = self._process_infohash_list(infohash_list) + data['location'] = location + return self._post('torrents/setLocation', data=data) + + def set_torrent_name(self, infohash, name): + """ + Set the name for the torrent + + :param infohash: INFO HASH of torrent. + :param name: Whatever_name_you_want. + """ + data = {'hash': infohash.lower(), + 'name': name} + return self._post('torrents/rename', data=data) @staticmethod - def process_infohash_list(infohash_list): + def _process_infohash_list(infohash_list): """ Method to convert the infohash_list to qBittorrent API friendly values. @@ -376,13 +423,13 @@ class QBittorrentClient(object): :param infohash: INFO HASH of torrent. """ - return self._post('command/pause', data={'hash': infohash.lower()}) + return self._post('torrents/pause', data={'hashes': infohash.lower()}) def pause_all(self): """ Pause all torrents. """ - return self._get('command/pauseAll') + return self._post('torrents/pause', data={'hashes': 'all'}) def pause_multiple(self, infohash_list): """ @@ -390,8 +437,40 @@ class QBittorrentClient(object): :param infohash_list: Single or list() of infohashes. """ - data = self.process_infohash_list(infohash_list) - return self._post('command/pauseAll', data=data) + data = self._process_infohash_list(infohash_list) + return self._post('torrents/pause', data=data) + + def set_category(self, infohash_list, category): + """ + Set the category on multiple torrents. + + The category must exist before using set_category. As of v2.1.0,the API + returns a 409 Client Error for any valid category name that doesn't + already exist. + + :param infohash_list: Single or list() of infohashes. + :param category: If category is set to empty string '', + the torrent(s) specified is/are removed from all categories. + """ + data = self._process_infohash_list(infohash_list) + data['category'] = category + return self._post('torrents/setCategory', data=data) + + def create_category(self, category): + """ + Create a new category + :param category: category to create + """ + return self._post('torrents/createCategory', data={'category': category.lower()}) + + def remove_category(self, categories): + """ + Remove categories + + :param categories: can contain multiple cateogies separated by \n (%0A urlencoded). + """ + + return self._post('torrents/removeCategories', data={'categories': categories}) def resume(self, infohash): """ @@ -399,13 +478,13 @@ class QBittorrentClient(object): :param infohash: INFO HASH of torrent. """ - return self._post('command/resume', data={'hash': infohash.lower()}) + return self._post('torrents/resume', data={'hashes': infohash.lower()}) def resume_all(self): """ Resume all torrents. """ - return self._get('command/resumeAll') + return self._post('torrents/resume', data={'hashes': 'all'}) def resume_multiple(self, infohash_list): """ @@ -413,8 +492,8 @@ class QBittorrentClient(object): :param infohash_list: Single or list() of infohashes. """ - data = self.process_infohash_list(infohash_list) - return self._post('command/resumeAll', data=data) + data = self._process_infohash_list(infohash_list) + return self._post('torrents/resume', data=data) def delete(self, infohash_list): """ @@ -422,8 +501,16 @@ class QBittorrentClient(object): :param infohash_list: Single or list() of infohashes. """ - data = self.process_infohash_list(infohash_list) - return self._post('command/delete', data=data) + data = self._process_infohash_list(infohash_list) + data['deleteFiles'] = 'false' + return self._post('torrents/delete', data=data) + + def delete_all(self): + """ + Delete all torrents. + + """ + return self._post('torrents/delete', data={'hashes': 'all'}) def delete_permanently(self, infohash_list): """ @@ -431,8 +518,9 @@ class QBittorrentClient(object): :param infohash_list: Single or list() of infohashes. """ - data = self.process_infohash_list(infohash_list) - return self._post('command/deletePerm', data=data) + data = self._process_infohash_list(infohash_list) + data['deleteFiles'] = 'true' + return self._post('torrents/delete', data=data) def recheck(self, infohash_list): """ @@ -440,44 +528,60 @@ class QBittorrentClient(object): :param infohash_list: Single or list() of infohashes. """ - data = self.process_infohash_list(infohash_list) - return self._post('command/recheck', data=data) + data = self._process_infohash_list(infohash_list) + return self._post('torrents/recheck', data=data) + + def recheck_all(self): + """ + Recheck all torrents. + """ + return self._post('torrents/recheck', data={'hashes': 'all'}) + + def reannounce(self, infohash_list): + """ + Recheck all torrents. + + :param infohash_list: Single or list() of infohashes; pass 'all' for all torrents. + """ + + data = self._process_infohash_list(infohash_list) + return self._post('torrents/reannounce', data=data) def increase_priority(self, infohash_list): """ Increase priority of torrents. - :param infohash_list: Single or list() of infohashes. + :param infohash_list: Single or list() of infohashes; pass 'all' for all torrents. """ - data = self.process_infohash_list(infohash_list) - return self._post('command/increasePrio', data=data) + data = self._process_infohash_list(infohash_list) + return self._post('torrents/increasePrio', data=data) def decrease_priority(self, infohash_list): """ Decrease priority of torrents. - :param infohash_list: Single or list() of infohashes. + :param infohash_list: Single or list() of infohashes; pass 'all' for all torrents. """ - data = self.process_infohash_list(infohash_list) - return self._post('command/decreasePrio', data=data) + data = self._process_infohash_list(infohash_list) + return self._post('torrents/decreasePrio', data=data) def set_max_priority(self, infohash_list): """ Set torrents to maximum priority level. - :param infohash_list: Single or list() of infohashes. + :param infohash_list: Single or list() of infohashes; pass 'all' for all torrents. """ - data = self.process_infohash_list(infohash_list) - return self._post('command/topPrio', data=data) + data = self._process_infohash_list(infohash_list) + return self._post('torrents/topPrio', data=data) def set_min_priority(self, infohash_list): """ Set torrents to minimum priority level. - :param infohash_list: Single or list() of infohashes. + :param infohash_list: Single or list() of infohashes; pass 'all' for all torrents. """ - data = self.process_infohash_list(infohash_list) - return self._post('command/bottomPrio', data=data) + data = self._process_infohash_list(infohash_list) + return self._post('torrents/bottomPrio', data=data) def set_file_priority(self, infohash, file_id, priority): """ @@ -486,8 +590,9 @@ class QBittorrentClient(object): :param infohash: INFO HASH of torrent. :param file_id: ID of the file to set priority. :param priority: Priority level of the file. + :note priority 4 is no priority set """ - if priority not in [0, 1, 2, 7]: + if priority not in [0, 1, 2, 4, 7]: raise ValueError("Invalid priority, refer WEB-UI docs for info.") elif not isinstance(file_id, int): raise TypeError("File ID must be an int") @@ -496,7 +601,18 @@ class QBittorrentClient(object): 'id': file_id, 'priority': priority} - return self._post('command/setFilePrio', data=data) + return self._post('torrents/filePrio', data=data) + + def set_automatic_torrent_management(self, infohash_list, enable='false'): + """ + Set the category on multiple torrents. + + :param infohash_list: Single or list() of infohashes. + :param enable: is a boolean, affects the torrents listed in infohash_list, default is 'false' + """ + data = self._process_infohash_list(infohash_list) + data['enable'] = enable + return self._post('torrents/setAutoManagement', data=data) # Get-set global download and upload speed limits. @@ -504,7 +620,7 @@ class QBittorrentClient(object): """ Get global download speed limit. """ - return self._get('command/getGlobalDlLimit') + return self._get('transfer/downloadLimit') def set_global_download_limit(self, limit): """ @@ -512,7 +628,7 @@ class QBittorrentClient(object): :param limit: Speed limit in bytes. """ - return self._post('command/setGlobalDlLimit', data={'limit': limit}) + return self._post('transfer/setDownloadLimit', data={'limit': limit}) global_download_limit = property(get_global_download_limit, set_global_download_limit) @@ -521,7 +637,7 @@ class QBittorrentClient(object): """ Get global upload speed limit. """ - return self._get('command/getGlobalUpLimit') + return self._get('transfer/uploadLimit') def set_global_upload_limit(self, limit): """ @@ -529,7 +645,7 @@ class QBittorrentClient(object): :param limit: Speed limit in bytes. """ - return self._post('command/setGlobalUpLimit', data={'limit': limit}) + return self._post('transfer/setUploadLimit', data={'limit': limit}) global_upload_limit = property(get_global_upload_limit, set_global_upload_limit) @@ -541,8 +657,8 @@ class QBittorrentClient(object): :param infohash_list: Single or list() of infohashes. """ - data = self.process_infohash_list(infohash_list) - return self._post('command/getTorrentsDlLimit', data=data) + data = self._process_infohash_list(infohash_list) + return self._post('torrents/downloadLimit', data=data) def set_torrent_download_limit(self, infohash_list, limit): """ @@ -551,9 +667,9 @@ class QBittorrentClient(object): :param infohash_list: Single or list() of infohashes. :param limit: Speed limit in bytes. """ - data = self.process_infohash_list(infohash_list) + data = self._process_infohash_list(infohash_list) data.update({'limit': limit}) - return self._post('command/setTorrentsDlLimit', data=data) + return self._post('torrents/setDownloadLimit', data=data) def get_torrent_upload_limit(self, infohash_list): """ @@ -561,8 +677,8 @@ class QBittorrentClient(object): :param infohash_list: Single or list() of infohashes. """ - data = self.process_infohash_list(infohash_list) - return self._post('command/getTorrentsUpLimit', data=data) + data = self._process_infohash_list(infohash_list) + return self._post('torrents/uploadLimit', data=data) def set_torrent_upload_limit(self, infohash_list, limit): """ @@ -571,28 +687,30 @@ class QBittorrentClient(object): :param infohash_list: Single or list() of infohashes. :param limit: Speed limit in bytes. """ - data = self.process_infohash_list(infohash_list) + data = self._process_infohash_list(infohash_list) data.update({'limit': limit}) - return self._post('command/setTorrentsUpLimit', data=data) + return self._post('torrents/setUploadLimit', data=data) # setting preferences def set_preferences(self, **kwargs): """ Set preferences of qBittorrent. - Read all possible preferences @ http://git.io/vEgDQ + Read all possible preferences @ https://git.io/fx2Y9 :param kwargs: set preferences in kwargs form. """ json_data = "json={}".format(json.dumps(kwargs)) headers = {'content-type': 'application/x-www-form-urlencoded'} - return self._post('command/setPreferences', data=json_data, + return self._post('app/setPreferences', data=json_data, headers=headers) def get_alternative_speed_status(self): """ Get Alternative speed limits. (1/0) """ - return self._get('command/alternativeSpeedLimitsEnabled') + # headers = {'content-type': 'application/x-www-form-urlencoded'} + + return self._get('transfer/speedLimitsMode') alternative_speed_status = property(get_alternative_speed_status) @@ -600,33 +718,44 @@ class QBittorrentClient(object): """ Toggle alternative speed limits. """ - return self._get('command/toggleAlternativeSpeedLimits') + return self._get('transfer/toggleSpeedLimitsMode') def toggle_sequential_download(self, infohash_list): """ Toggle sequential download in supplied torrents. - :param infohash_list: Single or list() of infohashes. + :param infohash_list: Single or list() of infohashes; pass 'all' for all torrents. """ - data = self.process_infohash_list(infohash_list) - return self._post('command/toggleSequentialDownload', data=data) + data = self._process_infohash_list(infohash_list) + return self._post('torrents/toggleSequentialDownload', data=data) def toggle_first_last_piece_priority(self, infohash_list): """ Toggle first/last piece priority of supplied torrents. - :param infohash_list: Single or list() of infohashes. + :param infohash_list: Single or list() of infohashes; pass 'all' for all torrents. """ - data = self.process_infohash_list(infohash_list) - return self._post('command/toggleFirstLastPiecePrio', data=data) + data = self._process_infohash_list(infohash_list) + return self._post('torrents/toggleFirstLastPiecePrio', data=data) - def force_start(self, infohash_list, value=True): + def force_start(self, infohash_list, value=False): """ Force start selected torrents. - :param infohash_list: Single or list() of infohashes. - :param value: Force start value (bool) + :param infohash_list: Single or list() of infohashes; pass 'all' for all torrents. + :param value: Force start value (bool), default is false + """ + data = self._process_infohash_list(infohash_list) + data.update({'value': json.dumps(value)}) + return self._post('torrents/setForceStart', data=data) + + def set_super_seeding(self, infohash_list, value=False): + """ + Set super seeding for selected torrents. + + :param infohash_list: Single or list() of infohashes; pass 'all' for all torrents. + :param value: Force start value (bool), default is false """ - data = self.process_infohash_list(infohash_list) + data = self._process_infohash_list(infohash_list) data.update({'value': json.dumps(value)}) - return self._post('command/setForceStart', data=data) + return self._post('torrents/setSuperSeeding', data=data) From e9ffef869c504123cc3a4732f8c5b45524e80e36 Mon Sep 17 00:00:00 2001 From: AnilDaoud Date: Sat, 21 Dec 2019 14:36:43 +0800 Subject: [PATCH 101/102] do not require auth when calling logout --- libs/qbittorrent/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/qbittorrent/client.py b/libs/qbittorrent/client.py index c524464..7c3d2c4 100644 --- a/libs/qbittorrent/client.py +++ b/libs/qbittorrent/client.py @@ -67,7 +67,7 @@ class QBittorrentClient(object): """ final_url = self.url + endpoint - if not self._is_authenticated: + if not self._is_authenticated and 'logout' not in endpoint: raise LoginRequired rq = self.session From 5bbdc3c0780a6f195e519951cd4f8e348feb8a37 Mon Sep 17 00:00:00 2001 From: AnilDaoud Date: Mon, 30 Dec 2019 23:22:55 +0800 Subject: [PATCH 102/102] set category correctly when using qbittorrent --- libs/qbittorrent/client.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/qbittorrent/client.py b/libs/qbittorrent/client.py index 7c3d2c4..4a0eb4c 100644 --- a/libs/qbittorrent/client.py +++ b/libs/qbittorrent/client.py @@ -6,7 +6,6 @@ class LoginRequired(Exception): def __str__(self): return 'Please login first.' - class QBittorrentClient(object): """class to interact with qBittorrent WEB API""" def __init__(self, url): @@ -331,7 +330,7 @@ class QBittorrentClient(object): :return: Empty JSON data. """ # old:new format - old_arg_map = {'save_path': 'savepath'} # , 'label': 'category'} + old_arg_map = {'save_path': 'savepath', 'label': 'category'} # convert old option names to new option names options = kwargs.copy() @@ -368,6 +367,9 @@ class QBittorrentClient(object): if data.get('save_path'): data.update({'savepath': data['save_path']}) + if data.get('label'): + data.update({'category': data['label']}) + return self._post('torrents/add', data=data, files=torrent_files) def add_trackers(self, infohash, trackers):