Skip to content

My flask project for Yandex.Lyceum and for myself

License

Notifications You must be signed in to change notification settings

mrSkyGuy/amv.net

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Документация (путеводитель) по сайту

Разработчик: Нурмагомедов Заур
Связаться можно написав мне в личку телеграм или мне на почту: nurmagomedoffzaur@yandex.ru
Если нашли баги или сайт вовсе не работает, то прошу написать мне, и я в скором времени решу проблему
Если есть идеи для улучшения работы приложения, просьба описать мне их ❤
Спасибо, что заинтересовались сайтом

Навигация

  1. Суть, идея
  2. Обзор сайта (версии актуальной на 29.04.22)
  3. Обзор API (версии актуальной на 29.04.22)

Немножко пройдемся по идее и цели сайта

AMV (сокр. Anime Music Video) — моменты из аниме под музыку. Но столь примитивное описание не способно раскрыть всю суть данного искусства. Непросвещенный я, года 2 назад, не мог понять, в чем смысл смотреть это, так как не был погружен в эту культуру. Но, когда я начал свое плавание в японской мультипликации, я начал осознавать. Осознавать, что, чтобы распознать смысл, нужно знать всю историю момента, происходящего в amv. Без этого бесполезно смотреть. (Определение с википедии можешь прочитать здесь)
Пример amv (осторожно, СПОЙЛЕРЫ). Смотря это, зная всю предысторию, у меня нахлынывает такой поток эмоций, что их сложно описать (даже от многоповторного просмотра)

Суть данного сайта заключается в том, чтобы объединить ценителей AMV-роликов в одну социальную сеть. На данный момент, я не встретил аналогов на просторах интернета. И, так как я вовлечен в данное творение Минервы, я решил стать организатором сообщества, быть может, глобального уровня xD. Здесь каждый сможет выложить свою работу, каждый будет способен увидеть твое творчество, оценить его.

На данный момент чем-то на подобии прародителя смог стать Instagram. Но мой проект же имеет более узкую направленность.

Некую параллель можно провести между таким крупным сервисом https://kinopoisk.ru, который предоставляет доступ ко всем фильмам, сериалам, аниме и тд. И сервисом https://animego.org, который ориентирован на только аниме.
Конечно, кинопоиск пользуется большим спросом у сообщества, чем анимего. Но, так как, в свою очередь, инстаграм уже занял свою нишу, я думаю, что и мне стоит хотя бы попытаться осуществить данный проект. Да хотя бы потому что я сам был бы рад, будь сейчас такой сервис доступен

Вернемся к соц сети Instagram. От туда я взял саму идею выкладывать свое творчество. Нужно создать свой профиль. После, ты можешь смотреть чудесные видео. Ты в праве выложить свой ролик/картинку, набрать свою аудиторию, найти единомышленников.


Экскурсия по сайту

Сайт, по-хорошему, доступен сейчас по данной ссылке (может не работать 😥)

Главная страница

Представляет собой ленту из видео, которые, естественно, берутся из аккаунтов других пользователей. Лента бесконечна - циклична: если вы дошли до конца, то вернетесь в начало. Но работает это только в одну сторону: вы не можете с начала перейти в конец.
Пока что, так как на сайте мало видео - он только начинает свой путь - сервис не будет учитывать, смотрел ли ты это видео прежде или нет. Смотрел или нет - все равно ты его посмотришь xD. В дальнейшем, конечно же, такого не будет. Предполагается, что такое обновление придет ближе к отметке 500 загруженных видео.
Само содержимое главной страницы состоит из 3 основных блоков:

  • Предыдущее видео (просмотренное) - тут показывается последнее просмотренное тобой видео.
  • Текущее видео - тут ты смотришь amv-ролик
  • Следующее видео - тут находится следующий ролик

На ПК версии свайп осуществляется горизонтально (также можно пользоваться клавишами-стрелками на клавиатуре пользователя разработчик рекомендует этот способ свайпа). Я считаю, что так удобнее.
Для мобильных устройств сайт не адаптирован, тк у разработчика не хватило бюджета и времени(

Как и подобает социальной сети, видео можно лайкнуть или отметить, как просмотренное. Последнее, естественно, происходит автоматически. А лайкнуть может только авторизованный в системе пользователь. Если позволить лайкать всем, то так будет просто невероятно легкий способ накрутки лайков. Почему я не применил данный способ к просмотрам? А потому что это не имеет смысла, так как пользователи сами если что смогу понять, что видео имеет нечистую репутацию просмотров по соотношению лайков к просмотрам.
В дальнейших обновлениях будет добавлена возможность комментировать контент ленты
Также будет возможность просмотреть список лайкнутых тобой видео. Это легко реализовать, просто пока нет времени на это(( Поэтому, это будет добавлено в ближайших обновлениях, но статистика уже собирается, поэтому не бойтесь потерять свои любимые видео

Далее рассмотрим шапку и подвал

  • В хедере мы видим
    • домен сайта, при нажатии на который нас перенаправляет на главную
    • Поле поиска (будет работать в дальнейших обновлениях)
    • если пользователь авторизован, то будет показан его уголок с информацией о новых уведомлениях и сообщениях (будет работать в дальнейших обновлениях). А также возможность перейти на страницу своего аккаунта
    • если не авторизован, то будет предложено зарегистрироваться или войти в свой аккаунт
  • В футере расположена контактная информация разработчика (телеграм, инстаграм, гитхаб)

Страница авторизации

Является тем местом, где юзер может зарегистрироваться или войти в свой аккаунт.

  • Регистрация - необходимо предоставить username, почту и пароль. В дальнейших обновлениях также появится возможность указать номер телефона + надо будет подтвердить почту/телефон кодом, который придет в СМС.
  • Войти в свой аккаунт - необходимо предоставить username/почту и пароль к аккаунту

Страница пользователя

Представляет собой информацию о выбранном пользователе. Там находится информация:

  • Аватарка
  • Username
  • Описание
  • Количество видео, подписчиков и подписок
  • Указанные социальные сети (пока что работают не плану там указаны социальные сети разработчика ахаххах)
  • Если пользователь авторизован, то ему будет предложено подписаться на автора или открыть чат с ним (последние находится в разработке)
  • Если пользователь перешел на свою же страницу, то у него будет возможность редактировать аккаунт и добавить новые видео на свой аккаунт (редактирование аккаунта находится в разработке)
  • Видео текущего пользователя. (Пока что они не кликабельные, а просто статичные. В дальнейшем все будет xD)

Страница добавления видео

Доступна только авторизованному пользователю. Здесь, как несложно догадаться, можно загрузить видео на сервис.
Имеется 3 поля:

  • *Поле для видео.
    Поддерживаются форматы: .mp4, .ogv, .webm
    Ограничение по размеру - 15МБ
  • Поле для превью. Если сюда не приложить картинку, то будет использоваться дефолтная (домен сайта на сером фоне xD). в дальнейшем, в качестве дефолтного превью будет использоваться кадр из загруженного ролика
    Поддерживаются форматы: .png, .jpg, .jpeg
    Ограничение по размеру - 15МБ
  • *Поле для описания. От 10 до 100 символов

API

Сайт также предоставляет свое API. Оно пока что сырое. Но что есть, то есть.
{"success": True} - запрос прошел успешно
{"success": False, "message": "[message]"} - запрос оказался некорректным

GET /api/users

Возвращает json-объект с данными о всех пользователях. А именно:

  • id
  • username
  • аватарка
  • подписчики: id, username
  • подписки: id, username
  • все видео:
    • id
    • ссылка на видео
    • ссылка на превью
    • описание
    • количество просмотров
    • количество комментариев
    • дату создания видео
    • лайки: id, username

GET /api/users/<int: id>

Возвращает json-объект с данными о интересующем пользователе. А именно:

  • id
  • username
  • аватарка
  • подписчики: id, username
  • подписки: id, username
  • все видео:
    • id
    • ссылка на видео
    • ссылка на превью
    • описание
    • количество просмотров
    • количество комментариев
    • дату создания видео
    • лайки: id, username

POST /api/users

Регистрирует пользователя в системе.
Для регистрации необходимо предоставить: username, почта и пароль. Они должны будут пройти валидацию. И после этого, пользователь будет зарегистрирован в системе. Если прошло успешно, то вернется json-объект данного пользователя (то же, что и в /api/users/<int: id>)

DELETE /api/users/<int: id>

Удаляет аккаунт пользователя. Для успешного осуществления запроса необходимо предоставить username и пароль от данного аккаунта. Если все прошло успешно придет соответствующий ответ от сервера


GET /api/videos

Возвращает json-объект с данными о всех видео. А именно:

  • id
  • ссылка на видео
  • ссылка на превью
  • описание
  • количество просмотров
  • количество комментариев
  • дату создания видео
  • лайки: id, username
  • автор:
    • id
    • username
    • аватарка
    • подписчики: id, username
    • подписки: id, username

GET /api/videos/<int: id>

Возвращает json-объект с данными об интересующем видео. А именно:

  • id
  • ссылка на видео
  • ссылка на превью
  • описание
  • количество просмотров
  • количество комментариев
  • дату создания видео
  • лайки: id, username
  • автор:
    • id
    • username
    • аватарка
    • подписчики: id, username
    • подписки: id, username

POST api/videos

Загружает видео на аккаунт пользователя.
Сервис предоставляет возможность загрузить видео непосредственно через API.
Для осуществления необходимо предоставить:

  • Данные об аккаунте
    • username
    • пароль
  • Данные о видео
    • *видео
      Ограничения - 15MB

      Для загрузки видео (и превью) разработчик рекомендует использовать следующую функцию:

      def get_byte_file(abs_path):
          with open(abs_path, "rb") as f:
              return f.read().decode("latin1")

      где abs-path - абсолютный путь до видео

    • *расширение данного видео
      Поддерживаемые форматы: .mp4, .ogv, .webm
    • превью (если не выбрано, то будет использоваться дефолтное)
      Ограничения - 2MB
    • расширение данного превью (если указали превью, то данное поле обязательно)
      Поддерживаемые форматы: .png, .jpg, .jpeg
    • *Описание

В случае успеха вернется json-объект данного видео (то же, что и /api/videos/<int: id>)

DELETE /api/videos/<int: id>

Удаляет видео из аккаунта пользователя.
Для успешного осуществления запроса необходимо предоставить: username и пароль.
В случае успеха вернется соответствующий ответ


Разработчик: Нурмагомедов Заур
Связаться можно написав мне в личку телеграм или мне на почту: nurmagomedoffzaur@yandex.ru
Если нашли баги или сайт вовсе не работает, то прошу написать мне, и я в скором времени решу проблему
Если есть идеи для улучшения работы приложения, просьба описать мне их ❤
Спасибо, что заинтересовались сайтом