updated images data

This commit is contained in:
suroh 2023-12-04 23:07:00 +01:00
parent 932f2200e3
commit 8eb9ab9477
8 changed files with 666 additions and 177 deletions

View File

@ -1,132 +1,653 @@
[
{
"title": "1 MeredithMonk 1972 Paris",
"title": "Scores",
"parent_dir": "images",
"media": "1_MeredithMonk_1972_Paris",
"media": "1_Scores",
"order": "1",
"images": [
{
"title": "MeredithMonk 1972 ParisScore01",
"media": "MeredithMonk_1972_ParisScore01.jpg",
"thumb": "MeredithMonk_1972_ParisScore01.thumb.jpg"
"title": "Handwritten Score for 'Paris' (1972)",
"details": "Page 1",
"media": "1_Handwritten Score for 'Paris' (1972)_Page 1.png",
"thumb": "1_Handwritten Score for 'Paris' (1972)_Page 1.thumb.png"
},
{
"title": "MeredithMonk 1972 ParisScore02",
"media": "MeredithMonk_1972_ParisScore02.jpg",
"thumb": "MeredithMonk_1972_ParisScore02.thumb.jpg"
"title": "Handwritten Score for 'Paris' (1972)",
"details": "Page 2",
"media": "2_Handwritten Score for 'Paris' (1972)_Page 2.png",
"thumb": "2_Handwritten Score for 'Paris' (1972)_Page 2.thumb.png"
},
{
"title": "MeredithMonk 1972 ParisScore03",
"media": "MeredithMonk_1972_ParisScore03.jpg",
"thumb": "MeredithMonk_1972_ParisScore03.thumb.jpg"
"title": "Handwritten Score for 'Paris' (1972)",
"details": "Page 3",
"media": "3_Handwritten Score for 'Paris' (1972)_Page 3.png",
"thumb": "3_Handwritten Score for 'Paris' (1972)_Page 3.thumb.png"
},
{
"title": "MeredithMonk 1972 ParisScore04",
"media": "MeredithMonk_1972_ParisScore04.jpg",
"thumb": "MeredithMonk_1972_ParisScore04.thumb.jpg"
"title": "Handwritten Score for 'Paris' (1972)",
"details": "Page 4",
"media": "4_Handwritten Score for 'Paris' (1972)_Page 4.png",
"thumb": "4_Handwritten Score for 'Paris' (1972)_Page 4.thumb.png"
}
]
},
{
"title": "2 Series of Watercolors (Untitled Studies), 1970-1986",
"title": "Watercolors - Untitled Studies (1970-1986)",
"parent_dir": "images",
"media": "2_Series of Watercolors (Untitled Studies), 1970-1986. (photographed 2007 Eileen Costa)",
"media": "2_Watercolors - Untitled Studies (1970-1986)",
"order": "2",
"images": [
{
"title": "001",
"media": "001.jpg",
"thumb": "001.thumb.jpg"
"title": "Study 1",
"details": "Series of Watercolors",
"media": "1_Study 1_Series of Watercolors.jpg",
"thumb": "1_Study 1_Series of Watercolors.thumb.jpg"
},
{
"title": "002",
"media": "002.jpg",
"thumb": "002.thumb.jpg"
"title": "Study 2",
"details": "Series of Watercolors",
"media": "2_Study 2_Series of Watercolors.jpg",
"thumb": "2_Study 2_Series of Watercolors.thumb.jpg"
},
{
"title": "003",
"media": "003.jpg",
"thumb": "003.thumb.jpg"
"title": "Study 3",
"details": "Series of Watercolors",
"media": "3_Study 3_Series of Watercolors.jpg",
"thumb": "3_Study 3_Series of Watercolors.thumb.jpg"
},
{
"title": "004",
"media": "004.jpg",
"thumb": "004.thumb.jpg"
"title": "Study 4",
"details": "Series of Watercolors",
"media": "4_Study 4_Series of Watercolors.jpg",
"thumb": "4_Study 4_Series of Watercolors.thumb.jpg"
},
{
"title": "005",
"media": "005.jpg",
"thumb": "005.thumb.jpg"
"title": "Study 5",
"details": "Series of Watercolors",
"media": "5_Study 5_Series of Watercolors.jpg",
"thumb": "5_Study 5_Series of Watercolors.thumb.jpg"
},
{
"title": "006",
"media": "006.jpg",
"thumb": "006.thumb.jpg"
"title": "Study 6",
"details": "Series of Watercolors",
"media": "6_Study 6_Series of Watercolors.jpg",
"thumb": "6_Study 6_Series of Watercolors.thumb.jpg"
},
{
"title": "007",
"media": "007.jpg",
"thumb": "007.thumb.jpg"
"title": "Study 7",
"details": "Series of Watercolors",
"media": "7_Study 7_Series of Watercolors.jpg",
"thumb": "7_Study 7_Series of Watercolors.thumb.jpg"
},
{
"title": "008",
"media": "008.jpg",
"thumb": "008.thumb.jpg"
"title": "Study 8",
"details": "Series of Watercolors",
"media": "8_Study 8_Series of Watercolors.jpg",
"thumb": "8_Study 8_Series of Watercolors.thumb.jpg"
},
{
"title": "009",
"media": "009.jpg",
"thumb": "009.thumb.jpg"
"title": "Study 9",
"details": "Series of Watercolors",
"media": "9_Study 9_Series of Watercolors.jpg",
"thumb": "9_Study 9_Series of Watercolors.thumb.jpg"
},
{
"title": "010",
"media": "010.jpg",
"thumb": "010.thumb.jpg"
"title": "Study 10",
"details": "Series of Watercolors",
"media": "10_Study 10_Series of Watercolors.jpg",
"thumb": "10_Study 10_Series of Watercolors.thumb.jpg"
},
{
"title": "011",
"media": "011.jpg",
"thumb": "011.thumb.jpg"
"title": "Study 11",
"details": "Series of Watercolors",
"media": "11_Study 11_Series of Watercolors.jpg",
"thumb": "11_Study 11_Series of Watercolors.thumb.jpg"
}
]
},
{
"title": "3 Posters",
"title": "Posters",
"parent_dir": "images",
"media": "3_Posters",
"order": "3",
"images": [
{
"title": "04 MERCY 2002",
"media": "04_MERCY_2002.jpg",
"thumb": "04_MERCY_2002.thumb.jpg"
"title": "Vessel: an opera epic (1971)",
"details": "site-specific locations, NYC, October 1971 Design/drawing by Meredith Monk with print by Monica Moseley",
"media": "6_Vessel: an opera epic (1971)_site-specific locations, NYC, October 1971 Design/drawing by Meredith Monk with print by Monica Moseley.jpg",
"thumb": "6_Vessel: an opera epic (1971)_site-specific locations, NYC, October 1971 Design/drawing by Meredith Monk with print by Monica Moseley.thumb.jpg"
},
{
"title": "122 THE GAMES",
"media": "122_THE_GAMES.jpg",
"thumb": "122_THE_GAMES.thumb.jpg"
"title": "Quarry: an opera in three movements (1976)",
"details": "La MaMa Annex, NYC, April 1976 Design/drawing by Meredith Monk with print by Monica Moseley",
"media": "1_Quarry: an opera in three movements (1976)_La MaMa Annex, NYC, April 1976 Design/drawing by Meredith Monk with print by Monica Moseley.jpg",
"thumb": "1_Quarry: an opera in three movements (1976)_La MaMa Annex, NYC, April 1976 Design/drawing by Meredith Monk with print by Monica Moseley.thumb.jpg"
},
{
"title": "146 Songs from the Hill Town Hall",
"media": "146_Songs_from_the_Hill_Town_Hall.jpg",
"thumb": "146_Songs_from_the_Hill_Town_Hall.thumb.jpg"
"title": "Songs from the Hill and Tablet (1976)",
"details": "Town Hall, NYC, October 1976, Design/Drawing by Meredith Monk with print by Monica Moseley",
"media": "5_Songs from the Hill and Tablet (1976)_Town Hall, NYC, October 1976, Design/Drawing by Meredith Monk with print by Monica Moseley.jpg",
"thumb": "5_Songs from the Hill and Tablet (1976)_Town Hall, NYC, October 1976, Design/Drawing by Meredith Monk with print by Monica Moseley.thumb.jpg"
},
{
"title": "153 Vessel 2",
"media": "153_Vessel_2.jpg",
"thumb": "153_Vessel_2.thumb.jpg"
"title": "The Games: a science fiction opera (1983)",
"details": "Schaubühne am Lehniner Platz, Berlin, Germany Designed by Meredith Monk, Ping Chong and Yoshio Yabara",
"media": "2_The Games: a science fiction opera (1983)_Schaubühne am Lehniner Platz, Berlin, Germany Designed by Meredith Monk, Ping Chong and Yoshio Yabara.jpg",
"thumb": "2_The Games: a science fiction opera (1983)_Schaubühne am Lehniner Platz, Berlin, Germany Designed by Meredith Monk, Ping Chong and Yoshio Yabara.thumb.jpg"
},
{
"title": "57 IMPERMENANCE MAP",
"media": "57_IMPERMENANCE_MAP.jpg",
"thumb": "57_IMPERMENANCE_MAP.thumb.jpg"
"title": "ATLAS: an opera in three parts (1991)",
"details": "World premiere flyer 1991",
"media": "3_ATLAS: an opera in three parts (1991)_World premiere flyer 1991.png",
"thumb": "3_ATLAS: an opera in three parts (1991)_World premiere flyer 1991.thumb.png"
},
{
"title": "ATLAS world premiere flyer 1991",
"media": "ATLAS world premiere flyer 1991.jpg",
"thumb": "ATLAS world premiere flyer 1991.thumb.jpg"
"title": "mercy (2002)",
"details": "Brooklyn Academy of Music (BAM), New York, December 2002",
"media": "4_mercy (2002)_Brooklyn Academy of Music (BAM), New York, December 2002.jpg",
"thumb": "4_mercy (2002)_Brooklyn Academy of Music (BAM), New York, December 2002.thumb.jpg"
}
]
},
{
"title": "Quarry 1976 LaMama original poster",
"media": "Quarry_1976_LaMama_original poster.jpg",
"thumb": "Quarry_1976_LaMama_original poster.thumb.jpg"
"title": "Map",
"parent_dir": "images",
"media": "4_Map",
"order": "4",
"images": [
{
"title": "impermanence (2008)",
"details": "Special edition print",
"media": "1_impermanence (2008)_Special edition print.jpg",
"thumb": "1_impermanence (2008)_Special edition print.thumb.jpg"
}
]
},
{
"title": "Indra's Net - Scores and Music Fragments",
"parent_dir": "images",
"media": "5_Indra's Net - Scores and Music Fragments",
"order": "5",
"images": [
{
"title": "Melody themes 1 (2019)",
"media": "59_Melody themes 1 (2019).png",
"thumb": "59_Melody themes 1 (2019).thumb.png"
},
{
"title": "Melody themes 3-6 (2019)",
"media": "60_Melody themes 3-6 (2019).png",
"thumb": "60_Melody themes 3-6 (2019).thumb.png"
},
{
"title": "Melody themes 5 (2019)",
"media": "61_Melody themes 5 (2019).png",
"thumb": "61_Melody themes 5 (2019).thumb.png"
},
{
"title": "Melody themes 6 continued (2019)",
"media": "62_Melody themes 6 continued (2019).png",
"thumb": "62_Melody themes 6 continued (2019).thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page 01",
"media": "01_"Anthem" full score (2023)_Page 01.png",
"thumb": "01_"Anthem" full score (2023)_Page 01.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page 02",
"media": "02_"Anthem" full score (2023)_Page 02.png",
"thumb": "02_"Anthem" full score (2023)_Page 02.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page 03",
"media": "03_"Anthem" full score (2023)_ Page 03.png",
"thumb": "03_"Anthem" full score (2023)_ Page 03.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_04",
"media": "04_"Anthem" full score (2023)_Page_04.png",
"thumb": "04_"Anthem" full score (2023)_Page_04.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_05",
"media": "05_"Anthem" full score (2023)_Page_05.png",
"thumb": "05_"Anthem" full score (2023)_Page_05.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_06",
"media": "06_"Anthem" full score (2023)_Page_06.png",
"thumb": "06_"Anthem" full score (2023)_Page_06.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_07",
"media": "07_"Anthem" full score (2023)_Page_07.png",
"thumb": "07_"Anthem" full score (2023)_Page_07.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_08",
"media": "08_"Anthem" full score (2023)_Page_08.png",
"thumb": "08_"Anthem" full score (2023)_Page_08.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_09",
"media": "09_"Anthem" full score (2023)_Page_09.png",
"thumb": "09_"Anthem" full score (2023)_Page_09.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_10",
"media": "10_"Anthem" full score (2023)_Page_10.png",
"thumb": "10_"Anthem" full score (2023)_Page_10.thumb.png"
},
{
"title": " "Anthem" full score (2023)",
"details": "Page_11",
"media": "11_ "Anthem" full score (2023)_Page_11.png",
"thumb": "11_ "Anthem" full score (2023)_Page_11.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_12",
"media": "12_"Anthem" full score (2023)_Page_12.png",
"thumb": "12_"Anthem" full score (2023)_Page_12.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_13",
"media": "13_"Anthem" full score (2023)_Page_13.png",
"thumb": "13_"Anthem" full score (2023)_Page_13.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_14",
"media": "14_"Anthem" full score (2023)_Page_14.png",
"thumb": "14_"Anthem" full score (2023)_Page_14.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_15",
"media": "15_"Anthem" full score (2023)_Page_15.png",
"thumb": "15_"Anthem" full score (2023)_Page_15.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_16",
"media": "16_"Anthem" full score (2023)_Page_16.png",
"thumb": "16_"Anthem" full score (2023)_Page_16.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_17",
"media": "17_"Anthem" full score (2023)_Page_17.png",
"thumb": "17_"Anthem" full score (2023)_Page_17.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_18",
"media": "18_"Anthem" full score (2023)_Page_18.png",
"thumb": "18_"Anthem" full score (2023)_Page_18.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_19",
"media": "19_"Anthem" full score (2023)_Page_19.png",
"thumb": "19_"Anthem" full score (2023)_Page_19.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_20",
"media": "20_"Anthem" full score (2023)_Page_20.png",
"thumb": "20_"Anthem" full score (2023)_Page_20.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_21",
"media": "21_"Anthem" full score (2023)_Page_21.png",
"thumb": "21_"Anthem" full score (2023)_Page_21.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_22",
"media": "22_"Anthem" full score (2023)_Page_22.png",
"thumb": "22_"Anthem" full score (2023)_Page_22.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_23",
"media": "23_"Anthem" full score (2023)_Page_23.png",
"thumb": "23_"Anthem" full score (2023)_Page_23.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_24",
"media": "24_"Anthem" full score (2023)_Page_24.png",
"thumb": "24_"Anthem" full score (2023)_Page_24.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_25",
"media": "25_"Anthem" full score (2023)_Page_25.png",
"thumb": "25_"Anthem" full score (2023)_Page_25.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_26",
"media": "26_"Anthem" full score (2023)_Page_26.png",
"thumb": "26_"Anthem" full score (2023)_Page_26.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_27",
"media": "27_"Anthem" full score (2023)_Page_27.png",
"thumb": "27_"Anthem" full score (2023)_Page_27.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_28",
"media": "28_"Anthem" full score (2023)_Page_28.png",
"thumb": "28_"Anthem" full score (2023)_Page_28.thumb.png"
},
{
"title": ""Anthem" full score (2023)",
"details": "Page_29",
"media": "29_"Anthem" full score (2023)_Page_29.png",
"thumb": "29_"Anthem" full score (2023)_Page_29.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_01",
"media": "30_/Rotation/ full score (2023)_Page_01.png",
"thumb": "30_/Rotation/ full score (2023)_Page_01.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_02",
"media": "31_/Rotation/ full score (2023)_Page_02.png",
"thumb": "31_/Rotation/ full score (2023)_Page_02.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_03",
"media": "32_/Rotation/ full score (2023)_Page_03.png",
"thumb": "32_/Rotation/ full score (2023)_Page_03.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_04",
"media": "33_/Rotation/ full score (2023)_Page_04.png",
"thumb": "33_/Rotation/ full score (2023)_Page_04.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_05",
"media": "34_/Rotation/ full score (2023)_Page_05.png",
"thumb": "34_/Rotation/ full score (2023)_Page_05.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_06",
"media": "35_/Rotation/ full score (2023)_Page_06.png",
"thumb": "35_/Rotation/ full score (2023)_Page_06.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_07",
"media": "36_/Rotation/ full score (2023)_Page_07.png",
"thumb": "36_/Rotation/ full score (2023)_Page_07.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_08",
"media": "37_/Rotation/ full score (2023)_Page_08.png",
"thumb": "37_/Rotation/ full score (2023)_Page_08.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_09",
"media": "38_/Rotation/ full score (2023)_Page_09.png",
"thumb": "38_/Rotation/ full score (2023)_Page_09.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_10",
"media": "39_/Rotation/ full score (2023)_Page_10.png",
"thumb": "39_/Rotation/ full score (2023)_Page_10.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_11",
"media": "40_/Rotation/ full score (2023)_Page_11.png",
"thumb": "40_/Rotation/ full score (2023)_Page_11.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_12",
"media": "41_/Rotation/ full score (2023)_Page_12.png",
"thumb": "41_/Rotation/ full score (2023)_Page_12.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_13",
"media": "42_/Rotation/ full score (2023)_Page_13.png",
"thumb": "42_/Rotation/ full score (2023)_Page_13.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_14",
"media": "43_/Rotation/ full score (2023)_Page_14.png",
"thumb": "43_/Rotation/ full score (2023)_Page_14.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_15",
"media": "44_/Rotation/ full score (2023)_Page_15.png",
"thumb": "44_/Rotation/ full score (2023)_Page_15.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_16",
"media": "45_/Rotation/ full score (2023)_Page_16.png",
"thumb": "45_/Rotation/ full score (2023)_Page_16.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_17",
"media": "46_/Rotation/ full score (2023)_Page_17.png",
"thumb": "46_/Rotation/ full score (2023)_Page_17.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_18",
"media": "47_/Rotation/ full score (2023)_Page_18.png",
"thumb": "47_/Rotation/ full score (2023)_Page_18.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_19",
"media": "48_/Rotation/ full score (2023)_Page_19.png",
"thumb": "48_/Rotation/ full score (2023)_Page_19.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_20",
"media": "49_/Rotation/ full score (2023)_Page_20.png",
"thumb": "49_/Rotation/ full score (2023)_Page_20.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_21",
"media": "50_/Rotation/ full score (2023)_Page_21.png",
"thumb": "50_/Rotation/ full score (2023)_Page_21.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_22",
"media": "51_/Rotation/ full score (2023)_Page_22.png",
"thumb": "51_/Rotation/ full score (2023)_Page_22.thumb.png"
},
{
"title": ""Rotation" full score (2023)",
"details": "Page_23",
"media": "52_/Rotation/ full score (2023)_Page_23.png",
"thumb": "52_/Rotation/ full score (2023)_Page_23.thumb.png"
},
{
"title": "Chord structure for the beginning of "Rotation" (2013)",
"media": "53_Chord structure for the beginning of /Rotation/ (2013).jpg",
"thumb": "53_Chord structure for the beginning of /Rotation/ (2013).thumb.jpg"
},
{
"title": ""Jewels" sections music material (2013)",
"media": "54_/Jewels/ sections music material (2013).jpg",
"thumb": "54_/Jewels/ sections music material (2013).thumb.jpg"
},
{
"title": "&#34Jewel 2&#34 and &#34Jewel 4&#34 (2019)",
"media": "55_&#47Jewel 2&#47 and &#47Jewel 4&#47 (2019).png",
"thumb": "55_&#47Jewel 2&#47 and &#47Jewel 4&#47 (2019).thumb.png"
},
{
"title": "&#34Jewel 3&#34 (2019)",
"media": "56_&#47Jewel 3&#47 (2019).png",
"thumb": "56_&#47Jewel 3&#47 (2019).thumb.png"
},
{
"title": "&#34Jewel 5&#34 and &#34Jewel 4&#34 (2017-2019)",
"media": "57_&#47Jewel 5&#47 and &#47Jewel 4&#47 (2017-2019).png",
"thumb": "57_&#47Jewel 5&#47 and &#47Jewel 4&#47 (2017-2019).thumb.png"
},
{
"title": "&#34Jewel 5&#34 with syllables (2021)",
"media": "58_&#47Jewel 5&#47 with syllables (2021).png",
"thumb": "58_&#47Jewel 5&#47 with syllables (2021).thumb.png"
},
{
"title": "&#34Rotation&#34 vocal chain (2019)",
"media": "63_&#47Rotation&#47 vocal chain (2019).png",
"thumb": "63_&#47Rotation&#47 vocal chain (2019).thumb.png"
}
]
},
{
"title": "Indra's Net - Notebooks",
"parent_dir": "images",
"media": "6_Indra's Net - Notebooks",
"order": "6",
"images": [
{
"title": "on sound",
"details": "continued (2018-2020)",
"media": "02_on sound, continued (2018-2020).png",
"thumb": "02_on sound, continued (2018-2020).thumb.png"
},
{
"title": "variations for rehearsals",
"details": "on sound dimensions (2018-2020)",
"media": "05_variations for rehearsals, on sound dimensions (2018-2020).png",
"thumb": "05_variations for rehearsals, on sound dimensions (2018-2020).thumb.png"
},
{
"title": "on &#34Rotation&#34 (2018-2020)",
"media": "06_on &#47Rotation&#47 (2018-2020).png",
"thumb": "06_on &#47Rotation&#47 (2018-2020).thumb.png"
},
{
"title": "&#34Indra's Net&#34 form 2 (2020-2022)",
"media": "07_&#47Indra's Net&#47 form 2 (2020-2022).png",
"thumb": "07_&#47Indra's Net&#47 form 2 (2020-2022).thumb.png"
},
{
"title": "&#34Rotation&#34 - Indra principles (2020-2022)",
"media": "08_&#47Rotation&#47 - Indra principles (2020-2022).png",
"thumb": "08_&#47Rotation&#47 - Indra principles (2020-2022).thumb.png"
},
{
"title": "on sound (2018-2020)",
"media": "01_on sound (2018-2020).png",
"thumb": "01_on sound (2018-2020).thumb.png"
},
{
"title": "on time (2018-2020)",
"media": "03_on time (2018-2020).png",
"thumb": "03_on time (2018-2020).thumb.png"
},
{
"title": "images for projection (2018-2020)",
"media": "04_images for projection (2018-2020).png",
"thumb": "04_images for projection (2018-2020).thumb.png"
},
{
"title": "films for projection (2023)",
"media": "09_films for projection (2023).png",
"thumb": "09_films for projection (2023).thumb.png"
},
{
"title": "for Film A and Film B (2023)",
"media": "10_for Film A and Film B (2023).png",
"thumb": "10_for Film A and Film B (2023).thumb.png"
},
{
"title": "movement ideas (2023)",
"media": "11_movement ideas (2023).png",
"thumb": "11_movement ideas (2023).thumb.png"
},
{
"title": "for Film I (2023)",
"media": "12_for Film I (2023).png",
"thumb": "12_for Film I (2023).thumb.png"
},
{
"title": "sections and films chart (2023)",
"media": "13_sections and films chart (2023).png",
"thumb": "13_sections and films chart (2023).thumb.png"
}
]
},
{
"title": "Indra's Net - Visual Script",
"parent_dir": "images",
"media": "7_Indra's Net - Visual Script",
"order": "7",
"images": [
{
"title": "for performances at the Holland Festival (2023) Page 1",
"media": "01_for performances at the Holland Festival (2023) Page 1.jpg",
"thumb": "01_for performances at the Holland Festival (2023) Page 1.thumb.jpg"
},
{
"title": "for performances at the Holland Festival (2023) Page 2",
"media": "02_for performances at the Holland Festival (2023) Page 2.jpg",
"thumb": "02_for performances at the Holland Festival (2023) Page 2.thumb.jpg"
},
{
"title": "for performances at the Holland Festival (2023) Page 3",
"media": "03_for performances at the Holland Festival (2023) Page 3.jpg",
"thumb": "03_for performances at the Holland Festival (2023) Page 3.thumb.jpg"
},
{
"title": "for performances at the Holland Festival (2023) Page 4",
"media": "04_for performances at the Holland Festival (2023) Page 4.jpg",
"thumb": "04_for performances at the Holland Festival (2023) Page 4.thumb.jpg"
},
{
"title": "for performances at the Holland Festival (2023) Page 5",
"media": "05_for performances at the Holland Festival (2023) Page 5.jpg",
"thumb": "05_for performances at the Holland Festival (2023) Page 5.thumb.jpg"
},
{
"title": "for performances at the Holland Festival (2023) Page 6",
"media": "06_for performances at the Holland Festival (2023) Page 6.jpg",
"thumb": "06_for performances at the Holland Festival (2023) Page 6.thumb.jpg"
}
]
}

View File

@ -50,91 +50,91 @@
"album": true,
"tracks": [
{
"title": "01 Announcer MM speaks Porch 1",
"title": "Announcer MM speaks Porch 1",
"media": "01 Announcer_MM speaks_Porch_1.mp3"
},
{
"title": "02 Mesa",
"title": "Mesa",
"media": "02 Mesa.mp3"
},
{
"title": "03 Jade (Old Woman's Song)",
"title": "Jade (Old Woman's Song)",
"media": "03 Jade (Old Woman's Song).mp3"
},
{
"title": "04 Wa-lie-oh",
"title": "Wa-lie-oh",
"media": "04 Wa-lie-oh.mp3"
},
{
"title": "05 Insect",
"title": "Insect",
"media": "05 Insect.mp3"
},
{
"title": "06 Descending",
"title": "Descending",
"media": "06 Descending.mp3"
},
{
"title": "07 Silo (Drone)",
"title": "Silo (Drone)",
"media": "07 Silo (Drone).mp3"
},
{
"title": "08 Breath Song",
"title": "Breath Song",
"media": "08 Breath Song.mp3"
},
{
"title": "09 Bird Code",
"title": "Bird Code",
"media": "09 Bird Code.mp3"
},
{
"title": "10 Lullaby #4",
"title": "Lullaby #4",
"media": "10 Lullaby #4.mp3"
},
{
"title": "11 Prairie Ghost",
"title": "Prairie Ghost",
"media": "11 Prairie Ghost.mp3"
},
{
"title": "12 Prairie Ghost",
"title": "Prairie Ghost",
"media": "12 Prairie Ghost.mp3"
},
{
"title": "13 Jew's Harp",
"title": "Jew's Harp",
"media": "13 Jew's Harp.mp3"
},
{
"title": "14 Scared Song",
"title": "Scared Song",
"media": "14 Scared Song.mp3"
},
{
"title": "15 Travelling",
"title": "Travelling",
"media": "15 Travelling.mp3"
},
{
"title": "16 I Don't Know",
"title": "I Don't Know",
"media": "16 I Don't Know.mp3"
},
{
"title": "17 I Don't Know cont-",
"title": "I Don't Know cont-",
"media": "17 I Don't Know cont-.mp3"
},
{
"title": "18 Window in 7's Double Fiesta",
"title": "Window in 7's Double Fiesta",
"media": "18 Window in 7's_Double Fiesta.mp3"
},
{
"title": "19 Double Fiesta cont",
"title": "Double Fiesta cont",
"media": "19 Double Fiesta cont.mp3"
},
{
"title": "20 Do You Be",
"title": "Do You Be",
"media": "20 Do You Be.mp3"
},
{
"title": "21 Ellis Island",
"title": "Ellis Island",
"media": "21 Ellis Island.mp3"
},
{
"title": "22 The Tale",
"title": "The Tale",
"media": "22 The Tale.mp3"
}
]

View File

@ -180,7 +180,7 @@ Other flags
}
if (order) {
const idx = m.match(/\d+/)[0] || 0
const idx = m.match(/\d+/) ? m.match(/\d+/)[0] : 0
_r.order = idx
_r.title = _r.title.replace(/^\d+\W*_*/, '')
}
@ -208,14 +208,29 @@ Other flags
let files = await fs.readdir(rDir)
// filterout any rogue folders
// generate the metadata for each file
files = files.filter(f => f.match(/\.[^/.]+$/))
files = files.filter(f => f.match(/(?<!\.thumb)\.[^.]+$/))
files = files.map(f => {
const { title, details } = genMetadata(f, formatted == 'recurse' || formatted == 'both', false)
return { title, details, media: f }
})
// sort files by leading nuber (if exists)
files.sort((a, b) => {
const valA = a.title.match(/\d+/) ? a.title.match(/\d+/)[0] : 0
const valB = b.title.match(/\d+/) ? b.title.match(/\d+/)[0] : 0
return parseInt(valA) - parseInt(valB)
})
// remove leading number from tile &
// sanitize title for html unicode characters
files.forEach(f => {
f.title = f.title.replace(/^\d+(\s+|_)/, '')
f.title = f.title.replaceAll('&#47', '&#34')
})
// if images only
if (imagesOnly) {
// setup object per image in array
_r.images = files.filter(f => !f.media.match(/\.thumb\.[^/.]{1,4}$/i))
} else {
@ -260,24 +275,28 @@ Other flags
}
}
function genMetadata(dir, formatted) {
function genMetadata(path, formatted) {
let title, details
const cleanPath = path.replace(/^\d+(_|.)/, '')
// if formatted flag set
if (formatted) {
// split the incoming name from the map on the '_'
// and set the first element to title, and the second to details
let [ t, _, d ] = dir.split(/(,|_)(.+)/s)
let [ t, _, d ] = cleanPath.split(/(,|_)(.+)/s)
// assign to return object
title = t
details = d ? d.replace(/\.+(mp\d|m\dv)$/i, '').trim() : ''
} else {
// else just set title to filename without extensions
const name = dir.replace(/\.\S{3,4}$/, '')
const name = cleanPath.replace(/\.\S{3,4}$/, '')
title = name.replace(/_/g, ' ')
}
title = title.replace(/\.\w+$/, '')
details = details ? details.replace(/\.\w+$/, '') : undefined
return { title, details }
}

View File

@ -1,64 +0,0 @@
import fs from 'fs/promises'
import path from 'path'
import { watch } from 'chokidar'
function main() {
let watchDir = ''
let sections = []
process.argv.forEach((val, i) => {
switch (val) {
case '-i':
watchDir = process.argv[i + 1] || ''
break
default:
break
}
})
if (!watchDir) {
console.error('no directory passed')
}
const w = watch(watchDir, {
persistent: true,
awaitWriteFinish: {
stabilityThreshold: 2000,
pollInterval: 100
},
})
w.on('ready',() => {
console.log('Watching', watchDir, 'for changes.')
// check each section against json file
console.log(sections)
})
w.on('add', (filePath) => {
fileAddedHandler(filePath, sections)
})
w.on('change', path => console.log(`File ${path} has been changed`))
w.on('unlink', path => console.log(`File ${path} has been removed`))
}
function fileAddedHandler(filePath, array) {
let section, media
let fp = filePath.replace(/^\.+/, '')
fp = path.parse(fp).dir.split(path.sep)
console.log(fp)
// 5 is recurse 4 is not
console.log(fp[3], fp.length)
section = fp[3]
media = fp[4]
console.log(media)
}
main()

View File

@ -1,6 +1,5 @@
import { LitElement, css, html, unsafeCSS } from 'lit'
import Router from './api/Router.js'
import { Task } from '@lit-labs/task'
import MainCSS from './assets/styles/main.scss?inline'
@ -39,6 +38,8 @@ export class App extends LitElement {
img.src = src
this.dialogEl.appendChild(img)
detail.details = 'some details to add to the image to see if this aligns properly'
if (detail.details) {
const div = document.createElement('div')
const p = document.createElement('p')
@ -77,6 +78,14 @@ export class App extends LitElement {
dialog {
margin: auto;
border: none;
outline: none;
display: grid;
grid-template-rows: minmax(0em, 1fr) auto;
max-height: calc(100vmin - 2em);
> * {
margin-inline: auto;
}
& div {
padding-block-start: 1em;
@ -85,8 +94,8 @@ export class App extends LitElement {
& img {
display: block;
max-height: calc(100vmin - 2em);
max-width: calc(100vmin - 2em);
height: 100%;
object-fit: contain;
}
}

View File

@ -115,7 +115,7 @@ export default new Router({
title: 'Scores, Posters, Ephemera',
short: 'images',
icon: 'camera',
disabled: true,
disabled: false,
plugins: [
lazy(() => import('../views/images.js'))
],

View File

@ -31,7 +31,7 @@ class VerticalCard extends LitElement {
return html`
<div @click=${this.select} class=${this.selected ? 'selected' : ''}>
<picture>
<img src="/media${Router.route.path}/${this.details.image}">
<img src="${encodeURIComponent(`/media${Router.route.path}/${this.details.image}`)}">
</picture>
<aside>
<p class="title">${this.details?.title}</p>

View File

@ -1,4 +1,5 @@
import { LitElement, css, html, unsafeCSS } from 'lit'
import {unsafeHTML} from 'lit/directives/unsafe-html.js'
import { Task } from '@lit-labs/task'
import Router from '../api/Router.js'
@ -28,9 +29,13 @@ class ImageView extends LitElement {
const json = await res.json()
json.forEach(i => i.path = `/media${Router.route.path}/${i.media}`)
json.forEach(i => {
console.log(i)
i.path = `/media${Router.route.path}/${i.media}`
}
)
console.log(json[0])
console.log(json)
this.images = json
} catch (err) {
@ -44,7 +49,7 @@ class ImageView extends LitElement {
console.log(target.details)
const event = new CustomEvent('single-fullscreen-image', {
bubbles: true, composed: true,
detail: { ...target.details, src: `/media${Router.route.path}/${target.details.section}/${target.details.media}` }
detail: { ...target.details, src: encodeURIComponent(`/media${Router.route.path}/${target.details.section}/${target.details.media}`) }
})
this.dispatchEvent(event)
@ -52,8 +57,6 @@ class ImageView extends LitElement {
render() {
return html`
<!-- <mm-img-carousel .images=${this.images}></mm-img-carousel> -->
${this.images.length > 0 ?
html`
<div class="gallery">
@ -67,7 +70,7 @@ class ImageView extends LitElement {
i => html`
<mm-vcard
@click=${this.selectImage}
.details=${ { ...i, section: section.media, image: `${section.media}/${i.thumb}` } }
.details=${ { ...i, title: unsafeHTML(i.title), section: section.media, image: `${section.media}/${i.thumb}` } }
?selected=${i.title == this.selected?.title}
>
</mm-vcard>
@ -98,6 +101,7 @@ class ImageView extends LitElement {
mm-vcard {
--color: var(--green-400, lime);
--width: 8em;
}
header {
@ -111,8 +115,8 @@ class ImageView extends LitElement {
main {
display: grid;
gap: 0.75em;
grid-template-columns: repeat(7, 1fr);
grid-auto-rows: 10em;
grid-template-columns: repeat(5, 1fr);
grid-auto-rows: 15em;
}