{"id":40533699,"url":"https://github.com/carlashley/loopdown","last_synced_at":"2026-03-14T06:17:23.751Z","repository":{"id":55372608,"uuid":"506154735","full_name":"carlashley/loopdown","owner":"carlashley","description":"Downloads loop packages for GarageBand, Logic Pro, MainStage 3","archived":false,"fork":false,"pushed_at":"2026-01-17T12:45:58.000Z","size":34958,"stargazers_count":33,"open_issues_count":0,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-01-17T21:56:50.307Z","etag":null,"topics":["garageband","logicprox","mac-os","macos","mainstage3","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/carlashley.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-06-22T08:06:32.000Z","updated_at":"2026-01-17T10:13:03.000Z","dependencies_parsed_at":"2024-05-01T08:37:08.409Z","dependency_job_id":"25862b36-fd8e-40e7-a43b-c8904529876d","html_url":"https://github.com/carlashley/loopdown","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/carlashley/loopdown","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carlashley%2Floopdown","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carlashley%2Floopdown/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carlashley%2Floopdown/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carlashley%2Floopdown/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/carlashley","download_url":"https://codeload.github.com/carlashley/loopdown/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carlashley%2Floopdown/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28616187,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T21:52:42.722Z","status":"ssl_error","status_checked_at":"2026-01-20T21:52:20.513Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["garageband","logicprox","mac-os","macos","mainstage3","python3"],"created_at":"2026-01-20T22:12:16.544Z","updated_at":"2026-03-14T06:17:23.733Z","avatar_url":"https://github.com/carlashley.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# About\nThis is the last version of the Python implementation of `loopdown`. Future releases will be Swift implementations and will only support macOS 14+.\n\n## Notes\n- This has been tested on Python 3.13, it should work for Python 3.11+ but no testing has been done for older Python releases.\n- The `zipapp` build should install the two requirements when `./build.sh` is run.\n- - See _Build help_ below for usage.\n- This is intended to be the last release of a Python version of this tool, future releases will be implemented in Swift.\n- - New features will be sparingly added to the Swift release as the intention is to create a very basic tool to handle downloading and installing content packages.\n- - There is no guarantee that there will be regular releases of the Swift implementation.\n- This version no longer relies on applications existing in `/Applications`. Application installation paths are determined from the output of `system_profiler` data.\n- Downloads do not rely on `curl -C -` for partial file resumption, in fact there are no attempts made at resuming incomplete downloads.\n- - There are no plans to implement any partial download resumption in this release.\n- Please take note of the new argument syntax as noted in the _Usage_ section below.\n\n# Building\n1. In your preferred directory: `git clone https://github.com/carlashley/loopdown`\n1. `cd loopdown/loopdown`\n1. `./build.sh -h`\n1. `./build.sh [your chosen options]`\n\n## Build help\n```\n./build.sh -h\nUsage: ./build.sh [options]\n\nOptions:\n  --build-python=...   Python to use for building (pip + zipapp). If omitted, uses python3 on PATH.\n                       Examples:\n                         --build-python=/opt/python/bin/python3\n                         --build-python=/usr/local/bin/python3\n\n  --interpreter=...    Interpreter string embedded in the zipapp shebang (default: /usr/bin/env python3)\n                       Examples:\n                         --interpreter=/usr/local/bin/python3\n                         --interpreter=\"/usr/bin/env python3\"\n\n  --main=...           Zipapp entrypoint (default: loopdown.__main__:main)\n\n  -h, --help           Show help\n```\n\n# Usage\n## Primary help\n```\npython3 -m loopdown -h\nusage: loopdown [-h] [-v] [-l [level]] [-q] [deploy,download] ...\n\nProcess additional content for installed audio applications, GarageBand, Logic Pro, and/or MainStage.\n\npositional arguments:\n  [deploy,download]     use [deploy,download] -h for further help\n    deploy              deploy audio content packages locally (requires elevated permission when not performing dry-run)\n    download            download audio content packages locally\n\noptions:\n  -h, --help            show this help message and exit\n  -v, --version         show program's version number and exit\n  -l, --log-level [level]\n                        override the log level; default is 'info', choices are 'critical', 'error', 'warning', 'info', 'debug', 'notset'\n  -q, --quiet           all console output (stdout/stderr) is suppressed; events logged to file only\n\nloopdown v2.0.20260120. Copyright © 2026 Carl Ashley. All rights reserved. Apache License Version 2.0 - http://www.apache.org/licenses/\n```\n\n## Download help\n```\npython3 -m loopdown download -h\nusage: loopdown download [-h] [-n] [-a [app ...]] [-r] [-o] [-f] [-d [dir]]\n\nDownload audio content packages locally\n\noptions:\n  -h, --help            show this help message and exit\n  -n, --dry-run         perform a dry run; no mutating action taken\n  -a, --apps [app ...]  override the default 'garageband', 'logicpro', 'mainstage' set of apps that audio content will be processed for;\n                        choices are 'garageband', 'logicpro', 'mainstage'\n  -r, --req             include the required audio packages\n  -o, --opt             include the optional audio packages\n  -f, --force           force the specified action\n  -d, --dest [dir]      override the download directory path when '--download-only' used; default is '/tmp/loopdown'\n```\n\n## Deploy help\n```\npython3 -m loopdown deploy -h\nusage: loopdown deploy [-h] [-n] [-a [app ...]] [-r] [-o] [-f] [-c [url]] [-m [[url]]]\n\nDeploy audio content packages locally (requires elevated permission when not performing dry-run)\n\noptions:\n  -h, --help            show this help message and exit\n  -n, --dry-run         perform a dry run; no mutating action taken\n  -a, --apps [app ...]  override the default 'garageband', 'logicpro', 'mainstage' set of apps that audio content will be processed for;\n                        choices are 'garageband', 'logicpro', 'mainstage'\n  -r, --req             include the required audio packages\n  -o, --opt             include the optional audio packages\n  -f, --force           force the specified action\n  -c, --cache-server [url]\n                        use a caching server; when no server is specified, attempts to auto detect; expected format is 'http://ipaddr:port'\n  -m, --mirror-server [[url]]\n                        local mirror server to use; expected format is 'https://example.org'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarlashley%2Floopdown","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcarlashley%2Floopdown","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarlashley%2Floopdown/lists"}