/tivi-admin

tv-games.ru admin panel in JavaFX

Primary LanguageJava

TiVi-Admin

Этот проект признан заменить админку сайта tv-games.ru и сделать администрирование увлекательным занятием.

Зачем это понадобилось?

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

  1. Скопипастить название
  2. Организовать ЧПУ-замену
  3. Выставить дату публикации. Очень напрягает листать календарь
  4. Мета-описание, ключевые слова
  5. Возрастной ценз - ну, это не напрягает, ладно :)
  6. URL ролика - для Ютуба надо вычленить какую-то часть, для ВК определённая строка - всё это несколько напрягает
  7. Вводный и полный текст - опять же, копипаст либо писанина от себя
  8. Автор:
  • Имя
  • Сайт
  • Почта
  1. Статистика (не трогаем)
  2. Изображение - его приходится генерировать, обрабатывать, заливать по FTP и прочее - крайне обременительный этап.
  3. Состояние - включено по умочанию.
  4. Доступность - всем или только зарегистрированным.
  5. Какие-то лишние поля, отвлекающие внимание.

В базе данных есть место для картинки (OpenGraph) и другой информации

Итак, что я думаю.

  1. На первых порах, пока не разберусь с авторизацией и прочим, будет необходимо прятать эту админку.
  2. Скопирую компоновку нынешней админки, она вполне работающая.

По книгам

У меня есть база данных по околоигровым книгам и журналам. Чтобы не изобретать велосипед - собрана она была в Calibre. Движок не идеальный в некоторых отношениях, но, пока из бесплатного лучшего я не встречал.

На сайте уже несколько лет ведётся сбор подобных книг, и возникла идея автоматизировать процесс добавления книг.

Движок сайта + Calibre позволяют сделать нечто интересное.

Книги сортируются по платформам. Есть книги и журналы, в которых описано несколько платформ. Если есть одна доминирующая платформа, книга будет лежать в ней. Если их несколько, то в console или в computers.

В остальных платформах будет отдельная тема Упоминание в:...

Сейчас задача номер один - использовать всю доступную информацию для генерации.

  1. Теги - ключевых словах, в кратком и полном виде. Брать только текущую платформу.
  2. Теги - в тексте
  3. Дополнительные теги в тексте
  4. Страницы упоминаний (альт теги) nes_citation
  5. Страницы книг в поиске nes_search
  6. Страницы со ссылками на журналы (альт теги) nes_magazines
  7. Выводить журналы - все на одной странице с картинками. Даты и данные выводить, издателя - только если меняется
  8. Дампить в подкатегории (серии). Корректировать ссылки на них

Общий ход работ:

  • Вытаскивать данные из Calibre
  • Аудит + фикс
  • Вытаскивать данные с сайта
  • Сличать, находить разницу
  • Собирать из Calibre файлы в отдельную категорию
  • images
  • files
  • unzip/unrar
  • Обновлять на сайте 60%
  • added
  • updated
  • deleted
  • images - проще пока вручную
  • files - проще пока вручную

Обновлялка на сайте

Новое:

  • комиксы [comics] - на них делать ссылки как в упоминаниях журналов
  • документация по железу+программированию [doc] - собирать как солюшены
  • документация по эмуляторам [emulator] - собирать как солюшены
  • описания и похождения [guide] - собирать как солюшены
  • мануалы консолей, включая сервисные [manual] - собирать как журналы

Задачи

2022

TODO "

  1. сделать SQL dos для сайта. почистить названия.
  2. забиндить с dos.zone 2.1 добавить отсутствующие
  3. забрать оттуда всё что можно
  4. забиндить с моби
  5. забрать оттуда всё что можно

todo генерить список тех кто сканировал-обрабатывал (если и то и то то оставлять одного). считать количество, список у кого > 2. > 10 - жирным. избранные - красным.

todo унифицировать sitecpu, cpu, генерацию всех uri. задокументировать

  • Чистить ББК, УДК, выделять авторский знак. Инфа об этом внизу страницы.
  • Эксперимент - 1 книга - 1 каталог. Внутри и обложки и текстовое описание в виде отдельных файлов.
  • Полные описания:

    ->
  • Форматировать изображения согласно их габаритам (средние габариты, если они неизвестны)
  • Журналы (гайды????) отдельно
  • На сайте для них своя секция magazines, свои категории (названия журналов)
  • Каким-то образом давать ссылки на отдельные журналы с их описаниями - но это не критично, сделал разворачивание покуда.
  • Несколько каталогов, с группировкой по издательствам, и так далее. Чтобы было приятно читать и сводить данные.
  • Реализовать качество скана (звёздочки, 5-10 баллов), своя шкала - разрешение, размытие, отсутствие страниц, общее качество, итд.

База данных

[v] имена файлов на уникальность [v] подумать как грамотно оформлять журналы - из первого берётся описания для краткого текста, из остальных только для основного текста

  • добавить GD в базу
  • прочесать журналы с http://tehnoarhiv.ru
  • прочесать https://mcgrp.ru на мануалы (МНОГО!!!) [v] ко всем гайдам дать обложки игр либо арт - только к тем, что идут первыми. [v] добавить в гайды все материалы из дневников и форума [v] описания игр могут подходить к нескольким платформам
  • рейтинги обратно в calibre (when update)
  • высший пилотаж - перелинковать книги где необходимо (например, 50 игр для 3DO), волшебный мир, итд. [v] постараться всех авторов засунуть в авторы
  • шерстить cbr на наличие tiff проверить порядок
  • manual clean cpus, add new books, magazines, comics.
  • total audit

Сайт

[v] Пересчитать рубрики, пересчитать категории [v] проверить ссылки на скачивание [v] полностью проверить весь генерируемый контент [v] генерить страницы всех гайдов для форума

  • SEO - Загонять в EXIF максимально инфу по книгам Apache commons Imaging https://stackoverflow.com/questions/36868013/editing-jpeg-exif-data-with-java
  • генерить новостные анонсы по изменениям
  • SEO - Open Graph - подумать.
  • SEO - у всех искусственных страниц продумать описания и ключевые слова

Код

[v] в коде, если книга, журнал или комикс - хардкодить ссылку на внешний источник. [v] кастомизировать кнопку скачивания, если ссылка

[test] для остальных документов предусмотреть вывод на скачку остальных файлов. [test] порядок - оригинальный (DATA ID, а в архивах по порядку следования).

  • нужен рендерер для вывода ВСЕХ обзоров в 2 видах. 1. группировка по авторам. 2. по системам. сортировка в алфавитном порядке. без полного текста возможно, будет нужен третий вариант - по месяцам, опять же с группировкой

  • при выводе списков описаний можно выводить статистику - кто и сколько, чтобы подстёгивать народ. Можно в виде таблицы

[v] при генерации ссылок на скачивание генерить картинки с соответствующим расширением

[v] поскольку места на сайте не хватает - залить всё в облако и предоставить доступ. [v] солюшены и эмуляторы держать на сайте

  • Всё ещё думать про журналы. Может ещё один блок для описания серии???

  • Рендерер - разбить на маленькие процедурки, унифицировать код.

  • magazines - если больше определённого количества - оформлять как категорию. возможно, стоит ввести ещё один флаг в калибре. или прописывать в тегах. например, группировать журналы или генерить по-одному

-? magazines - если группированы на странице то выводить все данные в книжном виде.

  • magazines - есть мысль выводить журналы в поиске со всеми журналами

  • magazines - разыскиваемые - выводить картинки???

  • копирование файлов - логировать в окно, показывать прогресс. то же самое с картинками

  • compare - одного сравнения базы Calibre мало. надо проходиться по файлам. Например смена обложки в базе не регистрируется, только дата изменения. Для ускорения - сканить файлы только изменённых книг. Но для полного аудита надо уметь сканить всё.

  • надо закрепить даты всех книг иначе постоянно выдаёт обновление public

  • audit - magazines without serie

[v] cpu - уникальность

  • wise error processing / specialized http client

DUMP: трудность - менять кодировку в соответствии с таблицей. Вероятно, спасает переход на чистый UTF-8 DUMP TODO: многопоточность TODO DUMP BLOB (HEX OR NOT) - с сервера идут уже корявые данные. в идеале - отказаться от конвертации кодировки и отправлять как есть. и да - нужно слать кодировку для базы данных но это далеко идущие планы.

Файлы пока можно заливать вручную.

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

было в dumper.php: define('CHARSET', 'auto'); define('RESTORE_CHARSET', 'cp1251');

TODO надо дать возможность генерации только новых книг (количество дней в прошлое)

По видео

Реализован полный CRUD по видео.

Идея такая - сразу запрашиваем ссылку на видео и вытаскиваем максимальное число данных без участия пользователя.

Так же вытаскиваю все возможные картинки

Что надо сделать:

  • теги

Баги:

  • После редактирования видео сбрасывается количество видео на страницу, хотя, отображаются все.
  • Почему-то показывается лишняя страница
  • После выбора категории не пересчитывается число страниц и не позиционируется на первую
  • Сортировка по дате (Emugamer TV) работает неверно
  • Очень не нравится ограничение на длину строки. Как-то предлагать обходить его.
  • Если в тексте кавычки и другие специальные знаки, то они отображаются как '
  • Игровой Историк - при показе по 10 две лишние страницы

Что не сделано:

  • Комменты к видео - их было бы неплохо засунуть в META
  • META - научиться вычислять верные ключевые слова, добавлять какие-то свои
  • Заливка своей картинки
  • Обработка картинок
  • Несколько вариантов сжатия (палитра, png, jpg)
  • Корректная обработка не-ютуба
  • Корректная работа с расширениями
  • Перейти от toggles к radiobuttons
  • Пакетное раскидывание видео по дням
  • Для видео следует хранить две даты - создания (для истории) и показа (для плеера)
  • Кнопки стирания мета данных
  • Кнопки индивидуального обновления метаданных
  • При превышениии длины хотя бы показывать на сколько
  1. Список видео (с возможностью сортировки):
  • ID
  • Название/категория (вероятно предпросмотр картинки)
  • Опубликовано
  • Просмотров
  • Комментарии
  • Управление (Включение и выключение видео, предпросмотр, удаление, редактирование)
  • Отметить
  • В верху количество на страницу, категории

Этого уже много, большее, например, редактирование категорий пока не планирую

Сборка, запуск из командной строки

Поскольку с запуском в IDE проблем не возникает (например, в IntelliJ IDEA это правый клик по файлу MainApp, дальше Run..., или Ctrl+Shift+F10), опишу, как это делается в командной строке.

  • Сборка: sbt package
  • Запуск (Linux): ./run.sh
  • Запуск (Windows): ./run.bat

У sbt есть ещё несколько полезных ключей: clean, compile, run, и т.д.

Изучить:

https://javagraphics.java.net/ http://javagraphics.blogspot.md/2014/02/images-color-palette-reduction.html

https://www.idrsolutions.com/jdeli/download https://blog.idrsolutions.com/2015/07/how-to-generate-smaller-png-files-in-java/ https://blog.idrsolutions.com/2015/04/how-to-write-jpeg-images-in-java/ https://blog.idrsolutions.com/2015/04/how-to-write-out-png-images-in-java-2/

http://www.java2s.com/Code/Java/2D-Graphics-GUI/Providesusefulmethodsforconvertingimagesfromonecolourdepthtoanother.htm

ББК, УДК, ISBN, авторский знак, и так далее.

https://files.stroyinf.ru/Data2/1/4293722/4293722724.pdf https://ifap.ru/library/gost/7042020.pdf file:///C:/Users/user/Downloads/%D0%93%D0%9E%D0%A1%D0%A2%20%D0%A0%20704-2006.pdf https://meganorm.ru/Data2/1/4293850/4293850363.htm

http://гпоунпк.рф/bibl/9.pdf http://mpgu.su/ob-mpgu/struktura/biblioteka/prepodavatelyam/rossiyskiy-indeks-nauchnogo-tsitirovaniya-rints/prisvoenie-avtorskogo-znaka-indeksa-bbk-i-udk/ https://molochnoe.ru/library/to_prep_asp/authors_index http://sainfo.ru/liter/znak.php http://prepodavatel-xxi.ru/sites/default/files/prisvoenie_avtorskogo_znaka_UDK_i_BBK.pdf https://ru.wikipedia.org/wiki/%D0%90%D0%B2%D1%82%D0%BE%D1%80%D1%81%D0%BA%D0%B8%D0%B9_%D0%B7%D0%BD%D0%B0%D0%BA https://bon-anza.ru/reference.php?id=5 http://lib.ugtu.net/page/udk-i-bbk/ https://avtor-online.ru/udk-bbk

https://www.google.com/search?q=%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0+%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F+%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%87%D0%BA%D0%B0+%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8+%D0%B1%D0%B1%D0%BA+%D1%83%D0%B4%D0%BA&client=firefox-b-d&sxsrf=ALiCzsZf-UisQ3UwOdt_qCOWsX3ynYRoJQ:1660209729270&ei=Qcr0Yq3yD_Dh7_UPlvOvYA&start=10&sa=N&ved=2ahUKEwjtlqmZu775AhXw8LsIHZb5CwwQ8tMDegQIARA9&biw=1436&bih=938&dpr=1 http://www.uraledu.ru/node/4928 https://www.ntspi.ru/library/directories_and_files/ http://karlib.kz/ru/prof-meropriyatiya/32-metodicheskij-blog/1197-v-pomoshch-nachinayushchemu-bibliotekaryu http://prohschool.beloblast.ru/bibl/doc/norm/instrukcija_ob_uchete_bibliotechnogo_fonda.pdf http://гпоунпк.рф/bibl/8.pdf https://www.ipu.ru/structure/information-services/polygraphy/20804 https://dwax.ru/bibliotechnaya-klassifikaciya-bbk-bibliotechno-bibliograficheskaya-klassifikaciya/ https://author.today/post/140940 http://roslavl.library67.ru/files/382/bbk.pdf https://lib.uni-dubna.ru/biblweb/recomends/ShkolaIndex.pdf

https://studme.org/359791/tehnika/osnovnye_vidy_tipy_pechatnyh_izdaniy https://www.ifap.ru/library/gost/7602003.pdf https://spbarchives.ru/-/prilozenie-1-vidy-pecatnyh-izdanii