Giter Site home page Giter Site logo

shikimori / shikimori Goto Github PK

View Code? Open in Web Editor NEW
271.0 12.0 37.0 348.34 MB

Home Page: https://shikimori.me

License: Open Software License 3.0

Ruby 69.43% JavaScript 8.82% CSS 0.02% HTML 0.24% Vue 0.65% Shell 0.10% Pug 0.13% Sass 6.19% SCSS 0.34% Slim 14.05% Procfile 0.02% Dockerfile 0.02%

shikimori's Introduction

RSpec CI

Contributing

Feel free to open tickets or send pull requests with improvements. Thanks in advance for your help!

Please follow the contribution guidelines.

Requirements

OSX or Linux

PostgreSQL >= 10.0, Ruby >= 2.6, NodeJS >= 10.0, Elasticsearch 6.x (7.0 not supported), Memcached, Redis

Issues Board (Agile Season)

https://agileseason.com/#/shared/board/098d2e36dff32f296d7815cf943ac8eb

Requirements

Checkout all projects

git clone [email protected]:shikimori/shikimori.git
git clone [email protected]:shikimori/neko-achievements.git
cd neko-achievements
mix local.hex --force
mix deps.get
cd ..
git clone [email protected]:shikimori/camo-server.git
cd camo-server
yarn
cd ..
git clone [email protected]:shikimori/faye-server.git
cd faye-server
yarn
cd ..
cd shikimori

Install yarn, tmux and overmind via Homebrew (OSX)

brew install yarn tmux overmind

In linux you have to install them another way.

Install dependent gems and npm packages

yarn install
bundle install

PostgreSQL

DB

psql -d postgres
create user shikimori_development;
create user shikimori_test;
alter user shikimori_development createdb;
alter user shikimori_test createdb;
alter user shikimori_development with superuser;
alter user shikimori_test with superuser;

Create databases

Make sure en_US.UTF-8 database collation is set https://gist.github.com/ffmike/877447#gistcomment-2851598

Or you manually initialize new database with command

initdb --pgdata=/usr/local/var/postgres-16 -E 'UTF-8' --lc-collate='en_US.UTF-8' --lc-ctype='en_US.UTF-8'

Or initdb for apple M1

initdb --pgdata=/usr/local/var/postgresql@16 -E 'UTF-8' --lc-collate='en_US.UTF-8' --lc-ctype='en_US.UTF-8'

Create rails databases

rails db:create

Local Run

Everything you need to run is listed in Procfile. Shikimori uses Overmind to execute Procfile.

Restore from a backup

rails db:drop && rails db:create
unzip -d db/ db/dump.sql.zip
psql -U shikimori_development -d shikimori_development -f db/dump.sql
rm db/dump.sql
RAILS_ENV=test rails db:schema:load
# migrate dump to latest schema
rails db:migrate

Start rails server

rails server

Start related services

overmind start

Start some of related services

OVERMIND_PROCESSES=camo,faye overmind start

Elasticsearch

In rails console:

Elasticsearch::RebuildIndexes.new.perform

Elasticsearch fix on OSX

Homebrew/homebrew-core#100260 (comment)

I've finally made it work, but I'm not sure this is the right call:

I've edited the service plist at /usr/local/Cellar/elasticsearch@6/6.8.23/[email protected]:

     <key>ProgramArguments</key>
     <array>
       <string>/usr/local/opt/elasticsearch@6/bin/elasticsearch</string>
     </array>
     <key>EnvironmentVariables</key>
     <dict>
+      <key>JAVA_HOME</key>
+      <string>'/usr/libexec/java_home -v 17'</string>
     </dict>
I had to edit the plist in the Cellar folder instead of the one in ~/Library/LaunchAgents because brew services is overwriting it at every start.

Update neko rules

rails neko:update

Other

Make a backup

pg_dump -c shikimori_development > db/dump.sql

Autorun rspec & rubocop

guard

Record apipie docs

APIPIE_RECORD=all rspec spec/controllers/api/**

Add new video hosting

# app/services/video_extractor/player_url_extractor.rb

Run locally in production mode

RAILS_ENV=production rails assets:precompile && IS_LOCAL_RUN=true RAILS_ENV=production rails server

Webpack debugger

https://nodejs.org/en/docs/inspector/ Install the Chrome Extension NIM (Node Inspector Manager): https://chrome.google.com/webstore/detail/nim-node-inspector-manage/gnhhdgbaldcilmgcpfddgdbkhjohddkj

RAILS_ENV=development NODE_ENV=development NODE_PATH=node_modules node --inspect-brk node_modules/.bin/webpack-dev-server --progress --color --config config/webpack/development.js

Shakapacker debugger

https://nodejs.org/en/docs/inspector/ Install the Chrome Extension NIM (Node Inspector Manager): https://chrome.google.com/webstore/detail/nim-node-inspector-manage/gnhhdgbaldcilmgcpfddgdbkhjohddkj

./bin/shakapacker-dev-server --debug-shakapacker

Webpack visualizer

https://chrisbateman.github.io/webpack-visualizer/

Dependabot

@dependabot ignore this dependency

shikimori's People

Contributors

adem4ik avatar alekseysemiconductor avatar blackchestnut avatar blueberryy avatar boogiep0p avatar cawa-93 avatar dependabot-support avatar dependabot[bot] avatar edzura avatar gentu avatar gospodima avatar grin3671 avatar imkota avatar iwdt avatar morr avatar n3yxk1-th3-mvthmvid avatar nedprofit avatar negezor avatar opa-oz avatar opaoz avatar run-dey avatar secondthunder avatar spaceshipterra avatar tap349 avatar tie avatar tristisoris avatar tsuchimikado avatar usarise avatar velkod avatar yunfachi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shikimori's Issues

anime_videos#show view

show вьюшка с видео к аниме

  1. описание аниме. должно присутствовать только на первой странице с видео
  2. картинка аниме
  3. 4 рандомных комментария с пометкой "отзыв" с шикимори
  4. список видео, разбитый по озвучке/субтитрам и по авторам
  5. 2 заглушки под рекламне блоки. один сверху, второй слева
  6. блок с доп инфой по аниме такой же, как в левом меню на шикимори (может без некоторых полей)
  7. выбор нового видео перезагружает страницу

Набросал макет https://wireframe.cc/wGsIx7
wireframe cc - minimal wireframing tool - for free 2013-11-03 21-01-19
зоны с красными точками - аннотации

robots.txt

для аниме онлайн с запретом на индексацию всего сайта

наверное придётся сделать robots_controller, чтобы для разных сайтов отдавать разны robots
или же, если получится, то на уровне nginx отдавать разные файлы по одному адресу для разных доменов

getUserNotify

getUserNotify(login) - возвращает кол-во непросмотренных уведомлений, новостей и т.д(site_notify: 0; unread_messages: 1; forum_notify: 4)

модель AnimeVideo

AnimeVideo
id integer
anime_id integer
url string
episode integer
kind subtitles|dub
author string
Anime has many anime_videos

getHistory

getHistory(0, 20) - история изменения списка пользователя

отдельный ip

купить отдельный ip на хетзнере, ограничить в nginx доступ к шикимори на текущий ip, а доступ к онлайн аниме на новый ip

getClubs

getClubs(login) - Список клубов пользователя

getFriends

getFriends(login) - Список друзей пользователя

дата выхода следующего эпизода на странице онгоинга

Вот так:
2013-10-29 23-09-25
Строка не должна разъезжаться на две строки при длинном названии месяца.

Данные лежат тут:
526ec6c62cdc73932f72e207

Отображать дату либо выхода следующего эпизода, либо если следующий эпизод вышел "в прошлом", то отображать дату следующего+1 эпизода.

Таск для чистки топиков

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

getStatistic

getStatistic(login) - Информация с экрана статистики

поддержка звёздочки в любом поиске

Очень было бы хорошо, если по поиску Аниме была возможность ставить на месте буквы *, что бы искать Аниме.
Например *-O* , поиск бы подсказал что это Аниме K-ON
Это для того что бы люди которые помнят только кусок названия смогли его найти

допилить NameMatcher для FindAnimeImporter

провести полный импорт, посмотреть, какие аниме не матчатся, для не заматченных

  1. допилить NameMatcher, чтобы он мог матчить то, что потенциально должен заматчить
  2. забить вручную сопоставления для всех несматченных аниме через конфиг по аналогии с config/sakuhindb.yml SakuhinidbParser. Сопоставления должны делаться в NameMatcher для текущего service. В классе парсера или импортера, как делал раньше, не надо. Криво выходит, надо один раз обобщённый код написать, чтобы каждый раз потом для других сайтов не дублировать.
  3. научиться матчить до году выпуска то, что заматчено со множественными совпадениями

getSiteNews & getMessages & getNotify

getSiteNews(0, 20) - возвращает новости начиная с последнего и 20 предыдущих, (21; 20) с 21 из последних еще 20
getMessages(0, 20) - аналогично, только с личными сообщениями
getNotify(0, 20) - аналогично с Уведомлениями

миграция world_art_id, anime_db_id в AnimeLink

  1. миграция world_art_id, anime_db_id в AnimeLink
  2. отображение anime_links (ссылки на сайты с онлайн видео не давать) в ani_mangas/_menu_right.html.slim
  3. отображение anime_links ani_mangas/_stats.html.slim

getFavourites

getFavourites(login, type) - Список избранного, где type = аниме/манга/сейю/персонажи и тд.

getUserInfo

getUserInfo(login) - возвращает инфо которое под ником город, возраст и дт, статус на сайте, списки пользователя с колвом содержимого в них (типо manga_read: 23)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.