def post(self):
        logging.debug("POST")
        self.response.headers['Content-Type'] = 'text/html'
        action = self.request.get('button')

        if action == 'Register':

            first_name = self.request.get('fname')
            last_name = self.request.get('lname')
            username = self.request.get('username')
            about = self.request.get('about')
            dob = self.request.get('dob')

            if username is not None or username != '':
                userinfo_id = username
                userinfo_key = ndb.Key(UserInfo, userinfo_id)
                userin = userinfo_key.get()
                my_user = utilities.userKey()

                new_data = UserInfo(id=userinfo_id, username=username, first_name=first_name, last_name=last_name, about=about, dob=datetime.strptime(dob, '%Y-%m-%d'),user_id=my_user.key.id())
                new_data.put()

                my_user.username = username
                my_user.put()

                self.redirect('/')
Exemple #2
0
    def login(self):
        log_string = 'Trying to login as %s...\n' % self.user_login
        self.write_log(log_string)
        self.s.cookies.update({
            'sessionid': '',
            'mid': '',
            'ig_pr': '1',
            'ig_vw': '1920',
            'csrftoken': '',
            's_network': '',
            'ds_user_id': ''
        })
        login_post = {
            'username': self.user_login,
            'password': self.user_password
        }
        self.s.headers.update({
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': self.accept_language,
            'Connection': 'keep-alive',
            'Content-Length': '0',
            'Host': 'www.instagram.com',
            'Origin': 'https://www.instagram.com',
            'Referer': 'https://www.instagram.com/',
            'User-Agent': self.user_agent,
            'X-Instagram-AJAX': '1',
            'X-Requested-With': 'XMLHttpRequest'
        })
        r = self.s.get(self.URL)
        self.s.headers.update({'X-CSRFToken': r.cookies['csrftoken']})
        time.sleep(5 * random.random())
        login = self.s.post(self.url_login,
                            data=login_post,
                            allow_redirects=True)
        self.s.headers.update({'X-CSRFToken': login.cookies['csrftoken']})
        self.csrftoken = login.cookies['csrftoken']
        time.sleep(5 * random.random())

        if login.status_code == 200:
            r = self.s.get('https://www.instagram.com/')
            finder = r.text.find(self.user_login)
            if finder != -1:
                ui = UserInfo()
                self.user_id = ui.get_user_id_by_login(self.user_login)
                self.login_status = True
                log_string = '%s login success!' % self.user_login
                self.write_log(log_string)
                return True
            else:
                self.login_status = False
                self.write_log('Login error! Check your login data!')
                return False
        else:
            self.write_log('Login error! Connection error!')
            return False
Exemple #3
0
    def login(self):
        log_string = 'Trying to login as %s...\n' % (self.user_login)
        self.write_log(log_string)
        self.s.cookies.update({
            'sessionid': '',
            'mid': '',
            'ig_pr': '1',
            'ig_vw': '1920',
            'csrftoken': '',
            's_network': '',
            'ds_user_id': ''
        })
        self.login_post = {
            'username': self.user_login,
            'password': self.user_password
        }
        self.s.headers.update({
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': self.accept_language,
            'Connection': 'keep-alive',
            'Content-Length': '0',
            'Host': 'www.instagram.com',
            'Origin': 'https://www.instagram.com',
            'Referer': 'https://www.instagram.com/',
            'User-Agent': self.user_agent,
            'X-Instagram-AJAX': '1',
            'X-Requested-With': 'XMLHttpRequest'
        })
        r = self.s.get(self.url)
        self.s.headers.update({'X-CSRFToken': r.cookies['csrftoken']})
        time.sleep(5 * random.random())
        login = self.s.post(
            self.url_login, data=self.login_post, allow_redirects=True)
        self.s.headers.update({'X-CSRFToken': login.cookies['csrftoken']})
        self.csrftoken = login.cookies['csrftoken']
        time.sleep(5 * random.random())

        if login.status_code == 200:
            r = self.s.get('https://www.instagram.com/')
            finder = r.text.find(self.user_login)
            if finder != -1:
                ui = UserInfo()
                self.user_id = ui.get_user_id_by_login(self.user_login)
                self.login_status = True
                log_string = '%s login success!' % (self.user_login)
                self.write_log(log_string)
            else:
                self.login_status = False
                self.write_log('Login error! Check your login data!')
        else:
            self.write_log('Login error! Connection error!')
def add_newRegister(my_user, first_name, last_name, username, about, dob,
                    userinfo_id, userinfo_key):
    if username:
        new_data = UserInfo(id=userinfo_id,
                            username=username,
                            first_name=first_name,
                            last_name=last_name,
                            about=about,
                            dob=datetime.strptime(dob, '%Y-%m-%d'),
                            user_id=my_user.key.id())
        new_data.put()
        my_user.tweets.append(userinfo_key)
        my_user.username = username
        my_user.put()
    def get(self):
        logging.debug("GET")
        self.response.headers['Content-Type'] = 'text/html'
        my_user = utilities.userKey()

        query = Twitter.query()
        tweets = query.fetch()

        query1 = UserInfo.query()
        userinfo = query1.fetch()

        if utilities.userLoggedIn():
            if my_user is None or my_user == '':
                if not utilities.userExist():
                    utilities.newUser(utilities.currentUser())

                renderpage.register(self, utilities.logoutUrl(self), my_user)
            else:
                if not utilities.userExist():
                    utilities.newUser(utilities.currentUser())

                renderpage.profile(self, utilities.logoutUrl(self), my_user,
                                   tweets, userinfo)

        else:
            renderpage.login(self, utilities.loginUrl(self))
Exemple #6
0
    def step4_userinfo(self, credentials, http=None):
        """Obtains UserInfo from the UserInfo endpoint.

        Args:
            credentials

        Returns:
            OpenIDConnectCredentials

        Raises:
            FlowUserInfoError
        """

        if http is None:
            http = httplib2.Http()

        http = credentials.authorize(http)
        resp, content = http.request(self.userinfo_uri)

        if resp.status == 200:
            d = simplejson.loads(content)
            userinfo = UserInfo(d)
            logging.debug('Successfully retrieved user info: %s' % userinfo)
            return OpenIDConnectCredentials(credentials, userinfo)
        else:
            logging.error('Failed to retrieve user info: %s' % content)
            error_msg = 'Invalid user info response %s.' % resp['status']
            try:
                data = simplejson.loads(content)
                if 'error' in data:
                    error_msg = data['error']
            except Exception:
                pass

            raise FlowUserInfoError(error_msg)
    def get(self):
        logging.debug("GET")
        self.response.headers['Content-Type'] = 'text/html'
        my_user = utilities.userKey()
        value = self.request.get('name')
        query = Twitter.query()
        data = query.fetch()

        query1 = UserInfo.query()
        data1 = query1.fetch()

        if utilities.userLoggedIn():
            if my_user is None or my_user == '':
                if not utilities.userExist():
                    utilities.newUser(utilities.currentUser())

                renderpage.register(self, utilities.logoutUrl(self), my_user)
            else:
                if not utilities.userExist():
                    utilities.newUser(utilities.currentUser())

                renderpage.user(self, utilities.logoutUrl(self), my_user, data, data1, value)

        else:
            renderpage.login(self, utilities.loginUrl(self))
 def get(self):
     session = get_current_session()        
     frob = self.request.get('frob') 
     if not frob:
         self.response.out.write("no frob")
         return
     
     nickname = session.get("nickname", 0)
     if not nickname:
         self.response.out.write("no nickname")
         return
     userinfo = UserInfo.gql("WHERE nickname=:1", nickname).get()
     if not userinfo:
         self.response.out.write("no user")
         return
          
     flickr_api_key = userinfo.flickr_api_key
     flickr_api_secret = userinfo.flickr_api_secret
     flickr = flickrapi.FlickrAPI(
                 flickr_api_key, 
                 flickr_api_secret, 
                 store_token=False)
         
     try:
         token = flickr.get_token(frob)
         e = TokenEntity.gql("WHERE nickname=:1", nickname).get()
         if not e:
             e = TokenEntity()
         e.username = nickname
         e.token = token
         e.put()
         #session['flickr_token'] = token
     except Exception as e:
         print "Unexpected error:", e.message
     self.redirect('/setting')
Exemple #9
0
def checkVersion():
    try:
        global softwarestatus
        softwarestatus = UserInfo().softwarestatus
        if softwarestatus == 1:
            print("需要更新")
    except:
        return
Exemple #10
0
def set_limit(limit):
    user = users.get_current_user()
    user_info = UserInfo.get(user)
    try:
        user_info.daily_limit = int(limit)
    except ValueError:
        user_info.daily_limit = None

    user_info.save()
    return user_info.daily_limit if user_info.daily_limit is not None else "Infinity"
Exemple #11
0
def did_task(item_id):
    user = users.get_current_user()
    users_list = ToDoList(user.nickname(), db)
    users_list.remove_item(item_id)
    user_info = UserInfo.get(user)
    new_points = random.randint(0, 1)
    while random.randint(1, 5) > 3 and new_points < 20:
        new_points *= 2
        new_points += random.randint(0, 3)
    user_info.score += new_points
    user_info.save()
    return [users_list.get_top_item(user_info.daily_limit), user_info.score]
    def get(self):
        user = users.get_current_user()

        if user is None:
            return self.redirect(users.create_login_url(self.request.uri))

        user_info = UserInfo.get(user)
        username = user.nickname()
        logout_url = users.create_logout_url(self.request.uri)

        self.render('index.html', {
            'logout_url': logout_url,
            'username': username,
            'daily_limit': user_info.daily_limit if user_info.daily_limit is not None else "Infinity",
        })
Exemple #13
0
def add_card(bot, update, args):
    logger.info("New add_card message\nFrom: %s\nchat_id: %d\nText: %s" %
                (update.message.from_user,
                 update.message.chat_id,
                 update.message.text))
    if len(args) != 1:
        bot.sendMessage(update.message.chat_id, text="Usage:\n/addcard 1234567890")
        return
    card_number = args[0]
    telegram_user = update.message.from_user
    if not users.has_key(telegram_user.id):
        users[telegram_user.id] = UserInfo(telegram_user)

    user = users[telegram_user.id]
    if not user.cards.has_key(card_number):
        is_card_added = user.add_card(card_number)
        if not is_card_added:
            bot.sendMessage(update.message.chat_id, text="Card %s is blocked and can't be added" % (card_number))
            return
        storer.store('users', users)
        bot.sendMessage(update.message.chat_id, text="Card %s has been successfully added" % (card_number))
    else:
        bot.sendMessage(update.message.chat_id, text="Card %s has been already added. Do nothing" % (card_number))
Exemple #14
0
 def post(self):
     nickname = self.request.get('nickname')
     password = self.request.get('password')
     
     userinfos = UserInfo.gql("WHERE nickname=:1", nickname)
     
     for userinfo in userinfos:
         if userinfo.password == password:
             session = get_current_session()
             session["nickname"] = nickname
             
     
             template_values = {
                 'nickname': nickname,
                 'message' : "login successfully"
             }
             cwd = os.path.dirname(__file__)
             path = os.path.join(cwd, 'templates', 'index.html')
             self.response.out.write(template.render(path, template_values, debug=_DEBUG))              
         else:
             self.response.out.write("Login failed") 
             self.response.out.write("<br/><a href=\"/login\">retry</a>")
         break
import random
import time

from instabot import InstaBot
from userinfo import UserInfo

#use userinfo
ui = UserInfo()
ui.search_user(user_name="login")

#take following
ui.get_following()
following = ui.following

#take followers
ui.get_followers()
followers = ui.followers

#favorite id list
favorites = ['111', '222', '333']

#some lists
newlist = []
endlist = []
followerslist = []

#get following id
for item in following:
    newlist.append(item['id'])

#get followers id
Exemple #16
0
with open("login.txt") as file:
    logg = [row.strip() for row in file]
bot = InstaBot(
    login=logg[0],
    password=logg[1],


    )

with open("fl.txt") as file:
    us = [row.strip() for row in file]
print(us)


ui = UserInfo() 
for x in us:
    try:
        rand =random.randint(45, 60)
        print('time rand:===='+ str(rand))
        ss=ui.get_user_id_by_login(x)
        print(ss)
        bot.follow(ss)
        time.sleep(rand)
       
        
    except ValueError:
            print ("not user")

raw_input()
Exemple #17
0
    def get(self):
        #session = get_current_session()        
        #nickname = session.get("nickname", 0)
        #if not nickname:
        #    logging.info("not logged in")
        #    return
        #这里必须有nickname,否则不知道是谁
        nickname = self.request.get('nickname')
        userinfo = UserInfo.gql("WHERE nickname=:1", nickname).get()
        if not userinfo:
            logging.info("no userinfo found: %s",nickname)
            self.response.out.write("no userinfo found<br/>")
            return
            
        #此处不用认证,否则会加入很多未公开的图片的"
        flickr = auth.FlickrAuth(userinfo, no_token=True)
        if not flickr:             
            logging.info("flickr authentication failed")
            self.response.out.write("flickr authentication failed")
            return
        
        weibo = auth.WeiboAuth(userinfo)
        if not weibo:             
            logging.info("weibo authentication failed")
            self.response.out.write("weibo authentication failed")
            return
            
        #获得相片
        self.ClearImage()
        list = self.GetFlickrImages(flickr, userinfo)
        
        #获得位置需要认证
        flickr = auth.FlickrAuth(userinfo, no_token=False)
        if not flickr:             
            logging.info("flickr authentication failed")
            self.response.out.write("flickr authentication failed")
            return
        for e in list:
            location = None
            
            try:
                data = flickr.flickr_call(method='flickr.photos.geo.getLocation',  photo_id=e.photo_id, format='rest')
                
                l = flickr.parse_etree(data)
                location = l.find('photo/location')
            except FlickrError:
                logging.info( "%s has no location info."% (e.photo_id)) 
                self.response.out.write( "%s has no location info.<br/>"% (e.photo_id)) 
            

            if e.url[-6:] == "_m.jpg":
                e.url = e.url[:-5] + "b.jpg"
                url1 = "http://images0-focus-opensocial.googleusercontent.com/gadgets/proxy?container=focus&gadget=a&resize_h=500&url="+e.url                     
            else:
                url1 = e.url
            
            
            content = (urlfetch.fetch(url1)).content
            ie = ImageEntity()
            ie.url = e.url
            ie.url1 = url1
            ie.image = db.Blob(content)
            
            if location is not None:
                e.latitude = location.attrib['latitude']
                e.longitude = location.attrib['longitude']
                e.accuracy = location.attrib['accuracy']  

            if self.PostWeibo(weibo, e, ie) :
                e.put()
                ie.put()
        
        
        logging.info("sync ok")
        self.response.out.write("sync ok<br/>")
Exemple #18
0
    def post(self):
        if not LoginHandler().checkLogin():
            self.redirect("login.html")
        nickname = self.request.get('nickname')
        message = ""

        #if True:
        try:
            #client = APIClient(app_key=WEIBO_APP_KEY, app_secret=WEIBO_APP_SECRET, redirect_uri=WEIBO_CALLBACK_URL)
        
            userInfo = UserInfo.gql("WHERE nickname=:1",nickname).get()
            if not userInfo: 
                self.response.out.write( "No such a user: %s"% (nickname))
                return
            weibo = auth.WeiboAuth(userInfo)
            flickr = auth.FlickrAuth(userInfo)
            
            weibo_auth_url = None
            if V2:
                weibo_auth_url = weibo.get_authorize_url()
            
            userInfo.flickr_id = self.request.get('flickr_id')
            userInfo.flickr_api_key = self.request.get('flickr_api_key')
            userInfo.flickr_api_secret = self.request.get('flickr_api_secret')
            userInfo.flickr_browse_type = self.request.get('flickr_browse_type')
            userInfo.flickr_browse_typename = self.request.get('flickr_browse_typename')
            userInfo.weibo_id = self.request.get('weibo_id')
            userInfo.weibo_access_token = self.request.get('weibo_access_token')
            userInfo.weibo_access_token_secret = self.request.get('weibo_access_token_secret')
            
            if  userInfo.flickr_browse_type == "set" :
                #check flickr photoset
                sets = flickr.photosets_getList(user_id=userInfo.flickr_id)
                
                set_id = -1
                found = False
                for set in sets.findall('photosets/photoset'):
                    set_title = set.find('title').text        
                    if set_title == userInfo.flickr_browse_typename:                
                        set_id = int(set.attrib['id'])
                        found = True
                        break
                if found == False:
                    self.response.out.write( "No such photoset: %s"% (userInfo.flickr_browse_typename))
                    return            
                userInfo.flickr_browse_setid = set_id
            userInfo.flickr_max_days = int(self.request.get('flickr_max_days'))
            userInfo.put()
            message = "user information updated"
            
            flick_login_url = None
            if not auth.GetFlickrToken(userInfo.nickname):
                flick_login_url = auth.GetFlickrLoginUrl(userInfo)
            
            
            template_values = {
                'nickname': userInfo.nickname,
                'flickr_id': userInfo.flickr_id,
                'flickr_api_key': userInfo.flickr_api_key,
                'flickr_api_secret': userInfo.flickr_api_secret,
                'flickr_browse_type': userInfo.flickr_browse_type,
                'flickr_browse_typename': userInfo.flickr_browse_typename,
                'flickr_browse_setid': userInfo.flickr_browse_setid,
                'flickr_max_days': userInfo.flickr_max_days,
                'flick_login_url':flick_login_url,
                'weibo_id': userInfo.weibo_id,
                'weibo_access_token': userInfo.weibo_access_token,
                'weibo_access_token_secret': userInfo.weibo_access_token_secret,
                'weibo_avatar' : userInfo.weibo_avatar,
                'weibo_auth_url' : weibo_auth_url,
                'message' : u"用户信息已经更新完毕"
                
            }

            cwd = os.path.dirname(__file__)
            path = os.path.join(cwd, 'templates', 'setting.html')
            self.response.out.write(template.render(path, template_values, debug=_DEBUG))
        except Exception as e:
            self.response.out.write( "Unexpected error: %s"% (e))
Exemple #19
0
def get_score():
    user = users.get_current_user()
    user_info = UserInfo.get(user)
    return user_info.score
Exemple #20
0
from follow_protocol import follow_protocol
from instabot import InstaBot
from unfollow_protocol import unfollow_protocol
from userinfo import UserInfo

with open("login.txt") as file:
    logg = [row.strip() for row in file]
bot = InstaBot(
    login=logg[0],
    password=logg[1],
)

with open("fl.txt") as file:
    us = [row.strip() for row in file]
print(us)

ui = UserInfo()
for x in us:
    try:
        rand = random.randint(45, 60)
        print('time rand:====' + str(rand))
        ss = ui.get_user_id_by_login(x)
        print(ss)
        bot.follow(ss)
        time.sleep(rand)

    except ValueError:
        print("not user")

raw_input()
Exemple #21
0
def login():
    accept_language = 'ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4'
    user_agent = ("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 "
                  "(KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36")
    url = 'https://www.instagram.com/'
    url_tag = 'https://www.instagram.com/explore/tags/%s/?__a=1'
    url_likes = 'https://www.instagram.com/web/likes/%s/like/'
    url_unlike = 'https://www.instagram.com/web/likes/%s/unlike/'
    url_comment = 'https://www.instagram.com/web/comments/%s/add/'
    url_follow = 'https://www.instagram.com/web/friendships/%s/follow/'
    url_unfollow = 'https://www.instagram.com/web/friendships/%s/unfollow/'
    url_login = '******'
    url_logout = 'https://www.instagram.com/accounts/logout/'
    url_media_detail = 'https://www.instagram.com/p/%s/?__a=1'
    url_user_detail = 'https://www.instagram.com/%s/?__a=1'

    user_id = 0
    s = requests.Session()

    log_string = 'Trying to login as %s...\n' % (username)
    print(log_string)
    s.cookies.update({
        'sessionid': '',
        'mid': '',
        'ig_pr': '1',
        'ig_vw': '1920',
        'csrftoken': '',
        's_network': '',
        'ds_user_id': ''
    })
    login_post = {'username': username, 'password': password}
    s.headers.update({
        'Accept-Encoding': 'gzip, deflate',
        'Accept-Language': accept_language,
        'Connection': 'keep-alive',
        'Content-Length': '0',
        'Host': 'www.instagram.com',
        'Origin': 'https://www.instagram.com',
        'Referer': 'https://www.instagram.com/',
        'User-Agent': user_agent,
        'X-Instagram-AJAX': '1',
        'X-Requested-With': 'XMLHttpRequest'
    })
    r = s.get(url)
    s.headers.update({'X-CSRFToken': r.cookies['csrftoken']})
    time.sleep(5 * random.random())
    login = s.post(url_login, data=login_post, allow_redirects=True)
    s.headers.update({'X-CSRFToken': login.cookies['csrftoken']})
    csrftoken = login.cookies['csrftoken']
    time.sleep(5 * random.random())

    if login.status_code == 200:
        r = s.get('https://www.instagram.com/')
        finder = r.text.find(username)
        if finder != -1:
            ui = UserInfo()
            user_id = ui.get_user_id_by_login(username)
            login_status = True
            log_string = '%s login success!' % (username)
            print(log_string)
            print('200')
            logout()
        else:
            login_status = False
            print('Login error. Check your login data!')
            print('444')
    else:
        print('Login error! Connection error!')
        print('443')
                       'X-Instagram-AJAX': '1',
                       'X-Requested-With': 'XMLHttpRequest'})
r = s.get(url)
s.headers.update({'X-CSRFToken': r.cookies['csrftoken']})
time.sleep(5 * random.random())
login = s.post(url_login, data=login_post,
                    allow_redirects=True)
s.headers.update({'X-CSRFToken': login.cookies['csrftoken']})
csrftoken = login.cookies['csrftoken']
time.sleep(5 * random.random())

if login.status_code == 200:
    r = s.get('https://www.instagram.com/')
    finder = r.text.find(username)
    if finder != -1:
        ui = UserInfo()
        user_info = ui.get_user_info_by_login(username)
        user_info['status'] = 'login_success'
        user_json = json.dumps(user_info)
        print user_json
    else:
        user_info = {}
        user_info['status'] = 'credentials_error'
        user_json = json.dumps(user_info)
        print user_json
else:
    user_info = {}
    user_info['status'] = 'verify_account'
    user_json = json.dumps(user_info)
    print user_json
Exemple #23
0
    elif mode == 3:
        unfollow_protocol(bot)
        time.sleep(10 * 60)

    elif mode == 4:
        feed_scanner(bot)
        time.sleep(60)
        follow_protocol(bot)
        time.sleep(10 * 60)

    elif mode == 5:
        bot.bot_mode = 2
        unfollow_protocol(bot)
    elif mode == 6:
        # USER LIST - FILL IN DESIRED ACCOUNTS
        userlist = ['barney_vaughan']
        for user in userlist:
            print("Liking %s's 12 most recent media" % (user))
            ui = UserInfo()
            medias = ui.get_media_by_login(user)
            ex = 1
            print(medias)
            for media in medias:
                bot.like(media)
                print("Liked media %i of %i" % (ex, len(medias)))
                ex = ex + 1
                time.sleep(10)
    else:
        print("Wrong mode!")
Exemple #24
0
 def post(self):
     nickname = self.request.get('nickname')
     password = self.request.get('password')
     confirmpassword = self.request.get('confirmpassword')
     
     if password != confirmpassword:
         self.response.out.write("Password not match")
         return
         
     userinfos = UserInfo.gql("WHERE nickname=:1",nickname)
     
     found = 0
     for userinfo in userinfos:
         userinfo = UserInfo()
         userinfo.nickname = nickname
         userinfo.password = password
         userinfo.put()
         found = 1
         break
     if found == 0:            
         userinfo = UserInfo()
         userinfo.nickname = nickname
         userinfo.password = password
         userinfo.put()
     self.response.out.write("updated")
     self.redirect("login.html")
Exemple #25
0
from userinfo import UserInfo

# Get user information

ghUser = UserInfo.Generate()

print("Chosen user: %s" % ghUser.username)

Exemple #26
0
from flask import Flask, jsonify, request, redirect
from flask_cors import CORS
from Book import BookInfo
from userinfo import UserInfo

#配置Debug模式
DEBUG = True

#实例化App
app = Flask(__name__)
app.config.from_object(__name__)
#实例化操作类
book = BookInfo()
userinfo = UserInfo()

#enable CORS
CORS(app, resources={r'/*': {'origins': '*'}})


#测试路由
@app.route('/ping', methods=['GET'])
def ping_pong():
    return jsonify('pong!')


#打开 /book页面
@app.route('/books', methods=['GET', 'POST'])
def all_books():
    return book.all_books()

Exemple #27
0
@api
def add_task(todo):
    user = users.get_current_user()
    users_list = ToDoList(user.nickname(), db)
    try:
        users_list.insert(todo)
    except AmbiguousUrgencyExeption, e:
        return {
            'success': False,
            'newthing': todo,
            'benchmark': {
                'task': e.benchmark.task,
                'urgency': e.benchmark.urgency,
            },
        }
    user_info = UserInfo.get(user)
    return {
        'success': True,
        'top_item': users_list.get_top_item(user_info.daily_limit),
    }

class ApiRequestHandler(webapp.RequestHandler):
    def post(self, func=None):
        self.response.headers['Content-Type'] = "application/json; charset=utf-8"
        response = self.request.get('args', '[]')
        args = json.loads(response)
        if func in api_funcs:
            response = json.dumps(api_funcs[func](*args))
        # kwargs = self.request.get('kwargs')
        # self.response.out.write(json.dumps(args[0] * args[1]))
        self.response.out.write(response)
Exemple #28
0
def get_next_task_and_score():
    user = users.get_current_user()
    user_info = UserInfo.get(user)
    users_list = ToDoList(user.nickname(), db)
    user_info = UserInfo.get(user)
    return [users_list.get_top_item(user_info.daily_limit), user_info.score]
Exemple #29
0
 def __init__(self):
     self.userInfo = UserInfo()
Exemple #30
0
class AgentProtocol(basic.Int32StringReceiver):
    MAX_LENGTH = 10000000
    def __init__(self):
        self.userInfo = UserInfo()
    
    def connectionMade(self):
        config.reload()
        # Send hello (info) message
        self._sendInfo(hello=True)
        
        self.update_loop = task.LoopingCall(self._sendUpdatedUserInfo)
        self.update_info_loop = task.LoopingCall(self._sendInfo)        
        def startLooping():
            # Check periodically if anything has changed, and send updated
            # information if necessary
            self.update_loop.start(8.0, True)
            # Send info, e.g. uptime and load every 10 seconds
            self.update_info_loop.start(10.0, False)
        # To avoid PotentialZombieWarning due to the reactor not running,
        # only start looping after the reactor has been started.
        reactor.callWhenRunning(startLooping)
    
    def requestReceived(self, data):
        log.debug('got request: %s' % data)
        req = 'error'
        reqid = 0
        try:
            request = json.loads(data)
            req = request['request']
            args = request['args']
            reqid = request['requestID']
            
            def sendResponse(data):
                self.sendResponse(req, reqid, data)
            
            handler = getattr(self, '_handle' + req.capitalize())
            deferred = defer.Deferred()
            deferred.addCallback(sendResponse)
        except (KeyError, ValueError, AttributeError):
            log.err()
            self.sendResponse(req, reqid, '', 'invalid request')
            return
        handler(deferred, args)
    
    stringReceived = requestReceived
    
    def sendResponse(self, request, requestID, data, error=''):
        response = json.dumps(
                              {'requestID': requestID,
                               'response': request,
                               'data': data,
                               'error': error
                              }
        )
        log.debug('sending response %s' % response)
        self.sendString(response)
    
    def _sendUpdatedUserInfo(self):
        """
        Called by a LoopingCall.
        Check if anything has changed, send updated list of users if necessary.
        """
        def cb(changed):
            if not changed:
                return
            def cbUsers(data):
                self.sendResponse('users', -1, data)
            d = defer.Deferred()
            d.addCallback(cbUsers)
            self._handleUsers(d, [])
            
        self.userInfo.updateUsersProcesses(cb)
    
    def _sendInfo(self, hello=False):
        """
        Called when agent is started and by a LoopingCall.
        Sends updated system information (see _handleInfo).
        """
        if hello:
            reqid = 0
        else:
            reqid = -2
        def cbInfo(data):
            self.sendResponse('info', reqid, data)
        
        d = defer.Deferred()
        d.addCallback(cbInfo)
        self._handleInfo(d, [])
        
    def _dictToUkey(self, udict):
        d = udict
        return (d['username'], d['client'], d['display'])
    
    def _genHandleArgs(self, args):
        """
        Generator which returns a tuple of ukey_dict and corresponding user object or None
        for each ukey in args.
        """
        for ukey_dict in args:
            try:
                ukey = self._dictToUkey(ukey_dict)
                user = self.userInfo.users[ukey]
                yield (ukey_dict, user)
            except KeyError:
                ukey_dict['error'] = 'notfound'
                yield (ukey_dict, None)
    
    def _genericUserRequestHandler(self, deferred, args, cbUser):
        """
        Generic request handler for user requests.
        cbUser is called with the user object and user data (user dict + optional fields)
        for each user, and should return user data or a deferred. 
        """
        def ebFailed(failure, udict):
            log.msg('unhandled failure: %s' % failure)
            udict['error'] = 'failed'
            return udict
        
        deferreds = []
        for udict, user in self._genHandleArgs(args):
            # if user is not found, user is None and udict['error'] is set
            d = defer.maybeDeferred(cbUser, user, udict)
            d.addErrback(ebFailed, udict)
            deferreds.append(d)
        
        def cbSuccess(result):
            deferred.callback([t[1] for t in result])
        
        dl = defer.DeferredList(deferreds)
        dl.addCallback(cbSuccess)
    
    # Request handlers 
    
    def _handleUsers(self, deferred, args):
        """
        Handle request for list of users.
        """
        def genData():
            for user in self.userInfo.users.itervalues():
                yield {'username': user.username, 'client': user.client,
                       'display': user.display, 'name': user.name,
                       'groups': user.groups, 'time': user.logintime,
                       'hwaddr': user.clientHWAddr}

        deferred.callback(list(genData()))
    
    def _handleInfo(self, deferred, args):
        """
        Handle info request, currently this returns uptime and load and OS.
        """
        def reply(bootTime):
            deferred.callback({'uptime': bootTime,
                               'load': self.userInfo.getLoad(),
                               'os': self.userInfo.getOS()})
        db = defer.maybeDeferred(self.userInfo.getBootTime)
        db.addCallback(reply)
        
    def _handleProcesses(self, deferred, args):
        def get(user, udata):
            if user:
                udata['processes'] = self.userInfo.processes[user.username]
            else:
                udata['processes'] = []
            return udata
        
        def cbChanged(changed):
            self._genericUserRequestHandler(deferred, args, get)
        
        self.userInfo.updateUsersProcesses(cbChanged)
    
    def _handleKillprocesses(self, deferred, args):
        """
        Handle request to kill processes.
        """
        user_pid = {}
        def get(user, udata):
            if user:
                pid = int(udata['pid'])
                if pid in user_pid[user.username]:
                    self.userInfo.killProcess(user, pid)
            del udata['pid']
            return udata
        
        def cbChanged(changed):
            for user in self.userInfo.users.itervalues():
                for pid, cmd in self.userInfo.processes[user.username]:
                    user_pid.setdefault(user.username, {})[pid] = 0
            self._genericUserRequestHandler(deferred, args, get)
        self.userInfo.updateUsersProcesses(cbChanged)
    
    def _handleThumbnails(self, deferred, args):
        """
        Handle thumbnails request.
        """
        def get(user, udata):
            def cbSuccess(thumbnail):
                from base64 import b64encode
                udata['thumbnail'] = b64encode(thumbnail)
                return udata
            
            if user:
                d = self.userInfo.getThumbnail(user)
                d.addCallback(cbSuccess)
                return d
            else:
                return udata
        
        self._genericUserRequestHandler(deferred, args, get)
    
    def _handleVnc(self, deferred, args):
        """
        Handle VNC request.
        """
        
        def get(user, udata):
            def errorHandler(failure):
                log.msg('getVNC failed: %s' % failure)
                udata['error'] = 'failed'
                return udata
            def cbSuccess(result):
                port, password = result
                udata['port'] = port
                udata['password'] = password
                return udata
            if not user:
                return udata
            d = self.userInfo.getVNC(user)
            d.addCallback(cbSuccess)
            d.addErrback(errorHandler)
            return d
        
        self._genericUserRequestHandler(deferred, args, get)
    
    def _handleLogin(self, deferred, args):
        """
        Handle login request (e.g. VNC + XDMCP on linux or RDP on windows)
        """
        port, protocol = self.userInfo.getLogin()
        deferred.callback({'port': port, 'protocol': protocol})
    
    def _handleMessage(self, deferred, args):
        def get(user, udata):
            if user:
                self.userInfo.sendMessage(user, udata['message'])
            return udata
        
        self._genericUserRequestHandler(deferred, args, get)
    
    def _handleLogout(self, deferred, args):
        def get(user, udata):
            if user:
                self.userInfo.logoutUser(user)
            return udata
        
        self._genericUserRequestHandler(deferred, args, get)
    
    def _handleLock(self, deferred, args):
        def get(user, udata):
            if user:
                self.userInfo.lockUser(user)
            return udata
        
        self._genericUserRequestHandler(deferred, args, get)
    
    def _handleOpenurl(self, deferred, args):
        def get(user, udata):
            if user:
                try:
                    self.userInfo.openURL(user, udata['url'])
                except NotImplementedError:
                    udata['error'] = 'notimplemented'
            return udata
        
        self._genericUserRequestHandler(deferred, args, get)
    
    def _handleShutdown(self, deferred, args):
        """
        Handle shutdown request
        """
        action = args['action']
        try:
            if action == 'poweroff':
                self.userInfo.shutdown()
            else:
                self.userInfo.reboot()
        except NotImplementedError:
            deferred.callback({'error': 'notimplemented'})
        else:                   
            deferred.callback({})
Exemple #31
0
def main():
    user_info = UserInfo()
    account_id = user_info.get_account_id()
    api_key = user_info.get_api_key()

    url = "https://steamcommunity.com/profiles/" + account_id + "/recommended/"
    reviews_data = []
    soup = get_soup(url)
    nb_reviews = int(get_nb_reviews(soup))
    urls = get_urls(url, nb_reviews)

    for url in urls:
        print(f"Fetching data from {url}")
        soup = get_soup(url)
        reviews_data += reviews(soup)

    print("")

    games = get_games(account_id, api_key)
    reviews_ = reviews_data.copy()
    for game in games:
        for review in reviews_data:
            if review["game_id"] == game["appid"]:
                del review["game_id"]
                game["review_data"] = review
                reviews_data.remove(review)

    print(f"There is {len(reviews_data)} reviews for unknown game")

    for review in reviews_data:
        appid = review["game_id"]
        del review["game_id"]
        call = f"http://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v0002/?appid={appid}&key={api_key}&steamid={account_id}"
        response = requests.get(call)
        if response:
            game_name = response.json()["playerstats"]["gameName"]
        else:
            print(f"Can't find [appid: {appid}]")
            game_name = "Unknown"
        games.append({
            "name": game_name,
            "appid": appid,
            "playtime": None,
            "review_data": review
        })

    print("")

    not_reviewed_games = []
    reviewed_games = []
    for game in games:
        try:
            if game["review_data"]:
                reviewed_games.append(game)
        except KeyError:
            not_reviewed_games.append(game)
    print(
        f"You have \n\t{len(games)} games, \n\t{len(reviewed_games)} reviews, \n\t{len(not_reviewed_games)} games not reviewed."
    )

    print("")

    print("10 random games not evaluated:")
    games_to_review = random.sample(not_reviewed_games, 10)
    for game in games_to_review:
        print(game["name"])
Exemple #32
0
 def OnGetUserinfo(self,data):
     loginsucess = migprotocol.LoginSucess()
     loginsucess.unpackstream(data)
     userinfo = UserInfo()
     userinfo.set_platform_id(loginsucess.get_platform_id())
     userinfo.set_uid(loginsucess.get_user_id())
     userinfo.set_nicknumber(loginsucess.get_nicknumber())
     userinfo.set_nickname(loginsucess.get_nickname())
     userinfo.set_head_url(loginsucess.get_head_url())
     userinfo.set_token(loginsucess.get_token())
     return userinfo
Exemple #33
0
 def getUser(self, name):
     return self.userdata.setdefault(name, UserInfo())
Exemple #34
0
import threading
import userinfo
from userinfo import UserInfo
from colects import StartCollect
from getCookies import GetCookies
from view import *
import time
import os
softwarestatus = -1
usi = UserInfo()


def checkVersion():
    try:
        global softwarestatus
        softwarestatus = UserInfo().softwarestatus
        if softwarestatus == 1:
            print("需要更新")
    except:
        return


def run():
    startnum = startprint()
    if startnum == 0 and softwarestatus == -1:
        choose = IndexList()
    elif startnum == 1 and softwarestatus == -1:
        choose = collectPageDefault()
    elif startnum == 2 and softwarestatus == -1:
        choose = collectPageUser()
    elif startnum == 3 and softwarestatus == -1:
Exemple #35
0
def delay_task(item_id):
    user = users.get_current_user()
    users_list = ToDoList(user.nickname(), db)
    users_list.delay_item(item_id)
    user_info = UserInfo.get(user)
    return users_list.get_top_item(user_info.daily_limit)