Page MenuHomePhabricator
Paste P43576

campaignlinks.py
ActivePublic

Authored by Tgr on Feb 2 2023, 9:53 AM.
Tags
None
Referenced Files
F36578546: campaignlinks.py
Feb 2 2023, 9:53 AM
Subscribers
None
#!/usr/bin/env python
import copy
region_names = {
'mena': 'Middle East and Africa',
'sa': 'South Asia',
'eseap': 'East, Southeast Asia, and Pacific',
'latam': 'LATAM and The Caribbean',
'na': 'United States and Canada',
'nwe': 'Northern and Western Europe',
'cee': 'CEE and Central Asia',
}
language_names = {
'en': 'English',
'sv': 'Swedish',
'it': 'Italian',
'fr': 'French',
'nl': 'Dutch',
'ja': 'Japanese',
}
wiki_regions = {
'sv': 'nwe',
'it': 'nwe',
'fr': 'nwe',
'nl': 'nwe',
'ja': 'eseap',
}
origin_pattern = {
'beta': 'https://{wiki}.{m}wikipedia.beta.wmflabs.org',
'test': 'https://test.{m}wikipedia.org',
'prod': 'https://{wiki}.{m}wikipedia.org',
}
campaign_pattern = 'typage-{region}-{wiki}-2023'
class Url(object):
def __init__(self, wiki, lang):
self.wiki = wiki
self.lang = lang
def site_prop(site):
@property
def prop(self):
clone = copy.deepcopy(self)
clone.site = site
return clone
return prop
def device_prop(device):
@property
def prop(self):
origin = origin_pattern[self.site].format(wiki=self.wiki, m=('m.' if device == 'mobile' else ''))
campaign = campaign_pattern.format(region=wiki_regions[self.wiki], wiki=self.wiki)
return f'{origin}/w/index.php?title=Special:CreateAccount&campaign={campaign}&uselang={self.lang}'
return prop
beta = site_prop('beta')
test = site_prop('test')
prod = site_prop('prod')
m = device_prop('mobile')
d = device_prop('desktop')
i = 0
table = '|#| Region | Language | wiki project | campaign URL pattern | Beta URL | Test URL | Prod URL |\n'
table_row_pattern = '|{i}| {region} | {language} | {wiki} | {campaign} | [[{url.beta.d}|desktop]], [[{url.beta.m}|mobile]] | [[{url.test.d}|desktop]], [[{url.test.m}|mobile]] | [[{url.prod.d}|desktop]], [[{url.prod.m}|mobile]]\n'
for wiki in ['sv', 'it', 'fr', 'nl', 'ja']:
for lang in [wiki, 'en']:
i = i + 1
url = Url(wiki, lang)
campaign = campaign_pattern.format(region=wiki_regions[wiki], wiki=wiki)
table += table_row_pattern.format(i=i, region=region_names[wiki_regions[wiki]], language=language_names[lang], wiki=(wiki + 'wiki'), campaign=campaign, url=url)
print(table)