Star/Favorite Community Plugins/ Import Export List of them

Use case or problem

Star/Favorite Community Plugins/ Import Export List of them.

Would work like github stars.
Easier to setup new install.

Proposed solution

Star/Favorite Community Plugins/ Import Export List of them

Additionally it would be very helpful to ask the authors to add a built-for version number indicating the “age” of a plugin. Maybe we can even add “last updated” this way.

And if we could even hide plugins from view that we are sure to never use would be the icing on the cake :wink:

Would help keep the plugin list a tick cleaner as well.

Thanks

4 Likes

These are interesting ideas.

In the meantime, if you want to set up a new vault the same way you’ve set up an old vault, do this:

  • Open the old vault’s folder in your operating systems’ file manager (Finder, File Explorer, etc.)
  • Reveal hidden files
  • Open the .obsidian folder in the vault
  • Copy and paste the plugins folder into the .obsidian folder of your new vault
  • In the new vault’s settings, disable safe mode, and enable all the plugins you want to use.

There may be some weirdness with doing this—check the settings of the newly-enabled plugins to make sure they’re right and so on. But it should ultimately speed up the duplication-of-your-setup process that you’re talking about, OP.

Thanks for the swift reply.

Yes that already helps a bit. But having this as a standard feature would be really great. Thanks.

I wrote a python script to get different information from my plugins folder

import os
import json

# specify the directory where the manifest.json files are located
dir_path = r'C:\...\.obsidian\plugins'

# create an empty list to store the extracted data
data = []

# loop through all the subdirectories in dir_path
for subdir in os.listdir(dir_path):
    # check if the subdirectory is itself a directory (and not a file)
    if os.path.isdir(os.path.join(dir_path, subdir)):
        # create the path to the manifest.json file
        manifest_path = os.path.join(dir_path, subdir, 'manifest.json')
        # check if the manifest file exists
        if os.path.isfile(manifest_path):
            # read the contents of the manifest.json file
            with open(manifest_path, 'r') as f:
                manifest_data = json.load(f)
            # extract the relevant information and add it to the data list
            name = manifest_data['name']
            id = manifest_data['id']
            description = manifest_data['description']

            try:
                # This repository url is not very accurate
				repository = "https://github.com/"+manifest_data['author']+"/"+id
            except:
                pass
            data.append({'name': name, 'id': id, 'description': description, 'repository': repository})

# create a new directory to store the Markdown files
output_dir = r'C:\...\ObsidianPluginNotes\Plugins'
if not os.path.exists(output_dir):
    os.makedirs(output_dir)

# loop through the data list and create a Markdown file for each entry
for entry in data:
    # replace any problematic symbols in the file name with underscores
    safe_name = entry['name'].replace('/', ' ').replace('\\', ' ').replace(':', ' ').replace('*', ' ').replace('?', ' ').replace('"', ' ').replace('<', ' ').replace('>', ' ').replace('|', ' ')
    # create the file path
    file_path = os.path.join(output_dir, f"{safe_name}.md")
    
    # create the file path
    #file_path = os.path.join(output_dir, f"{entry['name']}.md")
    # create the frontmatter string
    frontmatter = f"---\nname: {entry['name']}\nid: {entry['id']}\ndescription: {entry['description']}\nrepository: {entry['repository']}\nadded: 2023-02-01\nstatus: i\nmobile: \nrating: \nissues: \nusage: \nalternative: \nsettings: \n---\n"
    # write the frontmatter to the file
    with open(file_path, 'w') as f:
        f.write(frontmatter)