Ejemplo n.º 1
0
    def prepare(self):
        self.providers = Providers().read()
        self.providers_configs = {}
        self.orbital_supported = []

        # get supported orbital positions
        dvbs_nims = nimmanager.getNimListOfType("DVB-S")
        for nim in dvbs_nims:
            sats = nimmanager.getSatListForNim(nim)
            for sat in sats:
                if sat[0] not in self.orbital_supported:
                    self.orbital_supported.append(sat[0])

        # read providers configurations
        providers_tmp_configs = {}
        providers_tmp = config.plugins.RadioTimesEmulator.providers.value.split(
            "|")
        for provider_tmp in providers_tmp:
            provider_config = ProviderConfig(provider_tmp)

            if not provider_config.isValid():
                continue
            if provider_config.getProvider() not in self.providers:
                continue
            if self.providers[provider_config.getProvider()]["transponder"][
                    "orbital_position"] not in self.orbital_supported:
                continue
            providers_tmp_configs[
                provider_config.getProvider()] = provider_config

        # build providers configurations
        for provider in self.providers.keys():
            self.providers_configs[provider] = ConfigYesNo(
                default=provider in providers_tmp_configs.keys())
Ejemplo n.º 2
0
def myproducts():
    provs = Providers()
    token = request.headers["Authorization"]
    my_id = provs.myid(token)
    get_my_products = provs.getter("wp-json/wc/v2/products/?vendor=" +
                                   str(my_id))
    return get_my_products
Ejemplo n.º 3
0
def upload_product():
    provs = Providers()
    token = {"Authorization": request.headers["Authorization"]}
    if request.method == "POST":
        endpoint = "wp-json/wc/v2/products/"
        token = request.headers["Authorization"]
        data = request.get_json()
        imageId = data["image_id"]
        del data["image_id"]
        # Asignamos la id del vendedor a la data, segun asociacion token<->id
        ide = provs.myid(token)
        data["vendor"] = ide
        # En algun momento tendremos que manipular los errores ^.^
        putImage = {"images": [{"id": imageId, "position": 1}]}
        # [Tallarin], lee la respuesta del post que envio para subir el producto
        response_post_product = provs.poster(data, endpoint)
        respuesta = json.loads(
            response_post_product.get_data().decode("utf-8"))
        print("Image id = " + str(putImage))
        print("Product id = " + str(respuesta["id"]))
        endpoint_with_id_product = "wp-json/wc/v2/products/" + str(
            respuesta["id"])
        finalPut = provs.putter_image(token,
                                      endpoint_with_id_product,
                                      data=json.dumps(putImage))
        return finalPut
    # Debiera ya estar pensando en una class validadores O.o
    else:
        if (request.method != "POST"):
            print("SOLO METODOS POST, PLIZ")
        else:
            print("Problemas con el token")
Ejemplo n.º 4
0
def upload_image():
    provs = Providers()
    token = {"Authorization": request.headers["Authorization"]}
    # Si el metodo es de tipo post y el token es valido-->
    if request.method == "POST":
        if request.files:
            image = request.files["image"]
            # Guarda temporalmente la imagen recibida en el subdirectorio uploads
            image.save(os.path.join(provs.img_folder, image.filename))
            imgUpload = provs.imgUL(image.filename)
            # Borramos la imagen (era solo de pasada)
            if os.path.exists(provs.img_folder + image.filename):
                os.remove(provs.img_folder + image.filename)
            return imgUpload
	def firstExec(self):
		self.selectedProviders = {}
		self.actionsList = []

		providers_tmp = config.plugins.RadioTimesEmulator.providers.value.split("|")

		for provider_tmp in providers_tmp:
			provider_config = ProviderConfig(provider_tmp)
			if provider_config.isValid() and Providers().providerFileExists(provider_config.getProvider()):
				self.actionsList.append(provider_config.getProvider())
				self.selectedProviders[provider_config.getProvider()] = provider_config
				
		if len(self.actionsList) > 0:
			if not inStandby:
				self["action"].setText(_('Starting download...'))
				self["status"].setText("")
			self.progresscount = len(self.actionsList)* 4 + 2
			self.progresscurrent = 1
			if not inStandby:
				self["progress_text"].range = self.progresscount
				self["progress_text"].value = self.progresscurrent
				self["progress"].setRange((0, self.progresscount))
				self["progress"].setValue(self.progresscurrent)
			self.timer = eTimer()
			self.timer.callback.append(self.readStreams)
			self.timer.start(100, 1)
		else:
			self.showError(_('No providers to search. Please select at least one provider in the setup menu.'))
Ejemplo n.º 6
0
def main(wf):
    from justwatch import JustWatch
    parser = argparse.ArgumentParser()
    parser.add_argument('-s', '--search_keyword')
    parser.add_argument('-t', '--title_id')
    parser.add_argument('-i', '--input_locale')

    args = parser.parse_args()

    search_keyword = args.search_keyword
    title_id = args.title_id
    constants.LOCALE = args.input_locale

    just_watch = JustWatch(country=constants.LOCALE)
    providers = Providers(just_watch)
    t = thumbs()
    if search_keyword is not None:
        media_items = MediaItems(just_watch, sys.argv[len(sys.argv) - 1],
                                 providers).get_alfred_json_list()
        should_rerun = process_thumbnails_search(t, media_items)
        wf.logger.error("should_rerun = %s" % should_rerun)
        show_results_search(media_items, should_rerun)
    elif title_id is not None:
        title_id, content_type = parse_title_id(title_id)
        media_item = MediaItem(
            just_watch.get_title(title_id=title_id, content_type=content_type),
            providers)
        should_rerun = process_thumbnails_providers(t, media_item)
        show_results_providers(media_item, should_rerun)
    else:
        pass

    t.save_queue()
    if t.has_queue:
        if not is_running('generate_thumbnails'):
            run_in_background(
                'generate_thumbnails',
                ['/usr/bin/python3',
                 wf.workflowfile('thumbnails.py')])
Ejemplo n.º 7
0
def main():
    """ Main function """
    
    # Get token from args
    if len(sys.argv) == 2:
        token = sys.argv[1]
    elif len(sys.argv) == 1:
        print("Error: por favor generar token y usarlo como argumento para correr el bot.")
        return
    else:
        print("Error: se debe utilizar sólo 1 argumento que será el token del bot generado en Telegram.")
        return

    # Initialize classes
    prov = Providers()
    db = Database()
    sch = Sched(db, prov)
    bot = Bot(sch, db, prov, token)
    sch.bot = bot
    
    # Start bot
    bot.updater.start_polling()
    bot.updater.idle()
	def __init__(self, session, args = 0):
		print "[RadioTimesEmulator][__init__] Starting..."
		print "[RadioTimesEmulator][__init__] args", args
		self.session = session
		Screen.__init__(self, session)
		Screen.setTitle(self, _("Radio Times Emulator Download"))

		if not inStandby:
			self["action"] = Label(_("Starting downloader"))
			self["status"] = Label("")
			self["progress"] = ProgressBar()
			self["progress_text"] = Progress()
			self["tuner_text"] = Label("")

		self["actions"] = ActionMap(["SetupActions"],
		{
			"cancel": self.keyCancel,
		}, -2)

		self.selectedNIM = -1
		if args:
			pass
		self.frontend = None
		if not inStandby:
			self["Frontend"] = FrontendStatus(frontend_source = lambda : self.frontend, update_interval = 100)
		self.rawchannel = None
#		self.session.postScanService = self.session.nav.getCurrentlyPlayingServiceOrGroup()
		self.postScanService = None
		self.index = 0
		self.LOCK_TIMEOUT_ROTOR = 1200 	# 100ms for tick - 120 sec
		self.LOCK_TIMEOUT_FIXED = 50 	# 100ms for tick - 5 sec
		
		self.LOCK_TIMEOUT = self.LOCK_TIMEOUT_FIXED
		self.databaseLocation = "%sradiotimes" % config.plugins.RadioTimesEmulator.database_location.value
		self.providers = Providers().read()
		self.onClose.append(self.__onClose)
		self.onFirstExecBegin.append(self.firstExec)
Ejemplo n.º 9
0
    plt.xlabel("Days")

    plt_name = "sim-{}.png".format(search_mechanic.get_name())
    plt.savefig(plt_name)
    plt.show()


if __name__ == "__main__":
    arg_parser = argparse.ArgumentParser(description="Search Economy Simulation")
    arg_parser.add_argument("-d", "--days",  help="Number of days (default = 100)", type=int, default=100)
    arg_parser.add_argument("-r", "--requests", type=int, default=1000,  help="Requests per day (default=1000)")
    arg_parser.add_argument("-p", "--providers",  help="Number of providers (default=30)", type=int, default=30)
    arg_parser.add_argument("-t", "--theta", help="Patience Parameter", type=float, default=0.5)
    arg_parser.add_argument("-a", "--ads", help="Number of Ads", type=int, default=1)
    arg_parser.add_argument("-c", "--cost", help="Cost of Ads", type=float, default=1.0)

    args = arg_parser.parse_args()

    num_days = args.days
    num_providers = args.providers
    num_requests = args.requests
    theta = args.theta
    num_ads = args.ads
    ad_cost = args.cost

    ad_prob = 0.175 + num_ads*0.025

    sm = SearchMechanics(num_providers=num_providers, num_ads=num_ads, ad_cost=ad_cost, ad_prob=ad_prob, doc_theta=theta, discount=1.0)
    prov = Providers(num_providers=num_providers, profit=2.0)
    run_simulation(search_mechanic=sm, provider=prov, num_providers=num_providers, days=num_days, num_requests=num_requests)
Ejemplo n.º 10
0
 def test_google_get_not_found(self):
     p = Providers()
     resp = p.get('Google', 'The Wardrobe, Narnia')
     self.assertEqual(resp.status, 'No Results')
Ejemplo n.º 11
0
def getProducts(ide):
    provs = Providers()
    product = provs.getter("wp-json/wc/v2/products?vendor=" + str(ide))
    return product
Ejemplo n.º 12
0
def getVendors():
    provs = Providers()
    vendors = provs.getter("wp-json/wcmp/v1/vendors")
    return vendors
Ejemplo n.º 13
0
    def read(self, provider_config):
        ret = False
        provider_key = provider_config.getProvider()
        bouquet_key = provider_config.getArea()

        if bouquet_key is not None and len(bouquet_key) > 0:
            print >> log, "[Manager] Reading %s (%s)..." % (provider_key,
                                                            bouquet_key)
        else:
            print >> log, "[Manager] Reading %s..." % provider_key

        # read custom transponder file
        transponder_dict_tmp = {}
        transponder_tmp = {}
        transponder_dict_tmp = Tools().customtransponder(provider_key)
        if len(transponder_dict_tmp) > 0:
            for key in transponder_dict_tmp:
                if bouquet_key is not None and len(bouquet_key) > 0:
                    if transponder_dict_tmp[key]["key"] == bouquet_key:
                        transponder_tmp[key] = transponder_dict_tmp[key]
                else:
                    transponder_tmp[key] = transponder_dict_tmp[key]

        self.providerConfigs[provider_key] = provider_config

        providers = Providers().read()
        if provider_key in providers:
            if bouquet_key in providers[provider_key]["bouquets"] or providers[
                    provider_key]["protocol"] != "sky":
                scanner = DvbScanner()
                scanner.setAdapter(self.adapter)
                scanner.setDemuxer(self.demuxer)
                scanner.setFrontend(self.frontend)
                scanner.setDVBType(providers[provider_key]["streamtype"])
                scanner.setNitPid(
                    providers[provider_key]["transponder"]["nit_pid"])
                scanner.setNitCurrentTableId(
                    providers[provider_key]["transponder"]
                    ["nit_current_table_id"])
                scanner.setNitOtherTableId(
                    providers[provider_key]["transponder"]
                    ["nit_other_table_id"])

                if providers[provider_key]["protocol"] == "lcn" or providers[
                        provider_key]["protocol"] == "lcn2" or providers[
                            provider_key]["protocol"] == "nolcn" or providers[
                                provider_key]["protocol"] == "lcnbat":
                    scanner.setSdtPid(
                        providers[provider_key]["transponder"]["sdt_pid"])
                    scanner.setSdtCurrentTableId(
                        providers[provider_key]["transponder"]
                        ["sdt_current_table_id"])
                    scanner.setSdtOtherTableId(
                        providers[provider_key]["transponder"]
                        ["sdt_other_table_id"])

                    if providers[provider_key]["streamtype"] == 'dvbc':
                        bouquet = providers[provider_key]["bouquets"][
                            bouquet_key]
                        tmp = scanner.updateTransponders(
                            transponder_tmp, self.transponders, True,
                            bouquet["netid"], bouquet["bouquettype"])
                    else:
                        tmp = scanner.updateTransponders(
                            transponder_tmp, self.transponders, True)
                    self.services[
                        provider_key] = scanner.updateAndReadServicesLCN(
                            providers[provider_key]["namespace"],
                            self.transponders,
                            providers[provider_key]["servicehacks"],
                            tmp["transport_stream_id_list"],
                            tmp["logical_channel_number_dict"],
                            tmp["service_dict_tmp"],
                            providers[provider_key]["protocol"])

                    ret = len(self.services[provider_key]["video"].keys(
                    )) > 0 or len(
                        self.services[provider_key]["radio"].keys()) > 0

                    self.serviceVideoRead += len(
                        self.services[provider_key]["video"].keys())
                    self.serviceAudioRead += len(
                        self.services[provider_key]["radio"].keys())

                elif providers[provider_key]["protocol"] == "fastscan":
                    scanner.setFastscanPid(
                        providers[provider_key]["transponder"]["fastscan_pid"])
                    scanner.setFastscanTableId(
                        providers[provider_key]["transponder"]
                        ["fastscan_table_id"])

                    tmp = scanner.updateTransponders(transponder_tmp,
                                                     self.transponders, True)
                    self.services[
                        provider_key] = scanner.updateAndReadServicesFastscan(
                            providers[provider_key]["namespace"],
                            self.transponders,
                            providers[provider_key]["servicehacks"],
                            tmp["transport_stream_id_list"],
                            tmp["logical_channel_number_dict"])

                    ret = len(self.services[provider_key]["video"].keys(
                    )) > 0 or len(
                        self.services[provider_key]["radio"].keys()) > 0

                    self.serviceVideoRead += len(
                        self.services[provider_key]["video"].keys())
                    self.serviceAudioRead += len(
                        self.services[provider_key]["radio"].keys())

                elif providers[provider_key]["protocol"] == "sky":
                    scanner.setSdtPid(
                        providers[provider_key]["transponder"]["sdt_pid"])
                    scanner.setSdtCurrentTableId(
                        providers[provider_key]["transponder"]
                        ["sdt_current_table_id"])
                    scanner.setSdtOtherTableId(
                        providers[provider_key]["transponder"]
                        ["sdt_other_table_id"])
                    scanner.setBatPid(
                        providers[provider_key]["transponder"]["bat_pid"])
                    scanner.setBatTableId(
                        providers[provider_key]["transponder"]["bat_table_id"])

                    scanner.updateTransponders(transponder_tmp,
                                               self.transponders, False)
                    bouquet = providers[provider_key]["bouquets"][bouquet_key]
                    self.services[
                        provider_key] = scanner.updateAndReadServicesSKY(
                            bouquet["bouquet"], bouquet["region"],
                            bouquet["namespace"], bouquet["key"],
                            self.transponders,
                            providers[provider_key]["servicehacks"])

                    ret = len(self.services[provider_key]["video"].keys(
                    )) > 0 or len(
                        self.services[provider_key]["radio"].keys()) > 0

                    self.serviceVideoRead += len(
                        self.services[provider_key]["video"].keys())
                    self.serviceAudioRead += len(
                        self.services[provider_key]["radio"].keys())

                elif providers[provider_key]["protocol"] == "freesat":
                    scanner.setSdtPid(
                        providers[provider_key]["transponder"]["sdt_pid"])
                    scanner.setSdtCurrentTableId(
                        providers[provider_key]["transponder"]
                        ["sdt_current_table_id"])
                    scanner.setSdtOtherTableId(
                        providers[provider_key]["transponder"]
                        ["sdt_other_table_id"])
                    scanner.setBatPid(
                        providers[provider_key]["transponder"]["bat_pid"])
                    scanner.setBatTableId(
                        providers[provider_key]["transponder"]["bat_table_id"])

                    scanner.updateTransponders(transponder_tmp,
                                               self.transponders, False)
                    bouquet = providers[provider_key]["bouquets"][bouquet_key]
                    self.services[
                        provider_key] = scanner.updateAndReadServicesFreeSat(
                            bouquet["bouquet"], bouquet["region"],
                            bouquet["namespace"], bouquet["key"],
                            self.transponders,
                            providers[provider_key]["servicehacks"])

                    ret = len(self.services[provider_key]["video"].keys(
                    )) > 0 or len(
                        self.services[provider_key]["radio"].keys()) > 0

                    self.serviceVideoRead += len(
                        self.services[provider_key]["video"].keys())
                    self.serviceAudioRead += len(
                        self.services[provider_key]["radio"].keys())

                else:
                    print >> log, "[Manager] Unsupported protocol %s" % providers[
                        provider_key]["protocol"]
                    ret = False

                if provider_key not in self.bouquetsOrder:
                    self.bouquetsOrder.append(provider_key)

                # fta only
                if config.autobouquetsmaker.level.value == "expert" and provider_key in config.autobouquetsmaker.FTA_only.value:
                    video_services_tmp = {}
                    for number in self.services[provider_key]["video"]:
                        if self.services[provider_key]["video"][number][
                                "free_ca"] == 0:
                            video_services_tmp[number] = self.services[
                                provider_key]["video"][number]
                    self.services[provider_key]["video"] = video_services_tmp

                # swap services if customLCN
                self.services[provider_key] = Tools().customLCN(
                    self.services[provider_key], provider_key,
                    self.providerConfigs[provider_key].getArea())

        print >> log, "[Manager] Done"
        return ret
Ejemplo n.º 14
0
    def save(self):
        print >> log, "[Manager] Saving..."

        old_bouquets = BouquetsReader().getBouquetsList(self.path)
        if "tv" not in old_bouquets:
            old_bouquets["tv"] = []
        if "radio" not in old_bouquets:
            old_bouquets["radio"] = []
        currentBouquets = {}
        currentBouquets["tv"] = []
        currentBouquets["radio"] = []
        for bouquet in old_bouquets["tv"]:
            currentBouquets["tv"].append(bouquet["filename"])
        for bouquet in old_bouquets["radio"]:
            currentBouquets["radio"].append(bouquet["filename"])
        if "tv" not in self.bouquetsToKeep:
            self.bouquetsToKeep["tv"] = []
        if "radio" not in self.bouquetsToKeep:
            self.bouquetsToKeep["radio"] = []

        print >> log, "[Manager] Bouquets to hide:", self.bouquetsToHide
        print >> log, "[Manager] TV bouquets to keep:", self.bouquetsToKeep[
            "tv"]
        print >> log, "[Manager] Radio bouquets to keep:", self.bouquetsToKeep[
            "radio"]
        #print>>log, "[Manager] Generate main bouquet:", str(self.makemain)
        #print>>log, "[Manager] Generate sections bouquets:", str(self.makesections)
        #print>>log, "[Manager] Generate HD bouquet:", str(self.makehd)
        #print>>log, "[Manager] Generate FTA bouquet:", str(self.makefta)
        print >> log, "[Manager] Add provider prefix to bouqets:", str(
            self.addprefix)

        writer = BouquetsWriter()
        writer.writeLamedb(self.path, self.transponders)
        providers = Providers().read()
        bouquetsToHide = []
        for provider_key in self.bouquetsOrder:
            if provider_key in providers:
                bouquetsToHide = []
                if provider_key in self.bouquetsToHide:
                    # expand section keys in channels numbers
                    sections = sorted(
                        providers[provider_key]["sections"].keys())
                    for bouquetToHide in self.bouquetsToHide[provider_key]:
                        try:
                            #get closest section, just in case section numbers in the provider file have been updated
                            bouquetToHide = min(
                                sections, key=lambda x: abs(x - bouquetToHide))
                            index = sections.index(bouquetToHide)
                        except:
                            continue
                        if index < len(sections) - 1:
                            bouquetsToHide += range(bouquetToHide,
                                                    sections[index + 1])
                        else:
                            bouquetsToHide += range(bouquetToHide, 65535)

                prefix = ""
                if self.addprefix:
                    prefix = providers[provider_key]["name"]

                current_bouquet_key = self.providerConfigs[
                    provider_key].getArea()
                if current_bouquet_key in providers[provider_key][
                        "bouquets"] and providers[provider_key][
                            "protocol"] in ("sky", "freesat"):
                    current_bouquet = providers[provider_key]["bouquets"][
                        current_bouquet_key]["bouquet"]
                    current_region = providers[provider_key]["bouquets"][
                        current_bouquet_key]["region"]
                else:
                    current_bouquet = -1
                    current_region = -1

                preferred_order = []
                if (self.providerConfigs[provider_key].isMakeNormalMain()
                        or self.providerConfigs[provider_key].isMakeSections()
                    ) and self.providerConfigs[provider_key].isSwapChannels():
                    for swapchannels_set in providers[provider_key][
                            "swapchannels"]:
                        if len(preferred_order) == 0 and len(
                                swapchannels_set["filters"]) == 0:
                            preferred_order = swapchannels_set[
                                "preferred_order"]
                            continue

                        if len(swapchannels_set["filters"]) > 0:
                            for cfilter in swapchannels_set["filters"]:
                                if cfilter[0] == current_bouquet and cfilter[
                                        1] == current_region:
                                    preferred_order = swapchannels_set[
                                        "preferred_order"]
                                    break

                if current_bouquet_key.startswith('sd'):
                    channelsontop = providers[provider_key]["sdchannelsontop"],
                else:
                    channelsontop = providers[provider_key]["hdchannelsontop"],

                # swap services between providers
                services = Tools().customMix(self.services, provider_key)

                writer.buildBouquets(self.path,
                                     self.providerConfigs[provider_key],
                                     services,
                                     providers[provider_key]["sections"],
                                     provider_key, preferred_order,
                                     channelsontop, bouquetsToHide, prefix)

        # add a custom favourites list
        Tools().favourites(self.path, self.services, providers,
                           self.providerConfigs, self.bouquetsOrder)

        writer.buildBouquetsIndex(self.path, self.bouquetsOrder, providers,
                                  self.bouquetsToKeep, currentBouquets,
                                  self.bouquetsToHide, self.providerConfigs)

        print >> log, "[Manager] Done"
Ejemplo n.º 15
0
 def test_google_get_found(self):
     p = Providers()
     resp = p.get('Google', '301 Front Street West, Toronto')
     self.assertEqual(resp.status, 'OK')
     self.assertAlmostEqual(resp.data['lat'], 43.64, 2)
     self.assertAlmostEqual(resp.data['lng'], -79.39, 2)
Ejemplo n.º 16
0
 def getProviders(self):
     return Providers().read()
Ejemplo n.º 17
0
    def go(self):
        from Screens.Standby import inStandby
        self.manager = Manager()
        self.manager.setPath("/etc/enigma2")
        self.manager.setAddPrefix(config.autobouquetsmaker.addprefix.value)

        self.selectedProviders = {}
        self.actionsList = []

        providers_tmp = config.autobouquetsmaker.providers.value.split("|")

        for provider_tmp in providers_tmp:
            provider_config = ProviderConfig(provider_tmp)
            if provider_config.isValid() and Providers().providerFileExists(
                    provider_config.getProvider()):
                self.actionsList.append(provider_config.getProvider())
                self.selectedProviders[
                    provider_config.getProvider()] = provider_config

        if config.autobouquetsmaker.keepallbouquets.getValue():
            bouquets = Manager().getBouquetsList()
            bouquets_tv = []
            bouquets_radio = []
            for bouquet in bouquets["tv"]:
                if bouquet["filename"][:12] == "autobouquet." or bouquet[
                        "filename"][:len(self.ABM_BOUQUET_PREFIX
                                         )] == self.ABM_BOUQUET_PREFIX:
                    continue
                if len(bouquet["filename"]) > 0:
                    bouquets_tv.append(bouquet["filename"])
            for bouquet in bouquets["radio"]:
                if bouquet["filename"][:12] == "autobouquet." or bouquet[
                        "filename"][:len(self.ABM_BOUQUET_PREFIX
                                         )] == self.ABM_BOUQUET_PREFIX:
                    continue
                if len(bouquet["filename"]) > 0:
                    bouquets_radio.append(bouquet["filename"])
            self.manager.setBouquetsToKeep(bouquets_tv, bouquets_radio)
        else:
            bouquets = config.autobouquetsmaker.keepbouquets.value.split("|")
            bouquets_tv = []
            bouquets_radio = []
            for bouquet in bouquets:
                if bouquet.endswith(".tv"):
                    bouquets_tv.append(bouquet)
                elif bouquet.endswith(".radio"):
                    bouquets_radio.append(bouquet)
            self.manager.setBouquetsToKeep(bouquets_tv, bouquets_radio)

        bouquetsToHide = {}
        bouquets = config.autobouquetsmaker.hidesections.value.split("|")
        for bouquet in bouquets:
            tmp = bouquet.split(":")
            if len(tmp) != 2:
                continue

            if tmp[0].strip() not in bouquetsToHide:
                bouquetsToHide[tmp[0].strip()] = []

            bouquetsToHide[tmp[0].strip()].append(int(tmp[1].strip()))
        self.manager.setBouquetsToHide(bouquetsToHide)

        self.manager.load()

        self.progresscount = (len(self.actionsList) * 2) + 3
        self.progresscurrent = 1

        if not inStandby:
            self["progress"].setRange((0, self.progresscount))
            self["progress"].setValue(self.progresscurrent)

        self.timer = eTimer()
        self.timer.callback.append(self.doActions)
        self.timer.start(100, 1)
Ejemplo n.º 18
0
    def read(self, provider_config):
        ret = False
        provider_key = provider_config.getProvider()
        bouquet_key = provider_config.getArea()

        if bouquet_key is not None and len(bouquet_key) > 0:
            print >> log, "[Manager] Reading %s (%s)..." % (provider_key,
                                                            bouquet_key)
        else:
            print >> log, "[Manager] Reading %s..." % provider_key

        self.providerConfigs[provider_key] = provider_config

        providers = Providers().read()
        if provider_key in providers:
            if bouquet_key in providers[provider_key]["bouquets"] or providers[
                    provider_key]["protocol"] != "sky":
                scanner = DvbScanner()
                scanner.setAdapter(self.adapter)
                scanner.setDemuxer(self.demuxer)
                scanner.setFrontend(self.frontend)

                scanner.setNitPid(
                    providers[provider_key]["transponder"]["nit_pid"])
                scanner.setNitCurrentTableId(
                    providers[provider_key]["transponder"]
                    ["nit_current_table_id"])
                scanner.setNitOtherTableId(
                    providers[provider_key]["transponder"]
                    ["nit_other_table_id"])

                if providers[provider_key]["protocol"] == "lcn":
                    scanner.setSdtPid(
                        providers[provider_key]["transponder"]["sdt_pid"])
                    scanner.setSdtCurrentTableId(
                        providers[provider_key]["transponder"]
                        ["sdt_current_table_id"])
                    scanner.setSdtOtherTableId(
                        providers[provider_key]["transponder"]
                        ["sdt_other_table_id"])

                    tmp = scanner.updateTransponders(self.transponders, True)
                    self.services[
                        provider_key] = scanner.updateAndReadServicesLCN(
                            providers[provider_key]["namespace"],
                            self.transponders,
                            providers[provider_key]["servicehacks"],
                            tmp["transport_stream_id_list"],
                            tmp["logical_channel_number_dict"])

                    ret = len(self.services[provider_key]["video"].keys(
                    )) > 0 or len(
                        self.services[provider_key]["radio"].keys()) > 0

                    self.serviceVideoRead += len(
                        self.services[provider_key]["video"].keys())
                    self.serviceAudioRead += len(
                        self.services[provider_key]["radio"].keys())

                elif providers[provider_key]["protocol"] == "fastscan":
                    scanner.setFastscanPid(
                        providers[provider_key]["transponder"]["fastscan_pid"])
                    scanner.setFastscanTableId(
                        providers[provider_key]["transponder"]
                        ["fastscan_table_id"])

                    tmp = scanner.updateTransponders(self.transponders, True)
                    self.services[
                        provider_key] = scanner.updateAndReadServicesFastscan(
                            providers[provider_key]["namespace"],
                            self.transponders,
                            providers[provider_key]["servicehacks"],
                            tmp["transport_stream_id_list"],
                            tmp["logical_channel_number_dict"])

                    ret = len(self.services[provider_key]["video"].keys(
                    )) > 0 or len(
                        self.services[provider_key]["radio"].keys()) > 0

                    self.serviceVideoRead += len(
                        self.services[provider_key]["video"].keys())
                    self.serviceAudioRead += len(
                        self.services[provider_key]["radio"].keys())

                elif providers[provider_key]["protocol"] == "sky":
                    scanner.setSdtPid(
                        providers[provider_key]["transponder"]["sdt_pid"])
                    scanner.setSdtCurrentTableId(
                        providers[provider_key]["transponder"]
                        ["sdt_current_table_id"])
                    scanner.setSdtOtherTableId(
                        providers[provider_key]["transponder"]
                        ["sdt_other_table_id"])
                    scanner.setBatPid(
                        providers[provider_key]["transponder"]["bat_pid"])
                    scanner.setBatTableId(
                        providers[provider_key]["transponder"]["bat_table_id"])

                    scanner.updateTransponders(self.transponders, False)
                    bouquet = providers[provider_key]["bouquets"][bouquet_key]
                    self.services[
                        provider_key] = scanner.updateAndReadServicesSKY(
                            bouquet["bouquet"], bouquet["region"],
                            bouquet["namespace"], self.transponders,
                            providers[provider_key]["servicehacks"])

                    ret = len(self.services[provider_key]["video"].keys(
                    )) > 0 or len(
                        self.services[provider_key]["radio"].keys()) > 0

                    self.serviceVideoRead += len(
                        self.services[provider_key]["video"].keys())
                    self.serviceAudioRead += len(
                        self.services[provider_key]["radio"].keys())

                elif providers[provider_key]["protocol"] == "freesat":
                    scanner.setSdtPid(
                        providers[provider_key]["transponder"]["sdt_pid"])
                    scanner.setSdtCurrentTableId(
                        providers[provider_key]["transponder"]
                        ["sdt_current_table_id"])
                    scanner.setSdtOtherTableId(
                        providers[provider_key]["transponder"]
                        ["sdt_other_table_id"])
                    scanner.setBatPid(
                        providers[provider_key]["transponder"]["bat_pid"])
                    scanner.setBatTableId(
                        providers[provider_key]["transponder"]["bat_table_id"])

                    scanner.updateTransponders(self.transponders, False)
                    bouquet = providers[provider_key]["bouquets"][bouquet_key]
                    self.services[
                        provider_key] = scanner.updateAndReadServicesFreeSat(
                            bouquet["bouquet"], bouquet["region"],
                            bouquet["namespace"], self.transponders,
                            providers[provider_key]["servicehacks"])

                    ret = len(self.services[provider_key]["video"].keys(
                    )) > 0 or len(
                        self.services[provider_key]["radio"].keys()) > 0

                    self.serviceVideoRead += len(
                        self.services[provider_key]["video"].keys())
                    self.serviceAudioRead += len(
                        self.services[provider_key]["radio"].keys())

                else:
                    print >> log, "[Manager] Unsupported protocol %s" % providers[
                        provider_key]["protocol"]
                    ret = False

                if provider_key not in self.bouquetsOrder:
                    self.bouquetsOrder.append(provider_key)
        print >> log, "[Manager] Done"
        return ret
Ejemplo n.º 19
0
#!/usr/bin/env python
# coding: utf8
from __future__ import absolute_import
import click

from providers import Providers

providers = Providers()


@click.command()
@click.argument('address')
@click.option('--service', '-s', type=click.Choice(providers.SERVICES))
def cli(address, service=None):
    if service:
        response = providers.get(service, address)
    else:
        response = providers.get_with_fallback(address)

    print(gen_output(response))


def gen_output(response):
    if response.is_success:
        return response.data

    if response.status == 'Bad Request':
        return 'Error: Invalid address.'
    elif response.status == 'No Results':
        return 'Error: No results found.'
    elif response.status == 'Not Found':
Ejemplo n.º 20
0
    def save(self):
        print >> log, "[Manager] Saving..."

        old_bouquets = BouquetsReader().getBouquetsList(self.path)
        if "tv" not in old_bouquets:
            old_bouquets["tv"] = []
        if "radio" not in old_bouquets:
            old_bouquets["radio"] = []
        currentBouquets = {}
        currentBouquets["tv"] = []
        currentBouquets["radio"] = []
        for bouquet in old_bouquets["tv"]:
            currentBouquets["tv"].append(bouquet["filename"])
        for bouquet in old_bouquets["radio"]:
            currentBouquets["radio"].append(bouquet["filename"])
        if "tv" not in self.bouquetsToKeep:
            self.bouquetsToKeep["tv"] = []
        if "radio" not in self.bouquetsToKeep:
            self.bouquetsToKeep["radio"] = []

        print >> log, "[Manager] Bouquets to hide:", self.bouquetsToHide
        print >> log, "[Manager] TV bouquets to keep:", self.bouquetsToKeep[
            "tv"]
        print >> log, "[Manager] Radio bouquets to keep:", self.bouquetsToKeep[
            "radio"]
        #print>>log, "[Manager] Generate main bouquet:", str(self.makemain)
        #print>>log, "[Manager] Generate sections bouquets:", str(self.makesections)
        #print>>log, "[Manager] Generate HD bouquet:", str(self.makehd)
        #print>>log, "[Manager] Generate FTA bouquet:", str(self.makefta)
        print >> log, "[Manager] Add provider prefix to bouqets:", str(
            self.addprefix)

        writer = BouquetsWriter()
        writer.writeLamedb(self.path, self.transponders)
        providers = Providers().read()
        for provider_key in self.bouquetsOrder:
            if provider_key in providers:
                bouquetsToHide = []
                if provider_key in self.bouquetsToHide:
                    # expand section keys in channels numbers
                    sections = sorted(
                        providers[provider_key]["sections"].keys())
                    for bouquetToHide in self.bouquetsToHide[provider_key]:
                        index = sections.index(bouquetToHide)
                        if index == -1:
                            continue

                        if index < len(sections) - 1:
                            bouquetsToHide += range(bouquetToHide,
                                                    sections[index + 1])
                        else:
                            bouquetsToHide += range(bouquetToHide, 65535)

                prefix = ""
                if self.addprefix:
                    prefix = providers[provider_key]["name"]

                current_bouquet_key = self.providerConfigs[
                    provider_key].getArea()
                if current_bouquet_key in providers[provider_key]["bouquets"]:
                    current_bouquet = providers[provider_key]["bouquets"][
                        current_bouquet_key]["bouquet"]
                    current_region = providers[provider_key]["bouquets"][
                        current_bouquet_key]["region"]
                else:
                    current_bouquet = -1
                    current_region = -1

                preferred_order = []
                if self.providerConfigs[provider_key].isMakeNormalMain(
                ) and self.providerConfigs[provider_key].isSwapChannels():
                    for swapchannels_set in providers[provider_key][
                            "swapchannels"]:
                        if len(preferred_order) == 0 and len(
                                swapchannels_set["filters"]) == 0:
                            preferred_order = swapchannels_set[
                                "preferred_order"]
                            continue

                        if len(swapchannels_set["filters"]) > 0:
                            for cfilter in swapchannels_set["filters"]:
                                if cfilter[0] == current_bouquet and cfilter[
                                        1] == current_region:
                                    preferred_order = swapchannels_set[
                                        "preferred_order"]
                                    break

                writer.buildBouquets(self.path,
                                     self.providerConfigs[provider_key],
                                     self.services[provider_key],
                                     providers[provider_key]["sections"],
                                     provider_key, preferred_order,
                                     providers[provider_key]["channelsontop"],
                                     bouquetsToHide, prefix)

        writer.buildBouquetsIndex(self.path, self.bouquetsOrder, providers,
                                  self.bouquetsToKeep, currentBouquets,
                                  self.bouquetsToHide, self.providerConfigs)

        print >> log, "[Manager] Done"
Ejemplo n.º 21
0
class RadioTimesEmulatorGUIScreen(ConfigListScreen, Screen):
    def __init__(self, session):
        Screen.__init__(self, session)
        self.setup_title = _('Radio Times Emulator') + " - " + _('Setup')
        Screen.setTitle(self, self.setup_title)
        self.skinName = ["RadioTimesEmulatorGUIScreen", "Setup"]
        self.onChangedEntry = []
        self.session = session
        ConfigListScreen.__init__(self, [],
                                  session=session,
                                  on_change=self.changedEntry)

        self["actions2"] = ActionMap(
            ["SetupActions", "ColorActions"], {
                "ok": self.keyGo,
                "menu": self.keyCancel,
                "cancel": self.keyCancel,
                "save": self.keySave,
                "red": self.keyCancel,
                "green": self.keySave,
                "yellow": self.keyGo,
                "blue": self.keyDelete
            }, -2)

        self["key_red"] = StaticText(_("Exit"))
        self["key_green"] = StaticText(_("Save"))
        self["key_yellow"] = StaticText(_("Download"))
        self["key_blue"] = StaticText(_("About"))

        self["description"] = Label("")

        self.transponders = []
        self.session.postScanService = self.session.nav.getCurrentlyPlayingServiceOrGroup(
        )

        self.prepare()

        self.createSetup()

        if not self.selectionChanged in self["config"].onSelectionChanged:
            self["config"].onSelectionChanged.append(self.selectionChanged)
        self.selectionChanged()

    def prepare(self):
        self.providers = Providers().read()
        self.providers_configs = {}
        self.orbital_supported = []

        # get supported orbital positions
        dvbs_nims = nimmanager.getNimListOfType("DVB-S")
        for nim in dvbs_nims:
            sats = nimmanager.getSatListForNim(nim)
            for sat in sats:
                if sat[0] not in self.orbital_supported:
                    self.orbital_supported.append(sat[0])

        # read providers configurations
        providers_tmp_configs = {}
        providers_tmp = config.plugins.RadioTimesEmulator.providers.value.split(
            "|")
        for provider_tmp in providers_tmp:
            provider_config = ProviderConfig(provider_tmp)

            if not provider_config.isValid():
                continue
            if provider_config.getProvider() not in self.providers:
                continue
            if self.providers[provider_config.getProvider()]["transponder"][
                    "orbital_position"] not in self.orbital_supported:
                continue
            providers_tmp_configs[
                provider_config.getProvider()] = provider_config

        # build providers configurations
        for provider in self.providers.keys():
            self.providers_configs[provider] = ConfigYesNo(
                default=provider in providers_tmp_configs.keys())

    def providerKeysInNameOrder(self, providers):
        temp = []
        for provider in providers.keys():
            temp.append((provider, providers[provider]["name"]))
        return [
            i[0] for i in sorted(
                temp, key=lambda p: p[1].lower().decode('ascii', 'ignore'))
        ]

    def createSetup(self):
        indent = "- "
        self.list = []
        self.providers_enabled = []
        self.list.append(
            getConfigListEntry(
                _("Database location"),
                config.plugins.RadioTimesEmulator.database_location,
                _('Select the path where you want to save the files created by Radio Times Xmltv Emulator. The files will be read from this location. Locating the database in "/tmp/" means it will be lost on reboots.'
                  )))
        for provider in self.providerKeysInNameOrder(self.providers):
            if self.providers[provider]["transponder"][
                    "orbital_position"] not in self.orbital_supported:
                continue
            self.list.append(
                getConfigListEntry(
                    self.providers[provider]["name"],
                    self.providers_configs[provider],
                    _("This option enables fetching EPG data for the currently selected provider."
                      )))
            self.providers_enabled.append(provider)
        self.list.append(
            getConfigListEntry(
                _("No dvb polling"),
                config.plugins.RadioTimesEmulator.no_dvb_polling,
                _('Only select this option if you fully understand why you need it, otherwise leave it "off".'
                  )))
        self.list.append(
            getConfigListEntry(
                _("Carousel dvb polling"),
                config.plugins.RadioTimesEmulator.carousel_dvb_polling,
                _('Only select this option if you fully understand why you need it, otherwise leave it "off".'
                  )))
        self.list.append(
            getConfigListEntry(
                _("Scheduled scan"),
                config.plugins.RadioTimesEmulator.schedule,
                _("Set up a task scheduler to automatically download the EPG data."
                  )))
        if config.plugins.RadioTimesEmulator.schedule.value:
            self.list.append(
                getConfigListEntry(
                    indent + _("Schedule time of day"),
                    config.plugins.RadioTimesEmulator.scheduletime,
                    _("Set the time of day to perform the EPG scan.")))
            self.list.append(
                getConfigListEntry(
                    indent + _("Schedule repeat interval"),
                    config.plugins.RadioTimesEmulator.repeattype,
                    _("Set how often the scan should be done.")))

        self["config"].list = self.list
        self["config"].l.setList(self.list)

    def saveAll(self):
        for x in self["config"].list:
            x[1].save()

        config_string = ""
        for provider in self.providers_enabled:
            if self.providers_configs[provider].value:
                if len(config_string) > 0:
                    config_string += "|"
                provider_config = ProviderConfig()
                provider_config.setProvider(provider)
                config_string += provider_config.serialize()

        config.plugins.RadioTimesEmulator.providers.value = config_string
        config.plugins.RadioTimesEmulator.providers.save()
        config.plugins.RadioTimesEmulator.database_location.save()
        configfile.save()
        try:
            AutoScheduleTimer.instance.doneConfiguring()
        except AttributeError as e:
            print "[RadioTimesEmulator] Timer.instance not available for reconfigure.", e

    def selectionChanged(self):
        self["description"].setText(self["config"].getCurrent()[2])

    # for summary:
    def changedEntry(self):
        for x in self.onChangedEntry:
            x()
        if self["config"].getCurrent() and len(
                self["config"].getCurrent()) > 1 and self["config"].getCurrent(
                )[1] == config.plugins.RadioTimesEmulator.schedule:
            self.createSetup()

    def getCurrentEntry(self):
        return self["config"].getCurrent()[0]

    def getCurrentValue(self):
        return str(self["config"].getCurrent()[1].getText())

    def createSummary(self):
        from Screens.Setup import SetupSummary
        return SetupSummary

    def keyGo(self):
        self.saveAll()
        self.startDownload()

    def startDownload(self):
        self.session.openWithCallback(self.RadioTimesEmulatorCallback,
                                      RadioTimesEmulator, {})

    def RadioTimesEmulatorCallback(self, answer=None):
        print "[RadioTimesEmulatorGUI]answer", answer
        #		self.session.nav.playService(self.session.postScanService)
        #		if answer:
        #			self.close(True)
        self["description"].setText(
            _("The download has completed.") + " " +
            _("Please don't forget that after downloading the first time the selected providers will need to be enabled in EPG-Importer plugin."
              ))

    def keySave(self):
        self.saveAll()
        self["description"].setText(
            _("The current configuration has been saved.") + " " +
            _("Please don't forget that after downloading the first time the selected providers will need to be enabled in EPG-Importer plugin."
              ))

    def keyCancel(self):
        if self["config"].isChanged():
            self.session.openWithCallback(
                self.cancelCallback, MessageBox,
                _("Really close without saving settings?"))
        else:
            self.cancelCallback(True)

    def cancelCallback(self, answer):
        if answer:
            for x in self["config"].list:
                x[1].cancel()
            self.close(False)

    def getMountpointFreeSpaceMB(path):
        try:
            stat = statvfs(path)
        except OSError:
            return -1
        try:
            return (stat.f_bfree * stat.f_bsize) >> 20
        except:
            # occurs when f_blocks is 0 or a similar error
            return -1

    def keyDelete(self):
        self.session.open(RadioTimesEmulatorAbout)