def workspace_find(ctx, file_grp, mimetype, page_id, file_id, output_field, download): """ Find files. (If any ``FILTER`` starts with ``//``, then its remainder will be interpreted as a regular expression.) """ modified_mets = False ret = list() workspace = Workspace(ctx.resolver, directory=ctx.directory, mets_basename=basename(ctx.mets_url)) for f in workspace.mets.find_files( ID=file_id, fileGrp=file_grp, mimetype=mimetype, pageId=page_id, ): if download and not f.local_filename: workspace.download_file(f) modified_mets = True ret.append([f.ID if field == 'pageId' else getattr(f, field) or '' for field in output_field]) if modified_mets: workspace.save_mets() if 'pageId' in output_field: idx = output_field.index('pageId') fileIds = list(map(lambda fields: fields[idx], ret)) pages = workspace.mets.get_physical_pages(for_fileIds=fileIds) for fields, page in zip(ret, pages): fields[idx] = page or '' for fields in ret: print('\t'.join(fields))
def workspace_find(ctx, file_grp, local_only, mimetype, group_id, file_id, output_field, download): """ Find files. """ workspace = Workspace(ctx.resolver, directory=ctx.directory) for f in workspace.mets.find_files( ID=file_id, fileGrp=file_grp, local_only=local_only, mimetype=mimetype, groupId=group_id, ): if download: workspace.download_file(f, subdir=f.fileGrp) workspace.save_mets() ret = '\t'.join([getattr(f, field) or '' for field in output_field]) print(ret)
def workspace_find(ctx, file_grp, mimetype, page_id, file_id, output_field, download): """ Find files. """ workspace = Workspace(ctx.resolver, directory=ctx.directory, mets_basename=ctx.mets_basename) for f in workspace.mets.find_files( ID=file_id, fileGrp=file_grp, mimetype=mimetype, pageId=page_id, ): if download: workspace.download_file(f) workspace.save_mets() ret = '\t'.join([getattr(f, field) or '' for field in output_field]) print(ret)