python 华特迪士尼:API MAID来电

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 华特迪士尼:API MAID来电相关的知识,希望对你有一定的参考价值。

import os
import sys
import urllib
import urllib2
import cookielib
import urlparse
import hashlib 
import hmac
import base64
import json
import random

headers = {"Accept":"application/json","Content-type":"application/json","User_Agent":"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5"}

# 1. Enter your BlueKai developer keys

bkuid = 'PUBLIC KEY' #Web Service User Key
bksecretkey = 'PRIVATE KEY' #Web Service Private Key

# 2.  Specify the service endpoint
#    - For GET (List) requests, add the desired sort and filter options in the query string
#    - For GET (Read), PUT or DELETE requests, append the item ID to the Url path
#     * NOTE: For the Campaign, Order, and Pixel URL APIs, insert the item ID in the query string instead of the Url path

#bkuid=37a514a840a50d010bd451e29fa3ce770cce31face47e111623be3655c9fc6e3
#bksig=96E13ri7MNvPGPZ%2FweD3nRnSvabHWWxQmylGQe72NC4%3D
#api.tags.bluekai.com/getdata/52184/v1.2?phint=vendor=screenmoguls&idfa=2A3233DB-F439-41E2-93C3-420543E7AA32&create_profile=1&ccode=gb&bkuid=e90228f78e4802a797818fe19af732d2a120132687eaa6694b92ffa682160bf5&bksig=96E13ri7MNvPGPZ%2FweD3nRnSvabHWWxQmylGQe72NC4%3D

container_id = "64132"
country_code = "gb"
idfa = "2A3233DB-F439-41E2-93C3-420543E7AA32"
phints = "vendor%3Dscreenmoguls"

Url = 'http://api.tags.bluekai.com/getdata/' + container_id + '/v1.2?phint=' + phints + '&idfa=' + idfa + '&ccode=' + country_code + '&create_profile=1'

# 3. For POST and PUT requests, uncomment the "data" variable and enter the JSON body
#data = ''

#Creating the method signature
def signatureInputBuilder(url, method, data):
    stringToSign = method
    parsedUrl = urlparse.urlparse(url)
    print parsedUrl
    stringToSign += parsedUrl.path
    
    # splitting the query into array of parameters separated by the '&' character
    #print parsedUrl.query
    qP = parsedUrl.query.split('&')
    #print qP

    if len(qP) > 0:
        for  qS in qP:
            qP2 = qS.split('=')
            #print qP2
            if len(qP2) > 1:
                stringToSign += qP2[1]
    
    #print stringToSign
    if data != None :
        stringToSign += data 
    print "\nString to be Signed:\n" + stringToSign
    
    h = hmac.new(bksecretkey, stringToSign, hashlib.sha256)

    s = base64.standard_b64encode(h.digest())
    print "\nRaw Method Signature:\n" + s 
    
    u = urllib.quote_plus(s)
    print "\nURL Encoded Method Signature (bksig):\n" + u

    newUrl = url 
    if url.find('?') == -1 :
        newUrl += '?'
    else:
        newUrl += '&'
        
    newUrl += 'bkuid=' + bkuid + '&bksig=' + u 

    return newUrl

#Generating  the method request 
def doRequest(url, method, data):
    try:
        cJ = cookielib.CookieJar()
        request = None
        if method == 'PUT': 
            request = urllib2.Request(url, data, headers)
            request.get_method = lambda: 'PUT'
        elif  method == 'DELETE' :
            request = urllib2.Request(url, data, headers)
            request.get_method = lambda: 'DELETE'
        elif data != None :
            request = urllib2.Request(url, data, headers)
        else:
            request = urllib2.Request(url, None, headers)  
            opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cJ))
            u = opener.open(request)
            rawData = u.read()
            print "\nResponse Code: 200"
            print "\nAPI Response:\n" + rawData + "\n"
            return rawData

    except urllib2.HTTPError, e:
        print "\nHTTP error: %d %s" % (e.code, str(e)) 
        print "ERROR: ", e.read()
        return None
    except urllib2.URLError, e:
        print "Network error: %s" % e.reason.args[1]
        print "ERROR: ", e.read()
        return None

#4. Specify the API request method 
def main(argv=None):
    
    # Select the API Method by uncommenting the newUrl reference variable and doRequest() method
    
    # GET
    newUrl = signatureInputBuilder(Url, 'GET', None)
    doRequest(newUrl, 'GET', None)
    
    # POST
    #newUrl = signatureInputBuilder(Url, 'POST', data)
    #doRequest(newUrl, 'POST', data)
    
    # PUT
    #newUrl = signatureInputBuilder(Url, 'PUT', data)
    #doRequest(newUrl, 'PUT', data)
    
    #DELETE
    #newUrl = signatureInputBuilder(Url, 'DELETE', None)
    #doRequest(newUrl, 'DELETE', None)
    
    print "API Call: \n" + newUrl

if __name__ == "__main__":
   main()

以上是关于python 华特迪士尼:API MAID来电的主要内容,如果未能解决你的问题,请参考以下文章

[Maid] Write Tasks in Markdown with Maid

不允许来电 Lync Api 或禁用来电声音

如何使用私有 API 阻止 iOS 应用程序中的来电?

在 android API29+ 中检测来电和去电

影视-电影:《奇幻森林》

当来电者和发件人相同时,如何使用贝宝自适应付款方式汇款?