:snake
This commit is contained in:
commit
d54d598e29
1 changed files with 104 additions and 0 deletions
104
main.py
Normal file
104
main.py
Normal file
|
@ -0,0 +1,104 @@
|
|||
import pybtex.database
|
||||
from pybtex import errors
|
||||
import sys
|
||||
|
||||
def bibtex_to_html(bibtex_file_path, html_file_path):
|
||||
# Load the BibTeX file
|
||||
try:
|
||||
bib_data = pybtex.database.parse_file(bibtex_file_path)
|
||||
except errors.BibliographyDataNotFoundError as e:
|
||||
print(f"ERROR: {e}")
|
||||
return
|
||||
|
||||
# Create the HTML file
|
||||
with open(html_file_path, "w") as f:
|
||||
|
||||
f.write("<html>\n<head>\n<title>Bibliography</title>\n</head>\n<body>\n")
|
||||
|
||||
# Write the journal papers section
|
||||
f.write("<h2>Journals</h2>\n")
|
||||
f.write("<hr>\n")
|
||||
f.write("<ol>\n")
|
||||
|
||||
# Loop through each journal entry in the BibTeX file
|
||||
for key, entry in bib_data.entries.items():
|
||||
if "journal" in entry.fields:
|
||||
f.write("<li>\n")
|
||||
|
||||
# Write the citation key
|
||||
#f.write(f"<strong>{key}</strong><br/>\n")
|
||||
|
||||
# Write the authors
|
||||
if "author" in entry.persons:
|
||||
authors = entry.persons["author"]
|
||||
f.write("; ".join(str(author) for author in authors))
|
||||
f.write("<br/>\n")
|
||||
|
||||
# Write the title
|
||||
if "title" in entry.fields:
|
||||
f.write(f"<strong>{entry.fields['title']}</strong><br/>\n")
|
||||
|
||||
# Write the publication information
|
||||
f.write(f"{entry.fields['journal']}, ")
|
||||
if "volume" in entry.fields:
|
||||
f.write(f"vol. {entry.fields['volume']}")
|
||||
if "number" in entry.fields:
|
||||
f.write(f"({entry.fields['number']})")
|
||||
if "pages" in entry.fields:
|
||||
f.write(f", pp. {entry.fields['pages']}")
|
||||
if "year" in entry.fields:
|
||||
f.write(f", {entry.fields['year']}")
|
||||
|
||||
f.write("<br/>\n")
|
||||
f.write("</li>\n")
|
||||
|
||||
f.write("</ol>\n")
|
||||
|
||||
# Write the conference papers section
|
||||
f.write("<h2>Conferences</h2>\n")
|
||||
f.write("<hr>\n")
|
||||
f.write("<ol>\n")
|
||||
|
||||
# Loop through each conference entry in the BibTeX file
|
||||
for key, entry in bib_data.entries.items():
|
||||
if "booktitle" in entry.fields:
|
||||
f.write("<li>\n")
|
||||
|
||||
# Write the citation key
|
||||
# f.write(f"<strong>{key}</strong><br/>\n")
|
||||
|
||||
# Write the authors
|
||||
if "author" in entry.persons:
|
||||
authors = entry.persons["author"]
|
||||
f.write("<em>")
|
||||
f.write("; ".join(str(author) for author in authors))
|
||||
f.write("</em>");
|
||||
f.write("<br/>\n")
|
||||
|
||||
# Write the title
|
||||
if "title" in entry.fields:
|
||||
print(entry.fields['title'])
|
||||
f.write(f"<strong>{entry.fields['title']}</strong><br/>\n")
|
||||
|
||||
# Write the publication information
|
||||
f.write(f"In <em>{entry.fields['booktitle']}</em>")
|
||||
if "pages" in entry.fields:
|
||||
f.write(f", pp. {entry.fields['pages']}")
|
||||
if "year" in entry.fields:
|
||||
f.write(f", {entry.fields['year']}")
|
||||
|
||||
f.write("<br/>\n")
|
||||
f.write("</li>\n")
|
||||
|
||||
f.write("</ol>\n")
|
||||
f.write("</body>\n</html>\n")
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) != 3:
|
||||
print("Usage: python bibtex_to_html.py input.bib output.html")
|
||||
sys.exit(1)
|
||||
|
||||
input_file_path = sys.argv[1]
|
||||
output_file_path = sys.argv[2]
|
||||
|
||||
bibtex_to_html(input_file_path, output_file_path)
|
Loading…
Reference in a new issue