0.0.3 release
0.0.2 release: fixed some crashes and entry point
added roadmap
ftpmusync is a music synchronization tool. It is specifically designed for synchronizing a local music folder to another device over FTP. This is useful because many smartphone-based media player applications have an "FTP server" feature for allowing easy access to their stored media library.
Only sync files which are missing or need updated (a file is considered to need an update if it's size on the local and remote differ, in which case the local file is always assumed to be more up to date).
Automatic detection of enrolled devices on a LAN network.
Sync to multiple devices.
Support for arbitrary prefixes on the remote side.
Unicode path handling via URL-encoding.
ftpmusync depends on the netifaces library.
ftpmusync can be installed via setup.py install
.
usage: ftpmusync [-h] [--version] [--verbose] [--debug] [--port PORT]
[--ip IP] [--user USER] [--password PASSWORD]
[--prefix PREFIX] [--srcdir SRCDIR] [--allow_scan]
[--overwrite] [--token TOKEN]
(--scan | --scan_all | --enroll | --sync)
A tool for syncing music via FTP to applications such as Foobar2000 which have
the capability to host FTP based sync servers. Optionally, automatic discovery
of managed devices may be used.
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
--verbose, -v Display verbose output messages.
--debug, -D Display debug output messages. Implies -v.
--port PORT, -p PORT Specify the port FTP is expected to be running on.
(default: 21)
--ip IP, -i IP Specify an IP address to sync explicitly
--user USER, -u USER Specify FTP user. (default: anonymous)
--password PASSWORD, -P PASSWORD
Specify FTP password. (default: anonymous)
--prefix PREFIX, -e PREFIX
Specify prefix on FTP server. (default: ./)
--srcdir SRCDIR, -d SRCDIR
Specify the source directory. (default: ~/Music)
--allow_scan, -a Enable features that require scanning the network.
WARNING: this feature or action may trigger commonly
used network monitor or intrusion-detection software.
Please do not use this feature on a network you do not
own without permission from the local systems
administrator.
--overwrite, -w If asserted, any conflicting paths on the remote are
unconditionally overwritten. By default, only paths
where the file sizes differ are overwritten.
--token TOKEN, -t TOKEN
Override the token, which is the system hostname by
default. This is used to check if a given target host
is managed by this instance of ftpmusync. You may want
to override this if you wish to sync to the same
device from several systems, or if your system
hostname changes frequently for some reason.
--scan, -s Output a list of IP addresses which are managed by
ftpmusync on the current LAN network. Requires
--allow_scan to be asserted.
--scan_all, -S Output a list of IP addresses which have open FTP
ports on the current LAN network. Requires
--allow_scan to be asserted.
--enroll, -n Enroll an host to be managed by this ftpmusync
instance. you must specify --ip to use this action.
--sync, -y Sync music files now. If --allow_scan is asserted and
no --ip is provided, all results that would be
returned by --scan are used as sync targets.
ftpmusync should work on any host operating system and FTP server in principle, however it has thus far only been tested on the following configurations:
If you've given ftpmusync a try, let me know what systems were used, what worked, and what didn't.
More performant FTP wrapper
GUI
The net
module could be updated to only import netifaces
if scanning
is requested, which would allow ftpmusync to work with only the Python
standard library in cases where scanning is not required.
Other methods for determining if a remote file needs updated besides just size.
Ability to synchronize playlist files updated on the device back to the host.
Automated path-normalization for m3u playlist files.