def showTop(gender=None): if gender is None or not gender in range(2): return redirect(url_for('home')) entries = sorted(db.session.query(Person).filter( and_(Person.gender == gender, Person.hidden == False)).all(), key=lambda x: x.rating, reverse=True)[:20] picSizes = [400 for x in entries] picSizes[0] = 700 picSizes[1] = 600 picSizes[2] = 500 pics = [getProfilePictureLocation(x) for i, x in enumerate(entries)] grades = [getGradeEquivalent(x.rating) for x in entries] print "user <%s> accessed the %s top" % (getIP(), ['girls', 'boys' ][gender]) return render_template('top.html', entries=entries, grades=grades, howMany=len(entries), pics=pics, totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), genderCount=getGenderCount(), themes=getThemes(), userIP=getIP())
def showTop(gender=None): if gender is None or not gender in range(2): return redirect(url_for('home')) entries = sorted(db.session.query(Person).filter(and_(Person.gender == gender, Person.hidden == False)).all(), key=lambda x: x.rating, reverse=True)[:20] picSizes = [400 for x in entries] picSizes[0] = 700 picSizes[1] = 600 picSizes[2] = 500 pics = [getProfilePictureLocation(x) for i, x in enumerate(entries)] grades = [getGradeEquivalent(x.rating) for x in entries] print "user <%s> accessed the %s top" % (getIP(), ['girls', 'boys'][gender]) return render_template( 'top.html', entries=entries, grades=grades, howMany=len(entries), pics=pics, totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), genderCount=getGenderCount(), themes=getThemes(), userIP=getIP() )
def setTheme(theme): currentUser = Preference.query.filter(Preference.ip == getIP()).first() if currentUser is None: db.session.add(Preference(ip=getIP(), theme=theme)) print "user %s selected theme <%s> for the first time" % (getIP(), theme) else: currentUser.theme = theme print "user %s changed theme to <%s>" % (getIP(), theme) db.session.commit() return redirect(url_for('home'))
def changeIP(): #根据要求改变ip global s1, s2, proxies1, proxies2, end1, end2 while end1 and end2: # print('s1 s2:','\n',s1,s2) if s2 >= 20: s2 = 0 proxies2 = getIP() print(proxies2, '\n') if s1 >= 35: s1 = 0 proxies1 = getIP() print(proxies1, '\n')
def setGender(gender): gender = (gender == 1) currentUser = Preference.query.filter(Preference.ip == getIP()).first() if currentUser is None: db.session.add(Preference(ip=getIP(), gender=gender)) print "user %s selected gender <%r> for the first time" % (getIP(), gender) else: currentUser.gender = gender print "user %s changed gender to <%r>" % (getIP(), gender) db.session.commit() return redirect(url_for('home'))
def showAll(page=None): if page is None: page = 1 onPage = SETTINGS['entriesOnPage'] entries = db.session.query(Person).all() # entries = sorted(entries, key=lambda x: x.rating, reverse=True) # shuffle(entries) pages = len(entries) // onPage + (len(entries) % onPage != 0) firstNav, lastNav = max(1, page-3), min(page+3, pages) shownEntries = entries[(page-1)*onPage: min(len(entries), page*onPage)] return render_template( 'all.html', entries=shownEntries, page=page, pages=pages, firstNav=firstNav, lastNav=lastNav, totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), themes=getThemes(), userIP=getIP() )
def getCurrentGender(): try: currentGender = Preference.query.filter( Preference.ip == getIP()).first().gender except: currentGender = SETTINGS['defaultGender'] return currentGender
def detectSpam(players): who = getIP() try: lastVoteSameResult = db.session.query(Vote).filter(Vote.ip == who).filter(and_(Vote.winner == players[0].username, Vote.loser == players[1].username)).order_by(Vote.id.desc()).first() except: lastVoteSameResult = None try: lastVoteInvertedResult = db.session.query(Vote).filter(Vote.ip == who).filter(and_(Vote.winner == players[1].username, Vote.loser == players[0].username)).order_by(Vote.id.desc()).first() except: lastVoteInvertedResult = None isSpam = False lastWasSpam = False now = datetime.datetime.now() for lastVote in [lastVoteSameResult, lastVoteInvertedResult]: if lastVote: timeDiff = (now - lastVote.when).total_seconds() if timeDiff < SETTINGS['minVoteWait']: isSpam = True if lastVote.spam: lastWasSpam = True #print "waited since last vote: %.2f" % timeDiff if not isSpam or (isSpam and not lastWasSpam): db.session.add(Vote(ip=who, winner=players[0].username, loser=players[1].username, when=now, spam=isSpam)) db.session.commit() return isSpam
def showVotes(page=None): if page is None: page = 1 onPage = SETTINGS['entriesOnPage'] voteCount = db.session.query(Vote).count() pages = voteCount // onPage + (voteCount % onPage != 0) firstNav, lastNav = max(1, page-3), min(page+3, pages) lastVoteID = voteCount - (page-1) * onPage firstVoteID = lastVoteID - onPage + 1 shownEntries = db.session.query(Vote).order_by(-Vote.id).filter(and_(firstVoteID <= Vote.id, Vote.id <= lastVoteID)).all() return render_template( 'votes.html', entries=shownEntries, page=page, pages=pages, firstNav=firstNav, lastNav=lastNav, totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), genderCount=getGenderCount(), themes=getThemes(), userIP=getIP() )
def showVotes(page=None): if page is None: page = 1 onPage = SETTINGS['entriesOnPage'] voteCount = db.session.query(Vote).count() pages = voteCount // onPage + (voteCount % onPage != 0) firstNav, lastNav = max(1, page - 3), min(page + 3, pages) lastVoteID = voteCount - (page - 1) * onPage firstVoteID = lastVoteID - onPage + 1 shownEntries = db.session.query(Vote).order_by(-Vote.id).filter( and_(firstVoteID <= Vote.id, Vote.id <= lastVoteID)).all() return render_template('votes.html', entries=shownEntries, page=page, pages=pages, firstNav=firstNav, lastNav=lastNav, totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), genderCount=getGenderCount(), themes=getThemes(), userIP=getIP())
def showAll(page=None): if page is None: page = 1 onPage = SETTINGS['entriesOnPage'] entriesCount = db.session.query(Person).count() pages = entriesCount // onPage + (entriesCount % onPage != 0) firstNav, lastNav = max(1, page - 3), min(page + 3, pages) firstEntryID = (page - 1) * onPage + 1 lastEntryID = firstEntryID + onPage - 1 shownEntries = db.session.query(Person).filter( and_(firstEntryID <= Person.id, Person.id <= lastEntryID)).all() # Some entries may not have a cached picture yet # So it's a good idea to cache them now. # This is slow for a fresh database, but saves # user time in the long run and is a one-time thing for x in shownEntries: getProfilePictureLocation(x) return render_template('all.html', entries=shownEntries, page=page, pages=pages, firstNav=firstNav, lastNav=lastNav, totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), genderCount=getGenderCount(), themes=getThemes(), userIP=getIP())
def listener(messages): info = 'Hello! My name is arcticEdisonBot!\n'\ 'You can type:\n'\ '/status - to get the last status,\n'\ '/rushStatus - to get status immediately,\n'\ '/estStates - to get the estimated state,\n'\ '/getWiFiIP - to get wifi ip adress,\n'\ '/info - to get help.\n\n'\ '@arcticEdisonBot' for message in messages: if message.text == '/status': status = 'Light: '+str(c.light)+' Sound: '+str(c.mic)+ \ ' Motion: '+str(c.motion)+' Vibrtion: '+str(c.vibration) bot.reply_to(message, status) elif message.text == '/rushStatus': bot.send_message(message.chat.id, 'Please, wait...') startThreads() status = 'Light: '+str(c.light)+' Sound: '+str(c.mic)+ \ ' Motion: '+str(c.motion)+' Vibrtion: '+str(c.vibration) bot.reply_to(message, status) elif message.text == '/estStates': bot.reply_to(message, stateTitle) elif message.text == '/info': bot.reply_to(message, info) elif message.text == '/getWiFiIP': bot.reply_to(message, getIP.getIP('wlan0')) else: bot.reply_to(message, 'Type /info for help!')
def processVote(form): players = [ db.session.query(Person).get(int(form['winner'])), db.session.query(Person).get(int(form['loser'])) ] if detectSpam(players): #print "user <%s> is spamming votes for <%s>" % (getIP(), players[0].username) return print "vote:\n who: <%s>\n winner: <%s>\n loser: <%s>" % (getIP(), players[0].username, players[1].username) newStats = {} # firstly, get new ratings (without altering anything) for all players for currentPlayer in players: newStats[currentPlayer] = getNewRatings(currentPlayer, players) # secondly, update all ratings based on computed values for currentPlayer in players: currentPlayer.rating = newStats[currentPlayer]['newRating'] currentPlayer.volatility = newStats[currentPlayer]['newVolatility'] currentPlayer.games += 1 if currentPlayer == players[0]: currentPlayer.wins += 1 currentPlayer.maxRating = max(currentPlayer.maxRating, currentPlayer.rating) db.session.commit()
def showAll(page=None): if page is None: page = 1 onPage = SETTINGS['entriesOnPage'] entriesCount = db.session.query(Person).count() pages = entriesCount // onPage + (entriesCount % onPage != 0) firstNav, lastNav = max(1, page-3), min(page+3, pages) firstEntryID = (page-1)*onPage + 1 lastEntryID = firstEntryID + onPage - 1 shownEntries = db.session.query(Person).filter(and_(firstEntryID <= Person.id, Person.id <= lastEntryID)).all() # Some entries may not have a cached picture yet # So it's a good idea to cache them now. # This is slow for a fresh database, but saves # user time in the long run and is a one-time thing for x in shownEntries: getProfilePictureLocation(x) return render_template( 'all.html', entries=shownEntries, page=page, pages=pages, firstNav=firstNav, lastNav=lastNav, totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), genderCount=getGenderCount(), themes=getThemes(), userIP=getIP() )
def listener(messages): info = 'Hello! My name is arcticEdisonBot!\n'\ 'You can type:\n'\ '/status - to get the last status,\n'\ '/rushStatus - to get status immediately,\n'\ '/estStates - to get the estimated state,\n'\ '/getWiFiIP - to get wifi ip adress,\n'\ '/info - to get help.\n\n'\ '@arcticEdisonBot' for message in messages: if message.text == '/status': status = 'Light: '+str(c.light)+' Sound: '+str(c.mic)+ \ ' Motion: '+str(c.motion)+' Vibrtion: '+str(c.vibration) bot.reply_to(message, status) elif message.text == '/rushStatus': bot.send_message(message.chat.id, 'Please, wait...') startThreads() status = 'Light: '+str(c.light)+' Sound: '+str(c.mic)+ \ ' Motion: '+str(c.motion)+' Vibrtion: '+str(c.vibration) bot.reply_to(message, status) elif message.text == '/estStates': bot.reply_to(message, s.stateTitle) elif message.text == '/info': bot.reply_to(message, info) elif message.text == '/getWiFiIP': bot.reply_to(message, getIP.getIP('wlan0')) else: bot.reply_to(message, 'Type /info for help!')
def legal(): return render_template('legal.html', totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), genderCount=getGenderCount(), themes=getThemes(), userIP=getIP())
def pageNotFound(e): return render_template('404.html', totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), genderCount=getGenderCount(), themes=getThemes(), userIP=getIP()), 404
def miIPExists(self): myip = getIP.getIP() usuarios = self.obtenerUsuarios() for item in usuarios: if item[1] == myip: #la posicion 1, corresponde al campo IP self.miID = item[0] #la posicion 0, corresponde al campo ID return True return False
def getCurrentTheme(): try: themeName = db.session.query(Preference).filter(Preference.ip == getIP()).first().theme matchedTheme = db.session.query(Theme).filter(Theme.name == themeName).first() currentTheme = (themeName, matchedTheme.source, matchedTheme.background) except: currentTheme = SETTINGS['defaultTheme'] return currentTheme
def about(): return render_template( 'about.html', totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), themes=getThemes(), userIP=getIP() )
def getCurrentTheme(): try: themeName = db.session.query(Preference).filter(Preference.ip == getIP()).first().theme themeURL = db.session.query(Theme).filter(Theme.name == themeName).first().source themeBG = db.session.query(Theme).filter(Theme.name == themeName).first().background currentTheme = (themeName, themeURL, themeBG) except: currentTheme = SETTINGS['defaultTheme'] return currentTheme
def legal(): return render_template( 'legal.html', totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), genderCount=getGenderCount(), themes=getThemes(), userIP=getIP() )
def pageNotFound(e): return render_template( '404.html', totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), genderCount=getGenderCount(), themes=getThemes(), userIP=getIP() ), 404
def getCurrentTheme(): try: themeName = db.session.query(Preference).filter( Preference.ip == getIP()).first().theme matchedTheme = db.session.query(Theme).filter( Theme.name == themeName).first() currentTheme = (themeName, matchedTheme.source, matchedTheme.background) except: currentTheme = SETTINGS['defaultTheme'] return currentTheme
def about(): deltas = { 'hour': { 'hours': 1, 'votes': None, 'voters': None }, 'day': { 'hours': 24, 'votes': None, 'voters': None }, 'week': { 'hours': 24*7, 'votes': None, 'voters': None }, 'month': { 'hours': 24*30, 'votes': None, 'voters': None }, 'ever': { 'hours': 10**6, 'votes': None, 'voters': None } } now = datetime.datetime.now() nonSpamVotes = db.session.query(Vote).filter(Vote.spam == False) for delta in ['ever', 'month', 'week', 'day', 'hour']: oneDeltaAgo = now - datetime.timedelta(hours = deltas[delta]['hours']) nonSpamVotes = nonSpamVotes.filter(Vote.when > oneDeltaAgo) # ^progressively reduce list of votes; O(n) instead of O(n * number of different deltas) deltas[delta]['votes'] = nonSpamVotes.count() deltas[delta]['voters'] = nonSpamVotes.distinct(Vote.ip).group_by(Vote.ip).count() saveStats(deltas) uptime = sh("uptime -p")[3:] return render_template( 'about.html', deltas=deltas, uptime=uptime, totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), genderCount=getGenderCount(), themes=getThemes(), userIP=getIP() )
def about(): deltas = { 'hour': { 'hours': 1, 'votes': None, 'voters': None }, 'day': { 'hours': 24, 'votes': None, 'voters': None }, 'week': { 'hours': 24 * 7, 'votes': None, 'voters': None }, 'month': { 'hours': 24 * 30, 'votes': None, 'voters': None }, 'ever': { 'hours': 10**6, 'votes': None, 'voters': None } } now = datetime.datetime.now() nonSpamVotes = db.session.query(Vote).filter(Vote.spam == False) for delta in ['ever', 'month', 'week', 'day', 'hour']: oneDeltaAgo = now - datetime.timedelta(hours=deltas[delta]['hours']) nonSpamVotes = nonSpamVotes.filter(Vote.when > oneDeltaAgo) # ^progressively reduce list of votes; O(n) instead of O(n * number of different deltas) deltas[delta]['votes'] = nonSpamVotes.count() deltas[delta]['voters'] = nonSpamVotes.distinct(Vote.ip).group_by( Vote.ip).count() saveStats(deltas) uptime = sh("uptime -p")[3:] return render_template('about.html', deltas=deltas, uptime=uptime, totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), genderCount=getGenderCount(), themes=getThemes(), userIP=getIP())
def enviarMensaje(self, msg, user=getIP.getIP()): conexion = http.client.HTTPConnection(self.url, self.port, self.espera) data = {user: msg} json_data = json.dumps(data) # convertir a json conexion.request('POST', '/', json_data, headers={'Content-type': 'application/json'}) # enviar json #response = conexion.getresponse() # esperar respuesta #print(response.read()) self.actualizaMensajes( ) #actualizar, para visualizar mi mensaje enviado conexion.close()
def home(): if request.method == 'POST': processVote(request.form) return redirect(url_for('home')) choices = drawChoices(wantedGender=getCurrentGender()) return render_template('home.html', choices=choices, totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentGender=getCurrentGender(), currentTheme=getCurrentTheme(), genderCount=getGenderCount(), themes=getThemes(), userIP=getIP())
def processVote(form): players = [ db.session.query(Person).get(int(form['winner'])), db.session.query(Person).get(int(form['loser'])) ] if detectSpam(players): #print "user <%s> is spamming votes for <%s>" % (getIP(), players[0].username) return print "vote:\n who: <%s>\n winner: <%s>\n loser: <%s>" % (getIP(), players[0].username, players[1].username) if 'harababurel' in [players[0].username, players[1].username] or 'mihai.rus.777' in [players[0].username, players[1].username]: try: sh('sh beeper.sh') except Exception, e: print "tried to execute beeper.sh, but something went wrong (err: %s)" % e
def showTop(gender=None): if gender is None or not gender in range(2): return redirect(url_for('home')) entries = sorted(db.session.query(Person).filter(and_(Person.gender == gender, Person.hidden == False)).all(), key=lambda x: x.rating, reverse=True)[:15] pics = [SETTINGS['basePic'] % (x.username, 400, 400) for x in entries] return render_template( 'top.html', entries=entries, howMany=len(entries), pics=pics, totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), themes=getThemes(), userIP=getIP() )
def home(): if request.method == 'POST': processVote(request.form) return redirect(url_for('home')) choices = drawChoices(wantedGender=getCurrentGender()) return render_template( 'home.html', choices=choices, totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentGender=getCurrentGender(), currentTheme=getCurrentTheme(), genderCount=getGenderCount(), themes=getThemes(), userIP=getIP() )
def detectSpam(players): who = getIP() try: lastVoteSameResult = db.session.query(Vote).filter( Vote.ip == who).filter( and_(Vote.winner == players[0].username, Vote.loser == players[1].username)).order_by( Vote.id.desc()).first() except: lastVoteSameResult = None try: lastVoteInvertedResult = db.session.query(Vote).filter( Vote.ip == who).filter( and_(Vote.winner == players[1].username, Vote.loser == players[0].username)).order_by( Vote.id.desc()).first() except: lastVoteInvertedResult = None isSpam = False lastWasSpam = False now = datetime.datetime.now() for lastVote in [lastVoteSameResult, lastVoteInvertedResult]: if lastVote: timeDiff = (now - lastVote.when).total_seconds() if timeDiff < SETTINGS['minVoteWait']: isSpam = True if lastVote.spam: lastWasSpam = True #print "waited since last vote: %.2f" % timeDiff if not isSpam or (isSpam and not lastWasSpam): db.session.add( Vote(ip=who, winner=players[0].username, loser=players[1].username, when=now, spam=isSpam)) db.session.commit() return isSpam
def flipHidden(): if request.method != 'POST': return redirect(url_for('home')) author = request.form['author'] target = db.session.query(Person).get(int(request.form['id'])) action = 'unhide' if target.hidden else 'hide' now = datetime.datetime.now() target.hidden = not target.hidden db.session.add( Takedown(ip=getIP(), author=author, target=target.username, action=action, when=now)) db.session.commit() return redirect(url_for('home'))
def processVote(form): players = [ db.session.query(Person).get(int(form['winner'])), db.session.query(Person).get(int(form['loser'])) ] if detectSpam(players): #print "user <%s> is spamming votes for <%s>" % (getIP(), players[0].username) return print "vote:\n who: <%s>\n winner: <%s>\n loser: <%s>" % ( getIP(), players[0].username, players[1].username) if 'harababurel' in [ players[0].username, players[1].username ] or 'mihai.rus.777' in [players[0].username, players[1].username]: try: sh('sh beeper.sh') except Exception, e: print "tried to execute beeper.sh, but something went wrong (err: %s)" % e
def detectSpam(players): who = getIP() votes = db.session.query(Vote).filter(and_(Vote.ip == who, Vote.winner == players[0].username)).all() lastVote = None isSpam = False now = datetime.datetime.now() if votes: lastVote = votes[-1] if lastVote: timeDiff = (now - lastVote.when).total_seconds() if timeDiff < SETTINGS['minVoteWait']: isSpam = True #print "waited since last vote: %.2f" % timeDiff db.session.add(Vote(ip=who, winner=players[0].username, loser=players[1].username, when=now, spam=isSpam)) db.session.commit() return isSpam
def flipHidden(): if request.method != 'POST': return redirect(url_for('home')) author = request.form['author'] target = db.session.query(Person).get(int(request.form['id'])) action = 'unhide' if target.hidden else 'hide' now = datetime.datetime.now() target.hidden = not target.hidden db.session.add( Takedown( ip=getIP(), author=author, target=target.username, action=action, when=now ) ) db.session.commit() return redirect(url_for('home'))
def home(): if request.method == 'POST': processVote(request.form) return redirect(url_for('home')) choices = drawChoices(wantedGender=getCurrentGender()) return render_template( 'home.html', L=choices['L'], R=choices['R'], picL=choices['picL'], picR=choices['picR'], ratingL=int(choices['L'].rating), ratingR=int(choices['R'].rating), totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentGender=getCurrentGender(), currentTheme=getCurrentTheme(), themes=getThemes(), userIP=getIP() )
def login(): try: response = make_response() result = authomatic.login(WerkzeugAdapter(request, response), 'fb') except: return 'could not log you in :( go <a href="/">home</a>' if result: if result.user: result.user.update() realName = result.user.name.upper() v = [] for x in db.session.query(Person).filter(Person.fullname is not None).all(): facebookName = x.fullname.upper() for letter in 'abcdefghijklmnopqrstuvwxyz'.upper(): if '%s.' % letter in facebookName: facebookName = facebookName.replace('%s.' % letter, '') # get rid of father's initials nameSimilarity = getStringSimilarity(realName, facebookName) if nameSimilarity > 0.47: v.append((nameSimilarity, x)) v = sorted(v, reverse=True)[:2] return render_template( 'login.html', author=realName, matches=v, totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), genderCount=getGenderCount(), themes=getThemes(), userIP=getIP() ) return response
def login(): try: response = make_response() result = authomatic.login(WerkzeugAdapter(request, response), 'fb') except: return 'could not log you in :( go <a href="/">home</a>' if result: if result.user: result.user.update() realName = result.user.name.upper() v = [] for x in db.session.query(Person).filter( Person.fullname is not None).all(): facebookName = x.fullname.upper() for letter in 'abcdefghijklmnopqrstuvwxyz'.upper(): if '%s.' % letter in facebookName: facebookName = facebookName.replace( '%s.' % letter, '') # get rid of father's initials nameSimilarity = getStringSimilarity(realName, facebookName) if nameSimilarity > 0.47: v.append((nameSimilarity, x)) v = sorted(v, reverse=True)[:2] return render_template('login.html', author=realName, matches=v, totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), genderCount=getGenderCount(), themes=getThemes(), userIP=getIP()) return response
def showVotes(page=None): if page is None: page = 1 onPage = SETTINGS['entriesOnPage'] entries = db.session.query(Vote).all()[::-1] pages = len(entries) // onPage + (len(entries) % onPage != 0) firstNav, lastNav = max(1, page-3), min(page+3, pages) shownEntries = entries[(page-1)*onPage: min(len(entries), page*onPage)] return render_template( 'votes.html', entries=shownEntries, page=page, pages=pages, firstNav=firstNav, lastNav=lastNav, totalVotes=getTotalVotes(), uniqueVoters=getUniqueVoters(), currentTheme=getCurrentTheme(), themes=getThemes(), userIP=getIP() )
def getCurrentGender(): try: currentGender = Preference.query.filter(Preference.ip == getIP()).first().gender except: currentGender = False return currentGender
def main(): prevTransactionNumber = 0 sleep(2) while (1): #findNewTransaction() gets all the recent transactions that need to be processed. #this is the only function that would need to be changed if we got access to the WMS newTransactions = findNewTransaction(prevTransactionNumber) if (len(newTransactions) > 0): for i in range(0, len(newTransactions)): # looping through new transactions pickOrPut, location, RFID = newTransactions[i] #pick 0, put 1 # check if the location needs to be turned on or off ON_Tuple = onOrOff(location, RFID, pickOrPut) if (len(ON_Tuple) == 2 and ON_Tuple[0] != -1): #picking #ON_Tuple format: [location, ON/OFF] #input format: [storage location,pickerID,on/off] string_address = str( ON_Tuple[0]) + "," + np.array2string(RFID) + "," + str( ON_Tuple[1]) data = string_address.encode( 'utf-8' ) # encode input as a byte for datagram protocol #get IP address of the microcontroller connected to the location address = getIP(location) #send the command to the arduino client_socket = socket(AF_INET, SOCK_DGRAM) #set up the socket client_socket.settimeout( 1) #only wait one second for a response send_address = (str(address[1]), 5000) client_socket.sendto( data, send_address) #send command to arduino try: rec_data, addr = client_socket.recvfrom( 2048) #reading response from arduino #print(rec_data.decode()) #Print the response from the arduino except: #error checking if transmission doesn't work? pass client_socket.close() if (len(ON_Tuple) == 4): #putaway location = [ON_Tuple[0], ON_Tuple[2]] ON = [ON_Tuple[1], ON_Tuple[3]] #ON_Tuple format: [location1, ON/OFF1, location2, ON/OFF2] for i in range(0, 2): #for each location in the tuple if (str(location[i]) != 'None'): #input format: [storage location,pickerID,on/off] string_address = str( location[i]) + "," + np.array2string( RFID) + "," + str(ON[i]) data = string_address.encode( 'utf-8' ) # encode input as a byte for datagram protocol #get IP address of the microcontroller connected to the location address = getIP(location[i]) #send the command to the arduino client_socket = socket( AF_INET, SOCK_DGRAM) #set up the socket client_socket.settimeout( 1) #only wait one second for a response send_address = (str(address[1]), 5000) client_socket.sendto( data, send_address) #send command to arduino try: rec_data, addr = client_socket.recvfrom( 2048) #reading response from arduino #print(rec_data.decode()) #Print the response from the arduino except: #error checking if transmission doesn't work? pass client_socket.close() sleep(1) prevTransactionNumber = prevTransactionNumber + 1 print(prevTransactionNumber) sleep(5) # for testing
def info_search(url: str, start: str, end: str, date, proxies): # print(str(date)) date_time = str(datetime.datetime.strptime(str(date), '%Y-%m-%d')) # 转换为日期 week_day = date.strftime('%w') # 转换为周几 week_dict = { '0': '周日', '1': '周一', '2': '周二', '3': '周三', '4': '周四', '5': '周五', '6': '周六' } week_day = week_dict[week_day] user_agent = (random.choice(USER_AGENT_LIST)) # # headers # pre_headers={ # 'User-Agent': user_agent, # 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3', # 'accept-encoding':'gzip, deflate, br', # 'accept-language':'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6', # 'cache-control':'max-age=0', # 'cookie':'_abtest_userid=427f44ed-cf0b-4c75-b995-b4ca21d572fe; _ga=GA1.2.1406023646.1573299831; _RF1=111.207.1.146; _RSG=7_aiNPEaVwC1J9izn1bcvA; _RDG=28a1df2533a37725e23e1a74ab64575ae6; _RGUID=ce9f90e6-57b2-4fc7-ae66-941c7db094c1; Session=smartlinkcode=U135371&smartlinklanguage=zh&SmartLinkKeyWord=&SmartLinkQuary=&SmartLinkHost=; appFloatCnt=5; _gid=GA1.2.1669130808.1575119640; MKT_Pagesource=PC; FD_SearchHistorty={"type":"S","data":"S%24%u5317%u4EAC%28BJS%29%24BJS%242019-12-4%24%u5357%u5B81%28%u5434%u5729%u56FD%u9645%u673A%u573A%29%28NNG%29%24NNG%24%24%24"}; _bfa=1.1573299825075.2c2710.1.1574130278578.1575119584536.9.82; _bfs=1.3; _jzqco=%7C%7C%7C%7C%7C1.51473978.1573299831438.1575119640308.1575119698012.1575119640308.1575119698012.0.0.0.65.65; __zpspc=9.10.1575119640.1575119698.2%233%7Cwww.google.com%7C%7C%7C%7C%23; _bfi=p1%3D10320673302%26p2%3D100101991%26v1%3D82%26v2%3D81', # 'Referer': 'https://www.ctrip.com/', # } request_headers = { 'accept': '*/*', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6', 'content-length': '287', 'content-type': 'application/json', 'cookie': '_abtest_userid=427f44ed-cf0b-4c75-b995-b4ca21d572fe; _ga=GA1.2.1406023646.1573299831; _RF1=111.207.1.146; _RSG=7_aiNPEaVwC1J9izn1bcvA; _RDG=28a1df2533a37725e23e1a74ab64575ae6; _RGUID=ce9f90e6-57b2-4fc7-ae66-941c7db094c1; Session=smartlinkcode=U135371&smartlinklanguage=zh&SmartLinkKeyWord=&SmartLinkQuary=&SmartLinkHost=; appFloatCnt=5; _gid=GA1.2.1669130808.1575119640; MKT_Pagesource=PC; FD_SearchHistorty={"type":"S","data":"S%24%u5317%u4EAC%28BJS%29%24BJS%242019-12-4%24%u5357%u5B81%28%u5434%u5729%u56FD%u9645%u673A%u573A%29%28NNG%29%24NNG%24%24%24"}; _bfa=1.1573299825075.2c2710.1.1574130278578.1575119584536.9.82; _bfs=1.3; _jzqco=%7C%7C%7C%7C%7C1.51473978.1573299831438.1575119640308.1575119698012.1575119640308.1575119698012.0.0.0.65.65; __zpspc=9.10.1575119640.1575119698.2%233%7Cwww.google.com%7C%7C%7C%7C%23; _bfi=p1%3D10320673302%26p2%3D100101991%26v1%3D82%26v2%3D81', # '_abtest_userid=427f44ed-cf0b-4c75-b995-b4ca21d572fe; _ga=GA1.2.1406023646.1573299831; _RF1=111.207.1.146; _RSG=7_aiNPEaVwC1J9izn1bcvA; _RDG=28a1df2533a37725e23e1a74ab64575ae6; _RGUID=ce9f90e6-57b2-4fc7-ae66-941c7db094c1; appFloatCnt=5; _gid=GA1.2.1669130808.1575119640; MKT_Pagesource=PC; FD_SearchHistorty={"type":"S","data":"S%24%u5929%u6D25%28TSN%29%24TSN%242019-12-6%24%u6842%u6797%28%u4E24%u6C5F%u56FD%u9645%u673A%u573A%29%28KWL%29%24KWL%24%24%24"}; Session=smartlinkcode=U135371&smartlinklanguage=zh&SmartLinkKeyWord=&SmartLinkQuary=&SmartLinkHost=; Union=AllianceID=4899&SID=135371&OUID=&Expires=1575899547197; _bfa=1.1573299825075.2c2710.1.1575294741108.1575297977128.19.101; _bfs=1.2; _jzqco=%7C%7C%7C%7C%7C1.51473978.1573299831438.1575297980376.1575298473075.1575297980376.1575298473075.0.0.0.83.83; __zpspc=9.20.1575297980.1575298473.2%233%7Cwww.google.com%7C%7C%7C%7C%23; _bfi=p1%3D10320673302%26p2%3D10320673302%26v1%3D101%26v2%3D99', 'origin': 'https://flights.ctrip.com', 'referer': 'https://flights.ctrip.com/itinerary/oneway/tsn-kwl?date={}'.format( str(date)), 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-origin', 'Connection': 'close', 'user-agent': user_agent, } #request payload data = { "flightWay": "Oneway", "classType": "ALL", "hasChild": 'false', "hasBaby": 'false', "searchIndex": 1, "date": str(date), "airportParams": [{ "dcity": city[start], "acity": city[end], "dcityname": start, "acityname": end, "date": str(date), "dcityid": city_num[start], "acityid": city_num[end] }], "token": "afdf8bc932b8724d47bb9a7ce9014441" } url = 'https://flights.ctrip.com/itinerary/api/12808/products' # 真正的请求链接 # print(url) while 1: try: r = requests.post(url, headers=request_headers, data=json.dumps(data), proxies=proxies).json() while len(r) == 2: #请求失败后更换重新搜索 proxies = getIP() sleep(random.choice([0.1, 0.8, 1.1])) r = requests.post(url, headers=request_headers, data=json.dumps(data), proxies=proxies).json() return r except: proxies = getIP()
"(KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3", "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 " "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 " "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 " "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3", "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 " "(KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 " "(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24", "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 " "(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24" ] proxies1 = getIP() sleep(3) proxies2 = getIP() #全局可以改变的ip s1, s2 = 0, 0 #全局判断每个ip使用次数,为了防止被封,使用50次更换 end1, end2 = 1, 1 #判断两个爬取线程结束的全局变量 # 根据出发地,目的地,时间爬取,只爬取飞机,不中转 def info_search(url: str, start: str, end: str, date, proxies): # print(str(date)) date_time = str(datetime.datetime.strptime(str(date), '%Y-%m-%d')) # 转换为日期 week_day = date.strftime('%w') # 转换为周几 week_dict = { '0': '周日', '1': '周一', '2': '周二',
def setIP(): try: os.system(SET_IP_CMD + ' ' + getIP.getIP() + ' ' + SET_IP_MASK) print("Your new IP address is: ", getIP.getIP()) except Exception as e: print("Error :", e)
import time import datetime import sys import board import busio import adafruit_ccs811 from statistics import mean import getIP import textStatus acIP = getIP.getIP() print(acIP) textStatus.textStatus(acIP) i2c_bus = busio.I2C(board.SCL, board.SDA) ccs811 = adafruit_ccs811.CCS811(i2c_bus) fo = open("/home/pi/airquality.csv", "a") co2 = [] tvoc = [] for k in range(20): try: if not ccs811.data_ready: pass else: if ccs811.eco2 > 0: co2.append(ccs811.eco2) tvoc.append(ccs811.tvoc) print("C02 %1.0f PPM" % ccs811.eco2, end=" ")
new = [] for node in nodes: # ping all nodes if node != '': # -W 1 ==> wait max one sec ans = os.popen('ping -c 1 -W 1 ' + node + ' 2> /dev/null') ret = ans.close() if ret == None: # https://docs.python.org/2/library/os.html#os.popen # success new.append(node) else: # print("DELETING") ans = os.popen('sudo arp -d ' + node + ' 2> /dev/null') ret = ans.close() if ret == None: print(node + " : Entry Left(??) ") else: pass print("Your neighbours are:") for i in new: if i == '10.255.255.255': print i + " (BROADCAST)" elif i == getIP.getIP(): print i + " (YOU)" else: print i
def getCurrentGender(): try: currentGender = Preference.query.filter(Preference.ip == getIP()).first().gender except: currentGender = SETTINGS['defaultGender'] return currentGender
import os import getIP GET_NEIGHBOUR_CMD = 'python getNeighbours.py' try: print("Your IP address is ", getIP.getIP()) ans = os.popen(GET_NEIGHBOUR_CMD) for i in ans: print i, except Exception as e: # print("Exception :",e) pass