summaryrefslogtreecommitdiffstats
path: root/AdwordsStats.py
blob: a6643a7797aa0a6670ede97dd19873a68dee631a (plain) (blame)
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