A plugin that can query multiple APIs for movies, series, anime, games, music and wiki articles, and import them into your vault.

Overview

Obsidian Media DB Plugin

A plugin that can query multiple APIs for movies, series, anime, games, music and wiki articles, and import them into your vault.

Features

Search by Title

Search a movie, series, anime, game, music release or wiki article by its name across multiple APIs.

Search by ID

Allows you to search by an ID that varies from API to API. Concrete information on this feature can be found in the description of the individual APIs.

Templates

The plugin allows you to set a template note that gets added to the end of any note created by this plugin.
The plugin also offers simple "template tgs". E.g. if the template includes {{ title }}, it will be replaced by the title of the movie, show or game.
Note that "template tags" are surrounded with two curly braces and that the spaces inside the curly braces are important.

For arrays there are two special ways of displaying them.

  • using {{ LIST:variable_name }} will result in
      - element 1    
      - element 2    
      - element 3    
      - ...    
    
  • using {{ ENUM:variable_name }} will result in
      element 1, element 2, element 3, ...    
    

Available variables that can be used in template tags are the same variables from the metadata of the note.

I also published my own templates here.

Metadata field customization

Allows you to rename the metadata fields this plugin generates through mappings.

A mapping has to follow this syntax [origional property name] -> [new property name]. Multiple mappings are separated by a new line. So e.g.:

title -> name
year -> releaseYear

Bulk Import

The plugin allows you to import your preexisting media collection and upgrade them to Media DB entries.

Prerequisites

The preexisting media notes must be inside a folder in your vault. For the plugin to be able to query them they need one metadata field that is used as the title the piece of media is searched by. This can be achieved by for example using a csv import plugin to import an existing list from outside of obsidian.

Importing

To start the import process, right-click on the folder and select the Import folder as Media DB entries option. Then specify the API to search, if the current note content and metadata should be appended to the Media DB entry and the name of the metadata field that contains the title of the piece of media.

Then the plugin will go through every file in the folder and prompt you to select from the search results.

Post import

After all files have been imported or the import was canceled, you will find the new entries as well as an error report that contains any errors or skipped/canceled files in the folder specified in the setting of the plugin.

How to install

The plugin is now released, so it can be installed directly through obsidian's plugin installer.

Alternatively, you can manually download the zip archive from the latest release here on GitHub.
After downloading, extract the archive into the .obsidian/plugins folder in your vault.

The folder structure should look like this:

[path to your vault]  
|_ .obsidian  
   |_ plugins  
      |_ obsidian-media-db-plugin  
         |_ main.js  
         |_ manifest.json  
         |_ styles.css  

How to use

(pictures are coming)

Once you have installed this plugin, you will find a database icon in the left ribbon.
When using this or the Add new Media DB entry command, a popup will open.
Here you can enter the title of what you want to search for and then select in which APIs to search.

After clicking search, a new popup will open prompting you to select from the search results.
Now you select the result you want and the plugin will cast it's magic and create a new note in your vault, that contains the metadata of the selected search result.

Currently supported media types

  • movies (including specials)
  • series (including OVAs)
  • games
  • music releases
  • wiki articles

Currently supported APIs:

Name Description Supported formats Authentification Rate limiting SFW filter support
Jikan Jikan is an API that uses My Anime List and offers metadata for anime. series, movies, specials, OVAs No 60 per minute and 3 per second Yes
OMDb OMDb is an API that offers metadata for movie, series and games. series, movies, games Yes, you can get a free key here here 1000 per day No
MusicBrainz MusicBrainz is an API that offers information about music releases. music releases No 50 per second No
Wikipedia The Wikipedia API allows access to all Wikipedia articles. wiki articles No None No
Steam The Steam API offers information on all steam games. games No 10000 per day No

Notes

  • Jikan
    • sometimes the api is very slow, this is normal
    • you need to use the title the anime has on My Anime List, which is in most cases the japanese title
      • e.g. instead of "Demon Slayer" you have to search "Kimetsu no Yaiba"

Search by ID

  • Jikan
    • the ID you need is the ID of the anime on My Anime List
    • you can find this ID in the URL
      • e.g. for "Beyond the Boundary" the URL looks like this https://myanimelist.net/anime/18153/Kyoukai_no_Kanata so the ID is 18153
  • OMDb
    • the ID you need is the ID of the movie or show on IMDb
    • you can find this ID in the URL
      • e.g. for "Rogue One" the URL looks like this https://www.imdb.com/title/tt3748528/ so the ID is tt3748528
  • MusicBrainz
    • the id of a release is not easily accessible, you are better off just searching by title
  • Wikipedia
    • here is a guide to finding the Wikipedia ID for an article
  • Steam
    • you can find this ID in the URL
      • e.g. for "Factorio" the URL looks like this https://store.steampowered.com/app/427520/Factorio/ so the ID is 427520

Problems, unexpected behavior or improvement suggestions?

You are more than welcome to open an issue on GitHub.

Changelog

0.3.0

  • Added bulk import. Import a folder of media notes as Media DB entries (thanks to PaperOrb on GitHub for their input and for helping me test this feature)
  • Added a custom result select modal that allows you to select multiple results at once
  • Fixed a bug where the note creation would fail when the metadata included a field with the values null or undefined

0.2.1

  • fixed a small bug with the initial selection of an API in the ID search modal

0.2.0

  • Added the option to rename metadata fields through property mappings
  • fixed note creation falling, when the folder set in the settings did not exist

Contributions

Thank you for wanting to contribute to this project.

Contributions are always welcome. If you have an idea, feel free to open a feature request under the issue tab or even create a pull request.

Credits

Credits go to:

Comments
  • Add tests

    Add tests

    I hope I did this correctly. I have another file for testing utils and I'll push it after cleaning up. There's definitely lots of scope for improvement here. I also didn't include the package json and other config stuff since I'm not sure about the correct way to add those. We can commit those at the end I guess.

    opened by AB1908 19
  • Automated way to import preexisting list via this plugin?

    Automated way to import preexisting list via this plugin?

    I'm sure many of us already had lists we kept of our movies/games/etc before looking at this plugin. Is there an automated way to import those lists into obsidian using this plugin? It looks great btw, thank you for making this.

    feature request 
    opened by PaperOrb 12
  • Problems with new update introduced in #50

    Problems with new update introduced in #50

    There are some problems with this, the new lines were needed sometimes and it doubles the template. (See image)

    image

    Originally posted by @mProjectsCode in https://github.com/mProjectsCode/obsidian-media-db-plugin/issues/50#issuecomment-1258068193

    bug 
    opened by mProjectsCode 9
  • Using a template to get a timestamp gives an error

    Using a template to get a timestamp gives an error

    • [X] The Plugin is up to date
    • [X] Obsidian is up to date

    Describe the bug When I try to timestamp the new media entries using the templates they give an error instead of the timestamp.

    To Reproduce Steps to reproduce the behavior:

    1. Have this this template for movies created: {{ date:YYYY-MM-DDTHH:mm:ssZ }}
    2. Add a new media DB movie entry
    3. See error

    created: "{ INVALID TEMPLATE TAG }": null

    Expected behavior For regular notes this template works fine and it should post the timestamp like this:

    created: 2022-08-20T23:46:58+02:00

    Occurs on

    • [x] Windows

    Plugin version 0.3.1

    Additional context I've also tried the following templates with little success: created: {{ date }}

    created: "{ INVALID TEMPLATE TAG - object undefined }": null

    Or

    created: {{date:YYYY-MM-DDTHH:mm:ssZ}} , created: {{ date : YYYY-MM-DDTHH:mm:ssZ }}

    I'm not sure if it is a bug though or if I'm just doing something wrong

    bug 
    opened by ltctceplrm 6
  • Updating metadata in the 0.4.0 release deletes watched status and date from the metadata

    Updating metadata in the 0.4.0 release deletes watched status and date from the metadata

    • [X] The Plugin is up to date
    • [X] Obsidian is up to date

    Describe the bug When you use the new "update metadata" option in the 0.4.0 release it deletes watched status and date from the metadata.

    To Reproduce Steps to reproduce the behavior:

    1. Add a movie using the plugin
    2. Change watched: falseto watched: true and add a date for lastWatched: ""
    3. Press the button to update the metadata
    4. watched: and lastWatched: both disappear

    Expected behavior Reloading the information from omdb while retaining watched status and date.

    Occurs on

    • [X] Windows

    Plugin version 0.4.0

    Additional context It looks like the same happens when you choose to update the entire note, it gets recreated without the note content which is expected but it also doesn't add the watched: or lastWatched: and just seems to skip that.

    I hope I'm not a bother by posting a bug so soon after the release, especially since I love the new UI for remapping/excluding metadata.

    bug 
    opened by ltctceplrm 5
  • add

    add "only required quotation marks" setting

    Is your feature request related to a problem? Please describe. I've ran into an interaction issue with the Dataview and DB Folder plugins, noticing that they don't seem to properly read the metadata fields from Media DB generated notes. Outright stripping every " from the YAML and those plugins properly read the fields.

    Whatever's happening here seems connected to the quotation marks being present, but not necessarily directly--a field that doesn't use them for numeric values was also not being read. Ex., setting "personalRating: 5" did not read the 5. It was read after stripping out all other " from fields.

    Describe the solution you'd like I think this might actually be an issue with dataview/db folder's side, because certainly the metadata looks valid as-is! But a toggle setting to populate the metadata without quote marks and leaving everything else as is would resolve--I've just been manually ctrl-H, replace " with nothing after generating.

    Alternately could well be an issue between keyboard and chair as they say! And I'm still testing different things to try to see what specifically triggers it.

    Additional context Add any other context or screenshots about the feature request here.

    feature request 
    opened by GarDrastic 5
  • Updating metadata duplicates the open note if it isn't in the default MediaDB folder

    Updating metadata duplicates the open note if it isn't in the default MediaDB folder

    • [X] The Plugin is up to date
    • [X] Obsidian is up to date

    Describe the bug When you update metadata in the 0.4.0 release it duplicates the note currently have open if it isn't located in the default folder for new files.

    To Reproduce Steps to reproduce the behavior:

    1. Add a movie using the plugin
    2. Move it to another folder
    3. Press the button to update the metadata
    4. The note gets duplicated again in the default folder (with all content intact however)

    Expected behavior Ideally it would update the currently open note rather than re-create it with the note content intact.

    Occurs on

    • [X] Windows

    Plugin version 0.4.0

    Edit: The same also happens if you rename the file but the file stays in the default folder.

    bug 
    opened by ltctceplrm 4
  • An option for only updating the YAML and keeping the note content intact

    An option for only updating the YAML and keeping the note content intact

    Is your feature request related to a problem? Please describe. I use mediaDB to create notes about movies which I then fill up with a review or my thoughts of the movie in the body of the note, if I run command to update the note then it erases everything I wrote about the movie and only keeps the YAML.

    Describe the solution you'd like I think adding an option to only update the YAML would make the most sense, of course user modified YAML like date watched or user score would still be kept as well.

    feature request 
    opened by ltctceplrm 4
  • BoardGameGeek Data Field - Weight

    BoardGameGeek Data Field - Weight

    Ahoi,

    I wonder if it is possible to extract one more data field via the Media DB plugin from BoardGameGeek than currently possible. The value I am looking for is the "average weight value" (complexity rating) BoardGameGeek provides, which is a good indicator for how playable games are with people of varying experience.

    Since I am clearly not capable of extracting this, I would like to encourage you to include this value in the datafields your script extracts.

    I think that at least for regular board game players this value will be of regular interest, so it might be worth the effort.

    Best regards,

    DOZ

    feature request 
    opened by discipleofzen 3
  • Own custom props

    Own custom props

    Is your feature request related to a problem? Please describe. I would like be able to set up new props in template, like in my case season and episode. I know I can use episode::0 but I think this is styleless.

    Describe the solution you'd like Maybe some mapping or somehow in template would work fine

    Additional context Thanks for your plugin! <3

    feature request 
    opened by Shirobachi 3
  • Exclude certain properties from the frontmatter

    Exclude certain properties from the frontmatter

    Is your feature request related to a problem? Please describe. I'd like to exclude certain properties from the frontmatter to streamline the YAML and make it easier for me to read.

    Describe the solution you'd like Maybe using the template screen if you leave out certain properties from the frontmatter then Media DB will not import those, or you could have it be an option to include/exclude certain properties in the plugin settings.

    feature request 
    opened by ltctceplrm 2
  • How Long To Beat support for games

    How Long To Beat support for games

    howlongtobeat.com is a great resource for getting a rough sense of how long it might take to finish a game. I would love to have an HLTB average imported along with the rest of the game's metadata so I can query it with Datatables (e.g. find all games in my Media DB that take less than 6 hours to complete).

    There's probably a range of settings that could complicate this further, but I'd personally be happy with the most basic implementation, just getting the "Main Story" (or whichever category is listed first) average. There's an API wrapper available here: https://github.com/ckatzorke/howlongtobeat

    feature request 
    opened by iznaut 0
  • Filter out DLC from SteamAPI results

    Filter out DLC from SteamAPI results

    Is your feature request related to a problem? Please describe. Some games have so many downloadable content entries that come up that it can be difficult to find the entry for the original game.

    Describe the solution you'd like I'm not sure what data is available from the Steam API, but if it's possible to check if an entry is DLC, I would prefer if these entries are just ignored when returning the results list. This could be a settings toggle, but to be honest, I can't imagine many people would miss them if they were just gone entirely.

    Additional context Screenshot 2023-01-03 at 9 45 11 PM

    feature request 
    opened by iznaut 0
  • Option to auto-switch to newly added note

    Option to auto-switch to newly added note

    Is your feature request related to a problem? Please describe. It's pretty common for me to want to make edits to a Media DB entry shortly after adding it. My current solution is a Datatable query that returns the most recently created notes, so I open that note and click the topmost entry.

    Describe the solution you'd like A toggle in settings to automatically switch to the newly created Media DB note after the prompt closes.

    feature request 
    opened by iznaut 0
  • Use a custom date picker when adding a new media entry.

    Use a custom date picker when adding a new media entry.

    I usually add media entries via templater. Fairly tired of doing it and would like to switch over.

    Among other requirements, I sometimes add an entry a few days after I've watched it. I don't want to edit this by hand and instead would like to get a date picker popup to select the correct timestamp/date.

    Is this possible? I'd rather not use an additional dep like Metabind but curious to hear your thoughts.

    feature request 
    opened by AB1908 3
  • Question regarding bulk import

    Question regarding bulk import

    • [x ] The Plugin is up to date
    • [x ] Obsidian is up to date

    Describe the bug Question regarding bulk import

    MDB - bulk import error report 12-23-2022 12-42-10

    | file | error | | ------------------------------------------ | ------------------------------------------ | | Media DB/music/import/metadata.json | metadata field 'titles' not found or empty | | Media DB/music/import/AlbumsToListento.csv | metadata field 'titles' not found or empty |

    can you give me a hint what I am doing wrong?

    Thanks in advance

    To Reproduce Steps to reproduce the behavior

    I try to use the bulk imoport with this csv file:

    CSV file to import

    than I added a metadata.json file. Don't know if this is needed: Metadata json

    And I choose the following option in the import: ![[Import Options.png]] Import Options

    And I alway get an error message from the import.

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Occurs on

    • [x ] Windows
    • [ ] macOS
    • [ ] Linux
    • [ ] Android
    • [ ] iOS

    Plugin version 0.5.0

    Additional context Add any other context about the problem here.

    bug 
    opened by yte424 0
Releases(0.5.0)
Owner
Moritz Jung
Moritz Jung
Ethernaut.8.vault - Exercice 8 (Vault) on Ethernaut

Advanced Sample Hardhat Project This project demonstrates an advanced Hardhat use case, integrating other tools commonly used alongside Hardhat in the

Shoto 1 Jan 3, 2022
A list of movies are shown and you can add a comment on them or like them.

Dynasty Entertainment. A list of movies are shown and you can add a comment on them or like them. Built With HTML, CSS & JavaScript. webpack, bootstra

 Hassan Momanyi 8 Nov 25, 2022
A simple to do list webpage where you can log the daily tasks you have to do, mark them as checked, modify them, reorder them and remove them. Made using HTML, CSS and JavaScript.

To-Do-List This Webpage is for an app called To-Do-List which helps you add, remove or check tasks you have to do. It is a simple web page which conta

Zeeshan Haider 9 Mar 12, 2022
This is a Netflix clone where you can watch movies or series

Netlfix Clone This is a Netflix clone where you can watch movies or series. Visit Now ?? Things I Implemented SignIn/SignUp Movie/Series Filter Watch

Neelesh Singh 3 Dec 1, 2022
Keep track of the movies you've watched and create your own movies lists!

Cinematek Keep track of the movies you've watched and create your own movies lists! All the movies informations are provided by The Movie Database Dep

Caroline Oliveira 8 May 23, 2022
⚡🚀 Call multiple view functions, from multiple Smart Contracts, in a single RPC query!

ethers-multicall ⚡ ?? Call multiple view functions, from multiple Smart Contracts, in a single RPC query! Querying an RPC endpoint can be very costly

Morpho Labs 20 Dec 30, 2022
Application for organizing, rating, and sharing TV series and movies that you are watching or would like to watch.

Watch This! We're living in an age of virtually unlimited ntertainment options, and keeping up with it all can be a little overwhelming. Using the Wat

Brian Bagley 2 Jun 13, 2022
Movies and series web app developed using NextJS.

Disney+ Clone Movies and series web app developed using NextJS. Deployed Link : https://disney-clone-ndmiypj8n-suchitd11.vercel.app/ Preview Login Hom

Suchit Deshmukh 16 Dec 9, 2022
Movies and series web app developed using NextJS.

Disney+ Movies and series web app developed using NextJS. Deployed Link : https://disney-clone-ndmiypj8n-suchitd11.vercel.app/ Preview Login Homescree

Suchit Deshmukh 8 Jun 28, 2022
🟢 Music player app with a modern homepage, fully-fledged music player, search, lyrics, song exploration features, search, popular music around you, worldwide top charts, and much more.

Music-player-app see the project here. 1. Key Features 2. Technologies I've used Key Features: ?? Fully responsive clean UI. ?? Entirely mobile respo

suraj ✨ 3 Nov 16, 2022
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
A Node.js microservice to store and query time series data

Time series storage microservice This is a simple Node.js application which allows the storage and query of time series datasets in an InfluxDB 2.0 in

JTEKT 3 Apr 25, 2022
This is a Webpack based to-do-list project. With this app, users can add thier daily routine tasks to the list, mark them as complet, edit them or delete them.

To Do List This is a Webpack based to-do-list project. With this app, users can add thier daily routine tasks to the list, mark them as complet, edit

Ali Aqa Atayee 12 Oct 30, 2022
A simple query builder, it will helps to develop DSL query for Elasticsearch

Elasticsearch Dynamic Query Builder A simple query builder, it will helps to develop DSL query for elasticsearch Installation You can start it from np

Hashemi Rafsan 4 Nov 20, 2022