コード例 #1
0
ファイル: Domain.py プロジェクト: CaeserZheng/fusion
class Domain():
    def __init__(self,ak,sk):
        if not (ak or sk):
            raise ValueError("Please input ak and sk!!")

        self.op=Auth(ak,sk)


    def GetDomainList(self,marker=None,limit=None,domainPrefix=None,sourceType=None,sourceQiniuBucket=None):
        query = ""
        if marker is not None:
            query = "&marker=" + marker
        if limit is not None:
            query = query + "&limit=" + limit
        if domainPrefix is not None:
            query = query + "&domainPrefix=" + domainPrefix
        if sourceType is not None:
            query = query + "&sourceType=" + sourceType
            if sourceQiniuBucket is not None:
                query = query + "&sourceQiniuBucket" + sourceQiniuBucket
            else:
                raise ValueError("sourceQiniuBucket invalue!!")

        query = query[1:]
        if len(query) == 0:
            url = "http://" + HOST + PATH
        else:
            url = "http://" + HOST + PATH + "?" +query

        url=url.replace(' ','%20')
        token=self.op.token_of_request(url)
        token="QBox " + token
        header={'Authorization':str(token)}
        #print header
        re=requests.get(url,headers = header)
        '''
        try:
            re=requests.get(url,headers = header)
            if re.status_code == 200:
                domain={}
                res = re.text
                res = json.loads(res)
                domainInfos = res["domainInfos"][0]
            else:
                print re.status_code,re.headers

        except:
            print(re)
        '''
        #print re.headers
        print re.status_code
        print re.text

        return re.headers,re.status_code,re.text
コード例 #2
0
def qiniu_upload(bucket, upload_name, upload_file):
    access_key = QINIU_ACCESS_KEY
    secret_key = QINIU_SECRET_KEY
    try:
        q = Auth(access_key, secret_key)

        bucket_name = bucket
        print bucket_name

        key = upload_name

        token = q.upload_token(bucket_name, key, 3600)

        data = upload_file

        ret, info = put_data(token, key, data)

        print(info)

        assert ret['key'] == key

        # 刷新缓存
        refresh_url = '/v2/tune/refresh'
        base_url = "https://oerfptemy.qnssl.com/" + str(key)
        accessToken = q.token_of_request(refresh_url)
        print accessToken, type(accessToken)
        headers = {
            "Authorization": 'QBox {0}'.format(accessToken),
            "Content-Type": "application/json"
        }
        data = {"urls": ["https://oerfptemy.qnssl.com/" + key]}
        print dict(urls=[base_url])
        print headers
        r = requests.post('http://fusion.qiniuapi.com/v2/tune/refresh',
                          data=json.dumps(data),
                          headers=headers)
        print 'code: ' + str(r.status_code)
        print 'text: ' + r.text
        code = json.loads(r.text).get('code')
        print code
        if r.status_code != 200 and code != '200':
            return 2
    except Exception as e:
        print e
        return 0
    return 1
コード例 #3
0
ファイル: views.py プロジェクト: leiyang23/api.freaks.group
def qiniu_data_statistic(request):
    """七牛云接口统计"""

    res = {"space": 0, "count": 0}
    today = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
    yesterday = (datetime.datetime.now() -
                 datetime.timedelta(days=1)).strftime("%Y%m%d%H%M%S")
    access_key = 'ifQf2JhtpIsK354ZT69bKbMtBPsDzNlQNizohXHm'
    secret_key = 'GxBrXLvPiMxls5cqdOdorlwtBW42OulonwMsIHFd'
    q = Auth(access_key, secret_key)

    for i in res:
        url = f'http://api.qiniu.com/v6/{i}?bucket=test&begin={yesterday}&end={today}&g=day'
        access_token = q.token_of_request(url=url)  # 管理凭证

        headers = {"Authorization": "QBox " + access_token}

        resp = requests.get(url, headers=headers).json()
        res[i] = resp['datas'][-1]
    return JsonResponse({"status_code": 200, "data": res})
コード例 #4
0
def get_wx_head(headimg, unionid):
    Encodedurl = urlsafe_base64_encode(headimg)
    Encodedentryuri = urlsafe_base64_encode('userhead:' + unionid + ".jpg")
    upheadurl = '/fetch/' + Encodedurl + '/to/' + Encodedentryuri
    Host = 'iovip.qbox.me'
    Content_type = 'application/x-www-form-urlencoded'
    requrl = "http://" + Host + upheadurl

    q = Auth(qiniu_access_key, qiniu_secret_key)
    AccessToken = q.token_of_request(requrl, content_type=Content_type)

    Authorization = 'QBox ' + AccessToken
    headers = {
        'Host': Host,
        'Content-Type': Content_type,
        'Authorization': Authorization,
    }
    r = requests.post(requrl, headers=headers)
    if (r.status_code != 200):  # 抓取不成功
        return 0
    else:
        return 1
コード例 #5
0
def get_bucket_host(bucket_name, auth=None, ak=None, sk=None):
    """
    获取指定bucket的host
    Args:
    ----
    bucket_name: 待查询的bucket名
    auth: 七牛鉴权
    ak: bucket_name 所在账号对应的ak
    sk: ...sk
    auth 或 (ak, sk)两者指定一个即可

    Return:
    ------
    host: bucket 对应的访问外链
    """
    request_url = 'http://api.qiniu.com/v6/domain/list?tbl=%s' % bucket_name
    if auth is None:
        auth = Auth(ak, sk)
    token = auth.token_of_request(request_url)
    request_header = {'Authorization': 'QBox %s' % token}
    r = requests.get(request_url, headers=request_header)
    host = 'http://' + r.json()[0]
    return host
コード例 #6
0
def main():
    # 需要填写你的 Access Key 和 Secret Key
    access_key = 'your_AK'
    secret_key = 'your_SK'

    # 构建鉴权对象
    q = Auth(access_key, secret_key)
    # 要上传的空间
    bucket_name = '2018_11_16'

    # 上传到七牛后保存的文件名
    key = '1'

    # 本地要上传的文件
    file_path = '/Users/pasca/Desktop/七牛文档/1.txt'

    # 管理凭证的url,这里是列举空间的bucket
    url = 'http://rs.qbox.me/buckets?'
    # 生成上传 Token,可以指定过期时间等
    # 上传策略示例
    # https://developer.qiniu.com/kodo/manual/1206/put-policy
    policy = {
        # 'callbackUrl':'https://requestb.in/1c7q2d31',
        # 'callbackBody':'filename=$(fname)&filesize=$(fsize)'
        # 'persistentOps':'imageView2/1/w/200/h/200'
    }

    # 3600为token过期时间,秒为单位。3600等于一小时
    upload_token = q.upload_token(bucket_name, key, 3600, policy)
    accessToken = q.token_of_request(url)
    # 执行上传token
    info = Check_Upload_Token(upload_token, key, file_path)
    print('上传凭证:', upload_token, info)

    #执行管理token
    info1 = Check_AccessToken(url, accessToken)
    print('管理凭证:', accessToken, info1)
コード例 #7
0
ファイル: cdnspider.py プロジェクト: CaeserZheng/spiderman
class SpiderMan():
    def __init__(self):

        if not (access_key or screen_key ):
            raise ValueError("invalid access_key or screen_key!!")

        self.op = Auth(access_key,screen_key)


    def register(self,cname,POST=False,DELETE=False):
        url = "http://" + Host + "/v1/cname/" + cname
        token = self.op.token_of_request(url)
        token="QBox " + token
        header={'Authorization':str(token)}

        if POST:
            re = requests.post(url,headers=header)
            return re.status_code,re.headers,re.text

        elif DELETE:
            re = requests.delete(url,headers=header)
            return re.status_code,re.headers,re.text
        else:
            raise ValueError("注册/删除 CNAME")

    def searchCname(self,cname,sync=False):

        '''
        查询某条CNAME的区域分布
        :param cname:
        :param sync: 默认异步
        :return:区分分布
        '''
        url="http://" + Host + "/v1/cname/" + cname
        if sync:
            url = url + "?sync=true"

        token=self.op.token_of_request(url)

        token="QBox " + token
        header={'Authorization':str(token)}
        re=requests.get(url,headers = header)
        #return  http.get(url,headers=header)
        return re.status_code,re.headers,re.text

    def checkip(self,ip):
        '''
        查询IP地域信息
        :param ip: 目标IP
        :return:
        '''
        url = "http://"+Host+"/v1/ipcdninfo/" + str(ip)
        token=self.op.token_of_request(url)

        token="QBox " + token
        header={'Authorization':str(token)}
        re=requests.get(url,headers = header)
        #return  http.get(url,headers=header)
        return re.status_code,re.headers,re.text


    def regionalip(self,cname,isp=None,province=None):

        Content_Type="application/json"
        url = "http://"+Host+"/v1/regionalip/"
        body={}
        body['cname']=cname
        if isp is not None:
            body['isp']=isp
        if province is not None:
            body['province']=province

        #body = json.dumps(body)

        token = self.op.token_of_request(url,body=body,content_type=Content_Type)
        token="QBox " + token
        header={'Authorization':str(token)}
        re=requests.post(url,data=json.dumps(body),headers=header)
        #return  http.get(url,headers=header)
        return re.status_code,re.headers,re.text




    def dnsmap(self):
        pass
コード例 #8
0
    secret_key = os.getenv('QINIU_SECRET_KEY')
else:
    access_key = sys.argv[2]
    secret_key = sys.argv[3]

print('QINIU_ACCESS_KEY: ' + access_key)
print('QINIU_SECRET_KEY: ' + secret_key)

# 构建七牛鉴权对象
auth = Auth(access_key, secret_key)

# 上传证书
## 上传 api 地址
sslcertUploadUrl = 'http://api.qiniu.com/sslcert'
## 生成 上传证书 api accesstoken
sslcert_accesstoken = auth.token_of_request(sslcertUploadUrl)
print('上传证书 api accesstoken: ' + sslcert_accesstoken)

## 证书信息
sslcertFolder = '/etc/letsencrypt/live/' + cert_domain
sslcertPriFile = open(sslcertFolder + '/privkey.pem')
sslcertChainFile = open(sslcertFolder + '/fullchain.pem')
sslcertPriStr = sslcertPriFile.read()
sslcertChainStr = sslcertChainFile.read()
nowDate = datetime.date.today().strftime("%Y%m%d")
sslcertData = {
    'name': cert_domain + '-letsencrypt-' + nowDate,
    'common_name': cert_domain,
    'pri': sslcertPriStr,
    'ca': sslcertChainStr
}
コード例 #9
0
# -*- coding: utf-8 -*-
from qiniu import Auth

access_key = '公钥'
secret_key = '私钥'
url = "http://ai.qiniuapi.com/v1/image/groups/search"

AccessToken = Auth(access_key, secret_key)
print(AccessToken.token_of_request(url))
コード例 #10
0
ファイル: Domain.py プロジェクト: CaeserZheng/fusion
class DomainManager():
    def __init__(self, ak, sk):
        if not (ak or sk):
            raise ValueError("Please input ak and sk!!")

        self.op = Auth(ak, sk)

    def GetDomainListV2(self, marker=None, limit=None):
        query = ""
        if marker is not None:
            query = "&marker=" + marker
        if limit is not None:
            query = query + "&limit=" + limit
        query = query[1:]
        if len(query) == 0:
            url = "http://" + HOST + PATH
        else:
            url = "http://" + HOST + PATH + "?" + query

        url = url.replace(' ', '%20')
        token = self.op.token_of_request(url)
        token = "QBox " + token
        header = {'Authorization': str(token)}
        # print header
        re = requests.get(url, headers=header)
        # print re.headers
        print(re.status_code)
        print(re.text)

        return re.headers, re.status_code, re.text

    def GetDomains(self):
        '''
                marker=None,limit=None,domainPrefix=None,sourceType=None,sourceQiniuBucket=None
                :param kwargs:
                :return:
                '''
        url = "http://" + HOST + PATH
        url = url.replace(' ', '%20')

        token = self.op.token_of_request(url)
        header = {'Authorization': 'QBox %s' % token}
        # print header
        try:
            re = requests.get(url, headers=header)
            info = {'code': re.status_code, 'message': re.headers}
            body = re.text
        except (requests.HTTPError, requests.ConnectionError) as e:
            info = {'code': 0, 'message': e.message()}
            body = None

        return info, body

    def GetDomainList(self, **kwargs):
        '''
        :param kwargs: 过滤条件
        :return:
        '''
        url = "http://" + HOST + PATH
        url = url.replace(' ', '%20')

        token = self.op.token_of_request(url)
        header = {'Authorization': 'QBox %s' % token}
        # print header
        try:
            re = requests.get(url, headers=header)
            body = json.loads(re.text)
            domainInfos = body['domainInfos']
            domian_list = []
            if kwargs:
                for d in domainInfos:
                    for k, v in kwargs.items():
                        d = filters(d, k, v)
                    if d:
                        domian_list.append(d['name'])
            else:
                for d in domainInfos:
                    domian_list.append(d['name'])
            info = {'code': re.status_code, 'message': re.headers}
            return info, domian_list
        except (requests.HTTPError, requests.ConnectionError) as e:
            info = {'code': 0, 'message': e.message()}
            body = None
            return info, body
コード例 #11
0
#import qiniu
import datetime
import time
import os
import urllib
import urllib2

access_key = '68-wB4MzU0HYKh0LlNdhQsptearKELGLVMZ66jZO'
secret_key = 'H5vDtdpJyQYPPpHSAiouB5CceQ0_oS14caLGL8Yb'

q = Auth(access_key, secret_key)

host = "http://pili.qiniuapi.com"

hub = "yuenr_live"
ticks = datetime.datetime.now()

url = ("/v2/hubs/%s/stat/play/history/detail?time=%s" % (hub, ticks))
print(url)

token = q.token_of_request(url)
print(token)
headers = {
    'User-Agent': "QiniuPython/7.2.2 (Windows; AMD64; ) Python/2.7.12",
    "Authorization": "Qiniu " + token,
    "Content-Type": "application/x-www-form-urlencoded"
}
data = {"Authorization": token}
# result = http._get(host+url, None, q)
# print(result)
# print http.USER_AGENT
コード例 #12
0
    def parse(self, response):
        if 'article_id' in os.environ.keys():
            article_id = os.environ['article_id']
        else:
            return
        sel = Selector(response)
        article_ps = sel.xpath(
            '//div[@class="rich_media_content "]//p|//div[@class="rich_media_content "]/section'
        )
        if len(article_ps) == 0:
            return
        article_items = OrderedDict()
        article_items['article_id'] = article_id

        bucket_name = 'qnmami-information'
        access_key = "nR4zZ4XaxesEAhPW59BZNtWOMu4aD-pnHcg28iF6",
        secret_key = "uaykXj8wnZwWT3n02XG-keUat-UOUGfbGxHKEgUr"
        q = Auth(access_key, secret_key)

        index = 0
        for article_p in article_ps:
            if len(article_p.xpath('.//img')) > 0:
                if ''.join(article_p.xpath(".//text()").extract()):
                    article_items['article_item[' + str(index) +
                                  '][text_content]'] = ''.join(
                                      article_p.xpath('.//text()').extract())
                    article_items['article_item[' + str(index) + '][type]'] = 1
                    article_items['article_item[' + str(index) + '][id]'] = ''
                    index += 1
                article_items['article_item[' + str(index) + '][type]'] = 2
                article_items['article_item[' + str(index) + '][id]'] = ''
                pic_url = article_p.xpath('.//img/@data-src').extract()
                if len(pic_url) > 0:
                    pic_url = pic_url[0]
                else:
                    pic_url = article_p.xpath('.//img/@src').extract()[0]
                m = hashlib.md5()
                m.update(pic_url)
                pic_url_hash = m.hexdigest()
                ff = '/fetch/' + urlsafe_b64encode(
                    pic_url) + '/to/' + urlsafe_b64encode(bucket_name +
                                                          ':article_' +
                                                          pic_url_hash)
                token = q.token_of_request(
                    'http://iovip.qbox.me' + ff,
                    content_type='application/x-www-form-urlencoded')
                token = ''.join(re.search('\(\'(.+)\',\)(.+)', token).groups())
                authorization = 'QBox ' + token
                headers = {
                    'Content-Type': 'application/x-www-form-urlencoded',
                    'Authorization': authorization
                }
                req = requests.post('http://iovip.qbox.me' + ff,
                                    headers=headers)
                # pic_url_qiniu = 'http://lixian.cdnqiniu01.qnmami.com/' + req.json()['key']
                pic_url_qiniu = 'http://information.cdnqiniu02.qnmami.com/' + req.json(
                )['key']
                article_items['article_item[' + str(index) +
                              '][image_url]'] = pic_url_qiniu
            else:
                if ''.join(article_p.xpath('.//text()').extract()) == '':
                    continue
                article_items['article_item[' + str(index) +
                              '][text_content]'] = ''.join(
                                  article_p.xpath('.//text()').extract())
                article_items['article_item[' + str(index) + '][type]'] = 1
                article_items['article_item[' + str(index) + '][id]'] = ''
            index += 1
        req = requests.post('http://oss.qnmami.com/article/add-article-item',
                            data=article_items)
        logging.warning(req.text)