Автор Тема: Firebird Maestro и PVD  (Прочитано 32491 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн NewSky

  • Гуру
  • ****
  • Сообщений: 842
Re: Firebird Maestro и PVD
« Ответ #15 : 05 Мая 2009, 04:30:17 »
Большое спасибо, Moran!
Почти все как надо получилось.
Единственное (ты предупреждал) кириллица нифига не отображается в ПРОГРАММЕ :( В базе записи нормально, присутствуют, а в программе не отображаются. Вот бы с этим еще, что-то придумать, а то странно, если в программе на кириллице написать - нет проблем, а вот таким если способом, то не читается

После запуска скрипта, в пользовательском поле "Доп. данные" появилось новое пустое значение и применяемое значение, там где не было никакой записи, имеет вид: , новое значение То есть, начинается с запятой. Нельзя ли как то, что бы пустое значение не появлялось ну и без запятой в начале, если новое значение единственное?



Оффлайн NewSky

  • Гуру
  • ****
  • Сообщений: 842
Re: Firebird Maestro и PVD
« Ответ #16 : 05 Мая 2009, 04:38:28 »
Да, походу он ко всем записям применил это новое, пустое значение:


Оффлайн moran

  • Гуру
  • ****
  • Сообщений: 403
  • Пиво - тоже компонента...
Re: Firebird Maestro и PVD
« Ответ #17 : 05 Мая 2009, 04:46:55 »
Да, походу он ко всем записям применил это новое, пустое значение:



Пустое значение это значение написанное на кириллице в скрипте, просто надо скрипт сохранить в кодировке UTF и открыть в редакторе скриптов, и запустить, в редакторе будут кракозябры, но скрипт выполнится нормально, покранейней мере в IB Expert так. Скоро сделаю скрипты на скриншоты, CD обложки и Box обложки... Хотя там достаточно поменять типы изображений и название пометок...
Русские кинопремьеры 2001-2010 (www.kinopoisk.ru)
80.64.88.51:ГОД_ПРЕМЬЕР
login: ГОД_ПРЕМЬЕР
password: ГОД_ПРЕМЬЕР
2006-2008 в процессе, 2001-2005,2009-2010 доступны...

Оффлайн moran

  • Гуру
  • ****
  • Сообщений: 403
  • Пиво - тоже компонента...
Re: Firebird Maestro и PVD
« Ответ #18 : 05 Мая 2009, 05:07:28 »
Итак, окончательные варианты скриптов:
Постеры (не помечаются эпизоды):
/*$$IBEC$$ ПОСТЕРЫ $$IBEC$$*/

INSERT INTO
  CUSTOM_VALUES_SHORTSTR
  ("cmfid", "mid", "value")
  SELECT
    '40' as "cmfid", "mid", 'Нет Постера' as "value"
  FROM
    MOVIES
  WHERE
    "mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = '40' AND "value" = 'Нет постера') AND
    "visible" = -1 AND "epid" is NULL AND
    (NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = MOVIES."mid") AND ("imgtype" = 0)));

commit;

DELETE FROM
  CUSTOM_VALUES_SHORTSTR
WHERE
  ("cmfid" = 40) AND ("value" = 'Нет постера') and
  (EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 0)));
commit;

Скриншоты (помечаются эпизоды):
/*$$IBEC$$ СКРИНШОТЫ $$IBEC$$*/

INSERT INTO
  CUSTOM_VALUES_SHORTSTR
  ("cmfid", "mid", "value")
  SELECT
    '40' as "cmfid", "mid", 'Нет Скриншотов' as "value"
  FROM
    MOVIES
  WHERE
    "mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = '40' AND "value" = 'Нет Скриншотов') AND
    "visible" = -1 AND
    (NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = MOVIES."mid") AND ("imgtype" = 1)));

commit;

DELETE FROM
  CUSTOM_VALUES_SHORTSTR
WHERE
  ("cmfid" = 40) AND ("value" = 'Нет Скриншотов') and
  (EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 1)));
commit;

CD Обложка (не помечаются эпизоды):
/*$$IBEC$$ CD ОБЛОЖКИ $$IBEC$$*/

INSERT INTO
  CUSTOM_VALUES_SHORTSTR
  ("cmfid", "mid", "value")
  SELECT
    '40' as "cmfid", "mid", 'Нет CD Обложки' as "value"
  FROM
    MOVIES
  WHERE
    "mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = '40' AND "value" = 'Нет CD Обложки') AND
    "visible" = -1 AND "epid" is NULL AND
    (NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = MOVIES."mid") AND ("imgtype" = 3)));

commit;

DELETE FROM
  CUSTOM_VALUES_SHORTSTR
WHERE
  ("cmfid" = 40) AND ("value" = 'Нет CD Обложки') and
  (EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 3)));
commit;

Box Обложка (не помечаются эпизоды):
/*$$IBEC$$ Box ОБЛОЖКИ $$IBEC$$*/

INSERT INTO
  CUSTOM_VALUES_SHORTSTR
  ("cmfid", "mid", "value")
  SELECT
    '40' as "cmfid", "mid", 'Нет Box Обложки' as "value"
  FROM
    MOVIES
  WHERE
    "mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = '40' AND "value" = 'Нет Box Обложки') AND
    "visible" = -1 AND "epid" is NULL AND
    (NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = MOVIES."mid") AND ("imgtype" = 2)));

commit;

DELETE FROM
  CUSTOM_VALUES_SHORTSTR
WHERE
  ("cmfid" = 40) AND ("value" = 'Нет Box Обложки') and
  (EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 2)));
commit;

Если хотим видеть русские буквы в программе, сохраняем скрипт в кодировке UTF и открываем в редакторе скриптов.

Не забываем изменять значение "40", "Нет Постера", "Нет Скриншотов", "Нет CD Обложки", "Нет Box Обложки" на свои.
Русские кинопремьеры 2001-2010 (www.kinopoisk.ru)
80.64.88.51:ГОД_ПРЕМЬЕР
login: ГОД_ПРЕМЬЕР
password: ГОД_ПРЕМЬЕР
2006-2008 в процессе, 2001-2005,2009-2010 доступны...

Оффлайн NewSky

  • Гуру
  • ****
  • Сообщений: 842
Re: Firebird Maestro и PVD
« Ответ #19 : 05 Мая 2009, 05:09:03 »
Ну всё, с меня пиво :) ОГРОМНОЕ тебе спасибо Moran! Все заработало! Сохранил скрипт в кодировки UTF-8 (без BOM) и все зачиталось в программе!

Я вот хотел спросить на будущее... сейчас, в данном случае, основным условием было "нет постеров" а можно будет обратится позже с вопросом о подобном действии, но основной критерий будет "содержание в програмном поле (скорее всего "место расположение") определенного значение и применение к таким фильмам пользовательского значения в пользовательское поле"

Поясню, зачем это нужно и почему так:
Например: "Заглавный постер" у меня ко всем фильмам сделан по одному стандарту, но он есть не ко всем фильмам, есть фильмы, для которых нет описания на Кинопоиске, каких то нет на IMDB, у каких то постеров нет вертикальных постеров и многое, много другое, что нужно отобразить в программе. Я делаю так: группирую фильмы по тому критерию, который необходим, выделяю все фильмы и запускаю массовый редактор и в нем использую поле "Расположение носителя" потому, как это единственное програмное поле, которое у меня не задействовано. Но соответственно, это только одно значение, а к одному фильму их может быть несколько и тогда они просто затрутся, для этого я и попросил помощь, как "руками" внести запись отталкиваясь от ОСНОВНОГО критерия. В данном случае это было "нет постера" а в дальнейшем, хотелось бы снова попросить помощи о запросе, где основным критерием будет запись в програмном поле "Расположение носителя"

Еще раз, большое спасибо за помощь, Moran! И Resetу большое спасибо, за основу запроса и за постоянную помощь всем на этом форуме!

Оффлайн moran

  • Гуру
  • ****
  • Сообщений: 403
  • Пиво - тоже компонента...
Re: Firebird Maestro и PVD
« Ответ #20 : 05 Мая 2009, 05:15:54 »
Пиши алгоритм запроса, а там разберемся, можно или нет...
Русские кинопремьеры 2001-2010 (www.kinopoisk.ru)
80.64.88.51:ГОД_ПРЕМЬЕР
login: ГОД_ПРЕМЬЕР
password: ГОД_ПРЕМЬЕР
2006-2008 в процессе, 2001-2005,2009-2010 доступны...

Оффлайн NewSky

  • Гуру
  • ****
  • Сообщений: 842
Re: Firebird Maestro и PVD
« Ответ #21 : 05 Мая 2009, 05:24:05 »
Добавить запись "ххххх" в пользовательское поле multiselect list "Доп. данные" для тех фильмов, которые имеют запись в програмном поле "Расположение носителя" равную "yyyyy". OR имеют любую запись в програмном поле "расположение носителя"

Оффлайн moran

  • Гуру
  • ****
  • Сообщений: 403
  • Пиво - тоже компонента...
Re: Firebird Maestro и PVD
« Ответ #22 : 05 Мая 2009, 05:58:38 »
Добавить запись "ххххх" в пользовательское поле multiselect list "Доп. данные" для тех фильмов, которые имеют запись в програмном поле "Расположение носителя" равную "yyyyy". OR имеют любую запись в програмном поле "расположение носителя"

Добавляет в пользовательское поле с ID '44' значение 'XXXXXX' если в поле 'расположение носителя' есть запись 'YYYYYY', эпизоды не учитываются. что бы учитывались убрать 'AND "epid" is NULL'


INSERT INTO
  CUSTOM_VALUES_SHORTSTR
  ("cmfid", "mid", "value")
  SELECT
    '44' as "cmfid", "mid", 'XXXXXX' as "value"
  FROM
    MOVIES
  WHERE
    "mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = '44' AND "value" = 'XXXXXX') AND
    "visible" = -1 AND "epid" is NULL AND
    (EXISTS(SELECT FIRST 1 * FROM locations WHERE (locations."locid" = movies."location") AND locations."value" = 'YYYYYY'));
commit;

UPD

Удаляет значение 'XXXXXX' из пользовательского поля с ID '44' если в 'расположении носителя' нет значения 'YYYYYY'
DELETE FROM
  CUSTOM_VALUES_SHORTSTR
WHERE
  ("cmfid" = 44) AND ("value" = 'XXXXXX') and
  (NOT EXISTS(SELECT FIRST 1 * FROM locations, movies WHERE (locations."locid" = movies."location") AND locations."value" = 'YYYYYY'));
commit;
« Последнее редактирование: 05 Мая 2009, 06:11:41 от moran »
Русские кинопремьеры 2001-2010 (www.kinopoisk.ru)
80.64.88.51:ГОД_ПРЕМЬЕР
login: ГОД_ПРЕМЬЕР
password: ГОД_ПРЕМЬЕР
2006-2008 в процессе, 2001-2005,2009-2010 доступны...

Оффлайн NewSky

  • Гуру
  • ****
  • Сообщений: 842
Re: Firebird Maestro и PVD
« Ответ #23 : 05 Мая 2009, 06:33:24 »
сорри чОртов Punto :) в скрипте была очепятка, вот и не сработал.
Не перестаю благодарить тебя, Moran! Спасибо большое!!!
« Последнее редактирование: 05 Мая 2009, 06:40:16 от NewSky »

Оффлайн NewSky

  • Гуру
  • ****
  • Сообщений: 842
Re: Firebird Maestro и PVD
« Ответ #24 : 21 Мая 2010, 12:58:51 »
Очередное извращение понадобилось :) Может знающие люди подскажут, возможно/не возможно, а ЕСЛИ возможно, то как?

Данные:
Все фильмы в базе в поле "Расположение носителя" имеют данные о файле, сам файл имеет примерно такой вид:
H:\films5\Двойной КОПец (2010)\Cop_Out_(2010)(two)(dvdrip).avi
Где, папка с фильмом имеет имя=Переведенное Название (год), а сам файл=Original_Title_(year)(voice)(quality).расширение.
Voice - это следовательно информация по озвучке. Имеются совсем немного значений:
(one)-одноголосый
(two)-двухголосый
(multi)-многоголосый
(multi_d)-Многоголосый (Дубляж)
(multi_z)-Многоголосый (Закадровый)
(orig)-Язык оригинала
(not)-Перевод не требуется
Задача:
Необходим скрипт который бы при наличии указанных выше данных в поле "Расположение носителя" заполнил бы поле "Перевод" в карточке фильма к первой (если не одна) звуковой дорожке.
Например:
H:\films5\Двойной КОПец (2010)\Cop_Out_(2010)(two)(dvdrip).avi получаем, что в поле "Перевод" нужно внести слово "Двухголосый" и так далее.
Соответственно, сколько есть вариантов озвучки из данных имени файлов, столько раз и нужно обработать базу, меняя данные искомые и те, которые нужно ввести в поле "Перевод".
Возможно подобное?