Esempio n. 1
0
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)
Esempio n. 2
0
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('/')
Esempio n. 3
0
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("/")
Esempio n. 4
0
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
Esempio n. 5
0
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('/')
Esempio n. 6
0
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
Esempio n. 7
0
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
Esempio n. 8
0
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
Esempio n. 9
0
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
Esempio n. 10
0
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)
Esempio n. 11
0
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
Esempio n. 12
0
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
Esempio n. 13
0
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)
Esempio n. 14
0
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)
Esempio n. 15
0
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
Esempio n. 16
0
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
Esempio n. 17
0
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
Esempio n. 18
0
def delete_resources(ref_type, ref_id):
    db.update_kw('resources', 'ref_id=?', ref_id, deleted=True)
Esempio n. 19
0
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