npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@partoska/p6a

v1.11.4

Published

Command-line tool to manage and sync your event photos from Partoska.

Readme

@partoska/p6a

Manage and sync your event photos from Partoska — right from your terminal.

npm version License

What is this?

p6a is a lightweight command-line tool that helps you download and organize your event photos from Partoska. It's perfect for backing up your memories or working with your photos offline.

Key features:

  • Simple authentication via OAuth.
  • Smart sync that doesn't re-download existing files.
  • Automatic folder organization by event and date.
  • Filter by events you own or have favorited.
  • Create and update events, moderate uploads, and manage media.
  • Upload photos directly to an event from the command line.
  • Get or download invite links, QR codes, and printable share cards.
  • Works on macOS, Linux, and Windows.
  • Agent skills available for use with AI assistants.

Install

npm install -g @partoska/p6a

This installs a small launcher plus the prebuilt native binary for your platform, selected automatically. No compiler or build tools are required — see How this package works for the details.

You can also run it without a global install using npx:

npx @partoska/p6a login

Supported platforms

| OS | Architectures | | ------- | ----------------------- | | macOS | Intel & Apple Silicon | | Linux | x64, arm64 | | Windows | x64, arm64 |

Quick Start

1. Login

p6a login

You'll see a device code and URL. Open the URL in your browser, enter the code, and authorize the app.

2. Sync your photos

p6a sync -t ~/my-photos

That's it! Your photos will be organized into folders like:

my-photos/
├── 2025-01-05 Birthday Party/
│   ├── IMG_0001.jpg
│   ├── IMG_0002.jpg
│   └── MOV_0001.mp4
└── 2025-02-14 Wedding/
    ├── IMG_0001.jpg
    └── IMG_0002.jpg

Run it again anytime — already-downloaded files are skipped, and folders are renamed automatically if an event's name changes.

Commands

| Command | Description | | ---------- | ---------------------------------- | | login | Authenticate with Partoska | | logout | Remove saved credentials | | sync | Download and organize event photos | | list | List events | | create | Create a new event | | update | Update an existing event | | edit | Update a media item | | approve | Approve a media item | | qr | Download QR code for an event | | card | Download share card for an event | | link | Get invite link for an event | | media | List media items for an event | | download | Download media for an event | | upload | Upload a photo to an event | | help | Show usage information | | version | Print version information |

Run p6a help or p6a <command> --help at any time for full usage.

login — Authenticate with Partoska

p6a login                          # Standard device-flow login.
p6a login --dir /data/p6a-config   # Use a custom config location.
p6a login --import /path/config.ini  # Import config from an INI file.

sync — Download your photos

Sync events and photos from Partoska to your computer.

p6a sync -t ~/photos                  # Sync all events.
p6a sync -t ~/my-events --owner-only  # Only events you created.
p6a sync -t ~/favorites --favorite-only  # Only your favorites.
p6a sync -t ~/my-favorites -o -f      # Combine filters (own AND favorite).

What happens when you sync:

  • Events are organized into folders named YYYY-MM-DD Event Name.
  • Photos are named sequentially (IMG_0001.jpg, IMG_0002.jpg, …).
  • Videos are named with a MOV_ prefix (MOV_0001.mp4).
  • Already-downloaded files are automatically skipped.
  • If event names change, folders are renamed automatically.

list — List events

p6a list                          # List all events.
p6a list -q "Birthday"            # Search by name.
p6a list --owner-only             # Only your own events.
p6a list -1                       # Print event IDs only, one per line.
p6a list -F json | jq '.[].name'  # Machine-readable output.

Output formats (-F): plain (default), json, csv, one.

create / update — Manage events

# Create a new event (name must be 3–48 characters).
p6a create -n "Birthday Party"

# Rename an event.
p6a update -e <event-id> -n "New Name"

# Change the event dates (ISO 8601).
p6a update -e <event-id> -S 2026-06-01T10:00:00Z -E 2026-06-01T22:00:00Z

# Make an event public, or private.
p6a update -e <event-id> --public
p6a update -e <event-id> --private

# Enable upload moderation (new uploads require approval before they appear).
p6a update -e <event-id> --moderated

media, edit & approve — Manage media

# List media for an event.
p6a media -e <event-id>
p6a media -e <event-id> --owner-only       # Only media you uploaded.
p6a media -e <event-id> -F json            # Machine-readable output.

# Mark / unmark a media item as a favorite.
p6a edit -e <event-id> -m <media-id> -f
p6a edit -e <event-id> -m <media-id> -F

# Approve a pending item in a moderated event (requires moderator permission).
p6a approve -e <event-id> -m <media-id>

download — Download media

# Download all media for an event into a directory.
p6a download -e <event-id> -t ./photos
p6a download -e <event-id> -t ./photos --owner-only
p6a download -e <event-id> -t ./favorites --favorite-only

# Download a single media item to a file.
p6a download -e <event-id> -m <media-id> -t photo.jpg

upload — Upload photos

Upload a local media file to an event. Prints the new media ID on success. On moderated events, uploads are created unapproved and require moderator approval before they appear to other guests.

# Upload a single photo.
p6a upload -e <event-id> -s photo.jpg

# Upload every JPEG in the current directory.
EID=<event-id>
for f in *.jpg; do p6a upload -e "$EID" -s "$f"; done

link, qr & card — Share events

# Print the primary invite link to stdout.
p6a link -e <event-id>
p6a link -e <event-id> | pbcopy        # Copy to clipboard (macOS).

# Download the event QR code (PNG by default, or SVG).
p6a qr -e <event-id>
p6a qr -e <event-id> -F svg

# Download a printable share card (PDF by default, or JPEG).
# Designs: bday, tech, match, forest, garden, gold, romantic, silver, neon, nineties.
p6a card -e <event-id> -d bday
p6a card -e <event-id> -d forest -L business -p letter -l cs

logout, help & version

p6a logout      # Clear saved credentials.
p6a help        # Show usage information (also: p6a --help).
p6a version     # Print the installed version (also: p6a --version).

Common Workflows

First-time setup

npm install -g @partoska/p6a
p6a login
p6a sync -t ~/partoska-backup

Daily backup

# Run anytime to grab new photos — existing files are not re-downloaded.
p6a sync -t ~/partoska-backup

Multiple sync targets

p6a sync -t ~/all-events                 # Everything.
p6a sync -t ~/my-events --owner-only     # Just yours.
p6a sync -t ~/favorites --favorite-only  # Just favorites.

Scripting with IDs

# Download QR codes for all the events you own.
p6a list -o -1 | xargs -I{} p6a qr -e {}

# Get invite links for all your events.
p6a list -o -1 | xargs -I{} p6a link -e {}

# Approve all pending media in a moderated event.
EID=<event-id>
p6a media -e "$EID" -F json \
  | jq -r '.[] | select(.approved == false) | .id' \
  | xargs -I{} p6a approve -e "$EID" -m {}

Configuration

The tool stores configuration in ~/.p6a/p6a.ini by default (OAuth tokens, API endpoints, and OAuth settings). You can customize the location with either an environment variable or a flag:

export P6A_HOME=/custom/path
p6a login

# Or per-command (use the same --dir for every command):
p6a login --dir /custom/path
p6a sync  --dir /custom/path -t ~/photos

How this package works

@partoska/p6a follows the per-platform optionalDependencies model. The package you install ships only a tiny Node launcher; the actual native binary comes from one of these platform packages, and npm installs only the one matching your OS and CPU:

  • @partoska/p6a-darwin — macOS universal (Intel + Apple Silicon)
  • @partoska/p6a-linux-x64
  • @partoska/p6a-linux-arm64
  • @partoska/p6a-win32-x64
  • @partoska/p6a-win32-arm64

When you run p6a, the launcher detects your platform, resolves the matching binary, and executes it — forwarding all arguments and its exit status. There is no build step and no runtime dependency on Node beyond launching.

Troubleshooting

"Unsupported platform" or "could not find the native binary"

This usually means optional dependencies were skipped during install (for example with npm install --no-optional, or behind a strict CI mirror). Reinstall with optional dependencies enabled:

npm install -g @partoska/p6a

"Failed to login"

  • Make sure you entered the device code correctly and authorized the app in your browser.
  • Check that you have an active internet connection.

"Network error" during sync

  • Verify your internet connection.
  • Refresh your session: p6a logout then p6a login.

Files aren't downloading

  • Make sure the target directory exists and is writable, and that you have enough disk space.
  • Try a fresh login: p6a logout && p6a login.

License

MIT. Copyright (C) 2026 Fabrika Charvat s.r.o. Developed by the Partoska Laboratory team.

Links