Giter Site home page Giter Site logo

abarriel / hypertube Goto Github PK

View Code? Open in Web Editor NEW
11.0 4.0 0.0 2.62 MB

:pizza: Streaming App like PopCornTime with torrent. Implemented with ts, express, my lib for routing, doc swagger.io, knex

Home Page: https://documenter.getpostman.com/view/3185272/hypertube/7TFEurc

JavaScript 73.71% HTML 0.52% TypeScript 25.69% CSS 0.08%
typescript react redux knex express es6 tslint babel browser-sync webpack3

hypertube's Introduction

Table des matières

Introduction

Ce projet vous propose de créer une application web permettant à un utilisateur de rechercher et visionner des vidéos.

Le lecteur sera directement intégré au site, et les vidéos seront téléchargées au travers du protocole BitTorrent.

Le moteur de recherche interrogera plusieurs sources externes de votre choix, comme par exemple http://www.legittorrents.info, ou encore https://archive.org.

Une fois un élément sélectionné, il sera téléchargé sur le serveur et diffusé sur le player web en même temps. Autrement dit, le lecteur ne se contentera pas d’afficher la vidéo une fois le téléchargement complété, mais sera capable de streamer directement le flux.

Preview

Consignes générales

Tous les framework, micro-framework, librairies etc... sont autorisés dans la limite où ils ne servent pas à créer un flux vidéo à partir d’un torrent.

⚠️ Par exemple, des librairies commewebtorrent, pulsar ou peerflix sont interdites.

📱 Votre site devra être présentable sur mobile, et garder une mise en page acceptable sur de petites résolutions.

Partie utilisateur

  • L’application doit permettre à un utilisateur de s’inscrire avec:

    • adresse email
    • login
    • photo de profil
    • nom
    • prénom
    • mot de passe
  • ⚠️ L’utilisateur doit pouvoir s’inscrire et se connecter via Omniauth.

    • Deux stratégie obligatoire, 42 et une autre au choix.
  • L’utilisateur doit être capable de se connecter avec:

    • login
    • mot de passe
  • Il doit également pouvoir recevoir un mail de réinitialisation de son mot de passe en cas d’oubli.

  • L’utilisateur doit pouvoir se déconnecter en un seul clic depuis n’importe quelle page du site.

  • ⚠️ L’utilisateur doit pouvoir sélectionner une langue préférée par défaut l’anglais.

  • L’utilisateur doit pouvoir Modifier son adresse email, sa photo de profil et ses informations.

  • Consulter le profil d’un autre utilisateur. C’est à dire afficher sa photo de profil, ses informations. L’ email, en revanche, doit rester privé.

Partie bibliothèque

⚠️ Cette partie ne doit être accessible qu’aux utilisateurs connectés.

ℹ️ Cette partie doit présenter au minimum :

  • Un champ de recherche.
  • Une liste de miniatures.

Recherche

Le moteur de recherche devra interroger au moins deux sources externes de votre choix, et retourner l’ensemble des résultats sous la forme de miniatures. Vous devez limiter les résultats aux vidéos uniquement.

Miniatures

  • Si une recherche a été faite, les résultats doivent s’afficher sous la forme d’une liste de miniatures, triées par nom.

  • Si aucune recherche n’a été faite, vous devrez afficher les médias les plus populaires de vos sources externes, triés selon le critère de votre choix (téléchargements, peers, seeders, etc...).

  • ℹ️ Une miniature doit être composée de:

    • nom de la vidéo
    • année de production
    • note
    • image de couverture

⚠️ Vous devrez différencier les vidéos vues des vidéos non-vues, de la manière de votre choix.

⚠️ La liste devra être paginée, à chaque fin de page, la suivante doit être automatique- ment chargée de manière asynchrone. Autrement dit, il ne doit pas y avoir de lien pour chaque page.

ℹ️ La liste devra être triable et filtrable selon des critères tels que le nom, le genre, un intervalle de note, un intervalle d’année de production, etc...

Partie vidéo

⚠️ Cette partie ne doit être accessible qu’aux utilisateurs connectés.

Cette section devra présenter le détail d’une vidéo, c’est à dire:

  • afficher le player de la vidéo.
  • ℹ️ si disponible
    • le résumé
    • le casting (au moins producteur, réalisateur, acteurs principaux, etc...)
    • l’année de production
    • la durée
    • la note
    • une image de couverture et tout ce qui vous semblerait pertinent.

⚠️ Vous devez également donner aux utilisateurs la possibilité de laisser un commentaire sur la vidéo, et afficher la liste des commentaires précédents.

ℹ️ Lancer la vidéo sur le navigateur doit - si le fichier n’a pas déjà été téléchargé précé- demment - lancer le téléchargement du torrent associé sur le serveur, et streamer le flux vidéo depuis ce dernier dès que suffisament de données sont téléchargées pour assurer la lecture intégrale de la vidéo sans interruption. Bien évidemment, tout le traitement doit être fait en arrière plan de manière non-bloquante.

ℹ️ Une fois un film téléchargé intégralement, il doit être sauvegardé sur le serveur, de manière à ne pas re-télécharger un film plusieurs fois. :warning: Si un film n’est pas visionné pendant un mois, il devra être supprimé.

⚠️ Si des sous-titres anglais sont disponibles pour cette vidéo, ils devront être téléchargés et sélectionnables sur le player vidéo. De même, si la langue de la vidéo ne correspond pas à la langue préférée de l’utilisateur, et que des sous-titres sont disponibles pour cette langue, ils devront également être téléchargés et sélectionnables.

Si la vidéo n’est pas nativement lisible pour le navigateur(c-ad que ce n’est ni dump4, ni du webm). vous devrez la convertir à la volée dans un format acceptable. Le support du format mkv est un minimum.

Partie bonus

  • Ajouter des stratégies Omniauth supplémentaires.
  • Gérer différentes résolutions de vidéo.
  • Développer une API RESTful.
  • Streamer la vidéo via l’API MediaStream.

hypertube's People

Contributors

abarriel avatar dpilarsk avatar lcharvol avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

hypertube's Issues

Register Field Error problem

Erreur sur la page register: Quand on rempli un premiere fois le formulaire avec des champs vide et puis que l'on click sur sign up, on ne pourra plus valider le formulaire car l'erreur 'Veuillez remplir tout les champs' persiste.

Je pense qu'il faut reset les errors sur le sign up puis re-checker tout les champs.

Uncaught Auth error

Une erreur dans auth.js n'est pas catch et un console warn apparait dans la console.

[SQL] Ajouter des foreign keys pour la table comments

Les champs, user_id, user_profile, user_name sont en brut dans la table comments.
C-a-d, le jour ou j'update ma user_profile, les commentaires afficheront les old infos.

Can be done:

  • Garder les champs dans la table comments et ajouter des foreign key.

Hint:
Pour drop la table comments:

// await deleteCommentsTable();

La defintion de comments
DB.schema.createTableIfNotExists('comments', (table: Knex.CreateTableBuilder) => {

Le controller qui ajouter un commentaire:

await Comments.post({ ...comment, username, userId, profilePicture });

Utiliser Postman requete=> 'COMMENTS ADD' => 'USER edit' => 'COMMENT GET'. Pour tester rapidement

How to rp ?

Désolé, je suis tombé par le plus grand des hasard sur votre projet il a l'air super cool, c'est juste que vous ne dites pas quel est la marche à suivre pour le host afin qu'on puisse le tester c'est possible d'avoir un p'tit tuto de ce côté là ?
Merci

Have a great day

Profil picture problem

Quand on créer un nouveau profil par register, l'upload de l'image de profil nee fonctionne pas réellement et l'image par default est utilisée.

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.