Пример #1
0
function searchTVdbAllById(id, cb, query,fromSearch,engine,eztvId) {
    var serie = {};
    serie.eztvId= null;
    serie.engine = engine; 
    tvdb.getSeriesAllById(id)
        .then(function(res) {
            serie.infos = res;
            serie.name = res.SeriesName.replace(/\(.*\)/, '').trim();
            serie.id = res.id;
            serie.page = 0;
            serie.list = [];
            serie.query = query;
            serie.fromSearch = fromSearch;
            if(engine == 'tvdb') {
            	return initCpbSearch(serie, cb);
            } else {
            	serie.eztvId = eztvId;
            	return getEztvShow(serie, cb);
            }
        })
        .catch(function(error) {
            serie.success = false;
            serie.error = error;
            cb(serie);
        });
}
Пример #2
0
        .post(function (req, res) {
            var id = req.body.id;
            var tvdbShow;
            tvdb.getSeriesAllById(id)
                .then(function (results) {
                    tvdbShow = results;
                    s = new Show({
                        _id: results.id,
                        name: results.SeriesName,
                        airsDayOfWeek: results.Airs_DayOfWeek,
                        airsTime: results.Airs_Time,
                        firstAired: new Date(results.FirstAired),
                        genre: results.Genre.split('|').filter(function (r) { return r.length != 0}),
                        network: results.Network,
                        overview: results.Overview,
                        rating: results.Rating,
                        ratingCount: results.RatingCount,
                        status: results.Status,
                        poster: results.poster,
                        banner: results.banner,
                        fanart: results.fanart
                    });
                    _.each(results.Episodes, function (episode) {
                        var firstAirDate = new Date(episode.FirstAired);
                        var currentDate = new Date();
                        s.episodes.push({
                            _id: episode.id,
                            season: episode.SeasonNumber,
                            episodeNumber: episode.EpisodeNumber,
                            episodeNode: episode.EpisodeName,
                            firstAired: new Date(episode.FirstAired),
                            overview: episode.Overview,
                            image: episode.filename,
                            status: currentDate > firstAirDate ? 'Downloaded' : 'Pending',
                            lastUpdated: new Date(episode.lastupdated * 1000)
                        })
                    })
                    var savePromise = s.save()
                        .then(function (savedShow) {

                            res.json(savedShow);
                        })
                        .catch(function (err) {
                            if (err.code == 11000) {
                                //redirect to existing show page
                                res.json(tvdbShow)
                                // res.redirect('/show/' + s.id);
                            }
                            else {
                                res.json({ status: false, message: err })
                            }
                        });
                })
                .catch(function (err) {
                    res.json({ status: false, message: err.message });
                });
        });
Пример #3
0
 .then(function (show) {
   if (show === null) {
     reject('The show ' + show.name + ' is not registred.');
   } else {
     var tvdb = new TVDBClient(config.tvdbkey);
     tvdb
       .getSeriesAllById(show.id)
       .then(function (episodes) {
         show.image = episodes.poster;
         if (episodes.Status === 'Ended') {
           show.ended = true;
         }
         show.save()
           .then(function () {
             self.downloadBanner(show.image)
               .then(function () {
                 self.update(show, episodes.Episodes)
                   .then(function () {
                     resolve();
                   })
                   .catch(function (err) {
                     reject(err);
                   });
               })
               .catch(function (err) {
                 reject(err);
               });
           })
           .catch(function (err) {
             reject(err);
           });
       })
       .catch(function (err) {
         reject(err);
       });
   }
 })
Пример #4
0
                request(req, function (error, response, data) {
                    if (error || response.statusCode >= 400) {
                        win.warn('TVAPI endpoint \'%s\' failed.', Settings.tvAPI[index].url);
                        if (index + 1 >= Settings.tvAPI.length) {
                            return reject(error || 'Status Code is above 400');
                        } else {
                            get(index + 1);
                        }
                        return;
                    } else if (!data || (data.error && data.error !== 'No data returned') || data.episodes.length === 0) {

                        var err = (data && data.episodes.length !== 0) ? data.error : 'No data returned';
                        debug ? win.error('API error:', err) : '';
                        reject(err);

                    } else {
                        data = Common.sanitize(data);
                        // we cache our new element or translate synopsis

                        if (Settings.translateSynopsis && Settings.language !== 'en') {
                            var langAvailable;
                            for (var x = 0; x < Settings.tvdbLangs.length; x++) {
                                if (Settings.tvdbLangs[x].abbreviation.indexOf(Settings.language) > -1) {
                                    langAvailable = true;
                                    break;
                                }
                            }
                            if (!langAvailable) {
                                resolve(data);
                            } else {

                                var reqTimeout = setTimeout(function () {
                                    resolve(data);
                                }, 2000);

                                var Client = require('node-tvdb');
                                var tvdb = new Client('7B95D15E1BE1D75A', Settings.language);
                                win.info('Request to TVDB API: \'%s\' - %s', old_data.title, App.Localization.langcodes[Settings.language].name);
                                tvdb.getSeriesAllById(old_data.tvdb_id)
                                    .then(function (localization) {
                                        clearTimeout(reqTimeout);
                                        _.extend(data, {
                                            synopsis: localization.Overview
                                        });
                                        for (var i = 0; i < localization.Episodes.length; i++) {
                                            for (var j = 0; j < data.episodes.length; j++) {
                                                if (localization.Episodes[i].id.toString() === data.episodes[j].tvdb_id.toString()) {
                                                    data.episodes[j].overview = localization.Episodes[i].Overview;
                                                    break;
                                                }
                                            }
                                        }
                                        resolve(Common.sanitize(data));
                                    })
                                    .catch(function (error) {
                                        resolve(data);
                                    });
                            }
                        } else {
                            resolve(data);
                        }
                    }
                });
Пример #5
0
        .put(function (req, res) {
            //the only update will be for resfreshing episodes.  
            var showToUpdate, tvdbShow;
            var id = req.body.id;
            // get show record from db
            tvdb.getSeriesAllById(id).then(function (responseShows) {
                tvdbShow = responseShows;
                return Show.findById(id).exec();
            }).then(function (dbShow) {

                // updated episodes
                var checkDate = new Date();  //get date to compare
                checkDate.setDate(checkDate.getDate() - 8);

                var updatedEpisodes = tvdbShow.Episodes.filter(function (e) { //get our epsidoes with newer updated dates
                    lastUpdatedDate = new Date(e.lastupdated * 1000);
                    return (lastUpdatedDate > checkDate)
                })


                var currentDate = new Date();
                _.each(updatedEpisodes, (function (webEpisode) {
                    var isFound = false;
                    var firstAirDate = new Date(webEpisode.FirstAired);
                    _.each(dbShow.episodes, (function (dbEpisode) {
                        if (webEpisode.id == dbEpisode.id) {
                            isFound = true;
                            //update the db record since we found the episode id
                            dbEpisode.season = webEpisode.SeasonNumber;
                            dbEpisode.episodeNumber = webEpisode.EpisodeNumber;
                            dbEpisode.episodeName = webEpisode.EpisodeName;
                            dbEpisode.firstAired = new Date(webEpisode.FirstAired);
                            dbEpisode.overview = webEpisode.Overview;
                            dbEpisode.image = webEpisode.filename;
                            dbEpisode.status = currentDate > firstAirDate ? 'Downloaded' : 'Pending';
                            dbEpisode.lastUpdated = new Date(webEpisode.lastupdated * 1000);
                            return false;  // found match, so let'e move to the next one
                        }
                        else {
                            // no match so we can add this one
                            isFound = false;
                        }
                    }));
                    if (!isFound) {  //add new episode
                        dbShow.episodes.push({
                            _id: webEpisode.id,
                            season: webEpisode.SeasonNumber,
                            episodeNumber: webEpisode.EpisodeNumber,
                            episodeNode: webEpisode.EpisodeName,
                            firstAired: new Date(webEpisode.FirstAired),
                            overview: webEpisode.Overview,
                            image: webEpisode.filename,
                            status: currentDate > firstAirDate ? 'Downloaded' : 'Pending',
                            lastUpdated: new Date(webEpisode.lastupdated * 1000)
                        })
                    }
                }))
                showToUpdate = dbShow;
                return showToUpdate.save();
            }).then(function (savedShow) {
                res.json({ savedShow })
            }).catch(function (err) {
                res.json({ status: false, message: err.message });
            })
        })