trains: stricter Commons photo matching (category files must name the type; no maps, class interiors, trucks)
All checks were successful
Deploy production / deploy (push) Successful in 1m9s
All checks were successful
Deploy production / deploy (push) Successful in 1m9s
This commit is contained in:
@@ -71,7 +71,7 @@ type Photo = {
|
||||
// ---------------------------------------------------------------- commons
|
||||
|
||||
const BAD_FILE =
|
||||
/\.(svg|gif|tiff?|pdf|djvu|webm|ogv|ogg|stl|png)$|logo|emblem|badge|insignia|wordmark|\bmaps?\b|karte|locator|diagram|chart|graph|schema|schematic|drawing|sketch|blueprint|patent|zeichnung|tekening|plan\b|icon|\bflag\b|coat of arms|wappen|signature|symbol|cutaway|silhouette|commons-|wiki|stub|poster|advert|brochure|stamp|timeline|timetable|dienstregeling|ticket|interior|innenraum|interieur|inside|cab\b|cabin|cockpit|f[uü]hrerstand|machinistenhok|driver'?s|desk|control|console|dashboard|display|screen|seats?\b|seating|toilet|lavatory|wc\b|bistro|restaurant interior|luggage|bogie|draaistel|drehgestell|wheelset|wheel|pantograph|stroomafnemer|coupler|coupling|koppeling|buffer|headlight|lamp|detail|close-?up|closeup|builder'?s plate|works plate|number ?plate|nameplate|plaque|\bplate\b|sign\b|signage|crash|wreck|accident|ongeval|unfall|derail|collision|\bfire\b|burnt|brand\b|scrap|sloop|\btoys?\b|model|modell|scale|märklin|marklin|hornby|bachmann|roco|fleischmann|piko|lionel|\bh0\b|\bho\b|\boo gauge|n gauge|n scale|lego|diecast|layout|miniatur|simulator|mock-?up|render|cgi\b|uniform|portrait|ceremony|memorial|grave|statue|\bvs\b|versus|comparison|livery diagram|motor\b|engine room|transformer|cylinder|valve|boiler|firebox|smokebox|chimney|tender interior|gauge glass|whistle|bell\b/i;
|
||||
/\.(svg|gif|tiff?|pdf|djvu|webm|ogv|ogg|stl|png)$|logo|emblem|badge|insignia|wordmark|\bmaps?\b|karte|locator|diagram|chart|graph|schema|schematic|drawing|sketch|blueprint|patent|zeichnung|tekening|plan\b|icon|\bflag\b|coat of arms|wappen|signature|symbol|cutaway|silhouette|commons-|wiki|stub|poster|advert|brochure|stamp|timeline|timetable|dienstregeling|ticket|interior|innenraum|\d(?:e|st|nd|rd)? ?klas(?:se)?\b|\bklas\b|first class|second class|1st class|2nd class|balkon|operating area|service area|network|netwerk|lijnennet|route ?map|interieur|inside|cab\b|cabin|cockpit|f[uü]hrerstand|machinistenhok|driver'?s|desk|control|console|dashboard|display|screen|seats?\b|seating|toilet|lavatory|wc\b|bistro|restaurant interior|luggage|bogie|\btrucks?\b|draaistel|drehgestell|wheelset|wheel|pantograph|stroomafnemer|coupler|coupling|koppeling|buffer|headlight|lamp|detail|close-?up|closeup|builder'?s plate|works plate|number ?plate|nameplate|plaque|\bplate\b|sign\b|signage|crash|wreck|accident|ongeval|unfall|derail|collision|\bfire\b|burnt|brand\b|scrap|sloop|\btoys?\b|model|modell|scale|märklin|marklin|hornby|bachmann|roco|fleischmann|piko|lionel|\bh0\b|\bho\b|\boo gauge|n gauge|n scale|lego|diecast|layout|miniatur|simulator|mock-?up|render|cgi\b|uniform|portrait|ceremony|memorial|grave|statue|\bvs\b|versus|comparison|livery diagram|motor\b|engine room|transformer|cylinder|valve|boiler|firebox|smokebox|chimney|tender interior|gauge glass|whistle|bell\b/i;
|
||||
|
||||
const infoCache = new Map<string, ImageInfo | null>();
|
||||
async function imageInfo(files: string[], width = THUMB) {
|
||||
@@ -332,9 +332,9 @@ async function photosFor(
|
||||
(n) => n && cmp(n).length >= 4 && cmp(cat).includes(cmp(n))
|
||||
));
|
||||
if (photos.length < MAX_PHOTOS && cat && catOk) {
|
||||
let files = (await categoryMembers(cat, 'file')).filter(
|
||||
(f) => !BAD_FILE.test(f) && !siblings.some((s) => s.test(f))
|
||||
);
|
||||
// Strict: a category file must name the type itself ("NS 1700 trains Amsterdam 2019"),
|
||||
// so platform, station and skyline shots from the same category stay out.
|
||||
let files = (await categoryMembers(cat, 'file')).filter((f) => ok(f));
|
||||
if (files.length < MAX_PHOTOS) {
|
||||
// Small category: look into unit subcategories ("NS VIRM 8642", "4468 Mallard").
|
||||
const subs = (await categoryMembers(cat, 'subcat', 100))
|
||||
|
||||
Reference in New Issue
Block a user