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 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
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")
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.'))
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')])
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)
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)
def test_google_get_not_found(self): p = Providers() resp = p.get('Google', 'The Wardrobe, Narnia') self.assertEqual(resp.status, 'No Results')
def getProducts(ide): provs = Providers() product = provs.getter("wp-json/wc/v2/products?vendor=" + str(ide)) return product
def getVendors(): provs = Providers() vendors = provs.getter("wp-json/wcmp/v1/vendors") return vendors
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
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"
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)
def getProviders(self): return Providers().read()
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)
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
#!/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':
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"
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)