Esempio n. 1
0
def zip_mod():
    """
    need nginx module mod_zip  https://github.com/evanmiller/mod_zip
    """
    url = request.args.get('url')
    try:  # prevent universal crawler
        request.cookies['csrf']
    except KeyError:
        return abort(403)
    if url:
        g.cur.execute(''' SELECT `title`,`picsUrls` FROM `albums` WHERE `url` = %s''', (url,))
        r = g.cur.fetchone()
        if r:
            title = r.get('title').encode('utf-8')
            files = r.get('picsUrls').split('\n')
            a = time.time()
            tasks = ThreadsTask()
            threads = []
            for f in files:
                t = threading.Thread(target=tasks.run, args=(f,))
                threads.append(t)
                t.start()
            for t in threads:
                t.join()
            fs = "\n".join(tasks.result)
            print 'zip:', time.time() - a
            return Response(fs, headers={
                'X-Archive-Charset': 'utf-8',
                'X-Archive-Files': 'zip',
                'Content-Disposition': 'attachment; filename="%s.zip"' % title
            })
        else:
            return abort(404)
    else:
        return abort(400)
Esempio n. 2
0
def skip():
    if session['admin'] is True:
        id_list = request.form.get('ids').split(',')
        statement = 'UPDATE `albums` set ooxx=%s WHERE id in ({})'.format(','.join(['%s'] * len(id_list)))
        args = [request.form['ooxx']]
        args.extend(id_list)
        g.db.cur.execute(statement, args)
        g.db.commit()
        return jsonify(response='ok')
    else:
        abort(404)
Esempio n. 3
0
def skip():
    if session['admin'] is True:
        id_list = request.form.get('ids').split(',')
        statement = 'UPDATE `albums` set ooxx=%s WHERE id in ({})'.format(
            ','.join(['%s'] * len(id_list)))
        args = [request.form['ooxx']]
        args.extend(id_list)
        g.db.cur.execute(statement, args)
        g.db.commit()
        return jsonify(response='ok')
    else:
        abort(404)
Esempio n. 4
0
def download_album(method):
    if method == "txt":
        return down_album_urls()
    elif method == "zip":
        return zip_mod()
    else:
        return abort(404)
Esempio n. 5
0
def preview():
    url = request.args.get('url')
    # todo: albums img pages
    try:
        page = abs(int(request.args.get('p')))
    except TypeError:
        page = 0
    if url:
        g.cur.execute(
            ''' SELECT `picsUrls`,`title`,`pics` FROM `albums` WHERE `url` = %s''',
            (url, ))
        r = g.cur.fetchone()
        if r:
            count = r.get('pics')
            urls = r.get('picsUrls')
            thumbnails = re.sub('big.', 'small.', urls).split('\n')  # [0:20]
            return render_template('preview.html',
                                   title=r.get('title'),
                                   imgs=thumbnails,
                                   url=url,
                                   count=count)
        else:
            return 'don\'t found!'
    else:
        return abort(400)
Esempio n. 6
0
def download_album(method):
    if method == "txt":
        return down_album_urls()
    elif method == "zip":
        return zip_mod()
    else:
        return abort(404)
Esempio n. 7
0
def callback():
    code = request.args.get('code')
    if not code:
        abort(400)
    access_token = 'https://api.weibo.com/oauth2/access_token?client_id=%s&client_secret=%s&grant_type=authorization_code&redirect_uri=%s&code=%s' \
                   % (APPKEY, APPSECRET, REDIRECTURI, code)
    r = requests.post(access_token)
    data = json.loads(r.content)
    try:
        access_token = data[u'access_token']
        uid = int(data[u'uid'])
        expire = int(data[u'expires_in'])
    except KeyError:
        return 'no keys!<a href="/">return back</a>'
    usershow = 'https://api.weibo.com/2/users/show.json?access_token=%s&uid=%s' % (
        access_token, uid)
    r = requests.get(usershow)
    info = json.loads(r.content)
    name = info[u'name']
    avatar = info[u'profile_image_url']
    province = info[u'province']
    city = info[u'city']
    location = info[u'location']
    description = info[u'description']
    blog = info[u'url']
    gender = info[u'gender']
    followers = info[u'followers_count']
    friends = info[u'friends_count']
    statuses = info[u'statuses_count']
    created = info[u'created_at']
    avatar_hd = info[u'avatar_hd']
    g.cur.execute(
        """REPLACE INTO  `users` (`uid`,`access_token`,`name`,`avatar`,`province`,`city`,`location`,`description`,`blog`,`gender`,`followers`,`friends`,`statuses`,`created`,`avatar_hd`)\
        VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)""",
        (uid, access_token, name, avatar, province, city, location,
         description, blog, gender, followers, friends, statuses, created,
         avatar_hd))
    g.db.commit()
    # cookie expire
    # app.permanent_session_lifetime = timedelta(seconds=expire)
    session['uid'] = uid
    return redirect(url_for('index'))
Esempio n. 8
0
def zip_mod():
    """
    need nginx module mod_zip  https://github.com/evanmiller/mod_zip
    """
    url = request.args.get('url')
    try:  # prevent universal crawler
        request.cookies['csrf']
    except KeyError:
        return abort(403)
    if url:
        g.cur.execute(
            ''' SELECT `title`,`picsUrls` FROM `albums` WHERE `url` = %s''',
            (url, ))
        r = g.cur.fetchone()
        if r:
            title = r.get('title').encode('utf-8')
            files = r.get('picsUrls').split('\n')
            a = time.time()
            tasks = ThreadsTask()
            threads = []
            for f in files:
                t = threading.Thread(target=tasks.run, args=(f, ))
                threads.append(t)
                t.start()
            for t in threads:
                t.join()
            fs = "\n".join(tasks.result)
            print 'zip:', time.time() - a
            return Response(fs,
                            headers={
                                'X-Archive-Charset':
                                'utf-8',
                                'X-Archive-Files':
                                'zip',
                                'Content-Disposition':
                                'attachment; filename="%s.zip"' % title
                            })
        else:
            return abort(404)
    else:
        return abort(400)
Esempio n. 9
0
def callback():
    code = request.args.get('code')
    if not code:
        abort(400)
    access_token = 'https://api.weibo.com/oauth2/access_token?client_id=%s&client_secret=%s&grant_type=authorization_code&redirect_uri=%s&code=%s' \
                   % (APPKEY, APPSECRET, REDIRECTURI, code)
    r = requests.post(access_token)
    data = json.loads(r.content)
    try:
        access_token = data[u'access_token']
        uid = int(data[u'uid'])
        expire = int(data[u'expires_in'])
    except KeyError:
        return 'no keys!<a href="/">return back</a>'
    usershow = 'https://api.weibo.com/2/users/show.json?access_token=%s&uid=%s' % (access_token, uid)
    r = requests.get(usershow)
    info = json.loads(r.content)
    name = info[u'name']
    avatar = info[u'profile_image_url']
    province = info[u'province']
    city = info[u'city']
    location = info[u'location']
    description = info[u'description']
    blog = info[u'url']
    gender = info[u'gender']
    followers = info[u'followers_count']
    friends = info[u'friends_count']
    statuses = info[u'statuses_count']
    created = info[u'created_at']
    avatar_hd = info[u'avatar_hd']
    g.cur.execute("""REPLACE INTO  `users` (`uid`,`access_token`,`name`,`avatar`,`province`,`city`,`location`,`description`,`blog`,`gender`,`followers`,`friends`,`statuses`,`created`,`avatar_hd`)\
        VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)""", (
        uid, access_token, name, avatar, province, city, location, description, blog, gender, followers, friends,
        statuses,
        created, avatar_hd))
    g.db.commit()
    # cookie expire
    # app.permanent_session_lifetime = timedelta(seconds=expire)
    session['uid'] = uid
    return redirect(url_for('index'))
Esempio n. 10
0
def down_album_urls():
    url = request.args.get('url')
    if url:
        g.cur.execute(''' SELECT `picsUrls`,`title` FROM `albums` WHERE `url` = %s''', (url,))
        r = g.cur.fetchone()
        if r:
            # return Response(r.get('picsUrls'),mimetype='text/pain')
            title = r.get('title').encode('utf-8')
            # print title.decode('utf-8'),type(title)
            return Response(r.get('picsUrls'),
                            headers={
                                'Content-Type': 'text/pain; charset=utf-8',
                                'Content-Disposition': 'attachment; filename="%s.txt"' % title
                            })
        else:
            return 'don\'t found!'
    else:
        return abort(400)
Esempio n. 11
0
def down_album_urls():
    url = request.args.get('url')
    if url:
        g.cur.execute(
            ''' SELECT `picsUrls`,`title` FROM `albums` WHERE `url` = %s''',
            (url, ))
        r = g.cur.fetchone()
        if r:
            # return Response(r.get('picsUrls'),mimetype='text/pain')
            title = r.get('title').encode('utf-8')
            # print title.decode('utf-8'),type(title)
            return Response(r.get('picsUrls'),
                            headers={
                                'Content-Type':
                                'text/pain; charset=utf-8',
                                'Content-Disposition':
                                'attachment; filename="%s.txt"' % title
                            })
        else:
            return 'don\'t found!'
    else:
        return abort(400)
Esempio n. 12
0
def preview():
    url = request.args.get('url')
    # todo: albums img pages
    try:
        page = abs(int(request.args.get('p')))
    except TypeError:
        page = 0
    if url:
        g.cur.execute(''' SELECT `picsUrls`,`title`,`pics` FROM `albums` WHERE `url` = %s''', (url,))
        r = g.cur.fetchone()
        if r:
            count = r.get('pics')
            urls = r.get('picsUrls')
            thumbnails = re.sub('big.', 'small.', urls).split('\n')  # [0:20]
            return render_template('preview.html',
                                   title=r.get('title'),
                                   imgs=thumbnails,
                                   url=url,
                                   count=count
                                   )
        else:
            return 'don\'t found!'
    else:
        return abort(400)
Esempio n. 13
0
def debug():
    # abort(401)
    abort(451)
Esempio n. 14
0
def out():
    if session['admin'] is True:
        session.pop('admin', None)
        return redirect(url_for('index'))
    else:
        abort(404)
Esempio n. 15
0
def debug():
    # abort(401)
    abort(451)
Esempio n. 16
0
def out():
    if session['admin'] is True:
        session.pop('admin', None)
        return redirect(url_for('index'))
    else:
        abort(404)