• Applications
  • [Discussion] Medusa: téléchargement automatique d'épisodes de série

Bonjour,

Le dev de SickRage semble être fortement ralenti. Je vous recommande de passer sur Medusa, qui suppporte YggTorrent et EliteTracker. Vous pouvez aussi utiliser Jackett en passant par un provider NZB Custom.

J'ai mis à jour le tuto en conséquence.

Pour migrer de SickRage à Medusa, vous devez copier sickbeard.db dans le répertoire de Medusa en le renommant main.db. Vous devez aussi mettre à jour votre vhost Nginx pour supporter les websockets comme indiqué dans le tuto.

    adaur a renommé le titre en [Discussion] Medusa: téléchargement automatique d'épisodes de série.

    Nebukad Effectivement, erreur dans mon rechercher/remplacer. Merci de l'avoir remarqué !

    Autre petite coquille dans le tuto. Dans le fichier /etc/default/medusa :

    Il faut replacer :

    SR_USER=votreutilisateur
    SR_HOME=/chemin/vers/votre/installation/medusa/
    SR_DATA=/chemin/vers/votre/installation/medusa/
    SR_GROUP=votregroup

    par :

    APP_USER=votreutilisateur
    APP_HOME=/chemin/vers/votre/installation/medusa/
    APP_DATA=/chemin/vers/votre/installation/medusa/
    APP_GROUP=votregroup

    J'ai du également changer le propriétaire du dossier /var/run/PyMedusa avec monuser:root sinon le servive semblait se lancer mais il ne pouvait pas créer le PID.

    hello

    il ya t il un moyen de l'avoir en français ?

    merci par avance 🙂

      Cognotte Je n'ai pas l'impression et n'ai pas vu de pull request dans ce sens pour l'instant.
      Pour l'instant je laisse SickRage en parallèle je n'arrive pas à sélectionner les catégories pour Jackett.

        Nebukad qu'est ce que tu entends par catégories pour Jackett ?

        je n'utilise pas jacket dans medusa

        Je parle des "Newznab search categories" qui sont en gros les différentes catégories de contenus des providers. C'est surtout lié aux Newsgroup mais c'est également utilisé par Jackett pour les Torrents.
        En clair, quand tu ajoutes un provider Nbz, Medusa ou Sickrage s'y connecte pour récupérer les catégories de contenus qu'il gère et te permets de filtrer tel ou tel catégorie.

        Dans mon cas, Medusa n'arrive pas à récupérer ces infos depuis Jackett et du coup me le remonte en Warning.

          au secours 🙂

          j'ai installé medusa hier et pendant la nuit il a récup 125 épisodes .... (aie mon ratio)

          je ne lui ai pas demandé et normalement tout était réglé sur skipped sauf pour les nouveaux épisodes.

          avez vous une idée merci

            Nebukad peux tu remonter le bug sur github stp? merci pour tes remarques. Je passe uniquement par Python en daemon désormais.

            D'ailleurs, je suis curieux, quels providers as-tu sur Jackett qui te manquent sur Medusa?

            Cognotte peut être as-tu récupéré des propers pour des épisodes qui n'avaient qu'été snatched.

            merci pour la réponse. j'ai une erreur qui n'arrete pas de revenir :

            2017-11-01 20:57:37 ERROR SHOWQUEUE-REFRESH :: [b16e0e5] 256111: Error while refreshing show Saving Hope. Error: unsupported locale setting
            Traceback (most recent call last):
            File "/opt/medusa/medusa/show_queue.py", line 629, in run
            self.show.refresh_dir()
            File "/opt/medusa/medusa/tv/series.py", line 1744, in refresh_dir
            self.load_episodes_from_dir()
            File "/opt/medusa/medusa/tv/series.py", line 928, in load_episodes_from_dir
            cur_episode = self.make_ep_from_file(os.path.join(self.location, media_file))
            File "/opt/medusa/medusa/tv/series.py", line 1354, in make_ep_from_file
            filepath)
            File "/opt/medusa/medusa/tv/series.py", line 1223, in should_refresh_file
            new_quality = Quality.name_quality(filepath, anime)
            File "/opt/medusa/medusa/common.py", line 302, in name_quality
            return Quality.extend_quality(name)
            File "/opt/medusa/medusa/common.py", line 401, in
            extend_quality
            quality = Quality.quality_from_file_meta(file_path)
            File "/opt/medusa/medusa/common.py", line 422, in quality_from_file_meta
            knowledge = knowit.know(file_path)
            File "/opt/medusa/ext/knowit/api.py", line 49, in know
            return provider.describe(video_path, context)
            File "/opt/medusa/ext/knowit/providers/mediainfo.py", line 330, in describe
            data = self.executor.extract_info(video_path).to_data()
            File "/opt/medusa/ext/knowit/providers/mediainfo.py", line 89, in extract_info
            xml = self.execute(filename)
            File "/opt/medusa/ext/knowit/providers/mediainfo.py", line 165, in
            execute
            locale.setlocale(locale.LC_CTYPE, locale.getdefaultlocale())
            File "/usr/lib/python2.7/locale.py", line 579, in setlocale
            return _setlocale(category, locale)
            Error: unsupported locale setting

            vous connaissez ?

            Soumets ton problème sur github, pas ici 😉

            5 jours plus tard

            Bonjour la compagnie,

            je viens vers vous pour avoir vos lumieres sur un soucis vraiment pénible. je viens de reinstaller from scratch 2 seedbox (debian 8 & 9) et depuis impossible pour Medusa d'envoyer des torrents vers rtorrent.

            J'ai utilisé les scripts d'@ex_rat pour les deux seedbox et j'ai les erreurs suivantes :

            rTorrent: Unable to send Torrent
            Error while sending torrent: <Fault -506: "Method 'load_raw' not defined">

            J'ai deja ouvert une issue sur git hub (https://github.com/pymedusa/Medusa/issues/3223) Mais le dev est un peu dans le flou car il a exactement la même configuration que moi et pas de souci pour lui. Il me demande de vérifier si la méthode load_raw est utilisable mais je sais pas comment faire.

            D"autre personnes ont elles utilisé le scritp pour debian 9 d'ex_rat et pour qui Medusa fonctionnel ?

            A votre bon cœur 😁

              therealcorwin je suis conscient que ça ne fixe pas la fonctionnalité en elle même, mais tu peux toujours passer par le trou noir qui envoie les torrents dans le répertoire watch de rtorrent

                adaur

                Merci Adaur pour ton retour. C'est ce à quoi je tends pour palier à ce souci. Par contre comment j'envoie mon torrent à ma seedbox de manière simple?

                Pour info, je travaille avec Mediarox un des contributeurs de Medusa pour résoudre ce souci. Maintenant le torrent est bien envoyé à la seedbox mais il reste en statut arrêté et n'a pas de label ;( Mais on avance !!

                Bonjour à tous,

                Je suis entrain de passer de SickRage à Medusa, et j’essaye d’essayer le passer en multi-utilisateur en me basant sur ce tuto : https://mondedie.fr/d/6674-Tuto-Sickrage-multi-utilisateurs mais je bloque...

                Donc j’ai créé un fichier /etc/init.d/medusa_garrus (en me basant sur le tuto de xataz) dont voici le contenu :

                 
                #!/bin/bash
                #
                ### BEGIN INIT INFO
                # Provides:          medusa_garrus
                # Required-Start:    $local_fs $network $remote_fs
                # Required-Stop:     $local_fs $network $remote_fs
                # Should-Start:      $NetworkManager
                # Should-Stop:       $NetworkManager
                # Default-Start:     2 3 4 5
                # Default-Stop:      0 1 6
                # Short-Description: Daemon pour Medusa
                # Description:       Permets le lancement de Medusa en multi-utilisateurs
                ### END INIT INFO
                
                # A modifier
                APP_USER=garrus
                APP_INSTALL=/opt/medusa
                
                
                
                # Pas touche
                NAME=medusa_$APP_USER
                DESC="Medusa pour $APP_USER"
                APP_HOME=$APP_INSTALL
                APP_DATA=$APP_HOME/data/$APP_USER
                APP_OPTS=--config=$APP_DATA/config.ini
                APP_PIDFILE=$APP_DATA/Medusa.pid
                
                
                # default
                RUN_AS=${APP_USER-medusa}
                APP_PATH=${APP_HOME-/opt/medusa}
                DATA_DIR=${APP_DATA-/opt/medusa}
                PID_FILE=${APP_PIDFILE-/var/run/PyMedusa/Medusa.pid}
                DAEMON=${PYTHON_BIN-/usr/bin/python2.7}
                EXTRA_DAEMON_OPTS=${APP_OPTS-}
                EXTRA_SSD_OPTS=${SSD_OPTS-}
                
                PID_PATH=`dirname $PID_FILE`
                DAEMON_OPTS=" start.py -q --daemon --nolaunch --pidfile=${PID_FILE} --datadir=${DATA_DIR} ${EXTRA_DAEMON_OPTS}"
                
                test -x $DAEMON || exit 0
                set -e
                
                if [ ! -d $PID_PATH ]; then
                    mkdir -p $PID_PATH
                    chown $RUN_AS $PID_PATH
                fi
                
                if [ ! -d $DATA_DIR ]; then
                    mkdir -p $DATA_DIR
                    chown $RUN_AS $DATA_DIR
                fi
                
                if [ -e $PID_FILE ]; then
                    PID=`cat $PID_FILE`
                    if ! kill -0 $PID > /dev/null 2>&1; then
                        echo "Removing stale $PID_FILE"
                        rm $PID_FILE
                    fi
                fi
                
                d_start() {
                    echo "Starting $DESC"
                    start-stop-daemon -d $APP_PATH -c $RUN_AS $EXTRA_SSD_OPTS --start --pidfile $PID_FILE --exec $DAEMON -- $DAEMON_OPTS
                }
                
                d_stop() {
                    echo "Stopping $DESC"
                    start-stop-daemon --stop --pidfile $PID_FILE --retry 15
                }
                
                d_status() {
                        if [ -e $PID_FILE ]
                        then
                                if [ $(cat $PID_FILE) -eq $(ps -ef | grep $PID_FILE | grep -v grep | awk '{print $2}') ]
                                then
                                        echo "$DESC is running"
                                else
                                        echo "$DESC is stopping"
                                fi
                        else
                                echo "$DESC is stopping"
                        fi
                
                }
                
                case "$1" in
                    start)
                        d_start
                        ;;
                    stop)
                        d_stop
                        ;;
                
                restart|force-reload)
                    d_stop
                    sleep 2
                    d_start
                    ;;
                status)
                    d_status
                    ;;
                *)
                    N=/etc/init.d/$NAME
                    echo "Usage: $N {start|stop|restart|status|force-reload}" >&2
                    exit 1
                    ;;
                esac
                
                exit 0
                

                Mais lorsque je vais sur l’interface web j’ai le message suivant :

                Traceback (most recent call last):
                  File "/opt/medusa/ext/tornado/web.py", line 1488, in _execute
                    result = self.prepare()
                  File "/opt/medusa/ext/tornado/web.py", line 2223, in prepare
                    raise HTTPError(self._status_code)
                HTTPError: HTTP 404: Not Found
                

                réponse un peu basique, le fichier existe t il bien et les droits sont ils les bons ?

                  therealcorwin Merci pour l'aide, mais oui le fichier est bien au bon endroit et avec les bons droits...

                    Garrus
                    Salut
                    jai fait ça mais non testé

                    #
                    ### BEGIN INIT INFO
                    # Provides:          medusa
                    # Required-Start:    $local_fs $network $remote_fs
                    # Required-Stop:     $local_fs $network $remote_fs
                    # Should-Start:      $NetworkManager
                    # Should-Stop:       $NetworkManager
                    # Default-Start:     2 3 4 5
                    # Default-Stop:      0 1 6
                    # Short-Description: starts instance of Medusa
                    # Description:       starts instance of Medusa using start-stop-daemon
                    ### END INIT INFO
                    
                    # Load the VERBOSE setting and other rcS variables
                    . /lib/init/vars.sh
                    
                    # Define LSB log_* functions.
                    # Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
                    . /lib/lsb/init-functions
                    
                    
                    ## Don't set -e
                    ## Don't edit this file!
                    ## Edit user configuation in /etc/default/medusa to change
                    ##
                    ## APP_USER=         #$RUN_AS, username to run medusa under, the default is medusa
                    ## APP_GROUP=        #$RUN_GROUP, group to run medusa under, the default is medusa
                    ## APP_HOME=         #$APP_PATH, the location of start.py, the default is /opt/medusa
                    ## APP_DATA=         #$DATA_DIR, the location of sickbeard.db, cache, logs, the default is /opt/medusa
                    ## APP_PIDFILE=      #$PID_FILE, the location of medusa.pid, the default is /var/run/PyMedusa/Medusa.pid
                    ## PYTHON_BIN=      #$DAEMON, the location of the python binary, the default is /usr/bin/python2.7
                    ## APP_OPTS=         #$EXTRA_DAEMON_OPTS, extra cli option for medusa, i.e. " --config=/home/medusa/config.ini"
                    ## SSD_OPTS=        #$EXTRA_SSD_OPTS, extra start-stop-daemon option like " --group=users"
                    ##
                    ## EXAMPLE if want to run as different user
                    ## add APP_USER=username to /etc/default/medusa
                    ## otherwise default medusa is used
                    
                    
                    # A modifier
                    MD_USER=garrus
                    MD_INSTALL=/opt/medusa
                    
                    
                    
                    # Pas touche
                    NAME=Medusa_$MD_USER
                    MD_HOME=$MD_INSTALL
                    MD_DATA=$MD_HOME/data/$MD_USER
                    MD_OPTS=--config=$MD_DATA/config.ini
                    MD_PIDFILE=$MD_DATA/sickrage.pid
                    
                    
                    
                    # App name
                    DESC="Medusa pour $MD_USER"
                    
                    ## The defaults
                    # Run as username
                    RUN_AS=${MD_USER-medusa}
                    
                    # Run as group
                    RUN_GROUP=${MD_USER-medusa}
                    
                    # Path to app APP_HOME=path_to_app_start.py
                    APP_PATH=${MD_HOME-/opt/medusa}
                    
                    # Data directory where sickbeard.db, cache and logs are stored
                    DATA_DIR=${MD_DATA-/opt/medusa}
                    
                    # Path to store PID file
                    PID_FILE=${MD_PIDFILE-/var/run/PyMedusa/Medusa.pid}
                    
                    # path to python bin
                    DAEMON=${PYTHON_BIN-/usr/bin/python2.7}
                    
                    # Extra daemon option like: APP_OPTS=" --config=/home/medusa/config.ini"
                    EXTRA_DAEMON_OPTS=${MD_OPTS-}
                    
                    # Extra start-stop-daemon option like START_OPTS=" --group=users"
                    EXTRA_SSD_OPTS=${SSD_OPTS-}
                    ##
                    
                    PID_PATH=$(dirname $PID_FILE)
                    DAEMON_OPTS=" start.py -q --daemon --nolaunch --pidfile=${PID_FILE} --datadir=${DATA_DIR} ${EXTRA_DAEMON_OPTS}"
                    
                    ##
                    
                    test -x $DAEMON || exit 0
                    
                    # Create PID directory if not exist and ensure the Medusa user can write to it
                    if [ ! -d $PID_PATH ]; then
                        mkdir -p $PID_PATH
                        chown $RUN_AS $PID_PATH
                    fi
                    
                    if [ ! -d $DATA_DIR ]; then
                        mkdir -p $DATA_DIR
                        chown $RUN_AS $DATA_DIR
                    fi
                    
                    if [ -e $PID_FILE ]; then
                        PID=`cat $PID_FILE`
                        if ! kill -0 $PID > /dev/null 2>&1; then
                            [ "$VERBOSE" != no ] && echo "Removing stale $PID_FILE"
                            rm -f $PID_FILE
                        fi
                    fi
                    
                    start_medusa() {
                        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
                        start-stop-daemon -d $APP_PATH -c $RUN_AS --group=${RUN_GROUP} $EXTRA_SSD_OPTS --start --quiet --pidfile $PID_FILE --exec $DAEMON -- $DAEMON_OPTS
                        RETVAL="$?"
                        case "${RETVAL}" in
                            # Service was started or was running already
                            0|1) [ "${VERBOSE}" != no ] && log_end_msg 0 ;;
                            # Service couldn't be started
                            2) [ "${VERBOSE}" != no ] && log_end_msg 1 ;;
                        esac
                        [ "${RETVAL}" = 2 ] && return 2
                        return 0
                    }
                    
                    stop_medusa() {
                        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
                        start-stop-daemon --stop --pidfile $PID_FILE --quiet --retry TERM/30/KILL/5
                        RETVAL="$?"
                        case "${RETVAL}" in
                            # Service was stopped or wasn't running
                            0|1) [ "${VERBOSE}" != no ] && log_end_msg 0 ;;
                            # Service couldn't be stopped
                            2) [ "${VERBOSE}" != no ] && log_end_msg 1 ;;
                        esac
                        [ "${RETVAL}" = 2 ] && return 2
                        [ -f "${PID_FILE}" ] && rm -f ${PID_FILE}
                        return 0
                    }
                    
                    case "$1" in
                        start)
                            start_medusa
                            exit $?
                            ;;
                        stop)
                            stop_medusa
                            exit $?
                            ;;
                    
                        restart|force-reload)
                            stop_medusa
                            sleep 2
                            start_medusa
                            exit $?
                            ;;
                        status)
                            status_of_proc -p "$PID_FILE" "$DAEMON" "$DESC"
                            exit $?
                            ;;
                        *)
                            N=/etc/init.d/$NAME
                            echo "Usage: $N {start|stop|restart|force-reload}" >&2
                            exit 1
                            ;;
                    esac
                    
                    exit 0

                    il te manque /lib/lsb/init-functions qui sont pour des variables.