diff --git a/README b/README index 46e4bdf..dda7693 100644 --- a/README +++ b/README @@ -3,20 +3,56 @@ Plex Web Downloader Ce projet permet de créer une liste de vos fichiers vidéo plex et de les partager aux travers d'une interface web. +================== +INSTALLATION -//créée initialement avec +Sur Windows + pré requis, installer git ( https://git-scm.com/download/win ) + pré requis, installer nodejs 0.12.x ( https://nodejs.org/dist/v0.12.7/ ) + ouvrir cmb, se deplacer dans un repertoire où vous voulez installer + git clone https://github.com/TwanoO67/plex-web-downloader.git + cd plex-web-downloader + npm install + modifier le fichier config.js, pour le chemin de database (attention il faut doubler les \ et proteger les espaces ) + exemple: C:\\Users\\yourUsername\\AppData\\Local\\Plex Media Server\\Plug-in\ Support\\Databases\\com.plexapp.plugins.library.db + npm start + puis ouvrir http://localhost:3000 + +Sous mac + pré requis, nodejs + sinon installer homebrew ( ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ) + puis brew install node + git clone https://github.com/TwanoO67/plex-web-downloader.git + cd plex-web-downloader + npm install + modifier le fichier config.js, pour le chemin de database + exemple: /Users/yourUsername/Library/Application Support/Plex Media Server/Plug-in Support/Databases/com.plexapp.plugins.library.db + npm start + puis ouvrir http://localhost:3000 + +Sous ubuntu + pré requis nodejs, ou apt-get install nodejs + ln -s /usr/bin/nodejs /usr/local/bin/node + git clone https://github.com/TwanoO67/plex-web-downloader.git + cd plex-web-downloader + npm install + modifier le fichier config.js, pour le chemin de database + exemple: /home/yourUsername/plex-config/Plex Media Server/Plug-in Support/Databases/com.plexapp.plugins.library.db + npm start + puis ouvrir http://localhost:3000 + + + +================== +DEVELOPPEMENT + +//le projet a été créée initialement avec node install express -g node install express-generator -g express nom_du_projet cd nom_du_projet npm install -//pour installer le projet depuis git -sous debian: ln -s /usr/bin/nodejs /usr/local/bin/node -npm install -npm start -puis ouvrir http://localhost:3000 - //pour installer plex (depuis un dockerfile) mkdir ~/plex-config sudo chown 797:797 -R ~/plex-config diff --git a/config.js_example b/config.js_example index 7c4e47f..9269905 100644 --- a/config.js_example +++ b/config.js_example @@ -3,7 +3,7 @@ Chercher votre fichier de base de données plex, grace à ces indications: Windows Vista, Server 2008, Server 2008 R2, WHS 2011, Windows 7, Windows 8: -C:\Users\yourusername\AppData\Local\Plex Media Server\Plug-in Support\Databases\com.plexapp.plugins.library.db +C:\\Users\\yourusername\\AppData\\Local\\Plex Media Server\\Plug-in\ Support\\Databases\\com.plexapp.plugins.library.db Mac OS X: ~/Library/Application Support/Plex Media Server/Plug-in Support/Databases/com.plexapp.plugins.library.db diff --git a/routes/channel.js b/routes/channel.js index 8ed0a9c..7d9a1aa 100644 --- a/routes/channel.js +++ b/routes/channel.js @@ -1,13 +1,13 @@ var express = require('express'); var router = express.Router(); - /* GET home page. */ router.get('/:id', function(req, res, next) { var config = require('../config'); var db = config.init_db(); var data = []; + var channel_info = []; //on fais toute les opération de base a la suite db.serialize(function() { @@ -18,21 +18,36 @@ router.get('/:id', function(req, res, next) { //} //stmt.finalize(); - db.each("SELECT i.id as id, i.title as title, p.file as file, i.duration as second, i.year as year" - + " FROM metadata_items i, media_parts p " - + " WHERE p.media_item_id=i.id AND i.library_section_id = ? " + db.get("SELECT id, name, section_type as type" + + " FROM library_sections ORDER BY name ASC", function(err, row) { + channel_info = row; + }); + + db.each("SELECT i.id as id, i.title as title, t.hints as hints, p.file as file, i.duration as second, i.year as year" + + " FROM media_items t, metadata_items i, media_parts p " + + " WHERE p.media_item_id=i.id AND t.metadata_item_id = i.id AND i.title != '' AND t.library_section_id = ? " + " ORDER BY i.title ASC",req.params.id, function(err, row) { + var tab = row.file.split('/'); var tab2 = tab[tab.length -1].split('\\'); var filename = tab2[tab2.length -1]; - if(row.title != ''){ - row.filename = filename; - data.push(row); - } + row.filename = filename; + + //découpage des hints + var params = {}; + var tab = row.hints.split('&'); + tab.forEach(function(val,index,table){ + var tab2 = val.split('='); + params[tab2[0]] = decodeURIComponent(tab2[1]); + }); + + row.info_meta = params; + + data.push(row); }, //aprés toute les opération de la base function() { - res.render('channel', { title: 'Liste des vidéos',videos: data }); + res.render('channel', { title: 'Liste des vidéos',videos: data, channel: channel_info }); }); }); diff --git a/views/channel.jade b/views/channel.jade index 8450b97..da63217 100644 --- a/views/channel.jade +++ b/views/channel.jade @@ -1,12 +1,14 @@ extends layout block content - h1= title + h1= channel.name table(id="example", class="table table-striped table-bordered", cellspacing="0", width="100%") thead tr th Nom + if(channel.type == 2) + th Série th Durée th Année tbody @@ -14,6 +16,10 @@ block content tr td a(href="/file/#{video.id}/#{video.filename}")= video.title + if(channel.type == 2) + td + if(typeof video.info_meta !== 'undefined' && typeof video.info_meta.show !== 'undefined') + #{video.info_meta.show} td= video.second td= video.year script. diff --git a/views/layout.jade b/views/layout.jade index a01e47d..b3f5984 100644 --- a/views/layout.jade +++ b/views/layout.jade @@ -9,4 +9,24 @@ html script(type='text/javascript', src='//cdn.datatables.net/1.10.9/js/jquery.dataTables.min.js') script(type='text/javascript', src='//cdn.datatables.net/1.10.9/js/dataTables.bootstrap.min.js') body - block content + + nav.navbar.navbar-default.navbar-static-top.transparent(role="navigation") + div.container + div.navbar-header + button.navbar-toggle(type="button",data-toggle="collapse",data-target="#collapse-menu") + span.sr-only Toggle navigation + i.fa.fa-bars + a.navbar-brand(href="/") + b Plex  + | Web Downloader + + div#collapse-menu.collapse.navbar-collapse + ul.nav.navbar-nav.navbar-right + li.active + a(href="/") Accueil + li + a(href="/divers") Divers + + div.wrapper + div.container + block content