Loopshelf

Полка бесшовных лупов

Две полки в одном месте. На первой — анимации, которые считаются здесь же из периодических функций и замыкаются ровно на обороте фазы. На второй — свободные лупы, собранные с Викисклада: сервер обходит его каталоги, забирает файлы с открытыми лицензиями и хранит их рядом с атрибуцией.

6своих лупов
найдено в архиве
48кадров в своих
медиа всего

Своя полка

Считаются из формулы: цвет пикселя зависит от координат и фазы, фаза пробегает полный оборот — последний кадр совпадает с первым до пикселя.

Находки

Свободные анимации с Викисклада. Сервер периодически опрашивает его открытый API, отбирает файлы под лицензиями CC и общественного достояния, скачивает и раздаёт вместе с указанием автора и лицензии — как того требуют условия.

Как устроено

генерация

Формула вместо съёмки

Ни камеры, ни редактора: каждый кадр — результат вычисления. Поэтому луп замыкается идеально, а исходник занимает несколько строк кода.

палитра

128 цветов на луп

Палитра подбирается под каждую анимацию отдельно и квантуется так, чтобы на плавных градиентах не проступали полосы.

сбор

Открытый API Викисклада

Обход каталогов, фильтр по лицензии и размеру, вежливая пауза между запросами. Берём только то, что разрешено брать.

лицензии

Атрибуция обязательна

У каждого найденного файла указан автор, лицензия и ссылка на страницу источника. Без этого свободные лицензии использовать нельзя.

Доставка

Почему картинки приходят не с того домена, что страница.

CDN

Отдельный домен под медиа

Страница весит единицы килобайт, медиа — десятки мегабайт. На одном хосте текст ждал бы очереди за картинками.

кэш

Ближе к читателю

Файлы отдаются сетью доставки с ближайшей точки присутствия, а не тянутся через полстраны с единственного сервера.

источник

Сервер ходит наружу сам

Пополнение архива — это запросы к Викискладу и загрузка файлов оттуда. Обычная работа агрегатора, идущая по расписанию.

браузер → loopshelf.space  — страница, ~14 КБ
браузер → st.loopshelf.space  — лупы, через CDN
сервер  → commons.wikimedia.org  — пополнение архива, по расписанию