Бележки за компютърно поле Kodi - Промяна на пътищата на файловете в MySQL DB
Този блог е за това какви джаджи използвам, какво бих искал да използвам, какви и как преодолявам трудностите, за да може всичко да работи. Програми, устройства, операционни системи - всичко, което ми попадне в ръцете, всичко е отразено тук.
Kodi - Промяна на пътищата на файловете в MySQL DB
Видове възможни складове |
И още малко за източниците. Под един източник може да се скрие не едно, а няколко места за съхранение на информация. Тоест можете логично да комбинирате няколко мрежови директории в един източник, например.
Данни от две устройства, представени в един източник |
Както и да е, по-големият брат на моя домашен NAS, WD MyBook Live Duo, скоро беше придобит. Моето копие е двудисково устройство, всеки диск е два терабайта. Използвам го в режим RAID 0 (въпреки че има твърдения, че това не е RAID 0, а така наречената spanning конфигурация на дискове - производителят не се е счел длъжен да посочи точно използваната технология), тоест той се вижда от моите устройства като един диск с размер четири терабайта.
Естествено, веднага щом имаше две устройства, възникна въпросът за правилната организация на библиотеката. И, честно казано, въздъхнах с облекчение, когато разбрах, че можете просто да добавите ново хранилище към съществуващ източник. По този начин има само един логически източник за, например, серии, докато физически файловете се намират на различни NAS.
Но разработчиците на Kodi (XBMC) отидоха още по-далеч - те научиха програмата си да комбинира логически и показва данните като цяло, ако структурите за съхранение (част от пътя на файла) съвпадат. Ами например. Имам сериал. Първите няколко сезона се съхраняват в моя WD MyBook Live.Нека пътят е такъв: /TVSeries/VeryGoodFictionShow (името е измислено), добре, има поддиректории Сезон-1, Сезон-2 и Сезон-3. Публикувам нови серии на WD MyBook Live Duo. Ако назова поддиректориите, които съхраняват епизодите от тази поредица, еднакви, тогава Kodi, когато се покаже, ще ги покаже заедно. Тоест на друго устройство пресъздавам структурата на директорията: /TVSeries/VeryGoodFictionShow и създавам там поддиректорията Season-4. Kodi ще ги покаже, сякаш всички сезони са заедно в една и съща родителска директория. Освен това, ако краят на третия сезон не се побере на старото устройство, тогава на новото създаваме поддиректорията Сезон-3 и поставяме новите епизоди там. Kodi ще покаже всички епизоди от третия сезон в един списък. Но ако направите грешка в поне една буква в пътя на файла - не очаквайте чудеса, медийният комбайн няма да може логично да комбинира вашата информация.
Настройките на източника се съхраняват в XML файла sources.xml. Модифициране на източници, добавяне или премахване - всичко е отразено в този файл. Тъй като използвам няколко екземпляра на Kodi, всеки път, когато променях източниците, трябваше да изопача, така че промените да бъдат взети предвид навсякъде. Опитах много методи, докато се спрях на използването на един файл sources.xml, общ за всички инсталации на Kodi. Поставих го на мрежово устройство и промених настройките на всички Kodi (файл advancedsettings.xml), за да гледам този споделен файл. Всъщност всичко това вече го описах. Но, както се казва, повторението е майката на ученето.
И така, трябваше да заменя три имена със съответните IP адреси. Много ли е или малко? Е, първо, бих искал да посоча точно кои имена щях да заменя с IP. Това е, както казах, името на хоста, където се изпълнява MySQL. Също така, за пълнота, азпоставиха за цел да заменят имената MyBook Live и MyBook Live Duo във всички източници. Изглежда, че тук няма нищо лошо, коригирате файловете advancedsettings.xml (там е посочен компютърът с MySQL) и sources.xml (източниците са описани там) - това е всичко. Но всичко не е толкова просто.
Тук трябва да запомним, че имам централизирана база данни, която съхранява информация за моята библиотека, включително информация за пътищата до моите медийни файлове. Освен това пътят до файла е уникален ключ, на който е свързано много. И ако променя пътищата към хранилищата в настройките на източниците, може да се появят неприятни ефекти.
И това не е само теория. След като промених настройките на източника, по невнимание стартирах Kodi. Имам функцията за актуализиране на библиотеката, настроена да се изпълнява автоматично при стартиране на мултимедийното комбиниране. Когато видях имената на файловете да мигат (имам включен флаг за показване на процеса на актуализиране), изключих Kodi, но няколко десетки файла успяха да се дублират (е, да, забавих се).
Няколко настройки за автоматично актуализиране на библиотеката |
След описаните събития стана ясно, че ще трябва или да създадем библиотеката отново, или да редактираме информацията директно в базата данни.
Пресъздаването на библиотеката е доста лесно. Необходимо е да промените типа съдържание на „Няма“ в източника, след което Kodi ще поиска предупреждение за премахване от библиотеката на всички данни, свързани с файлове от този източник. След като процесът на премахване приключи, трябва да върнете типа съдържание на източника към старата стойност - тогава Kodi ще сканира повторно съдържанието на източника.
Този елемент избира типа съдържание на източника, включително „няма“ |
Така че да започваме. На първо място, имаме нужда от инструмент за работа с базата данни MySQL. азрових из интернет, прочетох рецензии и избрах - HeidiSQL. Инсталацията на тази програма е незабележима, така че няма да се спирам подробно на нея. Когато инсталацията приключи, стартирайте програмата и се свържете с желаната база данни - тук трябва да запомните потребителската парола на базата данни. Но ако не си спомняте, няма значение, записано е във файла advancrdsettings.xml, точно като потребителското име. Най-интересното започва точно сега, след свързване с базата данни.
HeidiSQL има много интересна функция, която в крайна сметка ми помогна много. Това е текстово търсене в цялата база данни. За достъп до тази функционалност изберете съответния елемент от менюто.
След като изберете, на екрана ще се появи прозорец, в който посочвате коя база данни искате да сканирате и какво всъщност ще търсите.
След това програмата започва да работи през обектите на базата данни в опит да изпълни вашата задача и след завършване на този процес показва списък с обекти на екрана, показващ колко реда от този обект съдържат търсения подниз.
Една тъга, в този списък "коне, хора смесени в един куп." Тоест списъкът съдържа таблици, изгледи (изглед), дори тригери. Реших, че ме интересуват само таблици. Защо? Да, знам, че в MySQL някои изгледи могат да се редактират, тоест промяната на стойността в изгледа променя същата стойност в таблицата, на която се основава изгледът. Но има ограничения за това кои изгледи могат да се променят и кои не. Не исках да разбирам как се изграждат изгледи в базата данни на Kodi и дали те нарушават същите тези правила, затова избрах таблици.
След показване на списъка с обекти на екрана, можете да щракнете върху бутона "Покажи резултати" и обектите с тяхното съдържание ще бъдат показани на екрана -един обект - една закладка.
актуализиране на арт набор url = replace(url,'//MYBOOKLIVE/','//XXX.XXX.XXX.XXX/'); update art set url = replace(url,'//MYBOOKLIVEDUO/','//YYY.YYY.YYY.YYY/'); актуализира набор от епизоди c18 = replace(c18,'//MYBOOKLIVE/','//XXX.XXX.XXX.XXX/'); актуализира набор от епизоди c18 = replace(c18,'//MYBOOKLIVEDUO/','//YYY.YYY.YYY.YYY/'); актуализирайте файлове, задайте strFilename = replace(strFilename,'//MYBOOKLIVE/','//XXX.XXX.XXX.XXX/'); актуализиране на набор от филми c22 = replace(c22,'//MYBOOKLIVE/','//XXX.XXX.XXX.XXX/'); актуализиране на набор от филми c22 = replace(c22,'//MYBOOKLIVEDUO/','//YYY.YYY.YYY.YYY/'); обновяване на пътя за набор strPath = replace(strPath,'//MYBOOKLIVE/','//XXX.XXX.XXX.XXX/'); актуализиране на пътека set strPath = replace(strPath,'//MYBOOKLIVEDUO/','//YYY.YYY.YYY.YYY/'); update art set url = replace(url,'%2f%2fMYBOOKLIVE%2f','%2f%2fXXX.XXX.XXX.XXX%2f'); update art set url = replace(url,'%2f%2fMYBOOKLIVEDUO%2f','%2f%2fYYY.YYY.YYY.YYY%2f'); ангажиране на работа;
Преди това, като стартирам скрипт в HeidiSQL, направих бэкап на текущото състояние на БД. Опять така, използвайки HeidiSQL.
В отговор на избора точката на менюто "Експортиране на бази данни в SQL" програмата извежда прозорец, който позволява да се използват някои експортирани параметри. Привеждам своя вариант за запълване на тази окошка.
Немного пояснений. Първо, отбелязваме база данни, която искам да изнасям. Във втория, посочваме, какви команди трябва да включите в генерирания скрипт за самото БД и таблица. Избрах и за БД и за таблица галки "Уничтожить" и "Создать". Основание самое, което ни на има просто - ако това не е така - забудем всичко, как страшный сон (импортиране на пересъздаст база с нуля). На самото място, наверное, може да се остави включените обе галки за БД, но ми се покаже, че така ще бъде надеждно. В-третих, избираем, какъвтоТака данните трябва да стигнат до таблиците. Тъй като всъщност избрах да пресъздам както базата данни, така и таблиците, логично е да избера вмъкване на данни (вмъкване). И накрая, четвърто, посочих името на файла, използвайки шаблони, които HeidiSQL разбира. Нека обясня избора си ( %host_%db_%y%m%d ): името на файла ще бъде събрано по следния начин - hostname_dbname_YearMonthDay.sql
След като получих архива на базата данни, стартирах горния скрипт и получих това, което исках. Стартира, след като Kodi правилно показа информация за съдържанието на източниците и правилно възпроизведе исканите файлове.
Да, в заключение искам да дам линк към документацията на самия Kodi за извършване на процедурата, която току-що описах. Има прилики, има разлики. Трябва да кажа, че намерих тази връзка, след като извърших всички описани манипулации самостоятелно. Такива са нещата.