사진은 전부 사람이 찾아서 고른다. 엔진은 자리의 산수와 나쁜 컷을 막는 게이트만 맡고 검색은 안 한다. 이 단계는 세 번으로 나뉘고 각자 기준이 다르다. 섞으면 법적으로는 깨끗하면서 아무 말도 안 하는 사진이 지면에 선다.
지면이 몇 장을 원하나
먼저 수요를 센다. 상수가 아니다. 22시즌 커리어와 12시즌 커리어가 같은 수의 사진을 원할 수는 없다.
수요 27장 = 히어로 1 + 이야기 있는 해 21(전체 22해) + 현역 이전 2 + 커리어 이후 3
지금 10자산 · 남은 자리 17
한 해가 자리를 얻는 건 그 해에 할 말이 있을 때다. 수상이나 마일스톤이나 출처 있는 생애 사건이 하나라도 있을 때. 한 줄로 지나가는 해에는 사진을 안 건다. 거기 사진을 걸면 이야기를 실어 주는 게 아니라 이야기가 없다는 걸 덮는다.
한 해의 상한은 그 해의 밀도가 정한다. 조용한 해 두 장, 보통 세 장, 터진 해 네 장. Getty 임베드도 그중 한 장으로 센다. 빈 해를 채우러 들어오니 다른 사진과 같은 자리를 다툰다.
영상은 따로 센다. 행을 통째로 가로지르니 사진과 가로 자리를 안 다투고, 대신 세로를 크게 먹는다. 한 해에 한 편이다. 둘이 서면 그 해가 재생목록처럼 읽힌다. 그리고 영상이 수요를 낮추지 않는다. 영상을 실은 해도 그 해의 사진을 여전히 원한다.
어디서 찾고 무엇을 거절하나
사진과 영상을 같은 패스에서 찾는다. 하나만 찾고 다른 하나를 안 찾는 지면은 이 형식이 허용하는 것보다 적게 싣고도 그걸 모른다.
사진은 그 선수의 위키미디어 공용 카테고리에서 시작하고, 거기 없으면 의회도서관과 국립기록관, 플리커 커먼즈, 아카이브들로 넓힌다. 출처가 쓰는 언어로 검색한다. 공용의 파일 이름은 1909 Pittsburgh Pirates.jpg로 적혀 있고 통신사 캡션은 Randy Johnson of the Seattle Mariners로 적혀 있다. 한국어로 물으면 둘 다 안 걸린다.
1930년 이전 선수는 자유 풀에 자료가 얇은 경우가 많고, 현대 선수의 전성기는 통신사 뒤에만 있는 경우가 많다. 그건 보고할 수집 문제고 덮을 결함이 아니다. 얇은 지면은 정직하고 억지로 채운 지면은 그렇지 않다.
영상은 커리어에서 움직여야만 보이는 두세 장면을 묻는다. 기록을 깬 아웃, 마지막 등판, 아무도 못 치던 공. 현대 선수는 대개 공식 채널에 있고 데드볼 선수는 대개 없다. 둘 다 답이다.
찾아봤는데 없었다는 걸 적어 둔다. 그의 전성기 영상은 자유롭게 쓸 수 있는 게 없다는 말과 아무도 안 찾아봤다는 말이 지면에서 같은 얼굴로 보여서는 안 된다.
거절 사유는 하나만 걸려도 컷이 돌아간다. 라이선스가 목록 밖이거나, 피사체가 실제로 화면에 없거나, 대략 600×320 아래이거나, 이미 번들에 있는 컷과 같은 출처이거나, 지면의 다른 컷이 보여 주는 걸 되풀이하거나, 그 해가 그럴 만해서가 아닌데 수요를 채우려고 들어왔으면 돌려보낸다.
선수 이름으로 검색하면 엉뚱한 게 많이 걸린다. 동료의 계약식 사진, 보블헤드 박물관, 1905년의 코칭 도해 같은 게 선수 이름 아래에 올라와 있다.
다시 올리는 것과 걸어 두는 것
쓸 수 있는 콘텐츠 라이선스는 정확히 다섯이다. 권리를 전부 유보한 자료는 스키마 단계에서 거절한다. 편집 판단에 안 맡기고 velite의 검증에서 막는다. GIF도 제외다.
인용과 반입은 구별한다. 게이트가 보는 건 반입한 자산이다. 바이트를 다시 호스팅하거나 재현하거나 임베드한 자산을 말한다. 이름을 적고 링크를 거는 일은 게이트 밖이다. 그래서 권리를 유보한 자료도 인용하고 링크할 수 있다. SABR의 BioProject와 명예의 전당이 그 자리다. 긴 전기를 읽고 사실을 가져오지만 그 문장과 사진을 다시 호스팅하지는 않는다.
영상은 반입하지 않는다. 임베드만 한다. 콘텐츠 라이선스 대신 허가에 기댄다. 업로더가 임베드를 켜 둔 게 동의다. 조건이 둘이다. 영상 id마다 oEmbed로 임베드 가능한지 확인한다. 200이면 허용하고 401이나 403이면 거절한다. 짐작하지 않는다. 그리고 편집적으로 믿을 수 있는 채널이어야 한다. MLB, 구단, 명예의 전당, 공공 아카이브. 자기 플레이어 밖에서의 임베드를 금지하는 곳은 아예 안 쓴다.
사진에도 같은 갈림이 있다. 현대 선수의 전성기가 자유 풀에 없을 때, 우리가 라이선스할 수 없는 바이트 대신 권리자 자신의 임베드 뷰어를 건다. 그건 라이선스가 아니라 허가다. 파일은 끝까지 우리 것이 아니고, 화면 안의 크레딧이 조건이라 뷰어를 자르거나 다시 꾸미지 않는다. 편집적·비상업적 용도로만 쓴다.
그리고 대표 초상이 될 수 없다. 인덱스 카드는 4:5로 크롭하고 셰어카드는 인쇄를 하는데, iframe으로는 둘 다 안 된다.
/**
* 임베드로만 거는 사진의 허가 표식 — 이 자산들은 **초상이 될 수 없다.**
*
* 이 규칙을 `src` 유무로 대신 물으면 안 된다: 그건 "임베드에는 파일이 없다"는 사실에 기대는
* 우연이고, 프론트매터에 `src` 한 줄이 붙는 순간 임베드가 리드에 선다(실측으로 재현됨).
* 자격은 **허가 표식 자체로** 묻는다.
*/
const EMBED_ONLY_LICENSES = new Set(['Getty-embed'])
위젯 id와 서명은 콘텐츠에 안 적는다. 비밀 스캐너가 그걸 API 키로 읽는다. 사이트가 빌드할 때 같은 oEmbed에서 다시 받아 git에서 제외된 모듈에 넣고, 서명을 못 받은 컷은 그냥 안 그린다.
조각상과 기념물 사진은 한 번 더 본다. 그건 2차적 저작물이고, 미국에는 조각에 대한 파노라마의 자유가 없다. 사진의 라이선스만으로는 모자라서 그 조각 자체의 상태를 확인해야 한다. 확인이 안 되면 권리 유보로 취급한다.
배치표를 두지 않았다
사진 하나를 옮기려고 두 파일을 고쳐야 하고 정본이 둘이 되니, 배치표를 따로 안 뒀다.
대신 자산에 자기 자리를 적는다. year는 그 컷을 그 해의 발자취에 걸고, section은 발자취 대신 스트립으로 보내고, frame은 기본 물성이 틀렸을 때 덮는다. year도 section도 없는 자산은 초상 후보다.
year는 셔터를 언제 눌렀다는 주장이 아니고 그 컷이 서는 자리다. 캡션이 1914~19년이라 적혀 있으면 그 범위 안의 한 해를 고른다. 정밀함은 캡션이 지고 자리는 year가 진다. 범위 밖의 해를 적으면 지면과 그 지면의 캡션이 서로 다른 말을 한다.
year가 척추에 없는 해를 가리키면 조용히 안 버린다. 버리면 그 컷이 지면에서 빠진 걸 아무도 모른다. 고아 목록으로 돌려준다.
상한에 걸릴 때는 대표팀 시절 사진을 먼저 남기고 못 건 수를 찍는다. 등급으로 비교하게 만든 데 이유가 있다. 정렬된 배열의 위치로 비교하면 후보마다 위치가 달라 언제나 승부가 갈리고, 그 뒤에 오려던 기준은 영영 안 닿는다. 비교기를 층으로 쌓으려면 앞 층이 동률을 낼 수 있어야 한다.
대표 초상은 손으로 지목한다
한 컷이 hero: true를 지고, 그 한 장이 인덱스 카드와 사이드바 리드와 셰어카드에 모두 선다. 이 단계에서 가장 결과가 큰 선택이라 규칙에 안 맡기고 적는다.
규칙이 같은 컷에 착지할 때도 적는다. 적어 두면 사진을 다시 정렬하는 동안 얼굴이 가만히 있는다. 안 적어 두면 media[]의 순서를 바꿀 때마다 얼굴이 바뀐다.
지목한 컷이 자격을 잃으면 다른 컷으로 안 넘어가고 멈춘다. 이유를 적어서 멈춘다. 쓴 사람은 얼굴을 정했다고 믿고 있는데, 조용히 다른 컷으로 바꾸면 그 믿음만 깨진다.
subjects는 메모가 아니고 게이트다. 이름이 둘 이상이면 단체 사진이고, 단체 사진은 초상이 될 수 없다. 그걸 hero로 지목하면 빌드가 멈춘다. 다른 사람의 어깨를 앞세우는 대신 멈춘다.
초상은 링크 미리보기 이미지도 된다. 작은 사진은 와이드 카드 대신 작은 썸네일로 렌더된다. 이건 받아들이고 안 고쳤다. 지면과 인덱스 카드와 셰어카드와 미리보기가 한 장의 사진 위에 선다는 게 이 콘텐츠 타입의 규약이다. 미리보기만을 위해 더 큰 자산을 끼워 넣으면 그 선수에게 얼굴이 둘 생긴다. 같은 사진의 더 큰 스캔이 나오면 파일을 바꾸고, 빌드가 새 치수를 알아서 읽는다.
캡션은 한국어로 다시 쓴다
출처가 주는 캡션은 사실을 적은 것이고, 지면에 실릴 문장은 아니다. 공용의 파일 설명이나 통신사 캡션에서 누가·어디서·언제만 읽어 내고, 문장은 지면의 말로 다시 쓴다.
한글이 없는 캡션은 게이트가 막는다. 출처의 문장을 그대로 둔 흔적이다. 저작자 표시는 credit과 sourceUrl이 지니까, 문장을 우리 말로 써도 권리자가 잃는 건 없다.
다시 쓰면서 출처에 없는 주장이 조용히 붙을 수 있다. 그건 게이트가 못 본다. 다음 단계에서 사람이 읽어서 본다.