Created
March 13, 2019 18:17
-
-
Save thcipriani/094dfd62fb1d9441e2da9b3dd7886418 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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