def new_build_check():
    log.log("Checking for a new build")

    check_official = addon.get_bool_setting('check_official')
    check_interval = addon.get_int_setting('check_interval')

    autoclose_ms = check_interval * 3540000  # check interval in ms - 1 min

    try:
        installed_build = builds.get_installed_build()
    except:
        log.log("Unable to get installed build so exiting")
        sys.exit(1)

    source = addon.get_setting('source_name')
    if (isinstance(installed_build, builds.Release)
            and source == "Official Releases" and not check_official):
        # Don't do the job of the official auto-update system.
        log.log("Skipping build check - official release")
    else:
        builds.arch = utils.get_arch()

        if addon.get_bool_setting('set_timeout'):
            builds.timeout = float(addon.get_setting('timeout'))

        build_sources = builds.sources()
        try:
            build_url = build_sources[source]
        except KeyError:
            log.log("{} is not a valid source".format(source))
            return

        log.log("Checking {}".format(build_url.url))

        latest = builds.latest_build(source)
        if latest and latest > installed_build:
            if utils.do_show_dialog():
                log.log("New build {} is available, "
                        "prompting to show build list".format(latest))

                if utils.yesno(addon.name,
                               line1=L10n(32027).format(
                                   utils.format_build(latest)),
                               line2=L10n(32028).format(
                                   utils.format_build(installed_build)),
                               line3=L10n(32029),
                               autoclose=autoclose_ms):
                    with Main() as main:
                        main.start()
            else:
                utils.notify(
                    L10n(32030).format(utils.format_build(latest)), 4000)
def new_build_check():
    log.log("Checking for a new build")
    
    check_official = addon.get_bool_setting('check_official')
    check_interval = addon.get_int_setting('check_interval')

    autoclose_ms = check_interval * 3540000 # check interval in ms - 1 min
    
    try:
        installed_build = builds.get_installed_build()
    except:
        log.log("Unable to get installed build so exiting")
        sys.exit(1)

    source = addon.get_setting('source_name')
    if (isinstance(installed_build, builds.Release) and source == "Official Releases"
        and not check_official):
        # Don't do the job of the official auto-update system.
        log.log("Skipping build check - official release")
    else:
        builds.arch = utils.get_arch()

        if addon.get_bool_setting('set_timeout'):
            builds.timeout = float(addon.get_setting('timeout'))

        build_sources = builds.sources()
        try:
            build_url = build_sources[source]
        except KeyError:
            log.log("{} is not a valid source".format(source))
            return

        log.log("Checking {}".format(build_url.url))

        latest = builds.latest_build(source)
        if latest and latest > installed_build:
            if utils.do_show_dialog():
                log.log("New build {} is available, "
                        "prompting to show build list".format(latest))

                if utils.yesno(
                        addon.name,
                        line1=L10n(32027).format(utils.format_build(latest)),
                        line2=L10n(32028).format(utils.format_build(installed_build)),
                        line3=L10n(32029),
                        autoclose=autoclose_ms):
                    with Main() as main:
                        main.start()
            else:
                utils.notify(L10n(32030).format(utils.format_build(latest)),
                             4000)
        try:
            item = items[int(choice)]
            return item
        except ValueError:
            choice = raw_input('You entered a non-integer. Choice must be an'
                               ' integer or "q": ')
        except IndexError:
            choice = raw_input('You entered an invalid integer. Choice must be'
                               ' from above list or "q": ')
    sys.exit()


if args.arch:
    builds.arch = args.arch

urls = builds.sources()

if args.source:
    source = args.source
    try:
        build_url = urls[source]
    except KeyError:
        parsed = urlparse(source)
        if parsed.scheme in ('http', 'https') and parsed.netloc:
            if args.releases:
                build_url = builds.BuildsURL(source,
                                             extractor=builds.ReleaseLinkExtractor)
            else:
                build_url = builds.BuildsURL(source)
        else:
            print ('"{}" is not in the list of available sources '
Beispiel #4
0
        try:
            item = items[int(choice)]
            return item
        except ValueError:
            choice = raw_input('You entered a non-integer. Choice must be an'
                               ' integer or "q": ')
        except IndexError:
            choice = raw_input('You entered an invalid integer. Choice must be'
                               ' from above list or "q": ')
    sys.exit()


if args.arch:
    builds.arch = args.arch

urls = builds.sources()

if args.source:
    source = args.source
    try:
        build_url = urls[source]
    except KeyError:
        parsed = urlparse(source)
        if parsed.scheme in ('http', 'https') and parsed.netloc:
            if args.releases:
                build_url = builds.BuildsURL(
                    source, extractor=builds.ReleaseLinkExtractor)
            else:
                build_url = builds.BuildsURL(source)
        else:
            print(
    def create(self):
        import requests2 as requests

        from resources.lib import builds

        try:
            self.installed_build = builds.get_installed_build()
        except requests.ConnectionError as e:
            utils.connection_error(str(e))
            sys.exit(1)
           
        subdir = __addon__.getSetting('subdir')
    
        # Get the url from the settings.
        source = __addon__.getSetting('source')
        utils.log("Source = " +  source)
        if source == "Other":
            # Custom URL
            url = __addon__.getSetting('custom_url')
            scheme, netloc = urlparse.urlparse(url)[:2]
            if not (scheme and netloc):
                utils.bad_url(url, "Invalid URL")
                sys.exit(1)
            
            build_url = builds.BuildsURL(url, subdir)
        else:
            # Defined URL
            try:
                build_url = builds.sources(self._arch)[source]
            except KeyError:
                utils.bad_source(source)
                sys.exit(1)
            url = build_url.url
        
        utils.log("Full URL = " + url)

        if __addon__.getSetting('set_timeout') == 'true':
            timeout = int(__addon__.getSetting('timeout'))
        else:
            timeout = None
    
        try:
            # Get the list of build links.
            with build_url.extractor() as extractor:
                links = sorted(set(extractor.get_links(self._arch, timeout)), reverse=True)
        except requests.ConnectionError as e:
            utils.connection_error(str(e))
            sys.exit(1)
        except builds.BuildURLError as e:
            utils.bad_url(url, str(e))
            sys.exit(1)
        except requests.RequestException as e:
            utils.url_error(url, str(e))
            sys.exit(1)
        
        if __addon__.getSetting('archive') == "true":
            # Look in archive area for local build files.
            archive_root = __addon__.getSetting('archive_root')
            archive_dir = os.path.join(archive_root, source)
            if not xbmcvfs.mkdirs(archive_dir):
                xbmcgui.Dialog().ok("Directory Error", "{} is not accessible.".format(archive_root),
                                    "Check the archive directory in the addon settings.")
                __addon__.openSettings()
                sys.exit(1)

            files = xbmcvfs.listdir(archive_dir)[1]
            for link in links:
                if link.tar_name in files:
                    link.set_archive(archive_dir)

        if not links:
            utils.bad_url(url, "No builds were found for {}.".format(self._arch))
            sys.exit(1)
            
        return source, links
    if isinstance(installed_build, builds.Release) and source == "Official Releases":
        # Don't do the job of the official auto-update system.
        utils.log("Skipping build check - official release")
    else:
        try:
            if __addon__.getSetting('set_arch') == 'true':
                arch = __addon__.getSetting('arch')
            else:
                arch = constants.ARCH

            subdir = __addon__.getSetting('subdir')
            if source == "Other":
                url = __addon__.getSetting('custom_url')
                build_url = builds.BuildsURL(url, subdir)
            else:
                build_url = builds.sources(arch)[source]
                url = build_url.url

            if __addon__.getSetting('set_timeout') == 'true':
                timeout = int(__addon__.getSetting('timeout'))
            else:
                timeout = None
    
            utils.log("Checking {}".format(url))
            with build_url.extractor() as parser:
                latest = sorted(parser.get_links(arch, timeout), reverse=True)[0]
                if latest > installed_build:
                    if (check_prompt == 1 and xbmc.Player().isPlayingVideo()) or check_prompt == 0:
                        utils.log("Notifying that new build {} is available".format(latest))
                        utils.notify("Build {} is available".format(latest), 7500)
                    else: