2015-11-02, 15:40
My head hurts after reading all that
(2015-01-15, 22:46)Blend Wrote: http://pastebin.com/WEU1y30x = SERVER SETUP batch 5 user kodi script
http://pastebin.com/guTkTsQt = CLIENT SETUP batch 5 user kodi script
http://pastebin.com/sqxr4QVz = User KODI - SQL Setup txt
Hello,
I uploaded three files. these are for kodi 14.0 with the database 90 for viedeos and 48 for music
I wish you much fun with it and hope that it runs without problems
in Deutsch:
Hallo,
habe die drei Dateien hochgeladen. diese sind für kodi 14.0 mit der Datenbank 90 für Videos und 48 für Musik
Ich wünsche euch viel Spaß damit und hoffe dass es ohne Probleme läuft
`path`.`idParentPath` AS `idParentPath`,
<videodatabase>
<type>mysql</type>
<host>192.168.0.110</host>
<port>3306</port>
<user>KODI</user>
<pass>****</pass>
<name>Kodi_Matt_Video_</name>
</videodatabase>
/*----------
--- PREP ---
----------*/
RENAME TABLE `Kodi_Matt_Video_93`.`files` to `Kodi_Matt_Video_93`.`globalfiles`;
ALTER TABLE `Kodi_Matt_Video_93`.`globalfiles` CHANGE playCount playCountMatt INT(11);
ALTER TABLE `Kodi_Matt_Video_93`.`globalfiles` CHANGE lastPlayed lastPlayedMatt TEXT;
ALTER TABLE `Kodi_Matt_Video_93`.`globalfiles` ADD playCountMace INT(11) AFTER lastPlayedMatt;
ALTER TABLE `Kodi_Matt_Video_93`.`globalfiles` ADD lastPlayedMace TEXT AFTER playCountMace;
ALTER TABLE `Kodi_Matt_Video_93`.`globalfiles` ADD playCountKiyana INT(11) AFTER lastPlayedMace;
ALTER TABLE `Kodi_Matt_Video_93`.`globalfiles` ADD lastPlayedKiyana TEXT AFTER playCountKiyana;
ALTER TABLE `Kodi_Matt_Video_93`.`globalfiles` ADD playCountJaide INT(11) AFTER lastPlayedKiyana;
ALTER TABLE `Kodi_Matt_Video_93`.`globalfiles` ADD lastPlayedJaide TEXT AFTER playCountJaide;
CREATE VIEW `Kodi_Matt_Video_93`.`files` AS SELECT
`Kodi_Matt_Video_93`.`globalfiles`.`idFile` AS `idFile`,
`Kodi_Matt_Video_93`.`globalfiles`.`idPath` AS `idPath`,
`Kodi_Matt_Video_93`.`globalfiles`.`strFilename` AS `strFilename`,
`Kodi_Matt_Video_93`.`globalfiles`.`playCountMatt` AS `playCount`,
`Kodi_Matt_Video_93`.`globalfiles`.`lastPlayedMatt` AS `lastPlayed`,
`Kodi_Matt_Video_93`.`globalfiles`.`dateAdded` AS `dateAdded`
FROM `Kodi_Matt_Video_93`.`globalfiles`;
/* TRIGGER FIX FOR MULT USERS */
DROP TRIGGER IF EXISTS `Kodi_Matt_Video_93`.`delete_file`;
DELIMITER $$
/* REPLACE ---> KODI <--- WITH YOUR MYSQL LOGIN UID FROM THE ADVANCEDSETTINGS.XML */
CREATE DEFINER=`KODI`@`%` TRIGGER `Kodi_Matt_Video_93`.`delete_file` AFTER DELETE
ON `Kodi_Matt_Video_93`.`globalfiles`
FOR EACH ROW
BEGIN
DELETE FROM `Kodi_Matt_Video_93`.bookmark WHERE idfile = old.idfile;
DELETE FROM `Kodi_Mace_Video_93`.bookmark WHERE idfile = old.idfile;
DELETE FROM `Kodi_Kiyana_Video_93`.bookmark WHERE idfile = old.idfile;
DELETE FROM `Kodi_Jaide_Video_93`.bookmark WHERE idfile = old.idfile;
DELETE FROM settings WHERE idfile = old.idfile;
DELETE FROM stacktimes WHERE idfile = old.idfile;
DELETE FROM streamdetails WHERE idfile = old.idfile;
END$$
DELIMITER ;
/*-------------
--- USER 02 ---
-------------*/
CREATE DATABASE Kodi_Mace_Video_93 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE VIEW `Kodi_Mace_Video_93`.`files` AS SELECT
`Kodi_Matt_Video_93`.`globalfiles`.`idFile` AS `idFile`,
`Kodi_Matt_Video_93`.`globalfiles`.`idPath` AS `idPath`,
`Kodi_Matt_Video_93`.`globalfiles`.`strFilename` AS `strFilename`,
`Kodi_Matt_Video_93`.`globalfiles`.`playCountMace` AS `playCount`,
`Kodi_Matt_Video_93`.`globalfiles`.`lastPlayedMace` AS `lastPlayed`,
`Kodi_Matt_Video_93`.`globalfiles`.`dateAdded` AS `dateAdded`
FROM `Kodi_Matt_Video_93`.`globalfiles`;
CREATE TABLE `Kodi_Mace_Video_93`.`bookmark` (
`idBookmark` int(11) NOT NULL,
`idFile` int(11) DEFAULT NULL,
`timeInSeconds` double DEFAULT NULL,
`totalTimeInSeconds` double DEFAULT NULL,
`thumbNailImage` text,
`player` text,
`playerState` text,
`type` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
ALTER TABLE `Kodi_Mace_Video_93`.`bookmark` ADD PRIMARY KEY (`idBookmark`), ADD KEY `ix_bookmark` (`idFile`,`type`);
ALTER TABLE `Kodi_Mace_Video_93`.`bookmark` MODIFY `idBookmark` int(11) NOT NULL AUTO_INCREMENT;
CREATE VIEW `Kodi_Mace_Video_93`.`actor` AS SELECT * FROM `Kodi_Matt_Video_93`.`actor`;
CREATE VIEW `Kodi_Mace_Video_93`.`actor_link` AS SELECT * FROM `Kodi_Matt_Video_93`.`actor_link`;
CREATE VIEW `Kodi_Mace_Video_93`.`art` AS SELECT * FROM `Kodi_Matt_Video_93`.`art`;
CREATE VIEW `Kodi_Mace_Video_93`.`country` AS SELECT * FROM `Kodi_Matt_Video_93`.`country`;
CREATE VIEW `Kodi_Mace_Video_93`.`country_link` AS SELECT * FROM `Kodi_Matt_Video_93`.`country_link`;
CREATE VIEW `Kodi_Mace_Video_93`.`director_link` AS SELECT * FROM `Kodi_Matt_Video_93`.`director_link`;
CREATE VIEW `Kodi_Mace_Video_93`.`episode` AS SELECT * FROM `Kodi_Matt_Video_93`.`episode`;
CREATE VIEW `Kodi_Mace_Video_93`.`genre` AS SELECT * FROM `Kodi_Matt_Video_93`.`genre`;
CREATE VIEW `Kodi_Mace_Video_93`.`genre_link` AS SELECT * FROM `Kodi_Matt_Video_93`.`genre_link`;
CREATE VIEW `Kodi_Mace_Video_93`.`movie` AS SELECT * FROM `Kodi_Matt_Video_93`.`movie`;
CREATE VIEW `Kodi_Mace_Video_93`.`movielinktvshow` AS SELECT * FROM `Kodi_Matt_Video_93`.`movielinktvshow`;
CREATE VIEW `Kodi_Mace_Video_93`.`musicvideo` AS SELECT * FROM `Kodi_Matt_Video_93`.`musicvideo`;
CREATE VIEW `Kodi_Mace_Video_93`.`path` AS SELECT * FROM `Kodi_Matt_Video_93`.`path`;
CREATE VIEW `Kodi_Mace_Video_93`.`seasons` AS SELECT * FROM `Kodi_Matt_Video_93`.`seasons`;
CREATE VIEW `Kodi_Mace_Video_93`.`sets` AS SELECT * FROM `Kodi_Matt_Video_93`.`sets`;
CREATE VIEW `Kodi_Mace_Video_93`.`settings` AS SELECT * FROM `Kodi_Matt_Video_93`.`settings`;
CREATE VIEW `Kodi_Mace_Video_93`.`stacktimes` AS SELECT * FROM `Kodi_Matt_Video_93`.`stacktimes`;
CREATE VIEW `Kodi_Mace_Video_93`.`streamdetails` AS SELECT * FROM `Kodi_Matt_Video_93`.`streamdetails`;
CREATE VIEW `Kodi_Mace_Video_93`.`studio` AS SELECT * FROM `Kodi_Matt_Video_93`.`studio`;
CREATE VIEW `Kodi_Mace_Video_93`.`studio_link` AS SELECT * FROM `Kodi_Matt_Video_93`.`studio_link`;
CREATE VIEW `Kodi_Mace_Video_93`.`tag` AS SELECT * FROM `Kodi_Matt_Video_93`.`tag`;
CREATE VIEW `Kodi_Mace_Video_93`.`tag_link` AS SELECT * FROM `Kodi_Matt_Video_93`.`tag_link`;
CREATE VIEW `Kodi_Mace_Video_93`.`tvshow` AS SELECT * FROM `Kodi_Matt_Video_93`.`tvshow`;
CREATE VIEW `Kodi_Mace_Video_93`.`tvshowlinkpath` AS SELECT * FROM `Kodi_Matt_Video_93`.`tvshowlinkpath`;
CREATE VIEW `Kodi_Mace_Video_93`.`version` AS SELECT * FROM `Kodi_Matt_Video_93`.`version`;
CREATE VIEW `Kodi_Mace_Video_93`.`writer_link` AS SELECT * FROM `Kodi_Matt_Video_93`.`writer_link`;
CREATE VIEW `Kodi_Mace_Video_93`.`episode_view` AS SELECT
`episode`.`idEpisode` AS `idEpisode`,
`episode`.`idFile` AS `idFile`,
`episode`.`c00` AS `c00`,
`episode`.`c01` AS `c01`,
`episode`.`c02` AS `c02`,
`episode`.`c03` AS `c03`,
`episode`.`c04` AS `c04`,
`episode`.`c05` AS `c05`,
`episode`.`c06` AS `c06`,
`episode`.`c07` AS `c07`,
`episode`.`c08` AS `c08`,
`episode`.`c09` AS `c09`,
`episode`.`c10` AS `c10`,
`episode`.`c11` AS `c11`,
`episode`.`c12` AS `c12`,
`episode`.`c13` AS `c13`,
`episode`.`c14` AS `c14`,
`episode`.`c15` AS `c15`,
`episode`.`c16` AS `c16`,
`episode`.`c17` AS `c17`,
`episode`.`c18` AS `c18`,
`episode`.`c19` AS `c19`,
`episode`.`c20` AS `c20`,
`episode`.`c21` AS `c21`,
`episode`.`c22` AS `c22`,
`episode`.`c23` AS `c23`,
`episode`.`idShow` AS `idShow`,
`files`.`strFilename` AS `strFileName`,
`path`.`strPath` AS `strPath`,
`files`.`playCount` AS `playCount`,
`files`.`lastPlayed` AS `lastPlayed`,
`files`.`dateAdded` AS `dateAdded`,
`tvshow`.`c00` AS `strTitle`,
`tvshow`.`c14` AS `studio`,
`tvshow`.`c05` AS `premiered`,
`tvshow`.`c13` AS `mpaa`,
`bookmark`.`timeInSeconds` AS `resumeTimeInSeconds`,
`bookmark`.`totalTimeInSeconds` AS `totalTimeInSeconds`,
`seasons`.`idSeason` AS `idSeason`
FROM (((((`Kodi_Mace_Video_93`.`episode` JOIN `Kodi_Mace_Video_93`.`files` ON(( `files`.`idfile` = `episode`.`idfile` )))
JOIN `Kodi_Mace_Video_93`.`tvshow` ON(( `tvshow`.`idshow` = `episode`.`idshow` )))
LEFT JOIN `Kodi_Mace_Video_93`.`seasons` ON(( ( `seasons`.`idshow` = `episode`.`idshow` ) AND ( `seasons`.`season` = `episode`.`c12` ) )))
JOIN `Kodi_Mace_Video_93`.`path` ON(( `files`.`idpath` = `path`.`idpath` )))
LEFT JOIN `Kodi_Mace_Video_93`.`bookmark` ON(( ( `bookmark`.`idfile` = `episode`.`idfile` ) AND ( `bookmark`.`type` = 1 ) ))
);
CREATE VIEW `Kodi_Mace_Video_93`.`movie_view` AS SELECT
`movie`.`idMovie` AS `idMovie`,
`movie`.`idFile` AS `idFile`,
`movie`.`c00` AS `c00`,
`movie`.`c01` AS `c01`,
`movie`.`c02` AS `c02`,
`movie`.`c03` AS `c03`,
`movie`.`c04` AS `c04`,
`movie`.`c05` AS `c05`,
`movie`.`c06` AS `c06`,
`movie`.`c07` AS `c07`,
`movie`.`c08` AS `c08`,
`movie`.`c09` AS `c09`,
`movie`.`c10` AS `c10`,
`movie`.`c11` AS `c11`,
`movie`.`c12` AS `c12`,
`movie`.`c13` AS `c13`,
`movie`.`c14` AS `c14`,
`movie`.`c15` AS `c15`,
`movie`.`c16` AS `c16`,
`movie`.`c17` AS `c17`,
`movie`.`c18` AS `c18`,
`movie`.`c19` AS `c19`,
`movie`.`c20` AS `c20`,
`movie`.`c21` AS `c21`,
`movie`.`c22` AS `c22`,
`movie`.`c23` AS `c23`,
`movie`.`idSet` AS `idSet`,
`sets`.`strSet` AS `strSet`,
`files`.`strFilename` AS `strFileName`,
`path`.`strPath` AS `strPath`,
`files`.`playCount` AS `playCount`,
`files`.`lastPlayed` AS `lastPlayed`,
`files`.`dateAdded` AS `dateAdded`,
`bookmark`.`timeInSeconds` AS `resumeTimeInSeconds`,
`bookmark`.`totalTimeInSeconds` AS `totalTimeInSeconds`
FROM ((((`Kodi_Mace_Video_93`.`movie` LEFT JOIN `Kodi_Mace_Video_93`.`sets` ON((`sets`.`idSet` = `movie`.`idSet`)))
JOIN `Kodi_Mace_Video_93`.`files` ON((`files`.`idFile` = `movie`.`idFile`)))
JOIN `Kodi_Mace_Video_93`.`path` ON((`path`.`idPath` = `files`.`idPath`)))
LEFT JOIN `Kodi_Mace_Video_93`.`bookmark` ON(((`bookmark`.`idFile` = `movie`.`idFile`) AND (`bookmark`.`type` = 1)))
);
CREATE VIEW `Kodi_Mace_Video_93`.`musicvideo_view` AS SELECT
`musicvideo`.`idMVideo` AS `idMVideo`,
`musicvideo`.`idFile` AS `idFile`,
`musicvideo`.`c00` AS `c00`,
`musicvideo`.`c01` AS `c01`,
`musicvideo`.`c02` AS `c02`,
`musicvideo`.`c03` AS `c03`,
`musicvideo`.`c04` AS `c04`,
`musicvideo`.`c05` AS `c05`,
`musicvideo`.`c06` AS `c06`,
`musicvideo`.`c07` AS `c07`,
`musicvideo`.`c08` AS `c08`,
`musicvideo`.`c09` AS `c09`,
`musicvideo`.`c10` AS `c10`,
`musicvideo`.`c11` AS `c11`,
`musicvideo`.`c12` AS `c12`,
`musicvideo`.`c13` AS `c13`,
`musicvideo`.`c14` AS `c14`,
`musicvideo`.`c15` AS `c15`,
`musicvideo`.`c16` AS `c16`,
`musicvideo`.`c17` AS `c17`,
`musicvideo`.`c18` AS `c18`,
`musicvideo`.`c19` AS `c19`,
`musicvideo`.`c20` AS `c20`,
`musicvideo`.`c21` AS `c21`,
`musicvideo`.`c22` AS `c22`,
`musicvideo`.`c23` AS `c23`,
`files`.`strFilename` AS `strFileName`,
`path`.`strPath` AS `strPath`,
`files`.`playCount` AS `playCount`,
`files`.`lastPlayed` AS `lastPlayed`,
`files`.`dateAdded` AS `dateAdded`,
`bookmark`.`timeInSeconds` AS `resumeTimeInSeconds`,
`bookmark`.`totalTimeInSeconds` AS `totalTimeInSeconds`
FROM (((`Kodi_Mace_Video_93`.`musicvideo` JOIN `Kodi_Mace_Video_93`.`files` ON((`files`.`idFile` = `musicvideo`.`idFile`)))
JOIN `Kodi_Mace_Video_93`.`path` ON((`path`.`idPath` = `files`.`idPath`)))
LEFT JOIN `Kodi_Mace_Video_93`.`bookmark` ON(((`bookmark`.`idFile` = `musicvideo`.`idFile`) AND (`bookmark`.`type` = 1)))
);
CREATE VIEW `Kodi_Mace_Video_93`.`tvshowcounts` AS SELECT
`tvshow`.`idshow` AS `idShow`,
Max(`files`.`lastplayed`) AS `lastPlayed`,
Nullif(Count(`episode`.`c12`), 0) AS `totalCount`,
Count(`files`.`playcount`) AS `watchedcount`,
Nullif(Count(DISTINCT `episode`.`c12`), 0) AS `totalSeasons`,
Max(`files`.`dateadded`) AS `dateAdded`
FROM ((`Kodi_Mace_Video_93`.`tvshow` LEFT JOIN `Kodi_Mace_Video_93`.`episode` ON(( `episode`.`idshow` = `tvshow`.`idshow` )))
LEFT JOIN `Kodi_Mace_Video_93`.`files` ON(( `files`.`idfile` = `episode`.`idfile` ))
)
GROUP BY `Kodi_Mace_Video_93`.`tvshow`.`idshow`;
CREATE VIEW `Kodi_Mace_Video_93`.`tvshow_view` AS SELECT
`tvshow`.`idShow` AS `idShow`,
`tvshow`.`c00` AS `c00`,
`tvshow`.`c01` AS `c01`,
`tvshow`.`c02` AS `c02`,
`tvshow`.`c03` AS `c03`,
`tvshow`.`c04` AS `c04`,
`tvshow`.`c05` AS `c05`,
`tvshow`.`c06` AS `c06`,
`tvshow`.`c07` AS `c07`,
`tvshow`.`c08` AS `c08`,
`tvshow`.`c09` AS `c09`,
`tvshow`.`c10` AS `c10`,
`tvshow`.`c11` AS `c11`,
`tvshow`.`c12` AS `c12`,
`tvshow`.`c13` AS `c13`,
`tvshow`.`c14` AS `c14`,
`tvshow`.`c15` AS `c15`,
`tvshow`.`c16` AS `c16`,
`tvshow`.`c17` AS `c17`,
`tvshow`.`c18` AS `c18`,
`tvshow`.`c19` AS `c19`,
`tvshow`.`c20` AS `c20`,
`tvshow`.`c21` AS `c21`,
`tvshow`.`c22` AS `c22`,
`tvshow`.`c23` AS `c23`,
`path`.`idParentPath` AS `idParentPath`,
`path`.`strPath` AS `strPath`,
`tvshowcounts`.`dateAdded` AS `dateAdded`,
`tvshowcounts`.`lastPlayed` AS `lastPlayed`,
`tvshowcounts`.`totalCount` AS `totalCount`,
`tvshowcounts`.`watchedcount` AS `watchedcount`,
`tvshowcounts`.`totalSeasons` AS `totalSeasons`
FROM (((`Kodi_Mace_Video_93`.`tvshow` LEFT JOIN `Kodi_Mace_Video_93`.`tvshowlinkpath` ON(( `tvshowlinkpath`.`idshow` = `tvshow`.`idshow` )))
LEFT JOIN `Kodi_Mace_Video_93`.`path` ON(( `path`.`idpath` = `tvshowlinkpath`.`idpath` )))
JOIN `Kodi_Mace_Video_93`.`tvshowcounts` ON(( `tvshow`.`idshow` = `tvshowcounts`.`idshow` ))
)
GROUP BY `Kodi_Mace_Video_93`.`tvshow`.`idshow`;
CREATE VIEW `Kodi_Mace_Video_93`.`season_view` AS SELECT
`seasons`.`idSeason` AS `idSeason`,
`seasons`.`idShow` AS `idShow`,
`seasons`.`season` AS `season`,
`tvshow_view`.`strPath` AS `strPath`,
`tvshow_view`.`c00` AS `showTitle`,
`tvshow_view`.`c01` AS `plot`,
`tvshow_view`.`c05` AS `premiered`,
`tvshow_view`.`c08` AS `genre`,
`tvshow_view`.`c14` AS `studio`,
`tvshow_view`.`c13` AS `mpaa`,
Count(DISTINCT `episode_view`.`idEpisode`) AS `episodes`,
Count(`files`.`playCount`) AS `playCount`
FROM (((`Kodi_Mace_Video_93`.`seasons` JOIN `Kodi_Mace_Video_93`.`tvshow_view` ON((`tvshow_view`.`idShow` = `seasons`.`idShow`)))
JOIN `Kodi_Mace_Video_93`.`episode_view` ON(((`episode_view`.`idShow` = `seasons`.`idShow`) AND (`episode_view`.`c12` = `seasons`.`season`))))
JOIN `Kodi_Mace_Video_93`.`files` ON((`files`.`idFile` = `episode_view`.`idFile`))
)
GROUP BY `Kodi_Mace_Video_93`.`seasons`.`idSeason`;
(2016-01-24, 16:39)horstepipe Wrote: hey
will the instructions from the first post work with Jarvis?
(2016-01-20, 20:43)wickedsun Wrote: For all those interested, I've made this into a fully (almost) dynamic script which will (most likely) work on schema changes. Right now it is very much beta, but I'd love to get feedback on it!
http://pastebin.com/wZ7xLe9G
(2016-01-23, 05:37)BigMong Wrote: Cool I had a little look at your script, seems nice and easy
a little tip with watch status is I like to use https://trakt.tv/ to keep a record of this data then if you need to rebuild/update the db you can just import it all again, nice and easy
I see your script is missing the Trigger "delete_file" on the main file table, it only keeps the db clean if you remove files and cleans up the slave tables
Very nice work tho
(2016-01-25, 20:14)apeg Wrote:(2016-01-20, 20:43)wickedsun Wrote: For all those interested, I've made this into a fully (almost) dynamic script which will (most likely) work on schema changes. Right now it is very much beta, but I'd love to get feedback on it!
http://pastebin.com/wZ7xLe9G
Interesting script, i wish it wasn't in Perl but beggars can't be choosers.
I'm guessing your claim of persistence regardless of schema updates is based on how you copy the existing table to then edit? So as long as the specific changes we're making here for multi user are not effected greatly this should work with yet unreleased DB versions? am i close on that?
I have db_99 up and running now, ill test it first chance i get and let you know.
Thanks,