Skip to content

CivitaiLight - легковесный api-склиент для civitai.com

Notifications You must be signed in to change notification settings

CivitaiLight/CivitaiLight.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

это легковесный веб-клиент для civitai.com на JS

  • зачем это и почему?

    • оригинальный сайт CivitAI очень тормозной;
    • на CivitAI бесконечная прокрутка страницы с моделями, которая только усугубляет тормоза;
    • ебанутый поиск на CivitAI который ищет либо только по тегам либо по названиям;
    • перегруженный интерфейс CivitAI который мешает делать для чего сайт предназначен: найти модель и получить ссылку.
  • как это?

    • JS получает по api данные в json и на их основе формирует страницы;
    • сам "сайт" никаких данных не содержит, все получается в реальном времени с CivitAI прямо на стороне браузера пользователя;
    • из выдачи удаляются все модели которые нельзя скачать: архивные, удаленные, с ранним платным доступом;
    • для удобства на страницу выводится по 10 элементов, а благодаря пагинации все будет работать без тормозов даже если ты решишь просмотреть всё от первой до самой последней модели;
    • слева вверху можно выбрать категории: модели, лоры, ликорисы, внедрения, ваэ, гиперсети, контролнет, позы, другое;
    • верхнее меню поиска ищет только в текущей выбранной категории;
    • при поиске делается запрос сразу на выдачу результатов как по тегам, так и по названию моделей, так и по свободному запросу - все это потом формируется в единый результат на странице;
    • если в карточке модели указаны теги, по ним пожно кликать и получать все модели по данному тегу;
    • название модели - кликабельно: по умолчанию при клике копируется прямая ссылка на загрузку последней версии в буфер обмена;
    • справа стрелочка - скачивание последней версии;
    • под названием модели можно выбрать все имеющиеся версии модели и также скопировать прмямую ссылку на загрузки при клике;
    • можно включить опцию для копирования ссылок в один список по кнопке в шапке, чтобы потом использовать его для загрузки, например, в колабе или какой-нибудь качалке;
    • из выдачи можно удалить элементы с тегом "anime" - достаточно переключить аниме-глаз в шапке на человеческий;
    • по умолчанию на страницу подгружаются небольшие картиночки, но по ним можно кликать чтобы открыть максимально возможный размер;
    • над превьюшками расположены кнопки-стрелочки: их можно нажимать для перелистывания картинок (я решил ограничить их количество пятью) вместе с их параметрами генерации (если они доступны), а если стрелочек нет, значит картинка только одна;
    • внизу есть спойлер "описание и дополнительная информация" - чтобы почитать оригинальное описание, которое оставил автор (из которого я заботливо удаляю все ссылки на донаты и т.п. ерунду);
    • здесь не используются кукисы, а только временное локальное хранилище с названием категории при ее переключении (которое потом подставляется в функцию для пагинации);
    • комментарии, посты, обзоры и т.п. - удалено за ненадобностью.
  • какие подводные?

    • самое главное - зависимость от стабильности самого CivitAI: если он не работает (что не редко и происходит) - будет не работать этот клиент;
    • иногда данные по api могут долго подгружаться, или вообще CivitAI при очередном заебе выдаст html-заглушку - в таком случае, чтобы бесконечно не любоваться писюном на экране, нужно перезагрузить страницу, авось апи одуплится;
    • иногда полноразмерные картинки ну очень долго подгружаются - тут ничего не поделаешь, придется терпеть, как и на оригинальном сайте.
    • на некоторых браузерах все это может вообще не работать из-за политики CORS - клиент находится на одном домене (здесь), а данные запрашиваются с другого домена (цивитаи), что считается чем-то небезопасным, но выход найти можно: использовать нормальный браузер (точнее кастомную сбор_очку), или добавить аргумент для запуска браузера --disable-web-security, или установить расширение для браузера чтобы обойти ограничения на кросс-доменные запросы: для хрома или фаерфокса;
    • поскольку это сделано для личного использования (мной), тут нет оптимизации под мобильные устройства, или, например, быстрого доступа к списку моделей по интересующей тебя теме - но никто не мешает тебе сделать копию и настроить чисто под себя.
  • можно ли использовать локально?

    • да, можно открывать просто html-файлик локально, либо отключив политику безопасности CORS в браузере, либо подняв простой http-сервер, например на Python это делается в пару строчек:
    import os, webbrowser
    from http.server import HTTPServer, SimpleHTTPRequestHandler
    os.chdir(os.path.expanduser('~\Desktop\civitai_client')) # предположим, что index.html в папке civitai_client на рабочем столе Windows
    httpd = HTTPServer(('localhost', 8000), SimpleHTTPRequestHandler)
    webbrowser.open(f"http://localhost:8000", new=2) # и автоматически откроем локальный сайт
    httpd.serve_forever()
  • куда можно написать донос?