Перенос медиатеки

Post Reply
Weller-2

Перенос медиатеки

Post by Weller-2 »

Есть оформленная медиатека (указаны название фильмов, артисты, и т.д.) и есть необходимость перенести эту медиатеку скажем на другой диск. Возможно ли ее перенести без потери информации о медиаресурсах?
Если вручную "подправить" путь - информация о медиаресурсах не отображается.
Eugene
Posts: 2805
Joined: Tue Sep 16, 2008 7:30 pm

Re: Перенос медиатеки

Post by Eugene »

Weller-2 wrote:Есть оформленная медиатека (указаны название фильмов, артисты, и т.д.) и есть необходимость перенести эту медиатеку скажем на другой диск. Возможно ли ее перенести без потери информации о медиаресурсах?
Если вручную "подправить" путь - информация о медиаресурсах не отображается.
Идентификаторы ресурсов привязаны к пути файла, поэтому при изменении пути связь файла и описания теряется. Встроенной возможности переноса нет, но наверно можно реализовать через обработку медиа-ресурсов. Возможно позже выложу пример.
Eugene
Posts: 2805
Joined: Tue Sep 16, 2008 7:30 pm

Re: Перенос медиатеки

Post by Eugene »

Скрипт сохранения свойств выделенных в списке фильмов, свойства сохраняются в файле с измененным расширением файла (hmi), необходимая версия 1.09.9

Code: Select all

const
  mpiIMDBInfo = 1000;
  
procedure ProcessItem(aItem: THmsScriptMediaItem; const aProperties: array of Integer);
var
  i: Integer;
  XMLDocument: TXMLDocument;
begin
  if FileExists(aItem.Properties[mpiFilePath]) then begin
    XMLDocument := TXMLDocument.Create;
    try
      XMLDocument.Root.Name := 'HmsMediaItem';
      for i := 0 to Length(aProperties) - 1 do
        if VarToStr(aItem.Properties[aProperties[i]]) <> '' then
          XMLDocument.Root.Add(IntToStr(aProperties[i]), aItem.Properties[aProperties[i]]);
      XMLDocument.SaveToFile(ChangeFileExt(aItem.Properties[mpiFilePath], '.hmi'));
    finally
      XMLDocument.Free
    end
  end  
end;
 
var
  i: Integer;
  MediaItemList: THmsScriptMediaItemList;
begin
  MediaItemList := HmsCurrentMediaListSelection;
  try
    for i := 0 to MediaItemList.Count - 1 do
      ProcessItem(MediaItemList[i], [mpiActor, mpiAuthor, mpiAlbum, mpiComment, 
            mpiCopyright, mpiDirector, mpiGenre, mpiProducer, mpiThumbnail, 
            mpiTitle, mpiIMDBInfo, mpiYear, mpiRating])
  finally
    MediaItemList.Free
  end;
  ProcessMediaResult := True      
end.
Для формирования файлов информации для всех файлов текущего списка фильмов HmsCurrentMediaListSelection можно заменить на HmsCurrentMediaListItems

Скрипт загрузки свойств выделенных в списке фильмов, свойства загружаются из файла с измененным расширением файла (hmi), необходимая версия 1.09.9

Code: Select all

procedure ProcessItem(aItem: THmsScriptMediaItem);
var
  i: Integer;
  XMLDocument: TXMLDocument;
begin
  if FileExists(ChangeFileExt(aItem.Properties[mpiFilePath], '.hmi')) then begin
    XMLDocument := TXMLDocument.Create;
    try
      XMLDocument.LoadFromFile(ChangeFileExt(aItem.Properties[mpiFilePath], '.hmi'));
      if XMLDocument.Root.Name = 'HmsMediaItem' then 
        for i := 0 to XMLDocument.Root.Count - 1 do
          aItem.Properties[StrToInt(XMLDocument.Root.Items[i].Name)] := XMLDocument.Root.Items[i].Value;
    finally
      XMLDocument.Free
    end
  end  
end;
 
var
  i: Integer;
  MediaItemList: THmsScriptMediaItemList;
begin
  MediaItemList := HmsCurrentMediaListSelection;
  try
    for i := 0 to MediaItemList.Count - 1 do
      ProcessItem(MediaItemList[i])
  finally
    MediaItemList.Free
  end;
  HmsDatabaseAutoSave;
  ProcessMediaResult := True      
end.
Weller-2

Re: Перенос медиатеки

Post by Weller-2 »

Огромное спасибо, библиотека перенеслась - все довольны :D
Post Reply