Journal Photoroid : une appli web de partage de photos

Posté par  .
Étiquettes :
13
22
juil.
2011

Bonjour Journal !

J'ai créé une appli web de partage de photos ! Elle est écrite en Ruby on Rails (v3.0.3) et son code est placé sous licence Apache v2. Vous trouverez tous les détails ici. Et voilà comment récupérer le source :

git clone http://minutebutterfly.de/code/photoroid photoroid

Photoroid a été créé pour résoudre le problème d'échange des photos entre amis, suite à une soirée ou à un voyage par exemple. Les solutions adoptées jusqu'à présent autour de moi allaient de l'échange de gros .zip par mail à la création de multiples albums Picasa. Je suis aussi passé par les albums collaboratifs Facebook, mais tout le monde n'utilise pas Facebook. Yogile correspond très exactement à ce que je voulais créer, mais c'est un service payant dès lors qu'on veut s'affranchir de la limite des 100 Mo d'images ; par ailleurs, je ne suis pas complètement serein quant à la sécurité de mes données stockées chez Yogile.

Photoroid se démarque de ces services par :
1. La simplicité d'utilisation: pas de création de compte nécessaire pour les contributeurs tiers à un album.
2. La possibilité de télécharger un album entier au format .zip.
3. L'absence de limite sur la taille des albums dès lors que le service est déployé sur son propre serveur.

Maintenant que j'ai fini de me passer de la crème à reluire, j'avoue que l'UI est très moche pour l'instant. Jugez par vous-mme :

Screenshot Photoroid

La bonne nouvelle c'est que je suis ouvert à toutes les contributions ! Surtout sur le style du code et les améliorations de l'UI. Happy cloning!

  • # ah, en voila une idée qu'elle est bonne !!

    Posté par  . Évalué à 2.

    Tout pareil, je ne suis pas emballé par picasa/google, j'ai pas de facebook, etc... Cool, un truc que je pourrais poser sur un site perso chez free par exemple, où les non-informacticiens pourraient poser/récupérer les photos des autres (d'un mariage par exemple), sans avoir a créer de compte chez google ou autre.

    Bon, par contre, j'y connais rien en RoR, j'aurais aimé que le README m'explique où poser ces fichiers, est-ce que ca doit se compiler, si oui comment, etc...

    Help me :)

    Mais sur le principe, je kiffe ton idée :)

    • [^] # Re: ah, en voila une idée qu'elle est bonne !!

      Posté par  . Évalué à 1.

      Le gros problème étant que Free, à ma connaissance, ne supporte pas les sites en Rails (ou en Ruby tout court) :(

      Pour l'instant, le seul gratuit que j'ai pu trouver c'est RedHat OpenShift Express. Quelqu'un connait-il d'autres hébergeurs gratuits à la Free, mais pour du Ruby?

      • [^] # Re: ah, en voila une idée qu'elle est bonne !!

        Posté par  . Évalué à 1.

        Je connais www.alwaysdata.com qui propose une offre gratuite mais il n'y a pas forcément bcp de place pour le stockage.

        Pour moi le service est topissime ;-)

      • [^] # Re: ah, en voila une idée qu'elle est bonne !!

        Posté par  . Évalué à 2.

        Tout les railleux utilisent Heroku pour du gratuit : http://heroku.com

        « En fait, le monde du libre, c’est souvent un peu comme le parti socialiste en France » Troll

        • [^] # Re: ah, en voila une idée qu'elle est bonne !!

          Posté par  . Évalué à 0.

          A noter que l'offre gratuite est limitée à 5 Mo. Et je ne suis pas sûr que l'on dispose d'un système de fichiers sans plugin.

          • [^] # Re: ah, en voila une idée qu'elle est bonne !!

            Posté par  . Évalué à 0.

            Je n'avais même pas parlé de Heroku à cause de cette limitation - 5Mo c'est vraiment léger! En fait je crois que les 5Mo c'est pour stocker les données dans l'instance Postgres qui est associée à ton appli, le code n'a pas l'air d'être compté dans les 5Mo. Mais en effet, pas d'accès direct à un système de fichier.

            Avec le truc de RedHat, tu as le droit à 256Mo pour application + base de données, ce qui est plus confortable. Et ils ont des outils en ligne de commande pour déployer, de loin ça ressemble à ce que fait Heroku.

    • [^] # Voila un autre outil

      Posté par  . Évalué à 0.

      Moi j'utilise tudzu, pour partager et sauvegarder avec ma famille. C'est du P2P donc les photos ne sont pas sur des serveurs externes et on peut aussi echanger en P2P des album picasa.
      ya un client windows et un linux.

  • # Jyraphe

    Posté par  . Évalué à 4.

    J'utilise Jyraphe pour partager mes fichiers (y compris photos) avec mes connaissances. C'est assez pratique et ça évite des soucis de transferts su IM par exemple.

    Voici le site officiel du projet: http://home.gna.org/jyraphe/

    • [^] # Re: Jyraphe

      Posté par  . Évalué à 1.

      Est-ce que tu sais s'il est possible de le faire fonctionner chez free.fr ? Merci.

      • [^] # Re: Jyraphe

        Posté par  . Évalué à 1.

        Probablement : c'est du php.

  • # BitTorrent

    Posté par  (site web personnel) . Évalué à -2.

    S'il y a un outil approprié pour ce genre d'usage, c'est plutôt BitTorrent. Ensuite, il faut que les correspondant puissent l'utiliser, mais ils devraient en être capables : les utilisateurs debaze arrivent bien à installer Adobe Reader pour lire un PDF, donc installer Deluge pour télécharger des photos ne devrait pas leur faire peur.

    • [^] # Re: BitTorrent

      Posté par  . Évalué à 2.

      Je ne suis pas sûr.

      Si j'ai un serveur perso, je dois pouvoir faire tourner un client torrent dessus pour seeder, sinon ça limite à la période où mon PC perso est allumé.

      De plus, si je comprends bien son truc, ça permet à des tiers de compléter la collection de photos. Par exemple pour mélanger les photos de mariage des différents appareils. Pas besoin de centraliser avant de diffuser.

      (Pour les mariages, l'idéal est sans doute de prendre un photographe et de laisser tous les autres appareils à la maison. Les photos seront de meilleurs qualité, moins redondantes, et ça laisse deux mains libre pour les petits fours et la boisson.)

      Pour mes photos, j'utilise Piwigo, qui crée des galleries, mais je ne l'utilise pas pour permettre à des tiers d'ajouter des photos ni pour permettre le téléchargement par archive.

      Je ne sais pas si ces deux fonctionalités sont possibles nativement ou bien via plugin.

      • [^] # Re: BitTorrent

        Posté par  . Évalué à 3.

        C'est possible et c'est possible avec piwigo.C'est aussi possible avec zenPhoto et surement beaucoup beaucoup de galleries.

        • [^] # Piwigo?

          Posté par  . Évalué à 1.

          C'est quoi le plugin qui permet à d'autres utilisateurs d'ajouter des photos ? Est-ce qu'il leur faut un compte pour ça ?
          Et existe-t-il un plugin qui permette de télécharger toutes les photos ?

          • [^] # Re: Piwigo?

            Posté par  . Évalué à 2.

            De mémoire par ce que c'est fait une éternité, community et download multi.

            Au pire pour ajouter des photos ça te prend 10 minutes de bricoler un truc qui repose sur l'API web. Je l'ai fait en python pour un client CLI par ce que j'aime pas cliquer partout; ça le fait sans soucis.

            Dans tout les cas je suis pas sur que yet another gallery soit la solution (hormis le plaisir de faire son truc).

  • # booh!

    Posté par  (site web personnel) . Évalué à 2.

    http://booh.org/ est mon ami depuis longtemps. Il génère un site web statique, il suffit juste d'avoir un hébergement minimaliste.

    "La première sécurité est la liberté"

  • # Ca devrait être une fonctionalité de réseau social libre...

    Posté par  . Évalué à 1.

    Avec le principe des cercles, je peux partager des photos de la soirée d'hier soir avec un groupe de potes et les photos de vacances avec d'autres potes sans collisions.

  • # Ma vie

    Posté par  . Évalué à 5.

    Hello,

    Comment se fait le partage de photo ?

    Il est marqué que c'est un .zip. Mais est ce que c'est généré à la volée en sélectionnant les photos à ajouter dans l'archive ou bien est ce que c'est des zip générés par cron en fonction de critères (genre par album, par date ou autre) ?

    Je vais ici raconter ma vie, en espérant que ce retour d'utilisation soit utile.

    Pour ma part, j'ai (presque) toujours utilisé gallery (puis gallery2).

    Le service m'a toujours convenu. C'est complet, extensible, il y a une large base d'utilisateurs. Mais je souhaitais partager mes photos.

    Il existe un plugin pour ça. Mais il y avait deux problèmes.

    Le premier, c'est que c'est un plugin développé par une boite. Et récupérer un .zip fait passer par un panier, même s'il n'y a rien à payer pour valider. C'est assez perturbant pour certains utilisateurs qui se demandent s'ils ne sont pas tombés sur un site commercial.

    Ce n'est pas grave techniquement, mais ça nuit à l'utilisabilité.

    Le second, et le plus grave, c'est que ça consomme un paquet de ressources. Ce n'est pas grave pour un nombre réduit de photos (ce qui diminue l'intérêt du zip), mais c'est plus chiant quand on veut récupérer 5 sous albums correspondant à 5 galeries uploadées par 5 personnes présentes à un mariage pour un total de plusieurs milliers de photos et de vidéos, ça tue le serveur pendant un certain temps et ça ne donne rien au final (timeouts php).

    Alors du coup, j'ai adopté une solution home made.

    Du coup j'ai pu générer des tarballs (.tar, donc sans compression), plutôt que de faire une bête compression de fichiers déjà compressés.

    J'ai tenté deux choses différentes :
    - Un cron qui génère un tarball selon différents critères (albums, date, plus récents, plus vus etc.). Mais ça prend une place énorme. Et ce n'est pas customisable (tout le monde ne veut pas forcément des trucs génériques).
    - Un mode de fonctionnement par batch. On sélectionne les photos, on clique on rentre un mail et un attend. Le tarball est disponible un certain nombre de temps après quoi il est effacé.

    Mais c'est contraignant pour l'utilisateur qui ne veut pas attendre. Et en cas d'erreur dans le mail ou un mail non consulté dans les 10 jours et il faut recommencer. Pendant ce temps des ressources (cpu, ram, espace disque) sont consommées inutilement.

    Finalement, je suis revenu à un truc simple : le FTP (ou presque).

    J'ai patché gallery en local pour y ajouter une page de doc expliquant comment on uploade ou downloade des photos en utilisant filezilla (qui fonctionne sous tous les OS du monde de la terre et du reste).

    Un compte système guest chrooté qui ne peux qu'ajouter des photos dans un répertoire upload (purgé régulièrement) et downloader tout ce qu'il veut dans les galleries publiques et pour les besoins spéciaux, des comptes nominatifs et ça roule.

    Bonne chance pour ton projet, mais très franchement, la méthode zip, je n'y crois plus du tout. À la limite, si tu veux conserver l'agrégation de fichiers, utilise au moins du .tar. Tu y gagnera en ressources systèmes et en attente pour tes utilisateurs. Et tu pourra potentiellement éviter des timeouts.

    • [^] # Re: Ma vie

      Posté par  . Évalué à 1.

      Alors pour faire court : le .zip est généré de la manière la plus sale et la moins scalable qui soit. C'est à dire :
      1. A chaque appel de "download album", à la volée.
      2. Sans effacement périodique des fichiers d'archives.

      Donc pour l'instant, pour pouvoir utiliser Photoroid avec plus d'une centaine d'utilisateurs fréquents, je suggèrerais un cron job qui tourne toutes les heures et efface les fichiers vieux de plus d'une heure.

      En considérant que ce service ne sera utilisé que par mes amis, pour l'instant ça me suffit. Mais je suis d'accord que c'est à améliorer.

  • # Contributions

    Posté par  . Évalué à 2.

    Tu dis accepter les contributions mais je ne vois nulle part la marche à suivre.
    Doit-on t'envoyer les patch par mail à l'adresse qu'on peut trouver sur ton site ?

    • [^] # Re: Contributions

      Posté par  . Évalué à 1.

      Honnêtement... Je sais pas trop, je suis un peu noob en git. J'aime bien l'idée du patch par mail, même si c'est pas franchement moderne.

      • [^] # Re: Contributions

        Posté par  . Évalué à 2.

        Bon ben c'est ce que j'ai fait, je te les ai envoyé par mail. Tu pourra les intéger en faisant:

          $ git apply foo.path
        
  • # Install

    Posté par  (site web personnel) . Évalué à 1.

    J'essaie d'installer ton appli mais je rencontre ce problème :

    $ bundle install --path vendor/cache
    bundle : commande introuvable

    Que faire ? Merci d'avance !

    Debug the Web together.

    • [^] # Re: Install

      Posté par  . Évalué à 1.

      Il s'agit d'une rubygem:

      gem install bundle

      • [^] # Re: Install

        Posté par  (site web personnel) . Évalué à 1.

        Ehm… Alors j'ai fait :

        gem install bundle --path vendor/cache

        Et le terminal m'a proposé d'installer rubygems1.8 ou rubygems1.9.1. J'ai choisi le 1.9.1 .
        Puis j'ai relancé la commande et ça dit :

        ERROR: While executing gem ... (OptionParser::InvalidOption)
        invalid option: --path

        ??? ._.'

        Debug the Web together.

        • [^] # Re: Install

          Posté par  . Évalué à 2.

          l'option path c'est pour la commande bundle pas pour gem

          récapitulatif:

            cd photoroid
            sudo gem install bundler # le sudo n'est pas forcément obligatoire ça dépend de ton système
            bundle install --path vendor/cache
          
          • [^] # Re: Install

            Posté par  (site web personnel) . Évalué à 1.

            Je n'y arrive toujours pas :

            ~/photoroid$ gem install bundler
            WARNING: Installing to ~/.gem since /var/lib/gems/1.9.1 and
            /var/lib/gems/1.9.1/bin aren't both writable.
            WARNING: You don't have ~/.gem/ruby/1.9.1/bin in your PATH,
            gem executables will not run.
            ERROR: Error installing bundler:
            bundler requires RubyGems version >= 1.3.6

            (idem en sudo)

            Debug the Web together.

            • [^] # Re: Install

              Posté par  . Évalué à 2.

              erf ton rubygem est très ancien. Pour le mettre à jour:

              $ sudo gem update --system

              ensuite il faudra que tu rajoute le répertoire des binaires de rubygems à ton $PATH comme indiqué par le warning que tu as copié collé ci dessus.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.