From d5d9e143a5778928c5f386a7bd9cb140d4f1191a Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 10 Mar 2022 23:00:43 +0100 Subject: [PATCH] Make the value used for 'f' in KDM names consistent (#1657). Before it was mostly the film name, but this is confusing when a single film contains multiple CPLs. --- src/lib/dkdm_recipient.cc | 2 +- src/lib/film.cc | 1 + src/lib/film.h | 4 ++++ src/lib/kdm_cli.cc | 2 +- src/lib/screen.cc | 2 +- src/tools/dcpomatic_kdm.cc | 2 +- src/wx/kdm_output_panel.h | 1 + test/kdm_naming_test.cc | 31 ++++++++++++++++++------------- 8 files changed, 28 insertions(+), 17 deletions(-) diff --git a/src/lib/dkdm_recipient.cc b/src/lib/dkdm_recipient.cc index 30c307569..b15487c8a 100644 --- a/src/lib/dkdm_recipient.cc +++ b/src/lib/dkdm_recipient.cc @@ -86,7 +86,7 @@ kdm_for_dkdm_recipient ( ); dcp::NameFormat::Map name_values; - name_values['f'] = film->name(); + name_values['f'] = kdm.content_title_text(); name_values['b'] = begin.date() + " " + begin.time_of_day(true, false); name_values['e'] = end.date() + " " + end.time_of_day(true, false); name_values['i'] = kdm.cpl_id(); diff --git a/src/lib/film.cc b/src/lib/film.cc index 5e99e466c..d9ed8c530 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -1283,6 +1283,7 @@ Film::set_isdcf_date_today () _isdcf_date = boost::gregorian::day_clock::local_day (); } + boost::filesystem::path Film::j2c_path (int reel, Frame frame, Eyes eyes, bool tmp) const { diff --git a/src/lib/film.h b/src/lib/film.h index a1bec3d53..55bbb4069 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -409,6 +409,10 @@ public: return _luminance; } + boost::gregorian::date isdcf_date () const { + return _isdcf_date; + } + /* SET */ diff --git a/src/lib/kdm_cli.cc b/src/lib/kdm_cli.cc index 0ec648e04..e89da6e37 100644 --- a/src/lib/kdm_cli.cc +++ b/src/lib/kdm_cli.cc @@ -374,7 +374,7 @@ from_dkdm ( dcp::NameFormat::Map name_values; name_values['c'] = i->cinema ? i->cinema->name : ""; name_values['s'] = i->name; - name_values['f'] = dkdm.annotation_text().get_value_or(""); + name_values['f'] = kdm.content_title_text(); name_values['b'] = begin.date() + " " + begin.time_of_day(true, false); name_values['e'] = end.date() + " " + end.time_of_day(true, false); name_values['i'] = kdm.cpl_id(); diff --git a/src/lib/screen.cc b/src/lib/screen.cc index 21d7ebf25..a9291e8f0 100644 --- a/src/lib/screen.cc +++ b/src/lib/screen.cc @@ -109,7 +109,7 @@ kdm_for_screen ( name_values['c'] = ""; } name_values['s'] = screen->name; - name_values['f'] = film->name(); + name_values['f'] = kdm.content_title_text(); name_values['b'] = begin.date() + " " + begin.time_of_day(true, false); name_values['e'] = end.date() + " " + end.time_of_day(true, false); name_values['i'] = kdm.cpl_id(); diff --git a/src/tools/dcpomatic_kdm.cc b/src/tools/dcpomatic_kdm.cc index 9a65314e5..24bd3b4d7 100644 --- a/src/tools/dcpomatic_kdm.cc +++ b/src/tools/dcpomatic_kdm.cc @@ -338,7 +338,7 @@ private: begin, end, decrypted.annotation_text().get_value_or (""), - decrypted.content_title_text(), + title, dcp::LocalTime().as_string() ); diff --git a/src/wx/kdm_output_panel.h b/src/wx/kdm_output_panel.h index f831fdce0..0025b0072 100644 --- a/src/wx/kdm_output_panel.h +++ b/src/wx/kdm_output_panel.h @@ -20,6 +20,7 @@ #include "lib/kdm_with_metadata.h" +#include "wx_util.h" #include #include #include diff --git a/test/kdm_naming_test.cc b/test/kdm_naming_test.cc index c41d5c315..f53f4aba2 100644 --- a/test/kdm_naming_test.cc +++ b/test/kdm_naming_test.cc @@ -122,7 +122,8 @@ BOOST_AUTO_TEST_CASE (single_kdm_naming_test) auto until_time = until.time_of_day (true, false); boost::algorithm::replace_all (until_time, ":", "-"); - auto const ref = String::compose("KDM_Cinema_A_-_Screen_1_-_my_great_film_-_%1_%2_-_%3_%4.xml", from.date(), from_time, until.date(), until_time); + auto const dcp_date = boost::gregorian::to_iso_string(film->isdcf_date()); + auto const ref = String::compose("KDM_Cinema_A_-_Screen_1_-_MyGreatFilm_TST-1_F_XX-XX_MOS_2K_%1_SMPTE_OV_-_%2_%3_-_%4_%5.xml", dcp_date, from.date(), from_time, until.date(), until_time); BOOST_CHECK_MESSAGE (boost::filesystem::exists("build/test/single_kdm_naming_test/" + ref), "File " << ref << " not found"); } @@ -182,8 +183,8 @@ BOOST_AUTO_TEST_CASE (directory_kdm_naming_test, * boost::unit_test::depends_on( path("build/test/directory_kdm_naming_test"), dcp::NameFormat("%c - %s - %f - %b - %e"), #ifdef DCPOMATIC_WINDOWS - /* With %i in the format the path is too long for Windows */ - dcp::NameFormat("KDM %c - %s - %f - %b - %e"), + /* Use a shorter name on Windows so that the paths aren't too long */ + dcp::NameFormat("KDM %f"), #else dcp::NameFormat("KDM %c - %s - %f - %b - %e - %i"), #endif @@ -195,38 +196,42 @@ BOOST_AUTO_TEST_CASE (directory_kdm_naming_test, * boost::unit_test::depends_on( auto until_time = until.time_of_day (true, false); boost::algorithm::replace_all (until_time, ":", "-"); + auto const dcp_date = boost::gregorian::to_iso_string(film->isdcf_date()); + auto const dcp_name = String::compose("MyGreatFilm_TST-1_F_XX-XX_MOS_2K_%1_SMPTE_OV", dcp_date); + auto const common = String::compose("%1_-_%2_%3_-_%4_%5", dcp_name, from.date(), from_time, until.date(), until_time); + path const base = "build/test/directory_kdm_naming_test"; - path dir_a = String::compose("Cinema_A_-_%s_-_my_great_film_-_%1_%2_-_%3_%4", from.date(), from_time, until.date(), until_time); + path dir_a = String::compose("Cinema_A_-_%s_-_%1", common); BOOST_CHECK_MESSAGE (boost::filesystem::exists(base / dir_a), "Directory " << dir_a << " not found"); - path dir_b = String::compose("Cinema_B_-_%s_-_my_great_film_-_%1_%2_-_%3_%4", from.date(), from_time, until.date(), until_time); + path dir_b = String::compose("Cinema_B_-_%s_-_%1", common); BOOST_CHECK_MESSAGE (boost::filesystem::exists(base / dir_b), "Directory " << dir_b << " not found"); #ifdef DCPOMATIC_WINDOWS - path ref = String::compose("KDM_Cinema_A_-_Screen_2_-_my_great_film_-_%1_%2_-_%3_%4.xml", from.date(), from_time, until.date(), until_time); + path ref = String::compose("KDM_%1.xml", dcp_name); #else - path ref = String::compose("KDM_Cinema_A_-_Screen_2_-_my_great_film_-_%1_%2_-_%3_%4_-_%5.xml", from.date(), from_time, until.date(), until_time, cpl_id); + path ref = String::compose("KDM_Cinema_A_-_Screen_2_-_%1_-_%2.xml", common, cpl_id); #endif BOOST_CHECK_MESSAGE (boost::filesystem::exists(base / dir_a / ref), "File " << ref << " not found"); #ifdef DCPOMATIC_WINDOWS - ref = String::compose("KDM_Cinema_B_-_Screen_X_-_my_great_film_-_%1_%2_-_%3_%4.xml", from.date(), from_time, until.date(), until_time); + ref = String::compose("KDM_%1.xml", dcp_name); #else - ref = String::compose("KDM_Cinema_B_-_Screen_X_-_my_great_film_-_%1_%2_-_%3_%4_-_%5.xml", from.date(), from_time, until.date(), until_time, cpl_id); + ref = String::compose("KDM_Cinema_B_-_Screen_X_-_%1_-_%2.xml", common, cpl_id); #endif BOOST_CHECK_MESSAGE (boost::filesystem::exists(base / dir_b / ref), "File " << ref << " not found"); #ifdef DCPOMATIC_WINDOWS - ref = String::compose("KDM_Cinema_A_-_Screen_1_-_my_great_film_-_%1_%2_-_%3_%4.xml", from.date(), from_time, until.date(), until_time); + ref = String::compose("KDM_%1.xml", dcp_name); #else - ref = String::compose("KDM_Cinema_A_-_Screen_1_-_my_great_film_-_%1_%2_-_%3_%4_-_%5.xml", from.date(), from_time, until.date(), until_time, cpl_id); + ref = String::compose("KDM_Cinema_A_-_Screen_1_-_%1_-_%2.xml", common, cpl_id); #endif BOOST_CHECK_MESSAGE (boost::filesystem::exists(base / dir_a / ref), "File " << ref << " not found"); #ifdef DCPOMATIC_WINDOWS - ref = String::compose("KDM_Cinema_B_-_Screen_Z_-_my_great_film_-_%1_%2_-_%3_%4.xml", from.date(), from_time, until.date(), until_time); + ref = String::compose("KDM_%1.xml", dcp_name); #else - ref = String::compose("KDM_Cinema_B_-_Screen_Z_-_my_great_film_-_%1_%2_-_%3_%4_-_%5.xml", from.date(), from_time, until.date(), until_time, cpl_id); + ref = String::compose("KDM_Cinema_B_-_Screen_Z_-_%1_-_%2.xml", common, cpl_id); #endif BOOST_CHECK_MESSAGE (boost::filesystem::exists(base / dir_b / ref), "File " << ref << " not found"); } -- 2.30.2