Skip to content

Instantly share code, notes, and snippets.

@thcipriani
Created March 13, 2019 18:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thcipriani/094dfd62fb1d9441e2da9b3dd7886418 to your computer and use it in GitHub Desktop.
Save thcipriani/094dfd62fb1d9441e2da9b3dd7886418 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
# exif-for-fp
# ~~~~~~~~~~~
#
# Copyright: Tyler Cipriani (c) 2019
# License: GPLv3
#
# Crawl featured picture gallery pages and extract camera/lens
# total and display that data
from urllib.parse import urljoin
def enwiki(page):
return urljoin('https://en.wikipedia.org/', page)
BIRDS = enwiki('wiki/Wikipedia:Featured_pictures/Animals/Birds')
INSECTS = enwiki('/wiki/Wikipedia:Featured_pictures/Animals/Insects')
ARCHITECTURE = enwiki('/wiki/Wikipedia:Featured_pictures/Places/Architecture')
# Birds
# =====
# 36 canon ef500mm f/4l is usm
# 20 canon ef100-400mm f/4.5-5.6l is ii usm
# 15 canon ef500mm f/4l is usm +2.0x
# 14 canon ef400mm f/5.6l usm
# 14 canon ef500mm f/4l is usm +1.4x
# 6 olympus imaging corp. lumix g vario 100-300/f4.0-5.6
# 4 canon ef100-400mm f/4.5-5.6l is ii usm +1.4x iii
# 4 canon ef600mm f/4l is usm
# 4 canon ef600mm f/4l is usm +2x iii
# 4 canon ef100-400mm f/4.5-5.6l is usm
# 4 canon ef70-300mm f/4-5.6l is usm
# 3 canon ef100mm f/2.8l macro is usm
# 3 canon ef300mm f/4l is usm
# 3 canon ef70-200mm f/2.8l is ii usm
# 3 canon ef70-200mm f/4l usm
# 2 canon ef600mm f/4l is usm +1.4x iii
# 2 olympus imaging corp. olympus m.60mm f2.8 macro
# 2 canon 150-600mm
# 2 canon 100.0 mm
# 2 canon ef70-200mm f/4l is usm
# 1 canon ef70-200mm f/4l is usm +2.0x
# 1 canon ef600mm f/4l is ii usm
# 1 canon 17-70mm
# 1 canon ef300mm f/2.8l is ii usm
# 1 canon ef400mm f/5.6l usm +1.4x
# 1 nikon corporation 500.0 mm f/4.0
# 1 canon ef500mm f/4l is ii usm
# 1 canon ef70-300mm f/4-5.6 is usm
# 1 nikon corporation 70.0-200.0 mm f/2.8
# 1 canon ef500mm f/4l is ii usm +1.4x iii
# 1 nikon corporation 70.0-300.0 mm f/4.0-5.6
# 1 canon ef400mm f/2.8l is ii usm +2.0x
# 1 canon 4.3-150.5 mm
# 1 canon ef70-200mm f/2.8l usm
# 1 canon ef600mm f/4l is usm +1.4x
# 1 nikon corporation 300.0 mm f/4.0
# 1 canon ef70-210mm f/4
# 1 nikon corporation 50.0 mm f/1.8
# Insects
# =======
# 13 canon ef100mm f/2.8l macro is usm
# 6 canon 180.0 mm
# 5 canon 180mm
# 4 canon ef70-200mm f/4l usm
# 3 canon ef100-400mm f/4.5-5.6l is usm
# 3 sony 150mm f2.8
# 3 canon 150.0 mm
# 3 nikon corporation 100.0 mm f/2.8
# 3 canon mp-e65mm f/2.8 1-5x macro photo
# 2 canon ef100-400mm f/4.5-5.6l is ii usm
# 2 nikon corporation 105.0 mm f/2.8
# 1 canon ef24-70mm f/4l is usm
# 1 sony 100mm f2.8 macro
# 1 olympus imaging corp. olympus m.60mm f2.8 macro
# 1 nikon corporation 150.0 mm f/2.8
# 1 canon ef100mm f/2.8 macro usm
# 1 canon ef-s18-55mm f/3.5-5.6 is ii
# 1 olympus imaging corp. 150.0 mm f/2.8
# 1 canon ef-s60mm f/2.8 macro usm
# Architecture
# ============
# 16 canon ef24-105mm f/4l is usm
# 8 leaf schneider ls 55mm f/2.8
# 7 nikon corporation 18.0-105.0 mm f/3.5-5.6
# 5 nikon corporation 24.0-120.0 mm f/4.0
# 5 canon ef70-200mm f/2.8l is ii usm
# 5 canon ef24-70mm f/2.8l ii usm
# 5 leaf mamiya ls 55mm f/2.8 d
# 5 canon ef17-40mm f/4l usm
# 4 canon ef-s18-55mm f/3.5-5.6 is ii
# 4 nikon corporation 24.0-70.0 mm f/2.8
# 4 nikon corporation 18.0-55.0 mm f/3.5-5.6
# 2 canon ef16-35mm f/4l is usm
# 2 nikon corporation 11.0-16.0 mm f/2.8
# 2 nikon corporation 28.0-300.0 mm f/3.5-5.6
# 2 canon ef-s17-55mm f/2.8 is usm
# 1 canon zeiss milvus 1.4/50 ze
# 1 canon ef11-24mm f/4l usm
# 1 canon 17-50mm
# 1 nikon corporation 105.0 mm f/2.8
# 1 canon ef28-300mm f/3.5-5.6l is usm
# 1 dji olympus m.45mm f1.8
# 1 nikon corporation 16.0-35.0 mm f/4.0
# 1 nikon corporation 50.0-200.0 mm f/4.0-5.6
# 1 nikon corporation 18.0-35.0 mm f/3.5-4.5
# 1 canon ef8-15mm f/4l fisheye usm
# 1 canon ef-s15-85mm f/3.5-5.6 is usm
# 1 canon 7.4-44.4 mm
# 1 canon canon ef-s 18-135mm f/3.5-5.6 is
# 1 canon 35mm
# 1 nikon corporation 35.0 mm f/1.8
# 1 canon 11-16mm
# 1 canon ef70-300mm f/4-5.6 is usm
# 1 nikon corporation 14.0-24.0 mm f/2.8
# 1 canon ef50mm f/1.2l usm
# 1 leaf mamiya ls 80mm f/2.8 d
# 1 nikon corporation 10.0-20.0 mm f/4.0-5.6
# 1 leica camera ag 24.0 mm f/2.8
# 1 canon ts-e24mm f/3.5l ii
# 1 canon ef70-200mm f/4l is usm
# 1 nikon corporation 18.0-135.0 mm f/3.5-5.6
# 1 nikon corporation 18.0-70.0 mm f/3.5-4.5
import collections
import sys
from bs4 import BeautifulSoup
import requests
QUERY = BIRDS
r = requests.get(QUERY)
LENSES = []
r.raise_for_status()
soup = BeautifulSoup(r.text, 'html.parser')
for box in soup.find_all('li', class_='gallerybox'):
href = enwiki(box.find_next('a', class_='image')['href'])
r = requests.get(href)
r.raise_for_status()
photo_soup = BeautifulSoup(r.text, 'html.parser')
camera_row = photo_soup.find('tr', class_='exif-make')
lens_row = photo_soup.find('tr', class_='exif-lens')
if not lens_row or not camera_row:
continue
camera = camera_row.find('td')
lens = lens_row.find('td')
if not lens or not camera:
continue
camera_lens = '{}\t{}'.format(camera.text.lower(), lens.text.lower())
print(camera_lens)
LENSES.append(camera_lens)
print('== Totals ==')
for lens, count in sorted(collections.Counter(LENSES).most_common(), key=lambda x: x[1], reverse=True):
print('{}\t{}'.format(count, lens))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment