SQLMovie Gebruikershandleiding
www.gerritmantel.nl
Behorend bij SQLMovie versie 2.2 Datum laatste wijziging is 07-01-2016
Inhoud 1
Inleiding ....................................................................................................................... 3
2
Installatie ..................................................................................................................... 4
3
4
5
6
2.1
Uitgangspunten en voorwaarden ..................................................................... 4
2.2
De installatie van Microsoft SQL Server ............................................................ 4
2.3
De installatie van SQLMovie ............................................................................. 5
2.4
De configuratie van SQLMovie .......................................................................... 5
2.5
Een upgrade van SQLMovie v1 naar v2............................................................. 6
Opslagstructuur ........................................................................................................... 7 3.1
Filmmappen ...................................................................................................... 7
3.2
Naamsaanwijzingen in de paden ...................................................................... 7
3.3
Het cover bestand (folder.jpg) .......................................................................... 8
Het laden van de filmgegevens ................................................................................. 10 4.1
Filmtitels .......................................................................................................... 10
4.2
IMDb informatie .............................................................................................. 11
De filmlijst in HTML formaat ..................................................................................... 13 5.1
Aanmaak filmlijsten......................................................................................... 13
5.2
Bekijken filmlijsten .......................................................................................... 13
Het handmatig invoeren van offline filmtitels .......................................................... 16 6.1
7
DVD en BluRay discs ........................................................................................ 16
Extra’s ........................................................................................................................ 17 7.1
Views ............................................................................................................... 17
7.2
Debugging ....................................................................................................... 17
SQLMovie - Gebruikershandleiding
2 van 18
1 Inleiding SQLMovie is een verzameling T-SQL procedures voor een Microsoft SQL Server database, en is speciaal bedoeld voor het beheren van uw films. De SQL Server database software wordt niet meegeleverd, doch een gratis versie hiervan is bij Microsoft te downloaden. SQLMovie is freeware, mag vrij worden gebruikt en in ongewijzigde vorm worden verspreid, maar mag niet tegen betaling worden verhandeld. De software is gemaakt door en in eigendom van Gerrit Mantel te Lisse. De ontwikkelaar kan niet verantwoordelijk worden gehouden voor het niet functioneren - of het verlies van data door het gebruik - van SQLMovie. De laatste versie van SQLMovie wordt aangeboden op Gerrit Mantel’s Personal Homepage, http://www.gerritmantel.nl/
SQLMovie - Gebruikershandleiding
3 van 18
2 Installatie 2.1 Uitgangspunten en voorwaarden Uw heeft filmbestanden online staan op uw Windows pc, server of netwerk locatie. U heeft al een SQL Server database draaien, of u bent bereid SQL Server database te installeren op uw PC of server. Met de SQL scripts van SQLMovie is de SQLMOVIE2 database eenvoudig te installeren en te configureren. De mappen waar uw filmbestanden staan, moeten bereikbaar zijn voor SQL Server. Binnen SQLMovie kunt u meerdere lokaties (shares) definiëren waar uw filmbestanden zich bevinden. SQLMovie gaat er van uit dat elke film in een individuele map is opgeslagen. De mapnaam draagt de titel van de film. Om SQLMovie de IMDb gegevens op te kunnen laten halen, moet u van elke film de IMDb id opzoeken, en vastleggen in de naam van een leeg zogenaamd “tt” bestand, bijvoorbeeld “tt1049413.txt”, en plaatsen in de filmmap. Deze actie kan ook semi-automatisch worden uitgevoerd.
2.2 De installatie van Microsoft SQL Server Voor SQLMovie is Microsoft SQL Server nodig. SQLMovie draait op minimaal SQL Server versie 2008R2 SP3. Indien u geen SQL Server database engine heeft draaien, kunt u de gratis Microsoft® SQL Server® 2014 SP1 - Express Edition bij Microsoft downloaden: http://www.microsoft.com/en-us/download/details.aspx?id=46697 Kies om te downloaden de WT (“With Tools”) versie (SQLEXPRWT_x64_ENU.exe of SQLEXPRWT_x86_ENU.exe), hierin zit tevens de SQL Server Management Studio (Basic). De SQL Server database engine en de SQL Server Management Studio kunnen samen op één machine draaien, of gesplitst over 2 machines (server en client). SQL Server 2014 SP1 Express database engine draait op Windows 7, Windows 7 Service Pack 1, Windows 8, Windows 8.1, Windows 10, Windows Server 2008 R2, Windows Server 2008 R2 SP1, Windows Server 2012, Windows Server 2012 R2. SQL Server 2014 SP1 Express Edition is beperkt tot het gebruik van 1 CPU, 1 GB RAM en 10 GB database, hetgeen voldoende snel en groot is voor een SQLMovie database. De installatie van SQL Server valt buiten het kader van deze handleiding. Er is wel één bijzondere SQL Server installatie voorwaarde voor het goed functioneren van SQLMovie. Als SQL Server op een andere machine in het netwerk gaat draaien als waar de films staan, maak dan een speciale Windows gebruikersnaam aan, geef deze Local Administrator rechten, en specificeer deze tijdens de installatie van SQL Server als “Service account” van SQL Server. Alleen op die manier is SQL Server in staat om gedeelde mappen met films in het netwerk te benaderen. Dit is noodzakelijk voor SQLMovie.
SQLMovie - Gebruikershandleiding
4 van 18
2.3 De installatie van SQLMovie Het pakket SQLMovie bestaat uit één zip bestand, waarin een map “SQLMovie” (met inhoud) is verpakt. Pak het zip bestand uit op de machine waarop SQL Server draait. Doe dit niet in C:\Program Files maar bijvoorbeeld in D:\MSSQL. Aldus ontstaat de map D:\MSSQL\SQLMovie met inhoud. Start de SQL Server Management Studio, connect naar uw server en selecteer in de Object Explorer de master database, en open en run achtereenvolgens de volgende scripts, te vinden in de Scripts map: SQLMOVIE2_database.sql Dit script maakt de database SQLMOVIE2 aan. SQLMOVIE2_functions_and_procedures.sql Dit script maakt alle functions en procedures (opnieuw) aan. De meldingen “The module '{procedure}' depends on the missing object '{procedure}'. The module will still be created; however, it cannot run successfully until the object exists.” kunnen worden genegeerd.
SQLMOVIE2_tables_and_views.sql Dit script maakt alle tables, indexes en views aan. SQLMOVIE2_setup.sql Dit script creëert enkele noodzakelijke records in de SQLMOVIE2 database en activeert xp_cmdshell en OLE Automation procedures binnen SQL Server.
2.4 De configuratie van SQLMovie Start de SQL Server Management Studio, connect naar uw server. Navigeer in de Object Explorer naar de SQLMOVIE2 database en Tables. Setup Kies in het context menu op de Setup tabel voor “Edit … rows”. U ziet de twee regels in de grid staan:
Parameter Value install_path D:\MSSQL\SQLMovie use_kodi 0 Dit configuratie parameters van SQLMovie: install_path : Wijzig de Value “D:\MSSQL\SQLMovie” in het path waar u de SQLMovie zip-bestand heeft uitgepakt (Zie Paragraaf 2.3). use_kodi : is ‘0’ of ‘1’. Hiermee wordt ingesteld of SQLMovie info bestanden (movie.nfo) aanmaakt voor de Kodi mediaplayer. LET OP! Om SQLMovie de info bestanden te kunnen laten aanmaken, moet de SQL Server service owner behalve leesrechten ook schrijfrechten krijgen op de filmmappen. Shares Kies in het context menu op de tabel “Shares” voor “Edit … rows”. U ziet de volgende regel in de grid staan:
SQLMovie - Gebruikershandleiding
5 van 18
Share \\DISKSTATION\Movies Wijzig de Share “\\DISKSTATION\Movies” in het path waar zich uw films bevinden. U mag in deze Shares tabel meerdere locaties invoeren. De locaties moeten bereikbaar zijn voor de SQL Server service owner.
2.5 Een upgrade van SQLMovie v1 naar v2 In SQLMovie v2 is de tabellayout essentieel gewijzigd ten opzichte van SQLMovie v1. Als u SQLMovie v1 heeft, kunt u upgraden. Om te upgraden van database SQLMOVIE naar SQLMOVIE2 moet u de volgende stappen (éénmalig) uitvoeren: Start de SQL Server Management Studio, connect naar uw database server. Open een Query Window op de SQLMOVIE2 database en run de procedure prc_upgrade_offline. Deze procedure zal de offline movies kopiëren van database SQLMOVIE naar SQLMOVIE2. Open een Query Window op de SQLMOVIE2 database en run de procedure prc_upgrade_imdb. Deze procedure zal “tt” bestanden aanmaken in de filmmappen. Deze bestanden zijn nieuw in SQLMOVIE2. LET OP! De SQL Server service owner heeft hiervoor lees- en schrijfrechten nodig op de filmmappen. U kunt de database SQLMOVIE verwijderen, als u succesvol een poosje werkt met de SQLMOVIE2 database.
SQLMovie - Gebruikershandleiding
6 van 18
3 Opslagstructuur 3.1 Filmmappen U moet elke film hebben opgeslagen in een individuele map. Daarnaast moet minimaal aan één van de volgende voorwaarden worden voldaan, om SQLMovie de film te kunnen laten vinden: De film heeft een DVD structuur in de vorm van een VIDEO_TS map. De film heeft een BluRay structuur in de vorm van een BDMV map. De film is een enkelvoudig bestand van het bestandstype “mkv” of “mp4”. Er bevindt zich een “tt” bestand in de filmmap. De verschillende bestandstypes waaraan SQLMovie films automatisch herkent, kan eventueel worden uitgebreid. Nieuwe bestandstypes kunnen handmatig worden aangemaakt in de tabel Filetypes.
3.2 Naamsaanwijzingen in de paden De titel van de film wordt ontleend aan de naam van de map waarin de film is opgeslagen. Drie voorbeelden: Een geripte DVD met een VIDEO_TS structuur: ...\{Title}\VIDEO_TS\...
Een geripte BluRay met een BDMV structuur: ...\{Title}\BDMV\...
Een film in de vorm van een enkel video bestand: ...\{Title}\film.mkv
Behalve de Titel van de film, kunnen aanwijzingen voor de Category, Set_name en Set_order in de mapnamen van het path worden verstopt. De Category is een door u zelf gekozen indeling van uw films (niet verplicht). Dit kan bijvoorbeeld een indeling zijn op taal, genre of periode. De Set_name en bijbehorende Set_order kunt u gebruiken bij filmreeksen, bijvoorbeeld “Die Hard”, “James Bond” of “Indiana Jones” etc. (niet verplicht). De Set_order is een sorteergetal binnen de reeks (niet verplicht). ...\Cat - {Category}\Set - {Set_name}\{Set_order} - {Title}\...
De regels: Een mapnaam begint met “Cat{spatie}–{spatie} “ gevolgd door de Category. Een mapnaam begint met “Set{spatie}–{spatie} “ gevolgd door de Set_name. De filmmapnaam begint met “nnn{spatie}–{spatie} “ gevolgd door de Title. De nnn wordt de Set_order, deze mag uit 1, 2 of 3 cijfers bestaan. De filmmapnaam bevat een “;”, deze wordt in de Title omgezet naar “:”. De filmmapnaam bevat een “¿”, deze wordt in de Title omgezet naar “?”.
SQLMovie - Gebruikershandleiding
7 van 18
De filmmapnaam bevat een “[“, vanaf dit teken wordt de tekst voor de Title weggelaten.
Voorbeelden: \\DISKSTATION\Movies\Cat - English\Set - Alien\1 - Alien (1979)\Alien.mkv
Category = English Set_name = Alien Set_order = 1 Title = Alien (1979)
\\DISKSTATION\Movies\Cat - English\Set - Dirty Harry\The Enforcer (1976)\BDMV
Category = English Set_name = Dirty Harry Set_order = leeg Title = The Enforcerer (1976)
\\DISKSTATION\Movies\Cat - English\2015\San Andreas (2015)\VIDEO_TS
Category = English Set_name = leeg Set_order = leeg Title = San Andreas (2015)
\\DISKSTATION\Movies\Cat - English\Set - The Lord Of The Rings\2 - The Lord Of The Rings; The Two Towers (2002) [Extended]
Category = English Set_name = The Lord Of The Rings Set_order = 2 Title = The Lord Of The Rings: The Two Towers (2002)
3.3 Het cover bestand (folder.jpg) U kunt zelf een cover (filmhoesje) bestand “folder.jpg” in de filmmap plaatsen. Indien deze aanwezig is, zal SQLMovie deze bij de film laden in de Movies tabel. Het is daardoor aan te raden om voor een niet te groot bestand te kiezen. De ideale grootte is 500 pixels hoog. Hoesjes bestanden zijn eenvoudig te vinden met Google Afbeeldingen, zoek naar filmtitel DVD, of filmtitel BluRay.
SQLMovie - Gebruikershandleiding
8 van 18
DVD hoesje – Red Heat DVD
BluRay hoesje – Red Heat BluRay
De folder.jpg bestanden worden ook door de “Kodi” mediaplayer ingelezen.
SQLMovie - Gebruikershandleiding
9 van 18
4 Het laden van de filmgegevens 4.1 Filmtitels Het laden van filmtitels gaat met behulp van de procedure prc_load_movies. Deze procedure zal alle shares scannen op zoek naar filmmappen. Nieuwe filmtitels worden aangemaakt, bestaande worden bijgewerkt en niet meer bestaande filmtitels worden verwijderd uit de Movies tabel. De volgende velden worden bijgewerkt: Online (is altijd 1 bij geladen filmtitels) Structure (“DVD”, “BluRay” of “File”) Category (categorie) (*) Set_name (naam van de set) (*) Set_order (volgnr van de set) (*) Title (filmtitel) (*) Imdb_url (***) Create_date (datum nieuwe film) Update_date (datum bijgewerkt) Cover (geladen folder.jpg bestand) (**) Van nieuwe filmtitels wordt Media Info opgehaald en vastgelegd in de Media tabel. De volgende gegevens worden vastgelegd: Folderdate (Creatie datum van de movie folder) Filename (Naam van het video bestand) Filetype (Extensie naam van het video bestand) Filesize (Grootte in MB van het video bestand) Video_format Duration (Speelduur van de film in uren minuten en seconden) Audio_format (type van de geluidssporen) Audio_language (spreektaal van de geluidssporen) Text_language (ondertitel talen) Resolution (“1080”, “720”of “SD”) Aspectratio (hoogte/breedte verhouding) Framerate (aantal beeldjes per seconde) (*) zie Paragraaf 3.2 Naamsaanwijzingen (**) Het coverbestand en de Media info wordt standaard bij nieuwe filmtitels geladen. Optioneel kan de procedure prc_load_movies worden aangeroepen met de parameter @refresh=1. In dat geval wordt van alle films het cover bestand opnieuw geladen en de media informatie opnieuw bijgewerkt en. Normaal wordt dit overgeslagen om tijdswinst te behalen. (***) De Imdb_url kan alleen worden geladen als het zogenaamde “tt” bestand aanwezig is. Zie voor de werking hier van Paragraaf 4.2 “IMDb informatie”.
SQLMovie - Gebruikershandleiding
10 van 18
4.2 IMDb informatie Het laden van IMDb informatie over de films gaat met behulp van de procedure prc_load_imdb. Deze procedure zal van alle films waarvan de imdb_url bekend is de film informatie van de IMDb website ophalen en verwerken in de Imdb tabel. Nieuwe records worden aangemaakt, niet meer bestaande urls worden verwijderd. De volgende velden worden opgeslagen: Info_date (datum waarop de IMDb informatie is opgehaald) Name (Imdb filmtitel) Year (jaar) Country (land van herkomst) Language (taal) Ratingvalue (beoordeling) Description (plot) Director (regisseur(s)) Actors (acteurs) Genre Contentrating (MPAA) Duration (speelduur) Optioneel kan de procedure prc_load_imdb worden aangeroepen met de parameter @refresh=1. In dat geval wordt de IMDb film informatie van alle films opnieuw opgehaald en bijgewerkt. De procedure kan zijn werk echter pas wat doen, als de Imdb_url van de film in de tabel Movies bekend is. Bij offline films kunt u de Imdb_url direct in de tabel invoeren. Voor online films wordt dit aangestuurd door middel van een zogenaamd “tt” bestand, welke moet zijn geplaatst in de filmmap. Handmatige methode Ga als volgt te werkt voor offline films Zoek de film aan de hand van de titel op in de IMDb website: http://www.imdb.com/ Copy de gehele url, bijvoorbeeld “http://www.imdb.com/tt1049413/”, en plak deze url in de editwindow op de Movies tabel, in het veld Imdb_url, bij de juiste film. Run de procedure prc_load_imdb om de Imdb tabel bij te werken. Ga als volgt te werkt voor online films Zoek de film aan de hand van de titel op in de IMDb website: http://www.imdb.com/ Copy het tt nummer uit de url, bijvoorbeeld “tt1049413” en maak in de filmmap een nieuw txt bestand aan, plak het tt nummer in de naam, bijvoorbeeld “tt1049413.txt”. Run de procedure prc_load_movies om de Movies tabel bij te werken. Run de procedure prc_load_imdb om de Imdb tabel bij te werken.
SQLMovie - Gebruikershandleiding
11 van 18
Semi-automatische methode. Het opzoeken van de filmtitel op de IMDB website, en invoeren van de Imdb_url in de Movies tabel, alsook het aanmaken van een “tt” bestand in de filmmap kan (semi-) automatisch gebeuren. De semi-automatische methode voor het bekendmaken van de Imdb_url is meer geschikt als u voor veel (of alle) films nog geen IMDb url heeft. LET OP. Vergewis u er van dat de SQL Server service owner lees- en schrijfrechten heeft op alle film shares. Dit is nodig voor het aanmaken van de “tt” bestanden in de filmmappen. Ga als volgt te werk: Run de procedure prc_load_movies om de Movies tabel bij te werken. Run de procedure prc_load_imdb_missing. De tabel Imdb_missing wordt leeggemaakt en daarna gevuld met het resultaat van automatische zoekacties van elke ontbrekende Imdb_url. Edit de tabel Imdb_missing. Loop alle records na en beoordeel of de titel klopt. Bij twijfel de IMDb website raadplegen en de gevonden url verifiëren. Als u accoord gaat met de Imdb_url, voer dan een 1 in bij Approved. Run de procedure prc_update_approved_imdb. Voor approved Imdb urls van offline films wordt de imdb_url in de table Movies bijgewerkt. Voor approved Imdb urls van online films wordt een “tt” bestand aangemaakt. Bestaande “tt” bestanden worden echter nooit overschreven. Run (nogmaals) de procedure prc_load_movies om de Movies tabel bij te werken. Alle nieuwe tt bestanden worden nu verwerkt tot Imdb urls van online films en voor Kodi wordt het info bestand aangemaakt. Run de procedure prc_load_imdb om de Imdb tabel bij te werken.
SQLMovie - Gebruikershandleiding
12 van 18
5 De filmlijst in HTML formaat 5.1 Aanmaak filmlijsten Het dumpen van de filmlijst in HTML formaat gaat met de procedure prc_dump_html. De volgende overzichtslijsten worden aangemaakt: Categories Sets Genres Top 50 Actors Top 50 Directors Periods Deze lijsten worden ontsloten door een HTML index bestand. Dit indexbestand heet SQLMovie.html en wordt gecreëerd op het install_path (zie Paragraaf 2.4).
5.2 Bekijken filmlijsten Het index bestand kunt u openen met uw browser en bevat een overzicht van de lijsten:
Deze lijsten delen uw films op verschillende manieren in. Categories en Sets zijn afgeleid van mapnamen in het filmpad, de overige van IMDb informatie. Klik op de link om een overzichtslijst te zien. Gebruik steeds de Back toets in de browser om terug te gaan.
SQLMovie - Gebruikershandleiding
13 van 18
Ter illustratie de Movie categories lijst:
Klink vervolgens op een category link. Ter illustratie de “Other Language” category:
Deze filmoverzichten zijn op alle kolommen te sorteren (behalve Cover). Klik hiervoor op de kolomhoofd. Films kunnen een link naar de IMDb website bevatten, klik hier voor op titel van de film. Per titel kunt u een aparte pagina oproepen waarop alle gegevens van de film staan. Klik hier voor op het filmhoesje. Ter illsutratie de film “Das Boot (1981)”:
SQLMovie - Gebruikershandleiding
14 van 18
De film informatie is ingedeeld in Algemene info (grijs), Media Info (blauw) en IMDb info (groen). Het hoesje wordt alleen getoond als er een folder.jpg bestand aanwezig is. IMDb info wordt getoond als de IMDb url bekend is.
SQLMovie - Gebruikershandleiding
15 van 18
6 Het handmatig invoeren van offline filmtitels 6.1 DVD en BluRay discs In de tabel dbo.Movies kunt u titels van films waarvan u een DVD of BluRay disc bezit die niet online staan met de hand invoeren. Gebruik hiervoor de “Edit … Rows” op de Movies tabel in de Management Studio. De handmatige ingevoerde filmtitels zullen worden meegenomen in het maken van de HTML filmlijsten. In de Movies tabel zitten de volgende velden: Gebruik alléén de volgende velden in de tabel dbo.Movies voor handmatige invoer: Id (dit veld wordt automatisch gevuld met een volgnummer) Online (moet bij handmatige invoer altijd 0 zijn. De laadprocedure zal films met online=0 met rust laten. Structure (*) (moet “DVD” of “BluRay” zijn) Category (de filmcategorie. De Category wordt gebruikt als indeling bij de HTML lijsten. Set_name (de naam van de reeks waartoe de film behoort) Set_order (het volgnummer van de film in de reeks) Title (*) (de titel van de film) Url_imdb (de gehele url van de IMDb webpagina van deze film, bv.: http://www.imdb.com/title/tt0438488/) Create_date (de datum waarop de filmtitel is ingevoerd) Update_date (voor handmatige invoer is dit veld niet van toepassing) Cover (een jpg bestand voor het filmhoesje. Voor het laden van één jpg bestand kunt u de procedure prc_load_cover gebruiken) De met (*) gemarkeerde velden zijn verplichte velden.
SQLMovie - Gebruikershandleiding
16 van 18
7 Extra’s 7.1 Views In de SQLMOVIE2 database zijn views aangemaakt waarmee onvolkomenheden in de filmgegevens opgespoord kunnen worden. Selecteer alle records in de verschillende check views. Check_No_Cover_File – Geeft de filmpaden zonder folder.jpg bestand. Check_No_Tt_File – Geeft de filmpaden zonder “tt” bestand. De procedure prc_load_imdb_missing kan u helpen met het vinden van de id’s van de films. Zie Paragraaf 4.2 Imdb informatie, onder semi-automatische methode. Check_Offline_Also_Online – Geeft alle records in de Movies tabel van online films waarvan u ook een offline versie heeft. Check_Offline_Double – Geeft alle records in de Movies tabel met dubbele offline films. Check_Online_Double – Geeft alle records in de Movies tabel met dubbele online films. Check_Offline_Title – Geeft alle records in de Movies tabel van offline films waarvan de titel ongelijk is aan de Imdb film naam. Check_Online_Title – Geeft alle records in de Movies tabel van online films waarvan de titel ongelijk is aan de Imdb film naam. De overige views worden o.a. gebruikt voor de HTML lijsten, en mogen niet worden verwijderd of veranderd.
7.2 Debugging SQLMovie haalt IMDb webpagina’s op, en rafelt deze uiteen (parst) om filmgegevens te verkrijgen. Dit proces kan worden verstoord, als IMDb heeft besloten om de opmaak van deze pagina’s te veranderen. U kunt de juiste werking controleren door de procedure prc_show_imdb_info te gebruiken voor een (willekeurige) film. Run hier voor de procedure met als parameter een Imdb_url, bijvoorbeeld:
SQLMovie - Gebruikershandleiding
17 van 18
Als één of meer gegevens van de film consequent niet meer (of niet goed) worden getoond, mail dan de ontwikkelaar met een verzoek om een nieuwe versie van SQLMovie uit te brengen.
SQLMovie - Gebruikershandleiding
18 van 18