def update_timeline(): i = ctx.request.input() client = _create_client() data = client.parse_signed_request(i.signed_request) if data is None: raise StandardError('Error!') user_id = data.get('uid', '') auth_token = data.get('oauth_token', '') if not user_id or not auth_token: return dict(error='bad_signature') expires = data.expires client.set_access_token(auth_token, expires) u = db.select('select since_id from users where id=?', user_id)[0] kw = dict(uid=user_id, count=100, trim_user=1) since_id = u.since_id if since_id: kw['since_id'] = since_id timeline = client.statuses.user_timeline.get(**kw) statuses = timeline.statuses count = 0 if statuses: since_id = str(statuses[0].id) for st in statuses: info = record.parse(st.text) if info: t, ymd = _parse_datetime(st.created_at) r = dict(id=st.id, user_id=user_id, text=st.text, created_at=t, rdistance=info[0], rtime=info[1], rdate=ymd) if not db.select('select id from records where id=?', st.id): db.insert('records', **r) count = count + 1 db.update_kw('users', 'id=?', user_id, since_id = since_id) return dict(count=count, since_id=since_id)
def callback(): i = ctx.request.input(code='') code = i.code client = _create_client() r = client.request_access_token(code) logging.info('access token: %s' % json.dumps(r)) access_token, expires_in, uid = r.access_token, r.expires_in, r.uid client.set_access_token(access_token, expires_in) u = client.users.show.get(uid=uid) logging.info('got user: %s' % uid) users = db.select('select * from users where id=?', uid) user = dict(name=u.screen_name, \ image_url=u.avatar_large or u.profile_image_url, \ statuses_count=u.statuses_count, \ friends_count=u.friends_count, \ followers_count=u.followers_count, \ verified=u.verified, \ verified_type=u.verified_type, \ auth_token=access_token, \ expired_time=expires_in) if users: db.update_kw('users', 'id=?', uid, **user) else: user['id'] = uid db.insert('users', **user) _make_cookie(uid, access_token, expires_in) raise seeother('/')
def callback(): i = ctx.request.input(code="") code = i.code client = _create_client() r = client.request_access_token(code) logging.info("access token: %s" % json.dumps(r)) access_token, expires_in, uid = r.access_token, r.expires_in, r.uid client.set_access_token(access_token, expires_in) u = client.users.show.get(uid=uid) logging.info("got user: %s" % uid) users = db.select("select * from users where id=?", uid) user = dict( name=u.screen_name, image_url=u.avatar_large or u.profile_image_url, statuses_count=u.statuses_count, friends_count=u.friends_count, followers_count=u.followers_count, verified=u.verified, verified_type=u.verified_type, auth_token=access_token, expired_time=expires_in, ) if users: db.update_kw("users", "id=?", uid, **user) else: user["id"] = uid db.insert("users", **user) _make_cookie(uid, access_token, expires_in) raise seeother("/")
def api_update_article(): time.sleep(1); i = ctx.request.input(id='') if not i.id: raise APIValueError('id', 'id cannot be empty.') article = _get_article(i.id) kw = {} if 'name' in i: name = i.name.strip() if not name: raise APIValueError('name', 'name cannot be empty.') kw['name'] = name if 'content' in i: content = i.content.strip() if not content: raise APIValueError('content', 'content cannot be empty.') html_content, summary = html.parse_md(content, 1000) kw['content'] = content kw['summary'] = summary if 'category_id' in i: category_id = i.category_id cat = _get_category(category_id) kw['category_id'] = category_id if 'tags' in i: kw['tags'] = _format_tags(i.tags) if 'draft' in i: draft = boolean(i.draft) if not draft and ctx.user.role_id==ROLE_CONTRIBUTORS: raise APIPermissionError('cannot publish article for contributors.') kw['draft'] = draft if kw: kw['modified_time'] = time.time() kw['version'] = article.version + 1 db.update_kw('articles', 'id=?', i.id, **kw) return True
def api_update_category(): i = ctx.request.input(id='', name='', description='') name = i.name.strip() description = i.description.strip() if not i.id: raise APIValueError('id', 'id cannot be empty') if not name: raise APIValueError('name', 'name cannot be empty') logging.info('update category...') cat = _get_category(i.id) db.update_kw('categories', 'id=?', i.id, name=name, description=description, modified_time=time.time(), version=cat.version+1) return True
def api_update_category(): i = ctx.request.input(id='', name='', description='') name = i.name.strip() description = i.description.strip() if not i.id: raise APIValueError('id', 'id cannot be empty') if not name: raise APIValueError('name', 'name cannot be empty') logging.info('update category...') cat = _get_category(i.id) db.update_kw('categories', 'id=?', i.id, name=name, description=description, modified_time=time.time(), version=cat.version + 1) return True
def api_update_wikipage(): i = ctx.request.input(id="") if not i.id: raise APIValueError("id", "bad parameter: id") page = _get_wikipage(i.id) kw = {} if "name" in i: if not i.name.strip(): raise APIValueError("name", "invalid name") kw["name"] = i.name.strip() if "content" in i: if not i.content.strip(): raise APIValueError("content", "invalid content") kw["content"] = i.content.strip() if kw: kw["modified_time"] = time.time() kw["version"] = page.version + 1 db.update_kw("wiki_pages", "id=?", i.id, **kw) return True
def api_update_wikipage(): i = ctx.request.input(id='') if not i.id: raise APIValueError('id', 'bad parameter: id') page = _get_wikipage(i.id) kw = {} if 'name' in i: if not i.name.strip(): raise APIValueError('name', 'invalid name') kw['name'] = i.name.strip() if 'content' in i: if not i.content.strip(): raise APIValueError('content', 'invalid content') kw['content'] = i.content.strip() if kw: kw['modified_time'] = time.time() kw['version'] = page.version + 1 db.update_kw('wiki_pages', 'id=?', i.id, **kw) return True
def index(): i = ctx.request.input() client = _create_client() data = client.parse_signed_request(i.signed_request) if data is None: raise StandardError('Error!') user_id = data.get('uid', '') auth_token = data.get('oauth_token', '') if not user_id or not auth_token: return Template('/static/auth.html', client_id=APP_ID) expires = data.expires client.set_access_token(auth_token, expires) # check database if user exist: user = None users = db.select('select * from users where id=?', user_id) if users: # user exist, update if token changed: user = users[0] if auth_token != user.auth_token: uu = _from_weibo_user(client.users.show.get(uid=user_id)) uu['auth_token'] = auth_token uu['expired_time'] = expires user.update(uu) db.update_kw('users', 'id=?', user_id, **uu) else: u = client.users.show.get(uid=user_id) user = _from_weibo_user(u) user['id'] = user_id user['level'] = 0 user['weight'] = 55 if user['gender'] == u'f' else 75 user['since_id'] = '' user['auth_token'] = auth_token user['expired_time'] = expires db.insert('users', **user) img = user['avatar_large'] or user['profile_image_url'] or user['image_url'] return Template('/static/index.html', user=user, user_img=img, signed_request=i.signed_request)
def api_update_wiki(): ' update wiki name, description, content by id. ' i = ctx.request.input(id='') if not i.id: raise APIValueError('id', 'id cannot be empty') wiki = _get_wiki(i.id) kw = {} if 'name' in i: name = i.name.strip() if not name: raise APIValueError('name', 'name cannot be empty') kw['name'] = name if 'description' in i: kw['description'] = i.description.strip() if 'content' in i: kw['content'] = i.content.strip() if kw: kw['version'] = wiki.version + 1 kw['modified_time'] = time.time() db.update_kw('wikis', 'id=?', i.id, **kw) return True
def api_update_wiki(): " update wiki name, description, content by id. " i = ctx.request.input(id="") if not i.id: raise APIValueError("id", "id cannot be empty") wiki = _get_wiki(i.id) kw = {} if "name" in i: name = i.name.strip() if not name: raise APIValueError("name", "name cannot be empty") kw["name"] = name if "description" in i: kw["description"] = i.description.strip() if "content" in i: kw["content"] = i.content.strip() if kw: kw["version"] = wiki.version + 1 kw["modified_time"] = time.time() db.update_kw("wikis", "id=?", i.id, **kw) return True
def update_timeline(): i = ctx.request.input() client = _create_client() data = client.parse_signed_request(i.signed_request) if data is None: raise StandardError('Error!') user_id = data.get('uid', '') auth_token = data.get('oauth_token', '') if not user_id or not auth_token: return dict(error='bad_signature') expires = data.expires client.set_access_token(auth_token, expires) u = db.select('select since_id from users where id=?', user_id)[0] kw = dict(uid=user_id, count=100, trim_user=1) since_id = u.since_id if since_id: kw['since_id'] = since_id timeline = client.statuses.user_timeline.get(**kw) statuses = timeline.statuses count = 0 if statuses: since_id = str(statuses[0].id) for st in statuses: info = record.parse(st.text) if info: t, ymd = _parse_datetime(st.created_at) r = dict(id=st.id, user_id=user_id, text=st.text, created_at=t, rdistance=info[0], rtime=info[1], rdate=ymd) if not db.select('select id from records where id=?', st.id): db.insert('records', **r) count = count + 1 db.update_kw('users', 'id=?', user_id, since_id=since_id) return dict(count=count, since_id=since_id)
def index(): i = ctx.request.input() client = _create_client() data = client.parse_signed_request(i.signed_request) if data is None: raise StandardError('Error!') user_id = data.get('uid', '') auth_token = data.get('oauth_token', '') if not user_id or not auth_token: return Template('/static/auth.html', client_id=APP_ID) expires = data.expires client.set_access_token(auth_token, expires) # check database if user exist: user = None users = db.select('select * from users where id=?', user_id) if users: # user exist, update if token changed: user = users[0] if auth_token != user.auth_token: uu = _from_weibo_user(client.users.show.get(uid=user_id)) uu['auth_token'] = auth_token uu['expired_time'] = expires user.update(uu) db.update_kw('users', 'id=?', user_id, **uu) else: u = client.users.show.get(uid=user_id) user = _from_weibo_user(u) user['id'] = user_id user['level'] = 0 user['weight'] = 55 if user['gender']==u'f' else 75 user['since_id'] = '' user['auth_token'] = auth_token user['expired_time'] = expires db.insert('users', **user) img = user['avatar_large'] or user['profile_image_url'] or user['image_url'] return Template('/static/index.html', user=user, user_img=img, signed_request=i.signed_request)
def api_update_page(): i = ctx.request.input(id='') if not i.id: raise APIValueError('id', 'id cannot be empty.') page = _get_page(i.id) kw = {} if 'name' in i: name = i.name.strip() if not name: raise APIValueError('name', 'name cannot be empty.') kw['name'] = name if 'content' in i: content = i.content.strip() if not content: raise APIValueError('content', 'content cannot be empty.') kw['content'] = content if 'tags' in i: kw['tags'] = _format_tags(i.tags) if 'draft' in i: kw['draft'] = boolean(i.draft) if kw: kw['modified_time'] = time.time() db.update_kw('pages', 'id=?', i.id, **kw) return True
def api_update_article(): time.sleep(1) i = ctx.request.input(id='') if not i.id: raise APIValueError('id', 'id cannot be empty.') article = _get_article(i.id) kw = {} if 'name' in i: name = i.name.strip() if not name: raise APIValueError('name', 'name cannot be empty.') kw['name'] = name if 'content' in i: content = i.content.strip() if not content: raise APIValueError('content', 'content cannot be empty.') html_content, summary = html.parse_md(content, 1000) kw['content'] = content kw['summary'] = summary if 'category_id' in i: category_id = i.category_id cat = _get_category(category_id) kw['category_id'] = category_id if 'tags' in i: kw['tags'] = _format_tags(i.tags) if 'draft' in i: draft = boolean(i.draft) if not draft and ctx.user.role_id == ROLE_CONTRIBUTORS: raise APIPermissionError( 'cannot publish article for contributors.') kw['draft'] = draft if kw: kw['modified_time'] = time.time() kw['version'] = article.version + 1 db.update_kw('articles', 'id=?', i.id, **kw) return True
def delete_resources(ref_type, ref_id): db.update_kw('resources', 'ref_id=?', ref_id, deleted=True)
def _Downloud_All(screen_name): u = _check_cookie() if u is None: return dict(error='failed', redirect='/signin') client = _create_client() client.set_access_token(u.auth_token, u.expired_time) # 目标id #uid_tar = 1005051640494672#5439666129test #screen_name = u"经典语录" url_name = screen_name.encode('utf-8') urllib.quote(url_name) result = [] friendship_url = 'https://api.weibo.com/2/friendships/create.json?' #data = ('%s%s%s%s' % ( 'uid=',str(uid_tar),'&access_token=',client.access_token)) data = ('%s%s%s%s' % ( 'screen_name=',url_name,'&access_token=',client.access_token)) # 关注目标 #r = urllib2.Request(url= friendship_url, data=data) #f = urllib2.urlopen(r) length = 1 index = 1 count = 0 while length > 0 and count < 1000: statuses = client.statuses__friends_timeline(page=index)['statuses'] length = len(statuses) #输出了部分信息 for i in range(0,length): #print index, i, length, count #if (statuses[i]['user']['id'] == uid_tar): count = count + 1 sigresult = { 'text': statuses[i]['text'], 'picurl': statuses[i]['pic_urls'],'time': statuses[i]['created_at']} #print sigresult['text'] result.append(sigresult) #print result[count-1]['text'] index = index + 1 #取消关注 #friendship_des_url = 'https://api.weibo.com/2/friendships/destroy.json?' #r = urllib2.Request(url= friendship_des_url, data=data) #f = urllib2.urlopen(r) length = len(result) print length filename = 'positive_word.rtf' f=open(filename,'r') lines=f.readlines() count=0 query={} query1=[] for line in lines: #print isinstance(line, unicode) line=line.split() line=line[0] query[count]=line sigquery = { 'query': line , 'weight': 0, 'picurl': [] } query1.append(sigquery) count=count+1 #print count f.close() for i in range(0,count): for j in range(0,length): rs = result[j]['text'].encode('utf-8') if rs.find(query[i]) >= 0: query1[i]['weight'] = query1[i]['weight'] + 1 if len(result[j]['picurl'])>0: query1[i]['picurl'].append({'picurl':result[j]['picurl'][0],'time':result[j]['time']}) # 新浪返回的token,类似abc123xyz456 #screen_name = 'testName' db.update('delete from pictures where username=?', screen_name) # insert labels for i in range(0, count): l = query1[i]['query']#.decode('utf-8') w = query1[i]['weight'] pics = query1[i]['picurl'] label = dict( username=screen_name, \ label=l, \ weight=w ) lb = db.select('select * from labels where label=? and username=?', l, screen_name) if lb: db.update_kw('labels', 'label=? and username=?', l, screen_name, **label) else: db.insert('labels', **label) li = db.select('select id from labels where label=? and username=?', l, screen_name) #print li for j in range(0, len(pics)): picture = dict( picUrl=pics[j]['picurl'], \ upTime=pics[j]['time'], \ labelID=li[0]['id'], \ username=screen_name ) db.insert('pictures', **picture) return query1