Talk:List of performers at the Metropolitan Opera

Latest comment: 9 months ago by Michael Bednarek in topic Met to Wikitable

Need

edit

Does an encyclopedia really need this list, which is by necessity unstable and constantly evolving? Why not simply have a sentence in the main article on the Metropolitan Opera which links to the source? -- Michael Bednarek (talk) 13:32, 8 October 2009 (UTC)Reply

  • I like this list because it gives a good concept of the Met's history. Much of the list is stable because the majority of the artist's are dead or retired. I personally think its handy because it gives a link to biographies on the performers, something the Met site doesn't do. Besides any list chronicling current events, places, people, etc. is bound to be unstable to an extent. Should we not have a list of opera companies because some new ones might be started or some might go bust? As long as we mark when it was last updated I don't see that there is any problem here.Singingdaisies (talk) 13:43, 8 October 2009 (UTC)Reply
Yes, the list should be updated (see the next section). If no one can guarantee it to be up to date, the link to the http://archives.metoperafamily.org/archives/singers.xml source] would indeed be a much better idea! 85.1.41.185 (talk) 21:49, 19 April 2011 (UTC)Reply
Those who wish to go to the Met website are free to do so and an external link is provided.4meter4 (talk) 22:02, 19 April 2011 (UTC)Reply

Version control

edit

The list should be updated since the information is "as of 2009". The MET database has been updated. There should be some version control out here. 85.1.41.185 (talk) 21:48, 19 April 2011 (UTC)Reply

I would suggest to delete this page and add a link to the MET Database, instead.85.1.41.185 (talk) 21:51, 19 April 2011 (UTC)Reply
That would be not very helpful, as the benefit of creating this list is to link to the wiki biographies on the artists. Anyone may update this list at anytime.4meter4 (talk) 22:01, 19 April 2011 (UTC)Reply
The list is now current with the Met archives list.4meter4 (talk) 22:47, 19 April 2011 (UTC)Reply

Dates/ Update

edit

I have begun the task of updating this page. I'm finished up to James Morris. Should I switch the date out with today's concerning when it was last updated, or wait until I'm done?LM103 (talk) 00:56, 10 July 2012 (UTC)Reply

Where is Mitropoulos ?

edit

Is it normal that Dimitri Mitropoulos is missing from this list? I do not think so! The number is : 208 - December 1954 to april 1960... Just a little oblivion... Patachonf (talk) 17:49, 21 September 2013 (UTC)Reply

The introduction to this article states that it lists performers with at least 240 appearances, so Dimitri Mitropoulos with 208 doesn't make it. -- Michael Bednarek (talk) 07:12, 22 September 2013 (UTC)Reply

Met to Wikitable

edit

The following Excel VBA code will take the Met's web table and convert it to a wiki table.

Option Explicit

Public Sub MetToWiki()

' Copy https://archives.metopera.org/MetOperaSearch/report.jsp to sheet "Met".
' Copy Wiki source text from "List of performers at the Metropolitan Opera" to sheet "WikiOld";
' this will be used to extract disambiguators from the current Wikipedia page and apply them to the new one.
' The code below will produce wikitext in sheet "Output" for the table at the Wikipedia article "List of performers at the Metropolitan Opera".
' Names that resolve to disambiguation pages need to be manually adjusted.

' Version 2 (17 March 2024)
' The Metropolitan Opera database no longer provides the "Category" column (voice type, conductor, dancer, etc)
' This code now preserves the existing categories (wiki table column 3) in the dictionary
' and injects them into the output table.
' The Met database previously listed names as "last, first"; now they are listed "first last".
' The Met list shows 1 entry "unknown", which this code skips.

Dim rowRow As Range
Dim strCell As String
Dim lngPComma As Long
Dim shtInput As Worksheet
Dim shtOutput As Worksheet
Dim lngOutRow As Long
Dim strString As String
Dim strKey As String
Dim strValue(2) As Variant
Dim strCategory As String
Dim strDab As String
Dim strFirst As String
Dim strLast As String
Dim dicDict As Scripting.Dictionary
Dim dicCategory As Scripting.Dictionary

' Early binding, requires Tools/References: Microsoft Scripting Runtime (scrrun.dll)
Set dicDict = New Scripting.Dictionary

' Read old wikitext to obtain disambiguators for names; store in dictionary
With ActiveWorkbook.Sheets("WikiOld")
  For Each rowRow In .Cells(1).CurrentRegion
    With rowRow
      strCell = .Cells(1)
      If Not strCell = "|-" Then ' skip wiki table row separators
        ' extract 1st column
        strString = Mid(strCell, 2, InStr(2, strCell, " || ") - 4)
        If InStr(1, strString, "{{sortname") = 0 Then ' no {{sortname}} in wiki table row
          strKey = Trim(Mid(strCell, 2, InStr(2, strCell, "||") - 2))
        Else
          ' split 1st and last name, the dictionary key
          strKey = Split(strString, "|")(1) & " " & Replace(Split(strString, "|")(2), "}}", "")
        End If
        ' extract Category (text between 2nd and 3rd double pipe (||) – 1st element in dictionary value
        strValue(1) = LCase(Split(strCell, "||")(2))
' Debug.Print strKey, strValue(1)
        
        strValue(2) = "" ' blank dab value
        ' (the nested if's below is ugly code – the 2 duplicate operations could be combined – but the result would be slower)
        ' detect disambiguator
        lngPComma = InStr(1, strCell, "|dab=", vbTextCompare)
        If lngPComma > 0 Then
          ' obtain "disambiguator" and/or "nolink" – 2nd elemeny in dictionary value
          strValue(2) = Mid(strCell, lngPComma, InStr(lngPComma, strCell, "}}") - lngPComma)
' Debug.Print strValue(2)
        Else ' no disambiguator, detect nolink
          lngPComma = InStr(1, strCell, "|nolink=1", vbTextCompare)
          If lngPComma > 0 Then
            strValue(2) = Mid(strCell, lngPComma, InStr(lngPComma, strCell, "}}") - lngPComma)
' Debug.Print strValue(2)
          End If
        End If
        If Not dicDict.Exists(strKey) Then ' test for duplicates in wiki table and silently drop them
          dicDict.Add strKey, strValue
        End If
      End If
    End With
  Next rowRow
End With
' Stop 'Debug

With ActiveWorkbook
  If .Sheets("Output") Is Nothing Then
    Set shtOutput = .Sheets.Add(after:=.Sheets(.Sheets.Count))
    shtOutput.Name = "Output"
  Else
    Set shtOutput = .Sheets("Output")
    shtOutput.Cells.Delete
  End If
End With

Set shtInput = ActiveWorkbook.Sheets("Met")
shtInput.Activate
lngOutRow = -1
For Each rowRow In Range(Cells(2, "A"), Cells(Range("A1").CurrentRegion.Rows.Count, "E")).Rows
  With rowRow
    If Not IsEmpty(.Cells(1)) Then
      strKey = .Cells(1, "A") ' name (first last)
      If Not strKey = "unknown" Then ' faulty Met entry
        lngOutRow = lngOutRow + 2
        strCategory = ""
        strDab = ""
        If dicDict.Exists(strKey) Then ' retrieve Category and dab from preceding wiki table
          strCategory = dicDict(strKey)(1)
          strDab = dicDict(strKey)(2)
        End If
        ' split (simply) strKey into 1st last for {{sortname}}
        lngPComma = InStrRev(strKey, " ")
        strFirst = Left(strKey, lngPComma - 1)
        strLast = Mid(strKey, lngPComma + 1) & strDab
        ' Debug.Print strLast, strFirst
        shtOutput.Cells(lngOutRow, "A") = "|{{sortname|" & strFirst & "|" & strLast & "}}" & " || "
        shtOutput.Cells(lngOutRow, "A") = shtOutput.Cells(lngOutRow, "A") & .Cells(1, "B") & " || " & strCategory & " || "
        shtOutput.Cells(lngOutRow, "A") = shtOutput.Cells(lngOutRow, "A") & "style=""text-align:right;"" | {{dts|" & Format(DateValue(.Cells(1, "C")), "d mmmm yyyy") & "}} || "
        shtOutput.Cells(lngOutRow, "A") = shtOutput.Cells(lngOutRow, "A") & "style=""text-align:right;"" | {{dts|" & Format(DateValue(.Cells(1, "D")), "d mmmm yyyy") & "}}"
        shtOutput.Cells(lngOutRow + 1, "A") = "|-"
      End If
    End If
  End With
Next rowRow

shtOutput.Activate
MsgBox "Done.", vbOKOnly, "MetToWiki"
End Sub

-- Michael Bednarek (talk) 12:16, 21 September 2019 (UTC)Reply

Updated to V2. -- Michael Bednarek (talk) 12:27, 17 March 2024 (UTC)Reply

Met report new format

edit

Unfortunately, the new format of the "Performers Report" omits the descriptive column "Category". The template {{Annotated link}} could be used to insert Wikipedia's "Short description" from those articles, but doing that for several hundred articles may turn out to be too expensive, and the result may be unsatisfactory anyway, and certainly not as concise as the current descriptor. But without such a descriptor, the list is just a duplication of the list at the Metropolitan Opera (see discussion above) and without a raison d'être on Wikipedia (and fewer than a dozen articles link to it). Also, adding the necessary instructions into the code above might be non-trivial.

The alternative, apart from abandoning the list, is to update it manually. I don't see much appetite for that. Thoughts? Pinging 4meter4 who created this list in 2008. -- Michael Bednarek (talk) 08:06, 16 March 2024 (UTC)Reply

If there is a way to keep the list functional I think it would be beneficial to hold onto it. I don't mind updating it manually every now and then.4meter4 (talk) 14:07, 16 March 2024 (UTC)Reply
After thinking about the problem of the missing "Category" column a bit, the solution revealed itself: carry it over from the current table. This required a bit of coding, but the basic principle of carrying information from the previous wiki table into new Met data was already in the program – it just needed to be expanded. While at it, I also lowercased the category entries and showed full dates.

The code above is not very robust and has almost no error checking. It requires the wikitext to be in a specific format. In the wiki version before today someone left two adjacent pipes in the {{sortname}}, resulting in faulty output; it took me more than 1/2 hour to find the cause. I'm sure that changing the order of parameters |dab= and |nolink= in {{sortname}} will break things.

Once the data is imported, quite a bit of manual clean-up is needed. New entries will have no "Category" column, and if they don't have an article, it can be laborious to find them. This would be reduced if we would cut the table of at 200 performances. This would roughly halve the table, but it would also drop a significant number of famous singers. Well, that's my work for today, and I don't expect to refresh the list for the next 12 month. If anyone updates individual entries in the meantime (linking, unlinking), please stick to the existing format as slavishly as you can.-- Michael Bednarek (talk) 12:26, 17 March 2024 (UTC)Reply