diff --git a/api/SSettings.php b/api/SSettings.php index 5d09fa8..965ba0b 100644 --- a/api/SSettings.php +++ b/api/SSettings.php @@ -2,7 +2,7 @@ class SSettings { - private $database; + private ?Database $database; /** * SSettings constructor. @@ -19,4 +19,21 @@ class SSettings $r = mysqli_fetch_assoc($result); return $r['video_path']; } + + /** + * check if TMDB is enableds + * @return bool isenabled? + */ + public function isTMDBGrabbingEnabled(): bool + { + $query = "SELECT TMDB_grabbing from settings"; + + $result = $this->database->getConnection()->query($query); + if(!$result){ + return true; // if undefined in db --> default true + }else{ + $r = mysqli_fetch_assoc($result); + return $r['TMDB_grabbing'] == '1'; + } + } } \ No newline at end of file diff --git a/api/Settings.php b/api/Settings.php index 06933fc..273446e 100644 --- a/api/Settings.php +++ b/api/Settings.php @@ -1,7 +1,9 @@ getConnection(); +$settings = new SSettings(); if (isset($_POST['action'])) { $action = $_POST['action']; @@ -15,11 +17,10 @@ if (isset($_POST['action'])) { } $r = mysqli_fetch_assoc($result); - if ($r['password'] != "-1") { - $r['passwordEnabled'] = true; - } else { - $r['passwordEnabled'] = false; - } + // booleans need to be set manually + $r['passwordEnabled'] = $r['password'] != "-1"; + $r['TMDB_grabbing'] = ($r['TMDB_grabbing'] != '0'); + echo json_encode($r); break; case "saveGeneralSettings": @@ -27,12 +28,14 @@ if (isset($_POST['action'])) { $password = $_POST['password']; $videopath = $_POST['videopath']; $tvshowpath = $_POST['tvshowpath']; + $tmdbsupport = $_POST['tmdbsupport']; $query = "UPDATE settings SET video_path='$videopath', episode_path='$tvshowpath', password='$password', - mediacenter_name='$mediacentername' + mediacenter_name='$mediacentername', + TMDB_grabbing=$tmdbsupport WHERE 1"; if ($conn->query($query) === true) { diff --git a/api/extractvideopreviews.php b/api/extractvideopreviews.php index db0cc92..eb47c2c 100755 --- a/api/extractvideopreviews.php +++ b/api/extractvideopreviews.php @@ -1,6 +1,7 @@ getAllGenres(); $conn = Database::getInstance()->getConnection(); +$settings = new SSettings(); -$scandir = "../videos/prn/"; +// load video path from settings +$scandir = "../" . $settings->getVideoPath(); $arr = scandir($scandir); +$TMDB_enabled = $settings->isTMDBGrabbingEnabled(); $all = 0; $added = 0; @@ -33,14 +37,21 @@ foreach ($arr as $elem) { $poster = -1; $genres = -1; if (!is_null($dta = $tmdb->searchMovie($moviename))) { - $pic = file_get_contents($tmdb->picturebase . $dta->poster_path); $poster = shell_exec("ffmpeg -hide_banner -loglevel panic -ss 00:04:00 -i \"../videos/prn/$elem\" -vframes 1 -q:v 2 -f singlejpeg pipe:1 2>/dev/null"); - // error handling for download error - if (!$pic) { + // check if tmdb support is enabled + if ($TMDB_enabled) { + $pic = file_get_contents($tmdb->picturebase . $dta->poster_path); + + // error handling for download error + if (!$pic) { + $pic = $poster; + $poster = -1; + echo "Failed to load Picture from TMDB! \n"; + } + } else { $pic = $poster; $poster = -1; - echo "Failed to load Picture from TMDB! \n"; } $genres = $dta->genre_ids; diff --git a/database.sql b/database.sql index 2005183..ba71abd 100644 --- a/database.sql +++ b/database.sql @@ -29,9 +29,22 @@ create table if not exists video_tags foreign key (video_id) references videos (movie_id) ); +create table settings +( + id enum(1) NOT NULL default 0, + video_path varchar(255) null, + episode_path varchar(255) null, + password varchar(32) default '-1' null, + mediacenter_name varchar(32) default 'OpenMediaCenter' null, + PRIMARY KEY (id) +); + INSERT INTO tags (tag_id, tag_name) VALUES (2, 'fullhd'); INSERT INTO tags (tag_id, tag_name) VALUES (3, 'lowquality'); INSERT INTO tags (tag_id, tag_name) VALUES (4, 'hd'); + +INSERT INTO settings (video_path, episode_path, password, mediacenter_name) +VALUES ('./videos/', './tvshows/', -1, 'OpenMediaCenter'); diff --git a/src/pages/CategoryPage/CategoryPage.test.js b/src/pages/CategoryPage/CategoryPage.test.js index a96cc9e..1f739fa 100644 --- a/src/pages/CategoryPage/CategoryPage.test.js +++ b/src/pages/CategoryPage/CategoryPage.test.js @@ -110,4 +110,21 @@ describe('', function () { expect(func).toBeCalledTimes(1); }); + + it('test sidebar tag clicks', function () { + const func = jest.fn(); + + const wrapper = mount(); + wrapper.instance().loadTag = func; + + console.log(wrapper.debug()); + + expect(func).toBeCalledTimes(0); + wrapper.find("SideBar").find("Tag").forEach(e => { + e.simulate("click"); + }) + + expect(func).toBeCalledTimes(4); + + }); }); diff --git a/src/pages/SettingsPage/GeneralSettings.js b/src/pages/SettingsPage/GeneralSettings.js index f1d020b..5eb211d 100644 --- a/src/pages/SettingsPage/GeneralSettings.js +++ b/src/pages/SettingsPage/GeneralSettings.js @@ -8,6 +8,7 @@ class GeneralSettings extends React.Component { this.state = { passwordsupport: false, + tmdbsupport: null, videopath: "", tvshowpath: "", @@ -23,12 +24,14 @@ class GeneralSettings extends React.Component { fetch('/api/Settings.php', {method: 'POST', body: updateRequest}) .then((response) => response.json() .then((result) => { + console.log(result); this.setState({ videopath: result.video_path, tvshowpath: result.episode_path, mediacentername: result.mediacenter_name, password: result.password, - passwordsupport: result.passwordEnabled + passwordsupport: result.passwordEnabled, + tmdbsupport: result.TMDB_grabbing }); })); } @@ -67,6 +70,17 @@ class GeneralSettings extends React.Component { }} /> + { + this.setState({tmdbsupport: !this.state.tmdbsupport}) + }} + /> + {this.state.passwordsupport ? Password @@ -98,6 +112,7 @@ class GeneralSettings extends React.Component { updateRequest.append('videopath', this.state.videopath); updateRequest.append('tvshowpath', this.state.tvshowpath); updateRequest.append('mediacentername', this.state.mediacentername); + updateRequest.append("tmdbsupport", this.state.tmdbsupport); fetch('/api/Settings.php', {method: 'POST', body: updateRequest}) .then((response) => response.json() diff --git a/src/pages/SettingsPage/GeneralSettings.test.js b/src/pages/SettingsPage/GeneralSettings.test.js index 00ec02b..89e63bb 100644 --- a/src/pages/SettingsPage/GeneralSettings.test.js +++ b/src/pages/SettingsPage/GeneralSettings.test.js @@ -98,4 +98,13 @@ describe('', function () { wrapper.find("[data-testid='passwordfield']").find("FormControl").simulate("change", event); expect(wrapper.state().password).toBe("test"); }); + + it('test tmdbsupport change event', function () { + const wrapper = shallow(); + wrapper.setState({tmdbsupport: true}); + + expect(wrapper.state().tmdbsupport).toBe(true); + wrapper.find("[data-testid='tmdb-switch']").simulate("change"); + expect(wrapper.state().tmdbsupport).toBe(false); + }); });