1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
from aw_api.Client import Client
class adwordsStats:
def __init__(self):
auth = {
'email': 'Jason@anyclip.com',
'password': 'zounds12',
'clientEmail': 'chris@anyclip.com',
'userAgent': 'AnyClip: Keyword Stats Getter',
'developerToken': 'kffyoyKRl44FTSsCAQiF-Q',#'jason@anyclip.com++USD'
'applicationToken': 'SAc_CoQtSWRowhONHSdHXw'
}
config = {
'debug': 'n',
'xml_log': 'n',
'request_log': 'n'
}
client = Client(headers=auth, config=config)
self.targeting_idea_service = client.GetTargetingIdeaService('https://adwords.google.com', 'v200909')
def getKeywordStats(self, keyword):
keyword = keyword.lower()
if keyword.startswith("the"):
keyword = keyword.replace("the ", "")
selector = {
'searchParameters': [
{
'type': 'RelatedToKeywordSearchParameter',
'keywords': [{
'text': keyword,
'matchType': 'EXACT'
}]
},
{
'type': 'CountryTargetSearchParameter',
'countryTargets': [
{'countryCode': 'US'}
]
},
{
'type': 'LanguageTargetSearchParameter',
'languageTargets': [
{'languageCode': 'en'}
]
},
{
'type': 'KeywordMatchTypeSearchParameter',
'keywordMatchTypes': [
'EXACT',
'BROAD'
]
}
],
'ideaType': 'KEYWORD',
'requestType': 'IDEAS',
'requestedAttributeTypes': ['KEYWORD', 'GLOBAL_MONTHLY_SEARCHES', 'AVERAGE_TARGETED_MONTHLY_SEARCHES'],
'paging': {
'startIndex': '',
'numberResults': '10'
},
}
ret = {
'broad': {
'gsv': 0,
'lsv': 0
},
'exact': {
'gsv': 0,
'lsv': 0
}
}
found = False
pageNum = 0
while not found and pageNum <= 200:
selector['paging']['startIndex'] = str(pageNum)
pageNum += int(selector['paging']['numberResults'])
page = self.targeting_idea_service.Get(selector)[0]
if 'entries' in page:
for result in page['entries']:
matches = False
for data in result['data']:
if data['key'] == 'GLOBAL_MONTHLY_SEARCHES':
if 'value' in data['value']:
gsv = int(data['value']['value'])
else:
gsv = 0
elif data['key'] == 'AVERAGE_TARGETED_MONTHLY_SEARCHES':
if 'value' in data['value']:
lsv = int(data['value']['value'])
else:
lsv = 0
elif data['key'] == 'KEYWORD':
if data['value']['value']['text'] == keyword:
matches = True
matchType = data['value']['value']['matchType'].lower()
if matches:
found = True
ret[matchType]['gsv'] = gsv
ret[matchType]['lsv'] = lsv
return ret
|