Git Product home page Git Product logo

daeh / zotero-markdb-connect Goto Github PK

View Code? Open in Web Editor NEW
451.0 5.0 8.0 1.52 MB

Zotero plugin that links your Markdown database to Zotero. Jump directly from Zotero Items to connected Markdown files. Automatically tags Zotero Items so you can easily see which papers you've made notes for.

License: MIT License

JavaScript 15.33% CSS 1.31% HTML 12.60% Fluent 1.19% TypeScript 69.56%
zotero zotero-plugin markdown obsidian-md bibliography logseq zettlr obsidian

zotero-markdb-connect's People

Contributors

daeh avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

zotero-markdb-connect's Issues

Support matching via filename without @

Currently, matching via filename requires either @ at the beginning of the file or the citekey present in the yaml frontmatter. I'd like to match via filenames without @ and without a specific yaml frontmatter. Just via a filename in this format: citekey.md

Option to change tag name

Hi, is there a possibility to change the tag ObsCite attaches to the Zotero items?

Use case: I use the coloured tags in Zotero to indicate the status of the item. It moves from red="to read" or "to skim" to orange="read" and eventually green="finished notes" or violet="worth a second look".
It would be really nice if it was possible to integrate the ObsCite tag into that workflow smoothly :)

Thank you!

plugin cannot find notes in Obsidian folder

So I linked the plugin to a folder in Obsidian "~/obsidian/cinema-project/1. Notes" but when I restart Zotero the message I get "no notes found." Is that because there is a space in the name of the folder? Thanks!

feature request

Hi,
I am writing to request a new feature for your plugin. I would like to suggest adding support for the markdown files exported from Readwise, so that the plugin can associate and tag the Readwise reading records in Zotero items.
As you may know, many users of Zotero also use Readwise to manage their highlights and notes. It would be very convenient if the plugin could automatically recognize and link the Readwise markdown files to the corresponding Zotero items, and tag them with relevant keywords or labels.
The exported markdown files from Readwise usually follow a specific naming convention, such as "Article Title(highlights).md". It would be great if the plugin could recognize this convention and use it to identify the associated Zotero items.
I believe that adding this feature would greatly enhance the functionality of your plugin and benefit many users who use both Zotero and Readwise. Thank you for your consideration!

My best,
qqyl

How can two devices share the same exported my library.json

Hello, I have a question, I have zotero installed on both devices, and the data has been synced, export a my library .JSON on one device, and create the corresponding MD notes, how do I do it on the other device What about syncing notes and annotations using my library exported on the first device?

Error displays every time zotero starts

Whenever I open zotero, I see this error from this plugin:

Screen Shot 2022-05-16 at 3 51 38 PM

Everything seems to work ok, though. Just thought I'd report it in case there's some undefined behavior occurring.

notes list incomplete in context menu

Hi there!
Thanks for this plugin. I find, however, that when I right-click in Zotero on an Obsidian-Zotero synced item and point to "Open ObsidianMD Note" or "Show Markdown File" I only get a list that seems limited to 16 Obsidian notes although I may have many more notes with the relevant Zotero itemkey. I cannot seem to find any button to scroll down to see other notes or some other means to see them.
Is this perhaps by design, or is it a bug? Or am I doing something wrong?

I could not find any thread on this issue and decided to submit it as a new one. I am sorry if I missed an already-existing thread on it.
Thanks for your help

Sync won't parse

Running the sync can't match items or parse items even though yaml citekey is present and custom filter set to .+.md$
Any help would be immensely appreciated.

I get this in the report:

[
{
"citekey": null,
"citekey_metadata": null,
"citekey_title": null,
"zotkeys": [],
"zotids": [],
"name": "holbraad_ruptures_2019",
"path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/holbraad_ruptures_2019.md"
},
{
"citekey": null,
"citekey_metadata": null,
"citekey_title": null,
"zotkeys": [],
"zotids": [],
"name": "powers_anthropology_2019",
"path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/powers_anthropology_2019.md"
},
{
"citekey": null,
"citekey_metadata": null,
"citekey_title": null,
"zotkeys": [],
"zotids": [],
"name": "forbes_meaning_2007",
"path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/forbes_meaning_2007.md"
},
{
"citekey": null,
"citekey_metadata": null,
"citekey_title": null,
"zotkeys": [],
"zotids": [],
"name": "irvine_deep_2014",
"path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/irvine_deep_2014.md"
},
{
"citekey": null,
"citekey_metadata": null,
"citekey_title": null,
"zotkeys": [],
"zotids": [],
"name": "demossier_beyond_2011",
"path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/demossier_beyond_2011.md"
},
{
"citekey": null,
"citekey_metadata": null,
"citekey_title": null,
"zotkeys": [],
"zotids": [],
"name": "janowski_reading_2012",
"path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/janowski_reading_2012.md"
},
{
"citekey": null,
"citekey_metadata": null,
"citekey_title": null,
"zotkeys": [],
"zotids": [],
"name": "walter_uncertain_2006",
"path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/walter_uncertain_2006.md"
},
{
"citekey": null,
"citekey_metadata": null,
"citekey_title": null,
"zotkeys": [],
"zotids": [],
"name": "fabian_if_2005",
"path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/fabian_if_2005.md"
},
{
"citekey": null,
"citekey_metadata": null,
"citekey_title": null,
"zotkeys": [],
"zotids": [],
"name": "stensrud_climate_2019",
"path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/stensrud_climate_2019.md"
}
]

sync with mdnotes-Addon Output

I had this post also on obsidian-Forum as Reply:

I find your addon SUPER, even if it has not yet led to the goal or success with me.

I export Zotero items that I want to work with in Obsidian with the Zotero addon "mdnotes".
This creates Markdown files with the title
"@CITEKEY.md" (example: "@Akal_ea_2018_DistributedSensing.md").

These are located in the Obsidian Vault in a folder. The files also contain the additional Zotero link with the Zotero ID as the metadata field:

...
- title:: A Distributed Sensing Approach for Single Platform Image-Based Localization
- local:: [local zotero](zotero://select/items/1_4AYCPGBV)
- cloud:: http://zotero.org/users/4847583/items/4AYCPGBV
...

Example file: @Akal_ea_2018_DistributedSensing.md

The corresponding Zotero items should now get a tag "ObsCite".
In my case, there is NO exported JSON file of all Zotero items. Your addon aborts the sync with the error message "BBT JSON Library not found".
What is the purpose of the BBT JSON Library? Surely the information is directly accessible to the addon in Zotero?
My Zotero contains about 80000 entries. If I would set an auto-export, every time I make a change in Zotero, the whole database would be exported.

In my opinion, this file is not necessary:

  • Search Obsidian folder
  • each file starting with "@" is a citekey probably present in Zotero
  • Search this citekey in the Zotero database
  • if found, then assign tag "ObsCite
  • if not found (e.g. because deleted in Zotero in the meantime but still present in Obsidian), then write to a "missing entry" list
  • Write the list with the missing entries:
    • as a Zotero note or
    • write it as a Markdown file into the specified folder with the citekeys
    • Suggested name: "zotero-obsidian-citations missing-entries.md".

Is there a reason for needing the BBT JSON library that I'm just not seeing?

Group Library

The connection doesn't seem to find the Group libraries I have inside my Zotero.

Is it not a feature or am I messing up a setting somewhere?

Support for multiple citekeys

Thanks for the great plugins! On my side, the plugin appears to be incompatible with more than one citekey. I wonder if it's a bug? Namely, suppose we have a file like

---
citekey: [key1, key2, key3]
tags: [tag1, tag2, tag3]
---
content

On my computer the file MarkDBConnect-debug.json appears as:

{
   "citekey": null,
   "citekey_metadata": null,
   "citekey_title": null,
   "zotkeys": [],
   "zotids": [],
   "name": "filename",
   "path": "/[path-to-vault]/[filename].md"
  },

And my config is

image

Besides, I also test

---
citekey: 
  - key1
  - key2
  - key3
---
content

Unfortunately, it doesn't seem to work as well.

I hope the above information is useful and thanks again for the great plugin!

Failed to configure RegEx

Hey, I tried to write the RegEx to macht md notes according to the Zotero-Item-Key just as suggested in the parantheses from the picture below. But the line failed to matching md notes with Zotero items.

image

This is what I was trying to match in metadata (in Logseq)
image

These are the lines that I tried:

  • (?!(zotero:\/\/select\/library\/items\/))(\w{8})

  • (?<=zotero:\/\/select\/library\/items\/)(\w{8}) (the positive lookbehind feature was reported to be not supported, so I changed to the above one, but failed again)

Thanks in advance 🥺🥺🥺

how to close this window?

I'm not sure whether this window is caused by this plug-in, but I still want to ask how to close this window
image

Allow matching to notes not beginning with @

Loving the concept behind this plugin, anything that gets the Zotero+Obsidian bond stronger is amazing. Thank you!

I'm not sure the feasibility of this request, but is it possible to remove the limitation of .md notes starting with a '@'? I'm sure it would allow this plug-in to integrate with a broader array of workflows.

Problems with the configuration of the plugin

Hi @daeh thank you so much for your support.

According to your request in the forum, I am attaching two MD files from my obsidian notes. One of them (the first one) is an old file, created from notes generated with Acrobat reader some months ago. The other is a newly created one with the latest beta version of Zotero (63).

@nimmoDielsAlderClick2011.md

@lindenmeyerSelfhealingBehaviourFuran2020.md

I am almost sure that this is probably a mistake from my side configuring the setup.

Thank you!

APA request

Hello, is there a way to create citations in APA style? The biggest issue is the way authors are shown ->

The basic format for a book citation requires listing the author's name, the title of the book, the publisher's name, and the date of publication.

Jakupcak, M., Luterek, J., Hunt, S., Conybeare, D., & McFall, M. (2008). Post-traumatic stress and its relationship to physical health functioning in a sample of Iraq and Afghanistan war veterans seeking post-deployment VA health care. Journal of Nervous and Mental Disease, 196, 425-428.

Removes tags of files not found

I have to use two separate Obsidian vaults (work and personal) but one Zotero Library (one account). The issue is that tags are removed from Zotero items when Obsidian Vault files are not found, which occurs when I switch between work and personal Vaults. This seems reasonable behavior to clean up tags, but of course causes problems across multiple vaults.

Perhaps a workaround could be, 1) option for tags be not removed at all, and/or 2) tags searched for items only in specific collections.

Bug with the last update!!!

Zotero auto-updated the add-on, and after rebooting:

  1. I can't enter into the Tools>Add-ons (no action!)
  2. Looks like the BBT plugin is not working anymore
  3. Your plugin does not update new notes from Obsidian

Zotero has no update, so it should not be a bug from their side.

EDIT: As the command menu "Add-ons" does not work, I can't even uninstall it.

Citekey match fails with escape characters in filename

Currently, you can specify a custom file filter, and the first capturing group will be taken as the BBT cite key. This fails when the filename and the YAML header title do not match, e.g. when there are escape characters in the filename.

For example, let's say I want to group all of my references under logseq namespaces, so I tell logseq to prefix imported citkeys with the string ref/. As the slash is escaped, these files are stored as refs%2FDoe23-UnderwaterBasketWeaving.md on the disk, but the title:: field inside the file's YAML header is title:: refs/Doe23-UnderwaterBasketWeaving.

This mismatch appears to cause MarkDB to choke. Using the file filter ^refs%2F.+\.md$ will cause the following errors upon a tag sync:

  • There were 1 Markdown notes that could not be parsed.
  • There were 1 citekeys in your Markdown notes that could not be matched to items in your Zotero library.
  • There was an issue matching some of your Markdown notes (0 notes were matched successfully).

The error json produced by all of these is:

[
 {
  "citekey": null,
  "citekey_metadata": null,
  "citekey_title": null,
  "zotkeys": [],
  "zotids": [],
  "name": "refs%2FDoe23-UnderwaterBasketWeaving",
  "path": "/Users/grace/Library/Mobile Documents/iCloud~com~logseq~logseq/Documents/pages/refs%2FDoe23-UnderwaterBasketWeaving.md"
 }
]

Using the file filter ^refs/.+\.md$ will simply not match files.

0 matches after upgrade to 0.0.21

I just updated MarkDBConnect to 0.0.21 (and BBT to 6.7.50) and every time I start MarkDBConnect reports all cited entries fail to be matched. Obsidian and BBT still work as expected. The only thing that is not working is that the MarkDBConnect option on the context menu does not show for items that are actually cited in Obsidian.

Looking at the MarkDBConnect-missing-entries.json it all looks fine to me. Here is the first of hundreds of entries:

{
"citekey": "allenInformationFlowResearch1969.md",
"citekey_metadata": null,
"citekey_title": "allenInformationFlowResearch1969.md",
"zotkeys": [],
"zotids": [],
"name": "@allenInformationFlowResearch1969",
"path": "path_to_file\\@allenInformationFlowResearch1969.md"
}

I created a couple of new citations in Obsidian, including one of a new entry in Zotero. MarkDBConnect reports these as additional ones that it fails to match and does not set the citation tag in Zotero.

Support shared libraries

Are there plans to support reading from multiple BBT or JSON library files? I work on several group libraries (one per project).

Zotero crashing

Hello and thank you for a very needed add-on!

I have been using this add-on for a while, and it has been working perfectly. But recently Zotero crashed every time I tried to open it, and through some debugging with the people at the Zotero forum we finally found that the bug was within this add-on. When i removed it, Zotero could open again. I'm no programmer so will not give any tips on what needs to be done, but in the forum thread there was an advice for a line that should be removed. For further explanation see the thread here: https://forums.zotero.org/discussion/comment/417064#Comment_417064

MarkDB does not recognize YAML citekey

My naming rule is .+\.md$ ,and to put the citekey in the yaml area. But when the file name does not contain @citekey, it cannot match correctly. I tested it many times and did not achieve it. So can this plugin rely only on the citekey configuration in the yaml area? I don’t know where the problem is.
image
image

syncing error

this is a debugging log, and I have not used it for a long time. I donot konw how to fix it.
image

{
"version": "0.0.24",
"zoteroVersion": "6.0.26",
"isMac": true,
"isLinux": false,
"isWin": false,
"prefs": {
"matchstrategy": "zotitemkey",
"source_dir": "/Users/tsd/Library/Mobile Documents/iCloudmdobsidian/Documents/mac_tsd/zotero_note",
"filefilterstrategy": "default",
"filepattern": "{{citekey}}.md",
"zotkeyregex": "",
"metadatakeyword": ""
},
"config": {
"matchstrategy": "zotitemkey",
"source_dir": "/Users/tsd/Library/Mobile Documents/iCloudmdobsidian/Documents/mac_tsd/zotero_note",
"filefilterstrategy": "default",
"filepattern": "{{citekey}}.md",
"zotkeyregex": "",
"metadatakeyword": "",
"grouplibraries": "user",
"removetags": "keepsynced",
"tagstr": "ObsCite",
"vaultresolution": "path",
"vaultname": "",
"logseqgraphname": "",
"bbtinstalled": [
true
],
"checkSetting": false
}
}

"Show Markdown File" - Linux compatibility

Would it be possible implement "Show Markdown File" on Linux? At this time it just opens the parent directory (which is kind of useless as you would still have to look up the file).

showSelectedItemMarkdownInFilesystem: function (idx) {

        const entry_res = this._getSelectedEntry(idx);

        const file = new FileUtils.File(OS.Path.normalize(entry_res.path));
        if (file.exists()) {
            try {
                Zotero.debug("MarkDBconnect: Revealing " + file.path);
                file.reveal();
            } catch (e) {
                // On platforms that don't support nsIFile.reveal() (e.g. Linux),
                // launch the parent directory
                Zotero.launchFile(file.parent);
            }
        }
    },

I was thinking of running xdg-open with file.path as argument, but am not sure if/how this would be possible.

Add option to use Obsidian Advanced URI

Please add an option in the "MarkDBConnect Preferences" to open the MD files in Obsidian using the Obsidian Advanced URI instead of the default one. The main issue with using the default Obsidian URI is replacing the currently open tab instead of creating a new one.

Keep up the excellent work!

Modify colon in citekey

I have a few papers whose citekeys are pinned from inspirehep by betterbibtex. Those citekeys include colons. e.g. citekey: Co:2022jsn

I use the citekey as the title in Obsidian notes. Obsidian does not allow colon in the file title, and it changes ":" to "_".

In this case, how can I set the file filter? Of course, the following does not work.

image

Locating MD Files is not working

The Choose botton of Folder Containg Markdown Reading Note is not working. Nothing show up after I click the Choose botton.
And I copy the file path of md notes in the text box, but the pulug in still can not find md nites.

markdb-connect won't add the required tag

I've tried disabling/removing any other plugins, restarted both zotero and obsidian, looked at the debug logs.. [OSX Ventura, Zotero 6.0.29, Obsidian 1.4.16, MarkDBConnect 0.0.24]

When zotero starts it throws up:
[JavaScript Error: "TypeError: items is undefined" {file: "chrome://markdbconnect/content/scripts/mdbconnect.js" line: 782}]

When I try 'MarkDBConnect Sync Tags' the debug window show that it finds all the right .md files but doesn't add the tag to them? Immediately after the list of files it finds, the window shows:
(4)(+0000022): SELECT COALESCE(IA.parentItemID, itemID) AS itemID FROM items LEFT JOIN itemAnnotations IA USING (itemID) WHERE (itemID NOT IN (SELECT itemID FROM deletedItems UNION SELECT itemID FROM itemNotes WHERE parentItemID IS NOT NULL AND parentItemID IN (SELECT itemID FROM deletedItems) UNION SELECT itemID FROM itemAttachments WHERE parentItemID IS NOT NULL AND parentItemID IN (SELECT itemID FROM deletedItems)UNION SELECT itemID FROM itemAnnotations WHERE parentItemID IN (SELECT itemID FROM deletedItems)UNION SELECT itemID FROM itemAnnotations WHERE parentItemID IN (SELECT itemID FROM itemAttachments WHERE parentItemID IN (SELECT itemID FROM deletedItems)))) AND (itemID IN (SELECT itemID FROM items WHERE libraryID=?)) [1]

... and there it stops.

Any advice?

bug at startup of Zotero

Hi @daeh !
Just to report a minor bug. When launching Zotero, the following message appears:
imagen

After that, no other issue, the plugin continues to work fine

Parsing Errors With LogSeq

I'm having a similar issue as:
https://discuss.logseq.com/t/my-zotero-logseq-zettlr-word-workflow/8900/17?u=flan
Also, under Linux.

Here is an example Zotero item:

image

Here are my "Locating MD Files" settings:

image

Not shown in the screenshot above, I've also tried entering optional Metadata Keywords (multiple iterations—e.g., "extra," "Citation Key", etc.—all rejected due to special characters).

This is what the LogSeq YAML looks like:

image

Here is an example of a parsing error I get:

{
"citekey": null,
"citekey_metadata": null,
"citekey_title": null,
"zotkeys": [],
"zotids": [],
"name": "zt-zhangBayesianMixedHidden2014",
"path": "/home/onomat/GitProjects/FlogSeq3/pages/zt-zhangBayesianMixedHidden2014.md"
},

I'm not technical enough to find the parsing error very informative.

Thank you for developing this plugin. I'd appreciate any insight you might have.

MarkDB not identifying YAML

Hi - I just installed Zotero and the plug-in for use with Obsidian 1.1.9. I set everything up per instructions, specifying the file path and YAML keyword, and created a test note.

The plug-in works correctly when I include @citekey in the filename, but it is not working with I only have the citekey in YAML metadata.

Is it possible that something is broken? Please help!

Pete

add function to generate debug file

a button in the preferences plane that stores all of the note data and the extra field, for any item that has an issue, and exports to a json that can be submitted for tech support

please search for Markdown-Files recursive (including Subfolders)

It would be very nice if the path to the Markdown notes would be searched including the subfolders.

To explain my reasons:
I collect the literature notes in a folder, but I divide them by project, because I have several hundred citations per project and in this way I can quickly find all the literature for the project without searching.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.