GetRD / academic-file-converter

📚 Import Bibtex publications and Jupyter Notebook blog posts into your Markdown website or book. 将Bibtex转换为Markdown网站

Home Page:https://docs.hugoblox.com/reference/content-types/#automatically-import-publications-from-bibtex

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TypeError: combining() argument must be a unicode character, not str

brimwats1 opened this issue · comments

Python 3.8.
Most recent version of academic-admin

PS C:\Users\Brian\Documents\GitHub\me> academic import --bibtex 'C:\Users\Brian\Downloads\MyLibrary.bib' Traceback (most recent call last): File "c:\python38\lib\runpy.py", line 192, in _run_module_as_main return _run_code(code, main_globals, None, File "c:\python38\lib\runpy.py", line 85, in _run_code exec(code, run_globals) File "C:\Python38\Scripts\academic.exe\__main__.py", line 9, in <module> File "c:\python38\lib\site-packages\academic\cli.py", line 50, in main parse_args(sys.argv[1:]) # Strip command name, leave just args. File "c:\python38\lib\site-packages\academic\cli.py", line 104, in parse_args import_bibtex(known_args.bibtex, File "c:\python38\lib\site-packages\academic\cli.py", line 126, in import_bibtex bib_database = bibtexparser.load(bibtex_file, parser=parser) File "c:\python38\lib\site-packages\bibtexparser\__init__.py", line 71, in load return parser.parse_file(bibtex_file) File "c:\python38\lib\site-packages\bibtexparser\bparser.py", line 177, in parse_file return self.parse(file.read(), partial=partial) File "c:\python38\lib\site-packages\bibtexparser\bparser.py", line 155, in parse self._expr.parseFile(bibtex_file_obj) File "c:\python38\lib\site-packages\bibtexparser\bibtexexpression.py", line 286, in parseFile return self.main_expression.parseFile(file_obj, parseAll=True) File "c:\python38\lib\site-packages\pyparsing.py", line 2561, in parseFile return self.parseString(file_contents, parseAll) File "c:\python38\lib\site-packages\pyparsing.py", line 1935, in parseString loc, tokens = self._parse(instring, 0) File "c:\python38\lib\site-packages\pyparsing.py", line 1675, in _parseNoCache loc, tokens = self.parseImpl(instring, preloc, doActions) File "c:\python38\lib\site-packages\pyparsing.py", line 4762, in parseImpl return super(ZeroOrMore, self).parseImpl(instring, loc, doActions) File "c:\python38\lib\site-packages\pyparsing.py", line 4688, in parseImpl loc, tmptokens = self_expr_parse(instring, preloc, doActions) File "c:\python38\lib\site-packages\pyparsing.py", line 1675, in _parseNoCache loc, tokens = self.parseImpl(instring, preloc, doActions) File "c:\python38\lib\site-packages\pyparsing.py", line 4235, in parseImpl ret = e._parse(instring, loc, doActions) File "c:\python38\lib\site-packages\pyparsing.py", line 1708, in _parseNoCache tokens = fn(instring, tokensStart, retTokens) File "c:\python38\lib\site-packages\pyparsing.py", line 1314, in wrapper ret = func(*args[limit[0]:]) File "c:\python38\lib\site-packages\bibtexparser\bparser.py", line 203, in <lambda> lambda s, l, t: self._add_entry( File "c:\python38\lib\site-packages\bibtexparser\bparser.py", line 299, in _add_entry d = self.customization(d) File "c:\python38\lib\site-packages\bibtexparser\customization.py", line 508, in convert_to_unicode record[val] = latex_to_unicode(record[val]) File "c:\python38\lib\site-packages\bibtexparser\latexenc.py", line 67, in latex_to_unicode string = _replace_all_latex(string, itertools.chain( File "c:\python38\lib\site-packages\bibtexparser\latexenc.py", line 55, in _replace_all_latex string = _replace_latex(string, l.rstrip(), u) File "c:\python38\lib\site-packages\bibtexparser\latexenc.py", line 37, in _replace_latex if unicodedata.combining(unicod): TypeError: combining() argument must be a unicode character, not str

I think this was related to accidently exporting my whole library from zotero. I exported just a limited number of pubs and then renamed it mypubs.bib and moved it to the folder where academic was

leaving this open so y'all can see it but feel free to close

Thanks for this extremely useful tool!

However, I am also experiencing this issue. If there is a limit related to the maximum number of entries allowed by the script In each bibtex file, it would be good to mention this in instructions. My file contained about 50 entries, and I still had to split the file in four. The error message is also kind of cryptic (at least to me with little experience in programming) so some mention of this in the user-guide would have been helpful.

commented

The issue appears to be related to either the Bibtexparser project (see sciunto-org/python-bibtexparser#187 ) or a non-standard BibTeX file.

Academic does not currently specify a minimum version of Bibtexparser, so manually updating it to latest may help: pip3 install -U bibtexparser.

Experienced the same issue with Zotero and apparently same reason as @brimwats
I selected all the publications that I wanted to export and then used 'file' -> 'Export Library'. However, this way, I accidentally exported my entire library. Instead I had to right-click on the selected publications and then use 'Export Items'.

Hope this helps in case anybody encounters the issue.

Adding another note that this did not work when I accidentally exported my entire library, but it did work when just exporting a few publications. Note that if you right click the premade "My publications" item in the left side panel, the only export option is for the entire library. You need to create a new collections and copy over your publication there before exporting only that collection via right click.