Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/isamert/orgmdb.el
An Emacs/org-mode watchlist manager and OMDb API client
https://github.com/isamert/orgmdb.el
emacs movies org-mode
Last synced: 3 days ago
JSON representation
An Emacs/org-mode watchlist manager and OMDb API client
- Host: GitHub
- URL: https://github.com/isamert/orgmdb.el
- Owner: isamert
- License: gpl-3.0
- Created: 2021-01-19T22:13:18.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2025-01-04T19:11:39.000Z (about 2 months ago)
- Last Synced: 2025-01-04T20:21:57.629Z (about 2 months ago)
- Topics: emacs, movies, org-mode
- Language: Emacs Lisp
- Homepage:
- Size: 694 KB
- Stars: 31
- Watchers: 4
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.org
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
#+TITLE: orgmdb.el
[[https://melpa.org/#/orgmdb][file:https://melpa.org/packages/orgmdb-badge.svg]]
Tools for managing your watchlist in org-mode and some functions for interacting with [[http://www.omdbapi.com/][OMDb API]].
* Installation
orgmdb is available through [[https://melpa.org/#/orgmdb][MELPA]]. If you have it set up already, just do ~M-x package-install orgmdb~ and you are good to go. Otherwise please see [[https://melpa.org/#/getting-started][MELPA getting started]] page to learn how you can install packages through MELPA or see the following installation options.Another way to install =orgmdb.el= would be using either [[https://github.com/radian-software/straight.el][straight]] or [[https://github.com/quelpa/quelpa-use-package][quelpa]] package managers:
#+begin_src elisp
;; Using straight:
(use-package orgmdb
:straight (:host github :repo "isamert/orgmdb.el"));; Using quelpa:
(use-package orgmdb
:quelpa (orgmdb :fetcher github :repo "isamert/orgmdb.el"))
#+end_srcYet another option is just downloading =orgmdb.el= file and putting into your =load-path=, afterwards you can simply do the following in your =init.el=:
#+begin_src elisp
(require 'orgmdb)
#+end_src* Demo
** Displaying detailed movie information
[[file:https://user-images.githubusercontent.com/8031017/154753759-5ddaca00-3245-433f-9c3a-13c1c48f5c01.gif]]** Filling movie metadata
[[file:https://user-images.githubusercontent.com/8031017/154753756-5108bb8d-4dd0-457c-95df-9bae7a7ad17c.gif]]** Opening a local video
[[file:https://user-images.githubusercontent.com/8031017/154756033-318e5482-67e5-4ae4-a40e-c29375faed58.gif]]* Configuration
You need get yourself an API key to be able to use this package, see [[https://omdbapi.com/][OMDb website]]. After getting yourself an API key, you can start using by doing:#+begin_src elisp
(setq orgmdb-omdb-apikey "YOUR-API-KEY")
#+end_src* Interactive usage
~orgmdb.el~ offers several actions that you can call upon a movie/show/episode objects. These actions can be accessed by calling ~orgmdb-act~ function. A movie/show object is simply an org header with a tag, like the following:#+begin_src org
,* Crouching Tiger, Hidden Dragon (2000) :movie:
,* Succession (2018-) :series:
#+end_srcYou can put your cursor on one of the headers and call ~orgmdb-act~. From the menu, you can select ~Fill movie properties~ to pull movie metadata under the ~:PROPERTIES:~ drawer of the selected header. From now on, you can use other actions defined under the ~orgmdb-act~ menu.
An episode object is a special one, because it can be either a header containing an episode marker object (meaning something like ~S02E05~) with an ~:episode:~ tag:
#+begin_src org
,* Succession (2018-) :series:
,** S01E08 - Prague :episode:
#+end_srcor it can be simply an episode marker object:
#+begin_src org
,* Succession (2018-) :series:
- ...
- I watched S01E08 yesterday and it was cool.
- ^^^^^^ here is our episode marker object
#+end_srcIn both cases, if your cursor is on the episode object, ~orgmdb-act~ will understand the context and show the actions accordingly.
Here are the actions and their simple explanations:
- ~Fill properties~ :: Fill the metadata of the current object. See `orgmdb-fill-property-list` variable to control which properties gets filled in.
- ~Show detailed info~ :: Open a nicely formatted org buffer and display a detailed info of the current object with a small poster of it.
- ~Select an episode...~ :: Select an episode of the currently focused show and act on it.
- ~Open local video~ :: Find the local video file containing the current movie/show/episode. It searches video files under ~orgmdb-video-dir~ and looks for files with ~orgmdb-video-file-extensions~ extensions. ~orgmdb-player-function~ is used for opening the video file.** Defining new actions
You can define new actions for movie/show/episode objects using ~orgmdb-defaction~ function. See the following example:#+begin_src emacs-lisp
(orgmdb-defaction
:name 'show-info
;; ^ Define a unique name for this action
:definition "Show title of the currently selected object"
;; ^ User-facing definition of the action
:on '(movie show episode)
;; ^ On what objects this action should appear?
:act (cl-function
(lambda (type &key title imdb-id episode &allow-other-keys)
(message "The title is %s, imdb-id is %s" title imdb-id))))
#+end_src* Library usage
#+begin_src elisp
(let ((movie (orgmdb :title "in the mood for love")))
(format "Movie name: %s, Year: %s, Plot: %s"
(orgmdb-title movie)
(orgmdb-year movie)
(orgmdb-plot movie)))
#+end_src#+begin_src elisp
(orgmdb :title "thinking of ending things" :year 2020);; This returns something like this:
((Title . "I'm Thinking of Ending Things")
(Year . "2020")
(Rated . "R")
(Released . "04 Sep 2020")
(Runtime . "134 min")
(Genre . "Drama, Thriller")
(Director . "Charlie Kaufman")
(Writer . "Charlie Kaufman (written for the screen by), Iain Reid (based on the book by)")
(Actors . "Jesse Plemons, Jessie Buckley, Toni Collette, David Thewlis") (Plot . "Full of misgivings, a young woman travels with her new boyfriend to his parents' secluded farm. Upon arriving, she comes to question everything she thought she knew about him, and herself.")
(Language . "English, Spanish")
(Country . "USA") ...)
#+end_src