Skip to content

Instantly share code, notes, and snippets.

@wlach
Created January 20, 2012 16:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save wlach/1648112 to your computer and use it in GitHub Desktop.
Save wlach/1648112 to your computer and use it in GitHub Desktop.
Script to programmatically find the XPI for the top 5 / top 100 addons used by Firefox
#!/usr/bin/env python
import urllib2
import tempfile
import zipfile
top5 = [
{ 'name': 'Microsoft .NET Framework Assistant', 'url': 'https://addons.mozilla.org/addon/9449', 'amo_id': 9449 },
{ 'name': 'Adblock Plus', 'url': 'https://addons.mozilla.org/addon/1865', 'amo_id': 1865 },
{ 'name': 'Yahoo! Toolbar', 'url': 'https://addons.mozilla.org/addon/2032', 'amo_id': 2032 },
{ 'name': 'Video DownloadHelper', 'url': 'https://addons.mozilla.org/addon/3006', 'amo_id': 3006 },
{ 'name': 'Yandex.Bar', 'url': 'https://addons.mozilla.org/addon/3495', 'amo_id': 3495 },
]
next100 = [
{ 'name': 'Sputnik', 'url': 'http://sputnik.mail.ru/' },
{ 'name': 'Test Pilot', 'url': 'https://addons.mozilla.org/addon/13661', 'amo_id': 13661 },
{ 'name': 'Google Toolbar', 'url': 'http://www.google.com/toolbar/ff/index.html' },
{ 'name': 'Firebug', 'url': 'https://addons.mozilla.org/addon/1843', 'amo_id': 1843 },
{ 'name': 'Greasemonkey', 'url': 'https://addons.mozilla.org/addon/748', 'amo_id': 748 },
{ 'name': 'Personas Plus', 'url': 'https://addons.mozilla.org/addon/10900', 'amo_id': 10900 },
{ 'name': 'Facemoods', 'url': 'http://facemoods.com/firefox' },
{ 'name': 'Download Statusbar', 'url': 'https://addons.mozilla.org/addon/26', 'amo_id': 26 },
{ 'name': 'DownThemAll!', 'url': 'https://addons.mozilla.org/addon/201', 'amo_id': 201 },
{ 'name': 'FlashGot', 'url': 'https://addons.mozilla.org/addon/220', 'amo_id': 220 },
{ 'name': 'NoScript', 'url': 'https://addons.mozilla.org/addon/722', 'amo_id': 722 },
{ 'name': 'ICQ Toolbar', 'url': 'http://www.icq.com/download/toolbar/en' },
{ 'name': 'Yontoo Client', 'url': 'http://www.yontoo.com/Download.aspx' },
{ 'name': 'WOT', 'url': 'https://addons.mozilla.org/addon/3456', 'amo_id': 3456 },
{ 'name': 'Flagfox', 'url': 'https://addons.mozilla.org/addon/5791', 'amo_id': 5791 },
{ 'name': 'Easy YouTube Video Downloader', 'url': 'https://addons.mozilla.org/addon/10137', 'amo_id': 10137 },
{ 'name': 'Tab Mix Plus', 'url': 'https://addons.mozilla.org/addon/1122', 'amo_id': 1122 },
{ 'name': 'Garmin Communicator', 'url': 'https://addons.mozilla.org/addon/10278', 'amo_id': 10278 },
{ 'name': 'ImTranslator', 'url': 'https://addons.mozilla.org/addon/2257', 'amo_id': 2257 },
{ 'name': 'Xmarks Sync', 'url': 'https://addons.mozilla.org/addon/2410', 'amo_id': 2410 },
{ 'name': 'Flashblock', 'url': 'https://addons.mozilla.org/addon/433', 'amo_id': 433 },
{ 'name': 'FireFTP', 'url': 'https://addons.mozilla.org/addon/684', 'amo_id': 684 },
{ 'name': 'Web Developer', 'url': 'https://addons.mozilla.org/addon/60', 'amo_id': 60 },
{ 'name': 'PriceGong', 'url': 'https://addons.mozilla.org/addon/10433', 'amo_id': 10433 },
{ 'name': 'English (South African) Language Pack', 'url': 'https://addons.mozilla.org/addon/6180', 'amo_id': 6180 },
{ 'name': 'Web.de Toolbar', 'url': 'http://web-de-toolbar.softonic.de/download' },
{ 'name': 'FoxTab', 'url': 'https://addons.mozilla.org/addon/8879', 'amo_id': 8879 },
{ 'name': 'Element Hiding Helper for Adblock Plus', 'url': 'https://addons.mozilla.org/addon/4364', 'amo_id': 4364 },
{ 'name': 'IE Tab V2', 'url': 'https://addons.mozilla.org/addon/92382', 'amo_id': 92382 },
{ 'name': 'Stylish', 'url': 'https://addons.mozilla.org/addon/2108', 'amo_id': 2108 },
{ 'name': 'Speed Dial', 'url': 'https://addons.mozilla.org/addon/4810', 'amo_id': 4810 },
{ 'name': 'Forecastfox Weather', 'url': 'https://addons.mozilla.org/addon/398', 'amo_id': 398 },
{ 'name': 'British English Dictionary', 'url': 'https://addons.mozilla.org/addon/3366', 'amo_id': 3366 },
{ 'name': 'BetterPrivacy', 'url': 'https://addons.mozilla.org/addon/6623', 'amo_id': 6623 },
{ 'name': 'IE Tab', 'url': 'https://addons.mozilla.org/addon/1419', 'amo_id': 1419 },
{ 'name': 'ColorfulTabs', 'url': 'https://addons.mozilla.org/addon/1368', 'amo_id': 1368 },
{ 'name': 'StumbleUpon', 'url': 'https://addons.mozilla.org/addon/138', 'amo_id': 138 },
{ 'name': 'Somoto Toolbar', 'url': 'http://toolbar.somotoinc.com/' },
{ 'name': 'Adblock Plus Pop-up Addon', 'url': 'https://addons.mozilla.org/addon/83098', 'amo_id': 83098 },
{ 'name': 'PDF Download', 'url': 'https://addons.mozilla.org/addon/83098', 'amo_id': 83098 },
{ 'name': 'United States English Spellchecker', 'url': 'https://addons.mozilla.org/addon/3497', 'amo_id': 3497 },
{ 'name': 'Download Master Toolbar', 'url': 'https://addons.mozilla.org/addon/9233', 'amo_id': 9233 },
{ 'name': 'FastestFox - Browse Faster', 'url': 'https://addons.mozilla.org/addon/9825', 'amo_id': 9825 },
{ 'name': 'Ant Video Downloader and Helper', 'url': 'https://addons.mozilla.org/addon/8174', 'amo_id': 8174 },
{ 'name': 'cacaoweb', 'url': 'http://www.cacaoweb.org/' },
{ 'name': 'FoxyProxy Standard', 'url': 'https://addons.mozilla.org/addon/2464', 'amo_id': 2464 },
{ 'name': 'Text Link', 'url': 'https://addons.mozilla.org/addon/1939', 'amo_id': 1939 },
{ 'name': 'NASA Night Launch', 'url': 'https://addons.mozilla.org/addon/4908', 'amo_id': 4908 },
{ 'name': 'Iplex to ALLPlayer', 'url': 'https://addons.mozilla.org/addon/282015', 'amo_id': 282015 },
{ 'name': 'Inbox Toolbar', 'url': 'https://addons.mozilla.org/addon/14839', 'amo_id': 14839 },
{ 'name': 'Amazon "Add to Wish List" Button', 'url': 'https://addons.mozilla.org/addon/257015', 'amo_id': 257015 },
{ 'name': 'German Dictionary', 'url': 'https://addons.mozilla.org/addon/3077', 'amo_id': 3077 },
{ 'name': 'Rambler-Assistant for Firefox', 'url': 'https://addons.mozilla.org/addon/6360', 'amo_id': 6360 },
{ 'name': 'IE Tab Plus', 'url': 'https://addons.mozilla.org/addon/10909', 'amo_id': 10909 },
{ 'name': 'SkipScreen', 'url': 'https://addons.mozilla.org/addon/11243', 'amo_id': 11243 },
{ 'name': 'AniWeather', 'url': 'https://addons.mozilla.org/addon/12331', 'amo_id': 12331 },
{ 'name': 'Flash Video Downloader', 'url': 'https://addons.mozilla.org/addon/6584', 'amo_id': 6584 },
{ 'name': 'User Agent Switcher', 'url': 'https://addons.mozilla.org/addon/59', 'amo_id': 59 },
{ 'name': 'Ghostery', 'url': 'https://addons.mozilla.org/addon/9609', 'amo_id': 9609 },
{ 'name': 'Ask.com Toolbar', 'url': 'http://sp.ask.com/toolbar/install/web/ask/download.php' },
{ 'name': 'Gmail Manager', 'url': 'https://addons.mozilla.org/addon/1320', 'amo_id': 1320 },
{ 'name': 'AddThis', 'url': 'https://addons.mozilla.org/addon/4076', 'amo_id': 4076 },
{ 'name': 'Add-on Compatibility Reporter', 'url': 'https://addons.mozilla.org/addon/15003', 'amo_id': 15003 },
{ 'name': 'Evernote Web Clipper', 'url': 'https://addons.mozilla.org/addon/8381', 'amo_id': 8381 },
{ 'name': 'Screengrab', 'url': 'https://addons.mozilla.org/addon/1146', 'amo_id': 1146 },
{ 'name': 'LavaFox V1', 'url': 'https://addons.mozilla.org/addon/11861', 'amo_id': 11861 },
{ 'name': 'Image Zoom', 'url': 'https://addons.mozilla.org/addon/139', 'amo_id': 139 },
{ 'name': 'CoolPreviews', 'url': 'https://addons.mozilla.org/addon/2207', 'amo_id': 2207 },
{ 'name': 'Google Gears Portable', 'url': 'https://addons.mozilla.org/addon/13492', 'amo_id': 13492 },
{ 'name': 'FoxLingo', 'url': 'https://addons.mozilla.org/addon/2444', 'amo_id': 2444 },
{ 'name': 'Download Manager Tweak', 'url': 'https://addons.mozilla.org/addon/256', 'amo_id': 256 },
{ 'name': 'FT DeepDark', 'url': 'https://addons.mozilla.org/addon/295337', 'amo_id': 295337 },
{ 'name': 'Read It Later', 'url': 'https://addons.mozilla.org/addon/7661', 'amo_id': 7661 },
{ 'name': 'AutoComplete Pro', 'url': 'http://www.autocompletepro.com/welcome/' },
{ 'name': 'WebMail Notifier', 'url': 'https://addons.mozilla.org/addon/4490', 'amo_id': 4490 },
{ 'name': 'All-in-One Sidebar', 'url': 'https://addons.mozilla.org/addon/1027', 'amo_id': 1027 },
{ 'name': 'Connection Manager', 'url': 'https://addons.mozilla.org/addon/1027', 'amo_id': 1027 },
{ 'name': 'ScrapBook', 'url': 'https://addons.mozilla.org/addon/427', 'amo_id': 427 },
{ 'name': 'MR Tech Toolkit', 'url': 'https://addons.mozilla.org/addon/421', 'amo_id': 421 },
{ 'name': 'NetVideoHunter Video Downloader', 'url': 'https://addons.mozilla.org/addon/7447', 'amo_id': 7447 },
{ 'name': 'SearchPreview', 'url': 'https://addons.mozilla.org/addon/189', 'amo_id': 189 },
{ 'name': 'GMX Toolbar', 'url': 'http://service.gmx.net/de/cgi/g.fcgi/products/mailcheck' },
{ 'name': 'Fast Video Download', 'url': 'https://addons.mozilla.org/addon/3590', 'amo_id': 3590 },
{ 'name': 'Yoono', 'url': 'https://addons.mozilla.org/addon/1833', 'amo_id': 1833 },
{ 'name': 'ReloadEvery', 'url': 'https://addons.mozilla.org/addon/115', 'amo_id': 115 },
{ 'name': 'RightToClick', 'url': 'https://addons.mozilla.org/addon/12572', 'amo_id': 12572 },
{ 'name': 'Tab Scope', 'url': 'https://addons.mozilla.org/addon/4882', 'amo_id': 4882 },
{ 'name': 'Download YouTube Videos + Flash Video Downloader', 'url': 'https://addons.mozilla.org/addon/12984', 'amo_id': 12984 },
{ 'name': 'Google Shortcuts', 'url': 'https://addons.mozilla.org/addon/3576', 'amo_id': 3576 },
{ 'name': 'AutoPager', 'url': 'https://addons.mozilla.org/addon/4925', 'amo_id': 4925 },
{ 'name': 'Shine Bright Skin', 'url': 'https://addons.mozilla.org/addon/286388', 'amo_id': 286388 },
{ 'name': 'ImgLikeOpera', 'url': 'https://addons.mozilla.org/addon/1672', 'amo_id': 1672 },
{ 'name': 'ReminderFox', 'url': 'https://addons.mozilla.org/addon/1191', 'amo_id': 1191 },
{ 'name': 'TinEye Reverse Image Search', 'url': 'https://addons.mozilla.org/addon/8922', 'amo_id': 8922 },
{ 'name': 'Diccionario de Espanol', 'url': 'https://addons.mozilla.org/addon/3554', 'amo_id': 3554 },
{ 'name': 'Zotero', 'url': 'https://addons.mozilla.org/addon/3504', 'amo_id': 3504 },
{ 'name': 'Fast Dial', 'url': 'https://addons.mozilla.org/addon/5721', 'amo_id': 5721 },
{ 'name': 'FB Chat Sidebar Disabler', 'url': 'https://addons.mozilla.org/addon/330648', 'amo_id': 330648 },
{ 'name': 'iMacros for Firefox', 'url': 'https://addons.mozilla.org/addon/3863', 'amo_id': 3863 },
{ 'name': 'EPUBReader', 'url': 'https://addons.mozilla.org/addon/45281', 'amo_id': 45281 }
]
def check_addon(addon):
amo_id = addon.get('amo_id')
if not amo_id:
print "# Addon %s (%s) does not have an AMO id" % (addon['name'], addon['url'])
else:
addon_url = 'http://addons.mozilla.org/firefox/downloads/latest/%s/addon-%s-latest.xpi' % (amo_id, amo_id)
try:
f = urllib2.urlopen(addon_url)
tmpfile = tempfile.TemporaryFile()
tmpfile.write(f.read())
zip = zipfile.ZipFile(tmpfile)
if not 'install.rdf' in zip.namelist():
print "# Addon %s (%s) does not seem to have an install.rdf file in its xpi"
else:
print "%s: %s" % (addon['name'], addon_url)
except urllib2.HTTPError:
print "# Addon %s (%s)'s programmatic URL does not work (tried: %s)" % (addon['name'], addon['url'], addon['url'])
print "# Top 5\n"
for addon in top5:
check_addon(addon)
print "\n# Next 100\n"
for addon in next100:
check_addon(addon)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment