c2d63f068433c6f321c57b380733ace4bbec12b7 lrnassar Thu Mar 26 13:21:13 2026 -0700 Fix UnboundLocalError in buildPublicSessionThumbnailsIndexPage.py when sessions have unusual names that cause the trash line parsing to fail. Skip sessions where sessionUrl was not set instead of crashing. No RM. Co-Authored-By: Claude Opus 4.6 (1M context) diff --git src/utils/qa/buildPublicSessionThumbnailsIndexPage.py src/utils/qa/buildPublicSessionThumbnailsIndexPage.py index f4a86464ca2..9e4955a3d7e 100755 --- src/utils/qa/buildPublicSessionThumbnailsIndexPage.py +++ src/utils/qa/buildPublicSessionThumbnailsIndexPage.py @@ -23,41 +23,49 @@ " buildPublicSessionThumbnailsIndexPage /cluster/home/lrnassar/kent/src/hg/htdocs/\n") exit(0) parser._action_groups.append(optional) options = parser.parse_args() return options def queryHgPublicSessAndAssignOutputFileAndDir(saveDir): """Curl hgPublicSession and assign output file name/directory""" hgPublicSessionOutPut = requests.get('https://genome.ucsc.edu/cgi-bin/hgPublicSessions') outputFile = open(saveDir+'thumbNailLinks.html', 'w') return(hgPublicSessionOutPut, outputFile) def parseHgPublicSessPageAndWriteOut(hgPublicSessionOutPut, saveDir, outputFile): """Parse hgPublicSession curled page, extract thumbnail/url/description and write out to file""" sessionThumbNailsWritten = 1 + sessionUrl = None + currentImageFileName = None for line in hgPublicSessionOutPut.text.split('\n'): if "trash" in line and sessionThumbNailsWritten < 4: sessionUrl = "https://genome.ucsc.edu/cgi-bin/"+line.split('"')[1].split("/")[2] trashDirUrl = line.split('"')[3] downloadThumbNailUrl = "https://genome.ucsc.edu/trash/hgPS/"+trashDirUrl.split("/")[3] currentImageFileName = 'sessionThumbNail'+str(sessionThumbNailsWritten)+'.png' img_data = requests.get(downloadThumbNailUrl).content with open(saveDir+currentImageFileName, 'wb') as handler: handler.write(img_data) os.chmod(saveDir+currentImageFileName, 0o664) if "Description:" in line and sessionThumbNailsWritten < 4: + if sessionUrl is None or currentImageFileName is None: + sessionUrl = None + currentImageFileName = None + continue sessionThumbNailsWritten+=1 sessionDescription = line.split(' ')[1].split('
')[0] outputFile.write('''\n\n''') + sessionUrl = None + currentImageFileName = None outputFile.close() os.chmod(saveDir+'thumbNailLinks.html', 0o775) def main(): options = parseArgs() saveDir = options.saveDir hgPublicSessionOutPut, outputFile = queryHgPublicSessAndAssignOutputFileAndDir(saveDir) parseHgPublicSessPageAndWriteOut(hgPublicSessionOutPut, saveDir, outputFile) main()