@cds2hep_marc.over('<STR_LIT>', '<STR_LIT>')<EOL>def urls(self, key, value):
def _is_preprint(value):<EOL><INDENT>return value.get('<STR_LIT:y>', '<STR_LIT>').lower() == '<STR_LIT>'<EOL><DEDENT>def _is_fulltext(value):<EOL><INDENT>return value['<STR_LIT:u>'].endswith('<STR_LIT>') and value['<STR_LIT:u>'].startswith('<STR_LIT>')<EOL><DEDENT>def _is_local_copy(value):<EOL><INDENT>return '<STR_LIT>' in value.get('<STR_LIT:y>', '<STR_LIT>')<EOL><DEDENT>def _is_ignored_domain(value):<EOL><INDENT>ignored_domains = ['<STR_LIT>', '<STR_LIT>',<EOL>'<STR_LIT>', '<STR_LIT>',<EOL>'<STR_LIT>', '<STR_LIT>',<EOL>'<STR_LIT>']<EOL>return any(value['<STR_LIT:u>'].startswith(domain) for domain in ignored_domains)<EOL><DEDENT>field_8564 = self.get('<STR_LIT>', [])<EOL>field_FFT = self.get('<STR_LIT>', [])<EOL>if '<STR_LIT:u>' not in value:<EOL><INDENT>return field_8564<EOL><DEDENT>url = escape_url(value['<STR_LIT:u>'])<EOL>if _is_fulltext(value) and not _is_preprint(value):<EOL><INDENT>if _is_local_copy(value):<EOL><INDENT>description = value.get('<STR_LIT:y>', '<STR_LIT>').replace('<STR_LIT>', '<STR_LIT>')<EOL>field_8564.append({<EOL>'<STR_LIT:u>': url,<EOL>'<STR_LIT:y>': description,<EOL>})<EOL><DEDENT>else:<EOL><INDENT>_, file_name = os.path.split(urllib.parse.urlparse(value['<STR_LIT:u>']).path)<EOL>_, extension = os.path.splitext(file_name)<EOL>field_FFT.append({<EOL>'<STR_LIT:t>': '<STR_LIT>',<EOL>'<STR_LIT:a>': url,<EOL>'<STR_LIT:d>': value.get('<STR_LIT:y>', '<STR_LIT>'),<EOL>'<STR_LIT:n>': file_name,<EOL>'<STR_LIT:f>': extension,<EOL>})<EOL><DEDENT><DEDENT>elif not _is_ignored_domain(value):<EOL><INDENT>field_8564.append({<EOL>'<STR_LIT:u>': url,<EOL>'<STR_LIT:y>': value.get('<STR_LIT:y>'),<EOL>})<EOL><DEDENT>self['<STR_LIT>'] = field_FFT<EOL>return field_8564<EOL>
Populate the ``8564`` MARC field.

    Also populate the ``FFT`` field through side effects.