{ "info": { "author": "David Gasaway", "author_email": "dave@gasaway.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3 :: Only", "Topic :: Multimedia :: Sound/Audio" ], "description": "\nIntroduction\n============\n\n``copypl`` is a Python 3 script to copy the files referenced by a playlist\n(M3U, M3U8, or PLS) to a destination folder while retaining the folder structure\nof the original locations. By default, the playlist file is also copied; if the\nlocations in the playlist are relative to the playlist, this means the copied\nplaylist file will be correctly referencing the copied files.\n\nSince this tool is intended for copying audio playlists, by default it will also\ncopy JPEG and PNG files (cover art images, presumably) contained in the same\nfolders that contain the files referenced by the playlist. An argument allows\nmodification of additional file extensions to copy. Regardless of original\nintent, this tool should also work well with playlists containing video or other\nfile types. However, for security and simplicity sake, it only works with local\nfiles contained within the folder containing the playlist file, or a subfolder.\n\nA folder heirarchy is created in the destination folder relative to the playlist\nfolder.\n\nUsage\n=====\n\nBy default, ``copypl`` will copy the files referenced by a playlist, any JPEG\nand PNG files in referenced folders, and the playlist file itself to a\ndestination folder::\n\n copypl /share/Music/Favorites.m3u8 /mnt/sdcard\n\nOr on Windows::\n\n copypl C:\\Music\\Favorites.m3u8 D:\\\n\nThe folders created at the destination mimic the folders relative to the source\nplaylist file. For example, suppose the playlist in the first example above\ncontained the following entries::\n\n Popular/Releases/Heap, Imogen/Ellipse/113 - Half Life.ogg\n /share/Music/Popular/Releases/Rush/2112/01 - 2112.ogg\n\nAlso suppose that the Ellipse and 2112 folders contained a ``cover.jpg`` file.\nThe destination would like like so::\n\n /mnt/sdcard/Favorites.m3u8\n /mnt/sdcard/Popular/Releases/Heap, Imogen/Ellipse/113 - Half Life.ogg\n /mnt/sdcard/Popular/Releases/Heap, Imogen/Ellipse/cover.jpg\n /mnt/sdcard/Popular/Releases/Rush/2112/01 - 2112.ogg\n /mnt/sdcard/Popular/Releases/Rush/2112/cover.jpg\n\nThe playlist file can be excluded from the copy using the ``--copy-playlist``\nargument. Copy of related files can be controlled by the ``--extra-extension``\nargument, but note that any argument passed will clear the defaults. Finally,\nby default, for efficiency, ``copypl`` will check modification timestamps of\nthe source and destination files, and only overwrite older destination files.\nIn addition, it will output a warning if an existing destination file is\nnewer than the source file. Use the ``--ignore-mtime`` to always overwrite.\nNote that this may cause files to get copied multiple times, e.g., if the\nplaylist references multiple files in a folder, then the extra files in the\nfolder will get copied repeatedly.\n\nInstallation\n============\n\n.. warning::\n\n Some Linux distributions discourage installation of system-level python\n packages using ``pip`` or ``setup.py install``, due to collisions with the\n system package manager. In those cases, dependencies should be installed\n through the package manager, if possible, or choose a user folder\n installation method.\n\nInstalling with pip\n-------------------\n\nIf your system has ``pip`` installed, and you have access to install software in\nthe system packages, then *kantag* kan be installed as administrator from \n`PyPI `_::\n\n # pip install copypl\n\nIf you do not have access to install system packages, or do not wish to install\nin the system location, it can be installed in a user folder::\n\n $ pip install --user copypl\n\nInstalling from source\n----------------------\n\nEither download a release tarball from the\n`Downloads `_ page, and\nunpack::\n\n $ tar zxvf copypl-1.0.0.tar.gz\n\nOr get the latest source from the Mercurial repository::\n\n $ hg clone https://bitbucket.org/dgasaway/copypl\n\nIf you have access to install software in the system packages, then it can be\ninstalled as administrator::\n\n # python setup.py install\n\nIf you do not have access to install system packages, or do not wish to install\nin the system location, it can be installed in a user folder::\n\n $ python setup.py install --user\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://bitbucket.org/dgasaway/copypl/downloads/", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/dgasaway/copypl", "keywords": "audio music playlist", "license": "GNU GPL v2", "maintainer": "", "maintainer_email": "", "name": "copypl", "package_url": "https://pypi.org/project/copypl/", "platform": "", "project_url": "https://pypi.org/project/copypl/", "project_urls": { "Download": "https://bitbucket.org/dgasaway/copypl/downloads/", "Homepage": "https://bitbucket.org/dgasaway/copypl" }, "release_url": "https://pypi.org/project/copypl/1.0.0/", "requires_dist": null, "requires_python": ">=3.2", "summary": "A Python script for copying files referenced by m3u/m3u8/pls playlists", "version": "1.0.0" }, "last_serial": 4692771, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "6ff255fdf9d26cd2d2c9022c06d71392", "sha256": "7ab44fc06bfcae36b869e07670a323a21978139d3dcbdbdd6ad456f48f0e2479" }, "downloads": -1, "filename": "copypl-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6ff255fdf9d26cd2d2c9022c06d71392", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.2", "size": 6992, "upload_time": "2019-01-14T05:25:41", "url": "https://files.pythonhosted.org/packages/a0/43/f8a96e5702a78653b916040dd9970ba2fd7b765e23a8cd22e410cecd6f31/copypl-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1679d1688767569c4ebbfb72d79e6e9a", "sha256": "75349de82802129dd7e1842221d1b267e458c45f93b2fafde4631629b0741ac0" }, "downloads": -1, "filename": "copypl-1.0.0.tar.gz", "has_sig": false, "md5_digest": "1679d1688767569c4ebbfb72d79e6e9a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.2", "size": 15425, "upload_time": "2019-01-14T05:25:43", "url": "https://files.pythonhosted.org/packages/9e/9e/1cab500c789550b5d5ca366daa93495726f355a6b25cd0a1c4b4d4f995a8/copypl-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6ff255fdf9d26cd2d2c9022c06d71392", "sha256": "7ab44fc06bfcae36b869e07670a323a21978139d3dcbdbdd6ad456f48f0e2479" }, "downloads": -1, "filename": "copypl-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6ff255fdf9d26cd2d2c9022c06d71392", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.2", "size": 6992, "upload_time": "2019-01-14T05:25:41", "url": "https://files.pythonhosted.org/packages/a0/43/f8a96e5702a78653b916040dd9970ba2fd7b765e23a8cd22e410cecd6f31/copypl-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1679d1688767569c4ebbfb72d79e6e9a", "sha256": "75349de82802129dd7e1842221d1b267e458c45f93b2fafde4631629b0741ac0" }, "downloads": -1, "filename": "copypl-1.0.0.tar.gz", "has_sig": false, "md5_digest": "1679d1688767569c4ebbfb72d79e6e9a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.2", "size": 15425, "upload_time": "2019-01-14T05:25:43", "url": "https://files.pythonhosted.org/packages/9e/9e/1cab500c789550b5d5ca366daa93495726f355a6b25cd0a1c4b4d4f995a8/copypl-1.0.0.tar.gz" } ] }