Vlsync – shell script to sync a local folder to VLC on iOS

steviedotboston1 pts0 comments

GitHub - sdubois/vlsync: Shell script to sync local folder to VLC on iOS · GitHub

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

sdubois

vlsync

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>3 Commits<br>3 Commits

README.md

README.md

vlsync.sh

vlsync.sh

View all files

Repository files navigation

vlsync

A shell script that syncs a local directory of MP3s and .m3u playlists to VLC for iOS over Wi-Fi, skipping files already on the device. Re-running is always safe and idempotent.

How it works

VLC for iOS exposes a Wi-Fi upload interface. vlsync.sh uses that interface to push files, with two deduplication strategies:

MP3s — fetched from VLC's /libMediaVLC.xml media list and skipped if already present

.m3u playlists — VLC doesn't list these, so a local MD5 cache (.m3u_cache in your sync directory) tracks what's been uploaded

If VLC becomes unreachable mid-sync (e.g. the app is backgrounded), the script waits and retries automatically.

Note: VLC has no delete API. Removing a file from your local directory does not remove it from the device — delete unwanted files manually in the VLC app.

Requirements

macOS (uses md5 -q; adapt to md5sum for Linux)

curl

python3

Usage

--dir= [OPTIONS]">./vlsync.sh --ip=IP> --dir=DIR> [OPTIONS]

Options

Flag<br>Description

--ip IP<br>VLC iOS device IP address (required)

-d, --dir DIR<br>Local directory to sync from (required)

--reset-playlists<br>Clear the .m3u cache so all playlists are re-uploaded next run

-h, --help<br>Show help

Examples

# Basic sync<br>./vlsync.sh --ip=192.168.4.21 --dir=~/Music

# Force re-upload of all playlists<br>./vlsync.sh --ip=192.168.4.21 --dir=~/Music --reset-playlists

Finding your device IP

In VLC for iOS: Settings → Wi-Fi Sharing — the IP address is shown there while sharing is active.

File name handling

VLC and curl have restrictions on certain characters in filenames (fullwidth Unicode, commas, quotes). The script sanitizes filenames before upload — transliterating non-ASCII characters and stripping or replacing problematic ones — so the on-device names are always ASCII-safe. Playlist .m3u file references should use the same sanitized names to match correctly.

About

Shell script to sync local folder to VLC on iOS

Resources

Readme

Uh oh!

There was an error while loading. Please reload this page.

Activity

Stars

stars

Watchers

watching

Forks

forks

Report repository

Releases

No releases published

Packages

Uh oh!

There was an error while loading. Please reload this page.

Contributors

Uh oh!

There was an error while loading. Please reload this page.

Languages

Shell<br>100.0%

You can’t perform that action at this time.

vlsync sync local script reload files

Related Articles