I did this with a small piece of Scheme.
%% Bookpart first page and last page predicates
#(define (not-part-first-page layout props arg)
(if (= (chain-assoc-get 'page:page-number props -1)
(ly:output-def-lookup layout 'first-page-number))
empty-stencil
(interpret-markup layout props arg)))
\paper {
print-page-number = ##t
print-first-page-number = ##f
oddHeaderMarkup = \markup {
\on-the-fly #print-page-number-check-first
\fill-line {
\on-the-fly #not-part-first-page \fromproperty #'header:poet
\line {
\titleLeft
\titleKern
\emDash
\pageNumberKern
\lower #0.55 \fontsize #6 \fromproperty #'page:page-number-string
\pageNumberKern
\emDash
\titleKern
\titleRight
}
\on-the-fly #not-part-first-page \fromproperty #'header:composer
}
}
evenHeaderMarkup = \oddHeaderMarkup
oddFooterMarkup = \markup { \fill-line { \fromproperty #'header:copyright } }
evenFooterMarkup = \oddFooterMarkup
}