示例#1
0
    def updateUserdata(self, userdata, connection, cursor):
        # This updates: LastPlayedDate, Playcount
        embyId = userdata['ItemId']
        MBitem = ReadEmbyDB().getItem(embyId)

        if not MBitem:
            self.logMsg("UPDATE userdata to Kodi library FAILED, Item %s not found on server!" % embyId, 1)
            return

        # Get details
        checksum = API().getChecksum(MBitem)
        userdata = API().getUserData(MBitem)

        # Find the Kodi Id
        cursor.execute("SELECT kodi_id, media_type FROM emby WHERE emby_id = ?", (embyId,))
        try:
            result = cursor.fetchone()
            kodiid = result[0]
            mediatype = result[1]
            self.logMsg("Found embyId: %s in database - kodiId: %s type: %s" % (embyId, kodiid, mediatype), 1)
        except:
            self.logMsg("Id: %s not found in the emby database table." % embyId, 1)
        else:
            if mediatype in ("song"):
                playcount = userdata['PlayCount']
                dateplayed = userdata['LastPlayedDate']

                query = "UPDATE song SET iTimesPlayed = ?, lastplayed = ? WHERE idSong = ?"
                cursor.execute(query, (playcount, dateplayed, kodiid))

                #update the checksum in emby table
                query = "UPDATE emby SET checksum = ? WHERE emby_id = ?"
                cursor.execute(query, (checksum, embyId))
示例#2
0
 def getPlayerData(self, clanID):
     api = API()
     clantag = api.getClanTag(ID)
     players = api.getClanMembers(ID)
     if players is not None:
         for player in players:
             name = api.getPlayerName(player)
示例#3
0
    def addPlaylistItem(self, playlist, item):

        id = item['Id']
        username = utils.window('currUser')
        server = utils.window('server%s' % username)

        playurl = PlayUtils().getPlayUrl(server, id, item)

        if utils.window('playurlFalse') == "true":
            # Playurl failed - set in PlayUtils.py
            utils.window('playurlFalse', clear=True)
            self.logMsg(
                "Failed to retrieve the playback path/url or dialog was cancelled.",
                1)
            return

        self.logMsg("Playurl: %s" % playurl)

        thumb = API().getArtwork(item, "Primary")
        listItem = xbmcgui.ListItem(path=playurl,
                                    iconImage=thumb,
                                    thumbnailImage=thumb)
        self.setListItemProps(server, id, listItem, item)
        self.setProperties(playurl, item, listItem)

        playlist.add(playurl, listItem)
示例#4
0
 def run_API(self):
     api = API(
         host=self.__host,
         port=self.__port,
         key=self.__key,
         moni_port=self.__moni_port)
     api.run()
示例#5
0
    def saveExpValues(self):
        dt = Data()
        api = API()

        temp = api.expectedValues()
        time = temp['time']

        out = []
        for shipid, shipdata in temp['data'].items():
            lst = []
            lst.append(shipid)
            print(
                shipid
            )  #this function takes a while so print ship ID's to keep us occupied. The dark is scary
            #print(shipdata)
            name = api.getShipName(shipid)
            if name is None:
                lst.append("None")
            else:
                lst.append(name)
            if (len(shipdata) != 0):
                lst.append(shipdata['average_damage_dealt'])
                lst.append(shipdata['average_frags'])
                lst.append(shipdata['win_rate'])
            out.append(lst)

        #print(out)
        dt.write('wowsnumbers', (str(time) + '.csv').strip(), out)
        return temp['data']
示例#6
0
def paridades():
    api = API()
    api.connect()
    data = request.get_json()
    print(data)
    binary, digital = api.paridades()
    return {'binary': binary, 'digital': digital}
示例#7
0
    def setListItemProps(self, server, id, listItem, result):
        # Set up item and item info
        api = self.api

        type = result.get('Type')
        people = api.getPeople(result)
        studios = api.getStudios(result)

        metadata = {
            'title': result.get('Name', "Missing name"),
            'year': result.get('ProductionYear'),
            'plot': api.getOverview(result),
            'director': people.get('Director'),
            'writer': people.get('Writer'),
            'mpaa': api.getMpaa(result),
            'genre': api.getGenre(result),
            'studio': " / ".join(studios),
            'aired': api.getPremiereDate(result),
            'rating': result.get('CommunityRating'),
            'votes': result.get('VoteCount')
        }

        if "Episode" in type:
            # Only for tv shows
            thumbId = result.get('SeriesId')
            season = result.get('ParentIndexNumber', -1)
            episode = result.get('IndexNumber', -1)
            show = result.get('SeriesName', "")

            metadata['TVShowTitle'] = show
            metadata['season'] = season
            metadata['episode'] = episode

        listItem.setProperty('IsPlayable', 'true')
        listItem.setProperty('IsFolder', 'false')
        listItem.setLabel(metadata['title'])
        listItem.setInfo('video', infoLabels=metadata)

        # Set artwork for listitem
        self.setArt(listItem, 'poster', API().getArtwork(result, "Primary"))
        self.setArt(listItem, 'tvshow.poster',
                    API().getArtwork(result, "SeriesPrimary"))
        self.setArt(listItem, 'clearart', API().getArtwork(result, "Art"))
        self.setArt(listItem, 'tvshow.clearart',
                    API().getArtwork(result, "Art"))
        self.setArt(listItem, 'clearlogo', API().getArtwork(result, "Logo"))
        self.setArt(listItem, 'tvshow.clearlogo',
                    API().getArtwork(result, "Logo"))
        self.setArt(listItem, 'discart', API().getArtwork(result, "Disc"))
        self.setArt(listItem, 'fanart_image',
                    API().getArtwork(result, "Backdrop"))
        self.setArt(listItem, 'landscape', API().getArtwork(result, "Thumb"))
示例#8
0
    def clanReport(self, ID):
        dt = Data()
        api = API()
        ut = Util()
        stats = Stats()

        curtime = ut.getGMTTime()
        clanlist = dt.read('', 'ClanList')
示例#9
0
def main():
    # get args
    parser = argparse.ArgumentParser(description='Facial recognition')
    parser.add_argument('--camera',
                        help='Camera device number.',
                        type=int,
                        default=0)
    parser.add_argument('--api', help='Base address for the API')
    parser.add_argument('--frame',
                        help='Picture path if you do not want to use the cam')
    parser.add_argument(
        '--debug',
        help=
        'Boolean if you want to send hardcoded picture to test the server handling',
        action='store_true')

    args = parser.parse_args()
    username = os.environ['wiface_username']
    password = os.environ['wiface_password']
    creds = User(username, password)
    MyAPI = API(creds, args.api)

    if args.debug and args.frame is not None:
        TestWithoutOpenCV(args.frame, MyAPI)
        return

    if args.frame is not None:
        frame = cv.imread(args.frame)
        process_frame(frame, MyAPI)

    else:
        camera_device = args.camera
        # Read the video stream
        cam = cv.VideoCapture(camera_device)
        # setting the buffer size and frames per second, to reduce frames in buffer
        cam.set(cv.CAP_PROP_BUFFERSIZE, 1)
        cam.set(cv.CAP_PROP_FPS, 2)

        if not cam.isOpened:
            print('--(!)Error opening video capture')
            exit(0)

        while True:
            frame = {}
            # calling read() twice as a workaround to clear the buffer.
            cam.read()
            cam.read()
            ret, frame = cam.read()
            if frame is None:
                print('--(!) No captured frame -- Break!')
                break

            process_frame(frame, MyAPI)

        # When everything done, release the capture
        cam.release()
        cv.destroyAllWindows()
示例#10
0
 def __get_apis(self):
     apis = []
     for instance in self.__instances:
         endpoint = "http://" + instance["hostname"] + ":5000"
         host = "bwapi"
         if "API_SERVER_NAME" in instance["env"]:
             host = instance["env"]["API_SERVER_NAME"]
         apis.append(API(endpoint, host=host))
     return apis
示例#11
0
 def getClanData(self, clanID):
     api = API()
     clantag = str(api.getClanTag(clanID))
     temp = d.getMostRecent(clantag)
     tempdata = d.read(clantag, str(temp))
     data = []
     for i in tempdata:
         val = float(i[0])
         data.append(val)
     return data
示例#12
0
    def Init(self, teams):
        for team in teams:
            self.add_team(team)

        # рандомим места для баз, размещаем их там и инициализируем
        coord_for_bases = sample(self.obj_by_coord, len(teams))
        for base, coord in zip(self.teams_by_base, coord_for_bases):
            API_for_setup = API(world=self)
            API_for_setup.Init(base)
            base.Init(API=API_for_setup)
            self.set_obj(obj=base, coord=coord)
示例#13
0
def ML():

    tfidfconverter = load("tfidfconverter.joblib")
    sentiment_regression_classifier = load(
        "sentiment_regression_classifier.joblib")

    tweet_df = API()
    ##trump_df=pd.read_csv("Trump_tweets_scraped.csv")

    #cleaning up the trump tweets:
    tweet_text = tweet_df['Tweet Text'].to_list()
    edited_text = []
    sentiment_list = []

    #Lowercase tweets
    for tweet in range(0, len(tweet_text)):
        #lower case
        #removing speocial cahracters
        edited_tweet = re.sub(r'\W', ' ', str(tweet_text[tweet]))

        # remove sinflue
        edited_tweet = re.sub(r'\s+[a-zA-Z]\s+', ' ', edited_tweet)

        # Remove single characters from the start
        edited_tweet = re.sub(r'\^[a-zA-Z]\s+', ' ', edited_tweet)

        # Substituting multiple spaces with single space
        edited_tweet = re.sub(r'\s+', ' ', edited_tweet, flags=re.I)

        # Removing prefixed 'b'
        edited_tweet = re.sub(r'^b\s+', '', edited_tweet)

        #removing stopwords tweets

        edited_tweet = edited_tweet.lower()

        edited_text.append(edited_tweet)

        sentiment_trump = sentiment_regression_classifier.predict(
            tfidfconverter.transform([edited_tweet]).toarray())
        sentiment_list.append(sentiment_trump)

    sentiment_list_edited = []

    for item in sentiment_list:
        if "positive" in item:
            sentiment_list_edited.append("positive")
        else:
            sentiment_list_edited.append("negative")

    tweet_df["sentiment"] = sentiment_list_edited

    return tweet_df
示例#14
0
    def __init__(self):
        
        self.status = SS.startup
        self.file(SE.notify, "Initalizing MCO...")

        # Configuration
        self.file(SE.notify, "Loading configuration")
        self.config = Config('./config/config.json', defaultConfig)

        # Controller
        self.file(SE.notify, "Loading controller")
        self.controller = Config('./config/controller.json', defaultController)

        # Set refresh rate
        self.sleepPerCycle = 1/self.config.get("refreshesPerSecond")

        # LogMonitor
        self.file(SE.notify, "Loading log monitor")
        self.logger = LogMonitor(
            self.config.get("logFolder"), 
            self.config.get("ownUsername"), 
            self.config.get("debug")["Logs"]
        )
        self.status = SS.oldLogs
        self.file(SE.notify, "Loading old logs (if any)")
        self.logger.tick(True)
        self.logger.tick(True)
        self.logger.resetExposed()
        self.status = SS.startup
        self.file(SE.notify, "Loaded old logs")

        # API
        self.file(SE.notify, "Loading API")
        self.api = API(
            self.config.get("token"), 
            int(self.config.get("threads")) - 1,
            self.config.get("debug")["API"]
        )

        self.api.printHypixelStats()
        self.api.printMinecraftStats()

        # CommandSender
        self.file(SE.notify, "Loading Command Sender")
        self.commandSender = CommandSender(self.config.get("commandCooldown"))

        # Init GUI
        self.file(SE.notify, "Loading GUI")
        #self.GUI = GUI(800, 600, "1.0", ["a", "b", "c"], {})
        #self.GUI = GUI()
        # Update status
        self.status = SS.waiting
        self.file(SE.notify, "Finished initializing")
示例#15
0
 def run(self):
     # Instancia del juego
     self.size()
     api = API(self.sizev)
     sudoku = Sudoku(api.Table(), self.sizev)
     while not sudoku.is_over():
         print(sudoku.showTable())
         check, error_message = sudoku.playing(self.getValues())
         if not check:
             print(error_message)
     print("\n\nFelicitaciones!!!!")
     print("Terminaste el juego de Sudoku\n\n")
     print(sudoku.showTable())
示例#16
0
    def addPlaylistItem(self, playlist, item, server, userid):

        id = item.get("Id")
        
        playurl = PlayUtils().getPlayUrl(server, id, item)
        utils.logMsg("PlayBackUtils", "Play URL: " + playurl)    
        thumbPath = API().getArtwork(item, "Primary")
        listItem = xbmcgui.ListItem(path=playurl, iconImage=thumbPath, thumbnailImage=thumbPath)
        self.setListItemProps(server, id, listItem, item)

        WINDOW = xbmcgui.Window(10000)

        username = WINDOW.getProperty('currUser')
        userid = WINDOW.getProperty('userId%s' % username)
        server = WINDOW.getProperty('server%s' % username)

        # Can not play virtual items
        if (item.get("LocationType") == "Virtual") or (item.get("IsPlaceHolder") == True):
        
            xbmcgui.Dialog().ok(self.language(30128), self.language(30129))
            return False
            
        else:
        
            watchedurl = "%s/mediabrowser/Users/%s/PlayedItems/%s" % (server, userid, id)
            positionurl = "%s/mediabrowser/Users/%s/PlayingItems/%s" % (server, userid, id)
            deleteurl = "%s/mediabrowser/Items/%s" % (server, id)

            # set the current playing info
            WINDOW = xbmcgui.Window( 10000 )
            WINDOW.setProperty(playurl + "watchedurl", watchedurl)
            WINDOW.setProperty(playurl + "positionurl", positionurl)
            WINDOW.setProperty(playurl + "deleteurl", "")
            
            if item.get("Type") == "Episode" and addon.getSetting("offerDelete")=="true":
               WINDOW.setProperty(playurl + "deleteurl", deleteurl)
        
            WINDOW.setProperty(playurl + "runtimeticks", str(item.get("RunTimeTicks")))
            WINDOW.setProperty(playurl+"type", item.get("Type"))
            WINDOW.setProperty(playurl + "item_id", id)
            
            if (item.get("Type") == "Episode"):
                WINDOW.setProperty(playurl + "refresh_id", item.get("SeriesId"))
            else:
                WINDOW.setProperty(playurl + "refresh_id", id)            
            
            utils.logMsg("PlayBackUtils", "PlayList Item Url : " + str(playurl))
            
            playlist.add(playurl, listItem)
            
            return True
示例#17
0
async def postValues(clanname,start,end):
    start_time=time.time()
    embed = discord.Embed()
    #TODO: Check member size to determine if multiple embeds are required
    p = Post()
    a = API()
    u = Util()

    embed = p.createEmbed(clanname,embed,start,end)
    postname = "["+str(clanname)+"] "+a.getClanName(a.getClanID(clanname))+" Statistics"
    embed.set_author(name=postname, icon_url=client.user.default_avatar_url)
    runtime = "Runtime: "+str(u.round3(time.time()-start_time))+" Seconds"
    embed.set_footer(text=str(runtime))
    return embed
示例#18
0
    def calcOverallPR(self, playerID):  #player PR calculation
        """
        Parameters:
        playerID: WG player ID

        Returns:
        PR value of player (float)
        """

        a = API()
        d = Data()
        u = Util()

        eDmg = 0
        eWin = 0
        eKil = 0

        aDmg = 0
        aWin = 0
        aKil = 0

        btot = 0

        data = a.getPlayerShipStats(playerID)
        for shipdata in data:
            #print(shipdata)
            b = a.getShipBattles(shipdata)
            id = a.getShipID(shipdata)
            expectedstats = d.getShipStats(id)
            #print(expectedstats)

            if expectedstats is not None:
                eDmg += float(expectedstats[0]) * b
                eKil += float(expectedstats[1]) * b
                eWin += float(expectedstats[2]) * b / 100

                aDmg += a.getShipDmg(shipdata)
                aKil += a.getShipKills(shipdata)
                aWin += a.getShipWins(shipdata)

                btot += b
            #print(b)
            #print(str(aWin))

        dmg = self.PRnormDmg(aDmg, eDmg)
        kills = self.PRnormKil(aKil, eKil)
        wins = self.PRnormWin(aWin, eWin)
        #print(str(dmg)+" "+str(kills)+" "+str(wins))
        return (700 * dmg + 300 * kills + 150 * wins)
 def __init__(self, farmwarename):
     self.farmwarename = farmwarename
     self.input_sequence_init_dic = {}
     self.input_sequence_beforemove_dic = {}
     self.input_sequence_aftermove_dic = {}
     self.input_sequence_end_dic = {}
     self.input_title = get_config_value(self.farmwarename,
                                         'title',
                                         value_type=str)
     self.input_filter_min_x = get_config_value(self.farmwarename,
                                                'filter_min_x',
                                                value_type=str)
     self.input_filter_max_x = get_config_value(self.farmwarename,
                                                'filter_max_x',
                                                value_type=str)
     self.input_filter_min_y = get_config_value(self.farmwarename,
                                                'filter_min_y',
                                                value_type=str)
     self.input_filter_max_y = get_config_value(self.farmwarename,
                                                'filter_max_y',
                                                value_type=str)
     self.input_sequence_init = get_config_value(self.farmwarename,
                                                 'sequence_init',
                                                 value_type=str).split(",")
     self.input_sequence_beforemove = get_config_value(
         self.farmwarename, 'sequence_beforemove',
         value_type=str).split(",")
     self.input_sequence_aftermove = get_config_value(
         self.farmwarename, 'sequence_aftermove', value_type=str).split(",")
     self.input_sequence_end = get_config_value(self.farmwarename,
                                                'sequence_end',
                                                value_type=str).split(",")
     self.input_offset_x = get_config_value(self.farmwarename,
                                            'offset_x',
                                            value_type=int)
     self.input_offset_y = get_config_value(self.farmwarename,
                                            'offset_y',
                                            value_type=int)
     self.input_default_z = get_config_value(self.farmwarename,
                                             'default_z',
                                             value_type=int)
     self.input_default_speed = get_config_value(self.farmwarename,
                                                 'default_speed',
                                                 value_type=int)
     self.input_debug = get_config_value(self.farmwarename,
                                         'debug',
                                         value_type=int)
     self.api = API(self.input_debug)
示例#20
0
    def __init__(self):
        # Initialize variables to None
        self.host = None
        self.port = None
        self.chan = None
        self.nick = None
        self.auth = None
        capability = ["tags"]
        self.access_token = None
        self.cooldown = 0
        self.last_command_time = 0
        self.allowed_ranks = []
        self.allowed_users = []
        self.custom_prompt = ""
        with open("blacklist.txt", "r") as f:
            censor = [l.replace("\n", "") for l in f.readlines()]
            self.pf = ProfanityFilter(custom_censor_list=censor)

        # Create an Api instance to connect to AI Dungeon 2.
        logging.debug("Creating API instance.")
        self.api = API(self)

        # Update variables
        logging.debug("Setting settings.")
        Settings(self)

        # Create a Database instance for storing which users do not want to be whispered
        logging.debug("Creating Database instance.")
        self.db = Database(self.chan)

        # Get the session_id
        self.session_id = self.api.get_session_id()

        # Create Websocket object
        logging.debug("Creating TwitchWebsocket object.")
        self.ws = TwitchWebsocket(host=self.host, 
                                  port=self.port,
                                  chan=self.chan,
                                  nick=self.nick,
                                  auth=self.auth,
                                  callback=self.message_handler,
                                  capability=capability,
                                  live=True)
        # Start a blocking websocket connection
        logging.debug("Starting Websocket connection.")
        self.ws.start_bot()
示例#21
0
 def daftaradmin(self, pegawaiid, nama):
     hasil = False
     status = None
     statusTemplate = []
     try:
         if not self.cekpegawai(pegawaiid):
             #Proses Pendaftaran
             loadtemplate = API().TEMPLATE(pegawaiid)
             rootUser = self.do.SetAdminUser(nama, pegawaiid)
             if rootUser is not None:
                 for row in rootUser.findall('Row'):
                     status = row.find('Information').text
                 if status == 'Successfully!':
                     for templateid in range(0, len(loadtemplate)):
                         size = loadtemplate[templateid]['size']
                         valid = loadtemplate[templateid]['valid']
                         finger_template = loadtemplate[templateid][
                             'templatefinger']
                         rootTemplate = self.do.SetUserTemplate(
                             pegawaiid, templateid, size, valid,
                             finger_template)
                         if rootTemplate is not None:
                             for row in rootTemplate.findall('Row'):
                                 statusTemplate.append(
                                     row.find('Information').text)
                         else:
                             hasil = False
                     if statusTemplate:
                         if statusTemplate[
                                 0] == 'Successfully!' and statusTemplate[
                                     1] == 'Successfully!':
                             hasil = True
                         else:
                             hasil = False
                     else:
                         hasil = False
             else:
                 hasil = False
         else:
             hasil = True
     finally:
         if hasil:
             return hasil
         else:
             gagal = self.hapuspegawai(pegawaiid)
             return hasil
示例#22
0
def process_row(rw):
    logging.debug("process.process_row() start")

    fromdate = rw[0].strip()
    todate = rw[1].strip()
    isin = rw[2].strip()
    transactions = rw[3].strip()
    turnover = rw[4].strip()
    line = 0

    try:
        api = API()  # TODO: Maybe move this up
        sentence = api.handle_response(isin)
        for collection in sentence:
            # Original ESMA values including ISIN
            print(fromdate,
                  ",",
                  todate,
                  ",",
                  isin,
                  ",",
                  transactions,
                  ",",
                  turnover,
                  ",",
                  end="")
            line += 1

            if (sentence == "No identifier found."):
                # This ISIN is unknown, so print "None", and exit loop
                print(
                    "None, None, None, None, None, None, None, None, None, None, None, None, "
                )
                raise Exception(sentence)
            else:
                # Go through received data, and print each line
                for key, valuex in collection.items():
                    value_no_comma = kill_comma(str(valuex))
                    print(value_no_comma, ",", end="")
                print("")

    except Exception as e:
        ex = str(e)
        logging.error(f"Exception: {ex} at line: {line}")

    logging.debug("process.process_row() end")
示例#23
0
def initialize(playerID):
    global _api
    global _initCallbacks
    if not _api:
        from API import API
        _api = API(playerID)
        import Settings
        settings = Settings.g_instance.getVoipSettings()
        _api.updateSettings(voiceActivationLevel=settings['micVolume'], voiceVolume=settings['masterVolume'], muffledMasterVolume=settings['fadeVolume'], autoConnectArenaChannel=settings['autoConnectArenaChannel'], captureDevice=settings['captureDevice'])
        _api.enabled = settings['isVoipEnabled']
        for func in _initCallbacks:
            func()

        _initCallbacks = []
    elif playerID != _api.playerID:
        LOG_ERROR('VOIP.initialize failed: attempt to change player ID from {0} to {1}'.format(_api.playerID, playerID))
    else:
        _api._initialize()
示例#24
0
def userPreferences():
    doUtils = DownloadUtils()
    addonSettings = xbmcaddon.Addon(id='plugin.video.emby')
    userPreferencesPage = UserPreferences(
        "script-emby-kodi-UserPreferences.xml",
        addonSettings.getAddonInfo('path'), "default", "1080i")
    url = "{server}/mediabrowser/Users/{UserId}"
    result = doUtils.downloadUrl(url)
    configuration = result[u'Configuration']
    userPreferencesPage.setConfiguration(configuration)
    userPreferencesPage.setName(result[u'Name'])
    userPreferencesPage.setImage(API().getUserArtwork(result, "Primary"))

    userPreferencesPage.doModal()
    if userPreferencesPage.isSave():
        url = "{server}/mediabrowser/Users/{UserId}/Configuration"
        postdata = userPreferencesPage.getConfiguration()
        doUtils.downloadUrl(url, postBody=postdata, type="POST")
示例#25
0
class Root:
    def __init__(self):
        self.dal = DAL("../bin/settings.ini")

    api = API(DAL("../bin/settings.ini"))

    # Route("/")
    @cherrypy.expose()
    def index(self):
        game_list_links = ""
        game_list = self.dal.get_games()

        for game in game_list:
            game_list_links += "<a href='/gamecharacters/{id}'>{name}</a><br/>".format(
                id=game["id"], name=game["name"])

        game_list_links += "<a href='/add_page'>Add Data</a>"

        return make_page("Select a game!", game_list_links)

    # Route("/gamecharacters/{game_id}
    @cherrypy.expose()
    def gamecharacters(self, game_id):
        game = self.dal.get_game(game_id)
        page_title = game.name

        return_str = """
        <body class='{game_class}'>
            <div id='root' class='root'></div>
            <script>
                var gameId = {game_id}
            </script>
        </body>
        """.format(game_class=game.name.replace(" ", ""), game_id=game_id)

        return make_page(page_title, return_str, react_page=True)

    # Route("/add_page/")
    @cherrypy.expose()
    def add_page(self):
        page_title = "Add Data"
        body = """<div id="reactForm" />"""
        return make_page(page_title, body, react_page=True)
示例#26
0
def notify_difference(item, original_text):
    print("#######################################")
    print(f"            {item.get_model()} STOCK ALERT           ")
    print(f"           {time.ctime()}")
    print(
        f"Button has changed from {original_text} to {item.get_button_text()} for {item.get_name()}."
    )
    if "newegg" in item.get_url():
        print(
            f"Add it to your cart: https://secure.newegg.com/Shopping/AddToCart.aspx?ItemList={item.get_item_id()}&Submit=ADD&target=NEWEGGCART\n\n"
        )
        webbrowser.open_new(
            f"https://secure.newegg.com/Shopping/AddToCart.aspx?ItemList={item.get_item_id()}&Submit=ADD&target=NEWEGGCART"
        )
    print(f"Current price: {item.get_price()}.")
    print(f"Please visit {item.get_url()} for more information.")
    webbrowser.open_new(item.get_url())
    print("#######################################")
    print("")
    print("")

    if Util.get_tweepy_enabled():
        api = API()
        auth = tweepy.OAuthHandler(api.get_api_key(), api.get_api_secret())
        auth.set_access_token(api.get_access_token(),
                              api.get_access_token_secret())

        api = tweepy.API(auth)

        tweet = f"{item.get_model()} STOCK ALERT\n\n"
        tweet += f"{item.get_name()[0:19].rstrip()}...\n"
        tweet += f"{item.get_price()}\n\n"
        if "newegg" in item.get_url():
            tweet += f"Add to Cart: https://secure.newegg.com/Shopping/AddToCart.aspx?ItemList={item.get_item_id()}&Submit=ADD&target=NEWEGGCART\n\n"
        tweet += f"More Info: {item.get_url()}"

        try:
            api.update_status(tweet)
        except tweepy.error.TweepError as te:
            if te.api_code == 187:
                # duplicate tweet
                pass
示例#27
0
    def setUserPref(self):

        player = Player()
        server = self.getServer()
        userId = self.getUserId()

        url = "{server}/mediabrowser/Users/{UserId}?format=json"
        result = self.doUtils.downloadUrl(url)

        # Set user image for skin display
        self.WINDOW.setProperty("EmbyUserImage",
                                API().getUserArtwork(result, "Primary"))

        # Load the resume point from Emby and set as setting
        url = "{server}/mediabrowser/System/Configuration?format=json"
        result = self.doUtils.downloadUrl(url)

        utils.settings('markPlayed', value=str(result['MaxResumePct']))

        return True
示例#28
0
    async def saveExpValues(self):
        dt = Data()
        api = API()

        temp = api.expectedValues()
        time = temp['time']
        #print(temp)
        out = []

        def save(shipid, shipdata):

            lst = []
            lst.append(shipid)
            #print(shipid) #this function takes a while so print ship ID's to keep us occupied. The dark is scary
            #print(shipdata)
            name = api.getShipName(shipid)
            if name is None:
                lst.append("None")
            else:
                lst.append(name)
            if (len(shipdata) != 0):
                lst.append(shipdata['average_damage_dealt'])
                lst.append(shipdata['average_frags'])
                lst.append(shipdata['win_rate'])
            print(lst)
            out.append(lst)

        from concurrent.futures import ThreadPoolExecutor
        executor = ThreadPoolExecutor(max_workers=5)
        loop = asyncio.get_event_loop()

        futures = [
            loop.run_in_executor(executor, save, ship, data)
            for ship, data in temp['data'].items()
        ]
        await asyncio.wait(futures)

        #print(out)
        dt.write('wowsnumbers', (str(time) + '.csv').strip(), out)
        return 0
示例#29
0
    def __init__(self,clan,name):
        #TODO:get Player 'name' Data from WG API
        api = API()
        dt = Data()

        self.playerName=name
        self.playerID=api.getPlayerID(name)

        #TODO:If directory playerclan/playername does not exist and contains no files, then pull data directly from wg api without saving (temp lookup)
        temppath = str(str(clan).strip()+"/"+str(name).strip())
        filestring = dt.getSMostRecent(temppath)
        #print(filestring)
        filestring = filestring.replace("'",'"')
        filestring = filestring.replace("None",'0')
        filestring = filestring.replace("False",'0')
        #print(filestring)
        #print(filestring[189])
        lst = json.loads(filestring)
        print(lst)
        print()

        stats = lst['statistics']
        self.battles = stats['battles']
        self.distance = stats['distance']

        stats = stats['pvp']

        for i in stats:
            print(i)
            print(stats[i])


        for i in lst:
            #print(str(i)+": "+str(lst[i]))
            break
        #print(lst['statistics'])

        #print(Player.calcwr(self.wins,self.losses))
        pass
示例#30
0
    def createEmbed(self, clantag, embed, start, end):
        api = API()
        d = Data()
        u = Util()
        players = api.getClanMembers(api.getClanID(clantag))
        #print(players[start:])
        templen = 0
        if (end > len(players)):
            end = len(players)
        for i in players[start:end]:
            name = api.getPlayerName(i)
            bt = api.getPlayerBattles(i)
            if (bt == 0):
                break
            rpath = str(clantag) + "/" + str(name)
            #print(rpath)
            temp = d.read(rpath, d.getMostRecent(rpath))
            postname = api.getPlayerName(i) + "   (ID: " + str(i) + ")"

            cur = []

            cur.append(u.round3(float(temp[2][0])))
            cur.append(int(temp[3][0]))
            cur.append(float(temp[4][0]))
            cur.append(float(temp[5][0]))
            cur.append(float(temp[6][0]))

            wdelta = self.getWeekDeltas(rpath)
            mdelta = self.getMonthDeltas(rpath)

            ret = self.formatString(cur, wdelta, mdelta)
            templen += len(ret)
            #print(len(ret))
            #print(ret)
            embed.add_field(name=postname, value=ret, inline=False)

        #print(templen)
        return embed