Skip to content

ChenglongMa/zoplicate

Repository files navigation

zoplicate banner

👉 zotero target version Version for Zotero 7 Downloads for Zotero 7👈 👉zotero target version Version for Zotero 6 Downloads for Zotero 6👈

GitHub License Using Zotero Plugin Template GitHub Repo stars


English | 简体中文 | Deutsch*

* Many thanks to Patrick O'Brien for the German tutorial.

A plugin that does one thing only: Detect and Manage duplicate items in zotero.

Main Features

  • Duplicates Detection
    • Detects if newly imported items are duplicates of existing ones in the Zotero library.
    • You can choose which version of duplicate items to use as the master item and merge them.
    • The actions you can take:
      1. Keep New: Set the new item as the master item and merge the duplicates.
      2. Keep Old: Set the existing item as the master item and merge the duplicates.
      3. Keep All: Keep both the new item and the existing item.
      4. Merge Manually: Go to the Duplicate Items Panel and merge the duplicate item manually.
  • Auto-Bulk Merge
    • Merges all duplicate items in the library automatically.
    • Introduced in Version 2.0.0.
  • Non-duplicates Management
    • Allows marking items as "Non-duplicates" if mistakenly identified as duplicates by Zotero.
    • Introduced in Version 3.0.0.
  • Show Duplicate Statistics
    • Append the duplicate count on the label of Duplicate Items pane.
    • Introduced in Version 2.3.0.

If you find this project helpful, please consider giving it a star ⭐. It would be a great encouragement for me!

Important

Zoplicate does NOT delete the duplicate items arbitrarily.

Instead, it extracts the useful information from the duplicate items and merges them into the retained item.

It makes some improvements based on the official detection and merging methods of Zotero.

Changelog

v3.0.5

Click here to show more.

In this version, we have made the following changes:

  1. 🐛 FIX!: We have fixed the bug that caused the sync error.
  2. 🐛 FIX!: We have optimized the UI of context menu.
  3. 🐛 FIX!: We have optimized the UI styling of bulk merge buttons.

v3.0.4

Click here to show more.

In this version, we have made the following changes:

  1. 🐛 FIX!: We have fixed the bug that caused the UI blocked when selecting too many items and opening the context menu.
  2. 🐛 FIX!: We have optimized the plugin lifecycle which may cause the plugin to load multiple preference settings on macOS.
  3. 🐛 FIX!: We have optimized database operations to reduce the risk of data loss.

v3.0.3

Click here to show more.

In this version, we have made the following changes:

  1. 🐛 FIX!: We have fixed the bug that caused the attachment to be lost when merging duplicate items.
  2. 🐛 FIX!: Zoplicate will now ignore the Feed items when detecting duplicates.
  3. 🐛 FIX!: We have fixed the bug that caused the detection dialog blocking the main thread.
  4. 🐛 FIX!: We have fixed the bug that caused the deleted items to be showing in NonDuplicates panel.
  5. 🐛 FIX!: Now, the NonDuplicates panel won't show up when clicking attachment items.
  6. NEW!: We added a prompt to remind the duplicates when Zotero is in background.
Click here to show more.

v3.0.2

Click here to show more.

In this version, we have made the following changes:

  1. 🐛 FIX!: We have fixed the progress window icon bug in Zotero 7.0.0-beta.77.
  2. 🧬 CHANGE!: We have updated the style of duplicate detection dialog.
  3. 🧬 CHANGE!: We have updated the icon style in preference pane.
  4. 🧬 CHANGE!: Items with different itemType will not be considered as duplicates.

v3.0.1

Click here to show more.

In this version, we have made the following changes:

  1. 🧬 CHANGE!: We have updated the UI of buttons in the duplicate pane.
  2. 🐛 FIX!: We have optimized the performance of duplicate search and detection.

v3.0.0

Click here to show more.

In this version, we have made the following changes:

  1. 🐛 FIX!: We have fixed a memory leak bug that caused the app to freeze when editing PDF annotations.
  2. NEW!: We have added the Non-duplicates functionality.
    • You can mark items as Non-duplicates when they are mistakenly identified as "duplicates" by Zotero.
    • Selecting two "false duplicates", you can find the They are NOT duplicates menu items in the context menu.
      • menu_not_duplicates
    • You can also find the They are NOT duplicates button in the Duplicate Items panel.
      • button_not_duplicates
    • For more details, please see Non-duplicates section below.
    • Thanks dschaehi for the discussion in issue #25.

v2.3.0

Click here to show more.

In this version, we have made the following changes:

  1. NEW!: We have added an option to show the duplicate count on the left collection pane.
    • You can find the option in the Zoplicate tab in the settings.

    • When your mouse hovers over the Duplicate Items entry, a tooltip will show the duplicate statistics.

      Show duplicate count

    • The duplicate count will be updated automatically. You can also find the Refresh Duplicate Count menu to update the count manually.

      Refresh duplicate count

    • Thanks Apollo7777777's idea mentioned in discussion #18

  2. 🐛 FIX!: We have fixed a bug that caused the dialog to be too narrow when the title is short.
  3. 🐛 FIX!: We have fixed a bug that caused the Bulk Merge icons to not maintain aspect ratios.

v2.2.0

Click here to show more.

In this version, we have made the following changes:

  1. NEW!: We have added "Smart" Merge functionality (Only available in Zotero 7 now).
    • When merging duplicate items, the function will fill in the missing information of the retained item with the duplicates.
    • Thanks endfreude's idea mentioned in issue #15.

v2.1.0

Click here to show more.

In this version, we have made the following changes:

  1. NEW!: We have added the Suspend and Restore functionality (Only available in Zotero 7 now).
    • Please see Bulk Merge section below for more details.
  2. 🧬 CHANGE!: We have changed the behavior of Keep Others action.
    • Previously, the Keep Others action will delete the last imported item and save ALL the rest existing items.
    • Now, the action will Merge the existing items based on the Master Item preferences in Settings.
  3. 🐛 FIX!: We have fixed a bug that caused the tags could not be loaded correctly in v2.0.0.

v2.0.0

Click here to show more.

In this version, we have made the following changes:

  1. NEW!: We have added the Bulk Merge functionality (Only available in Zotero 7 now).
    • Bulk Merge: Merge all duplicate items in the library automatically.
    • You can find the Bulk Merge button in the Duplicate Items panel.
    • Please see Bulk Merge section below for more details.
    • Thanks csdaboluo's idea mentioned in issue #8.
  2. 🐛 FIX!: We have fixed a bug that caused the dialog height to be too high when importing duplicate items in bulk.
  3. 🐛 FIX!: Now Zotero will auto-select the remained item after merging duplicate items.

v1.1.0

Click here to show more.

In this version, we have made the following changes:

  1. 🧬 CHANGE!: We have changed the processing method of duplicate items.

    Previously, we use the Trash method to process duplicate items, i.e., delete the duplicate items. However, this method will cause the loss of some information of the duplicate items.

    • E.g., notes, tags, collections, attachments.

    In this version, we use the Merge method to process duplicate items. This method will copy all the aforementioned information to the retained item, and then delete the duplicate items.

    • NOTE: If you are using ZotFile, the Merge method will copy the file link of the duplicate items to the retained item.
    • However, users relying on Zotero's default attachment storage may encounter duplication issues if the newly imported item contains attachments.

Thanks ChinJCheung's idea mentioned in issue #5.

Install

From GitHub

  1. Download .xpi file according to the version of Zotero you are using.
  2. Then, in Zotero, click Tools -> Add-ons and drag the .xpi onto the Add-ons window.

From Add-on Market Plugin for Zotero

Additional third-party plugin is required.

  1. Install Add-on Market for Zotero from here.
  2. Search Zoplicate in the Add-on Market and install it.

通过 Zotero 插件商店 安装 (For Chinese Users)

  1. 前往 Zotero 插件商店.
  2. 搜索 Zoplicate 然后单击 下载 按钮。

Usage

Settings

In Zotero, click Edit -> Settings, go to Zoplicate tab, and you will see the settings.

zoplicate settings

  1. You can select the actions you want to take when duplicate items are detected.
    • Always Ask is the default option if you have not changed the settings.
  2. You can select the version of duplicate items to use as the master item.
    • Earliest Added is the default option if you have not changed the settings.

Duplicate Detection

By default, or you have selected Always Ask in the settings, a dialog will pop up when you import a new item that is a duplicate of an existing item.

zoplicate dialog

The dialog will show the duplicate items and the actions you can take.

  1. Select the action you want to take and click Apply to process the duplicate items.
  2. Click Go to Duplicates to go to the Duplicate Items panel and merge the duplicate items manually.
  3. Click Cancel to dismiss the dialog and save the import of the new item and the existing items.
  4. Check Use this action by default to remember the selected action in default settings. Then the next time you import a duplicate item, the selected action will be applied automatically.

Multiple Duplicate Items

When you import multiple duplicate items, or import another duplicate item before you process the previous duplicate items, the dialog will show all the duplicate items and the actions you can take.

zoplicate dialog

  1. You can select different actions for different duplicate items.
  2. Click the header of action columns to select the same action for all duplicate items.
  3. Use this action by default option will be shown only when you select the same action for all duplicate items.

Bulk Merge

Inspired by csdaboluo's idea and ZoteroDuplicatesMerger, we have added the Bulk Merge functionality in Version 2.0.0.

In the Duplicate Items panel, you can find the Bulk Merge All Duplicate Items button:

zoplicate bulk merge

You can also find it when you select one or more duplicate items:

zoplicate bulk merge

Warning

  1. Before clicking the button, please make sure you have properly configured the Master Item preferences in Settings.
  2. The Bulk Merge functionality will take a while to complete if you have a large number of duplicate items.
  3. This functionality is only available in Zotero 7 now. I will check compatibility and try to migrate to Zotero 6.

You will see the progress of the bulk merge process: zoplicate bulk merge process

Suspend Bulk Merge

You can click the Suspend button to suspend the bulk merge process.

A dialog will pop up to confirm your action: zoplicate bulk merge suspend

  1. Click Resume to resume the bulk merge process.
  2. Click Cancel to cancel the bulk merge process.
    • Check Restore Deleted Items to restore the duplicate items that have been merged.
    • Note that the Restore action is only effective if you click Cancel.

Tip

If you want to Restore the duplicate items that have been merged, you can go to Trash panel and restore them.

  1. Select the duplicate items you want to restore.
  2. Click Restore to Library button to process.

Show Duplicate Statistics

Starting from Version 2.3.0, we have added an option to show the duplicate count on the left collection pane.

You can find the option in the Zoplicate tab in the settings.

When your mouse hovers over the Duplicate Items entry, a tooltip will show the duplicate statistics.

Show duplicate count

The duplicate count will be updated automatically. You can also find the Refresh menu to update the count manually.

Refresh duplicate count

Non-duplicates

Starting from Version 3.0.0, we have added the Non-duplicates functionality.

You can mark items as Non-duplicates when they are mistakenly identified as "duplicates" by Zotero.

Selecting an item, you can manage the Non-duplicates items in the side panel: side_panel_not_duplicates

  • Click the non-duplicate button button to show the Non-duplicates section.
  • Click the + button to add the selected item to the Non-duplicates list.
  • Click the - button to remove the selected entry from the Non-duplicates list.

There are some ways to mark and unmark items as Non-duplicates:

Mark as Non-duplicates

  1. Click the + button to add the selected item to the Non-duplicates list.
  2. Selecting two "false duplicates", you can find the They are NOT duplicates menu items in the context menu.
    • menu_not_duplicates
  3. You can also find the They are NOT duplicates button in the Duplicate Items panel.
    • button_not_duplicates

Unmark as Non-duplicates

  1. Click the - button to remove the selected entry from the Non-duplicates list.
  2. Selecting two "non duplicates", you can find the They are duplicates menu items in the context menu.
    • menu_not_duplicates

Contributing

👋 Welcome to Zoplicate! We're excited to have your contributions. Here's how you can get involved:

  1. 💡 Discuss New Ideas: Have a creative idea or suggestion? Start a discussion in the Discussions tab to share your thoughts and gather feedback from the community.

  2. Ask Questions: Got questions or need clarification on something in the repository? Feel free to open an Issue labeled as a "question" or participate in Discussions.

  3. 🐛 Issue a Bug: If you've identified a bug or an issue with the code, please open a new Issue with a clear description of the problem, steps to reproduce it, and your environment details.

  4. Introduce New Features: Want to add a new feature or enhancement to the project? Fork the repository, create a new branch, and submit a Pull Request with your changes. Make sure to follow our contribution guidelines.

  5. 💖 Funding: If you'd like to financially support the project, you can do so by sponsoring the repository on GitHub. Your contributions help us maintain and improve the project.

Acknowledgements

I would like to express my gratitude to the following individuals and organizations for their generous support and contributions to this project:

Sponsors

Sponsor Quinn McHugh
Quinn McHugh
Sponsor Mctalos
Mctalos

Usually, a ⭐️ is enough to make me happy. Your sponsorship will help me maintain and improve the project. Also, part of the sponsorship will be donated to the open-source community.

Thank you for considering contributing to Zoplicate. We value your input and look forward to collaborating with you!