I was amazed to discover that Google don’t currently support Python as a language for their mobile ads. AdMob doesn’t either (thinking it’s more likely that people might use perl or VBScript for a contemporary web site).
But it’s a particularly strange omission for Google, since it’s one of their three ‘official’ internal languages (together with Java and C++), and because their Google App Engine platform mandates it. Do they assume that no-one would create a mobile application in their cloud?
I don’t know – it’s probably just left-hand and right-hand out of sync.
Anyway, The Hollywood Walk of Fame mobile site has been a recent hobby for me, and I chose Django on Python for a bit of educational fun.
It was going well until I decided to throw some ads onto it.
So of course I needed to port the ad code. It’s very simple, although cuts a few corners (this does not support AdSense’s custom colour feature for example):
def google_ad(request, publisher_id, format='mobile_single'):
scheme = 'https://' if request.is_secure() else 'http://'
params = {
'ad_type':'text_image',
'channel':'',
'client':'ca-mb-' + publisher_id,
'dt':repr(floor(1000*time())),
'format':format,
'https':'on' if request.is_secure() else '',
'host':scheme + request.META.get('HTTP_HOST', ''),
'ip':request.META.get('REMOTE_ADDR', ''),
'markup':'xhtml',
'oe':'utf8',
'output':'xhtml',
'ref':request.META.get('HTTP_REFERER', ''),
'url':scheme + request.META.get('HTTP_HOST', '') + \
request.META.get('PATH_INFO', ''),
'useragent':request.META.get('HTTP_USER_AGENT', '')
}
screen_res = request.META.get('HTTP_UA_PIXELS', '')
delimiter = 'x'
if screen_res == '':
screen_res = request.META.get('HTTP_X_UP_DEVCAP_SCREENPIXELS', '')
delimiter = ','
res_array = screen_res.split(delimiter)
if len(res_array) == 2:
params['u_w'] = res_array[0]
params['u_h'] = res_array[1]
dcmguid = request.META.get('HTTP_X_DCMGUID', '')
if dcmguid != '':
params['dcmguid'] = dcmguid
url = 'http://pagead2.googlesyndication.com/pagead/ads?' + urlencode(params)
return urlopen(url).read()
I presume I’m allowed to do this, I know it’s only 15 minutes saved – but if it helps someone, great. No warranties – but it works for me!
Incidentally, in Django, I am placing this in a context_processor so that it gets put into a template variable that I know will turn up in every view when the site is in mobile ‘mode’. I use a switcher like this to toggle between http://hwof.com and http://hwof.mobi.
Hm. This post looks terrible in this theme. I think I need to change WordPress template soon.