Jump to content

WatchList — Play and manage local audiovisual content and streams

Recommended Posts

Keep a list of audiovisual content to watch and listen to.
We often have series of videos and streams that we’d like to watch but not necessarily keep after, but tracking which we’ve already seen (and are thus safe to delete) can be a chore.
Select in the Finder the files or directories you wish to add to your list and apply the file action Add to watchlist. If the move_on_add Workflow Environment Variable is set, the items will be moved to that directory. Items will be prepended or appended to the list, depending on the add_item_order Workflow Environment Variable. Alternatively, call swl to add the URL in your clipboard as a stream (add ⌘ for the full playlist).

You then have some options you can pick from, all starting with wl.


wlp shows the list of items you can play. A reference to each subtitle section can be found at the end.


wls calls wlp under the hood, but lets you first select a sort order.


In both cases, ↵ plays the selection. Add ⌃ to play without marking as watched or ⌥ to, depending on the entry, download a stream or rescan a series’ directory (useful if you made manual changes to it). ⌘↵ will mark as watched without playing. ⇧ or ⌘Y shows a quicklook preview on files and streams.

If the top_on_play Workflow Environment Variable is set to true, the item will be moved to the top of the list before starting playback.

Items starting with are streams. They show no file size (since they aren’t taking up any space locally) and present the link they were taken from as opposed to a location on disk. To play a stream you need mpv, IINA, or VLC.

An item will not be marked as watched if we can access the player’s CLI and it exits with a failure exit code.

wlu shows the list of watched items. The limit of recent items in this list is controlled by the maximum_watched Workflow Environment Variable. Action an item to mark it as unwatched. Note that in the case of files it does not recover them from the trash, as there is no reliable way to do so on macOS — that step you need to do yourself. If the item has a URL origin (you’ll see it in the subtitle) add ⌘ to open the URL in your default browser or ⌥ to copy it to the clipboard. If the item has an origin URL, ⇧ or ⌘Y shows a quicklook preview.


wle allows you to reorder, rename, and remove items from the list.

To keep your lists synced between machines, use the lists_dir Workflow Environment Variable to pick a custom save location.

Finally, if you use DownMedia it has an option to add the downloaded video files directly to your watchlist.

Subtitle reference:

There are three types of items: files, series, and streams. streams can be further categorised into single item or playlist. Each result has its name as the top title. The subtitle confers more detailed information and follows this template (~ means it never shows):

≈ (4) 𐄁 22m 32s 𐄁 691M 𐄁 /Some/Path

  • ≈. Indicates item is a stream.
        + file: ~
        + series: ~
        + stream: Always present.
  • (4). Number of elements.
        + file: ~
        + series: Remaining audiovisual files in directory.
        + stream: Single item: ~. Playlist: All elements.
  • 22m 32s. Running time.
        + file: Running time of file.
        + series: Running time of first audiovisual file in directory.
        + stream: Combined running time of all elements.
  • 691M. Size.
        + file: Size of file.
        + series: Size of first audiovisual file in directory.
        + stream: ~
  • /Some/Path. Path.
        + file: Path of file.
        + series: Path of directory.
        + stream: URL.

Download | Source

Works well with


Edited by vitor
Link to post
  • Replies 90
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

You misunderstood — you do it from Alfred’s file actions, not the Finder’s file menu. Select the files you want, and then press the keyboard shortcut (I think the default is Cmd+Opt+\).

Keep a list of audiovisual content to watch and listen to.   We often have series of videos and streams that we’d like to watch but not necessarily keep after, but tracking which we’ve already see

Glad it’s working. Will release a version with the fix soon. Enjoy the workflow!

Thanks for this workflow, it is great!


Wow, it wasn't working at all before you updated. Could be useful for marathon frying sessions, thx!


Thank you both. I apologise for it not working before, I had changed a variable name last night that I forgot to update everywhere — I’ve only noticed it this morning when I tried to use it and it wasn’t working.

Please let me know if you have any suggestions.

I’m thinking of adding support for multiple lists (so you can have, for example, different lists for movies, short videos, and books), but this would require an extra step when adding to Alfred, even if I have a default list, so I’m still not sure if it’d be worth it (adding some friction seems to defeat the purpose of this, but on the other hand it could really be much more useful).

Edited by Vítor
Link to post


It now outputs notifications (it’s nice to know the action you’ve selected got through).

When deleting files, instead of simply moving them to the trash, it uses applescript to delete them. This will give you both that satisfying “send to trash” sound and will give you greater flexibility, like having access to the Put Back option in the trash, or being able to press ⌘+Z to get the files to their original locations (you need to do it once for each file).

Edited by Vítor
Link to post



Fixed a bug where it sometimes didn’t check correctly if you had unplayed files.

Also, if you use DownVid, it now has an option to add the downloaded video files directly to your watchlist.

Edited by Vítor
Link to post
  • 3 weeks later...



Perhaps I am missing something but I cannot add a filename to the list. I see no option to add to watchlist from the File menu in Finder. Did I do something wrong? This really looks like a neat workflow.



Link to post
  • 2 weeks later...
  • 1 month later...

Big update. It’s now way more useful.

You’re no longer limited to blindly watching files in sequence, and having to constantly edit the list by hand when you want to watch a file that is not the immediate next one. Instead of using “wl” for everything, now each option has it’s own shortcut (don’t worry, they all start with “wl”, so you can still type just that to see what they are). You can now pick what files to act on, for either watching or marking as unwatched (they’ll still appear sequentially on the list, so there’s no extra work involved if you still want to watch them in order — just pick the first one).

The workflow also keeps track of files in a different way (so it’s easier to manage). It now uses two lists (“towatch” and “watched”), so you’ll probably want to run

rm "${HOME}/Library/Application Support/Alfred 2/Workflow Data/com.vitorgalvao.alfred.watchlist/watchlist.txt"

in a terminal, to get rid of the old file (there’s no problem if you don’t, it’ll just stay there, and won’t interfere with the rest of the functionality).

The “Show” option was also removed, as it was now somewhat redundant.

Edited by Vítor
Link to post
  • 4 weeks later...

Update. If you choose any of the options that let you pick from a list (“wlp” and “wlu”) and continue typing after it (don’t put a space, just continue typing), you’ll start filtering the names, so you can quickly find the ones you want.

Link to post
  • 2 months later...
  • 3 weeks later...
  • 3 weeks later...
  • 1 month later...


It now uses terminal-notifier. This is a departure from my previous stance of having the workflow work completely with public domain code, triggered by the fact that the alternative I’ve build sometimes shows you a warning that interrupts you, due to not being digitally signed, as I currently do not have an Apple Mac Developer account.

I believe I’ve found a somewhat satisfactory way to handle the issues I had with this, though. All non-public-domain code sits right at the top of the workflow, under a “_licensed” directory. This way it’ll be dead-simple to know what you can use freely and what is somewhat restricted. I’m not completely satisfied with this solution, and if I ever find a suitable way to remove terminal-notifier and make all the code in the workflow 100% public domain (like someone willing to take notificator and signing it), that’s what I’ll do.

Since I’ve added that, I decided to make two other changes (one change and one addition) — it uses trash to delete files (you shouldn’t see any change functionally), and there’s a new “wli” option that uses mediainfo to show the filenames and durations, as opposed to filenames and filepaths. Selecting a file in this mode will be the same as using “wlp” (it will play the file and mark it as watched); it is, however, slower (it has to go through the extra operation of checking the duration of each video), which is why it is a separate option.

Link to post
  • 4 months later...

Would really love to be able to have multiple lists, so that I could type "wlp" "name of the playlist", then select the video in the list. 

Is such a feature in the works?

It is not, although I’ve considered it multiple times in the past. Ultimately, I always decide against it.

Multiple new commands would be needed, with multiple levels of interaction each — list lists, create new list, edit list, delete list, play file from list, and more. The Add to watchlist option would be somewhat impaired (needing yet another command — move to list), and wle, which is only there as a bit of last resort, would become central to managing everything. All this would lead to what I believe to be a crummy interface and experience. It would become akin to a todo app that uses files instead of text, and that is definitely not my goal for it.

Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Create New...