Skip to content

tedy02/suno_metadata_collector

Repository files navigation

Suno Metatag Collector v2.0.2

Suno Metadata Collector

MIT License Python 3.10+ Requirements Status

Script workflow that captures tokens, keeps them fresh with a background watcher, crawls all Suno workspaces, and exports a neat Excel workbook (plus optional Parquet).


✨ What's New in v2.0.2

  • Minor script tweaks
  • EMOJIS!!

Security default: On successful completion, token files auth.json and auto.json are deleted automatically.


⚙️ Requirements

  • Python 3.10+

  • Install dependencies:

    pip install -r requirements.txt
  • Parquet export: To export Parquet files, you’ll also need pyarrow (pip install pyarrow). This is now included in the requirements file, but is only required if you want the Parquet export.

  • Linux clipboard (for auto-watching):

    sudo apt-get install -y xclip   # or: sudo apt-get install -y xsel
  • Troubleshooting:
    If you have installation issues, try the exact versions listed in requirements.txt as pinned comments.


🚀 Quick Start

  1. Open https://suno.com/me in your browser.

  2. DevTools → Network → filter Fetch/XHR.

  3. Click “Next page” so the Network list refreshes.

  4. Find the GET starting with:

    https://studio-api.prod.suno.com/...
  5. Right-click → CopyCopy as cURL (bash).

  6. Run: Launch run_collector.bat (Windows) OR run_collector.sh (Linux/macOS) OR

    python suno_metadata_collector.py

    The script should automatically detect the information already in your clipboard. If not, paste this information when prompted, then press Enter on a blank line.


📄 File Naming

  • Excel is saved as suno_clips_YYYY-MM-DD.xlsx.
  • If that already exists, the script appends a suffix: suno_clips_YYYY-MM-DD_1.xlsx, then _2, etc.
  • Parquet (optional) is saved as suno_clips.parquet when --write-parquet is used and pyarrow is installed.

📊 Extracted Metadata (94 fields, subject to change)

As of this writing, the script flattens and exports these fields. Future Suno changes may add/remove fields.

Show full field list
  • project_name
  • project_id
  • allow_comments
  • audio_url
  • avatar_image_url
  • caption
  • comment_count
  • created_at
  • display_name
  • display_tags
  • download_disabled_reason
  • entity_type
  • explicit
  • flag_count
  • handle
  • has_hook
  • id
  • image_large_url
  • image_url
  • is_contest_clip
  • is_handle_updated
  • is_liked
  • is_public
  • is_trashed
  • major_model_version
  • metadata.artist_clip_id
  • metadata.can_publish_with_vocal
  • metadata.can_remix
  • metadata.concat_history
  • metadata.control_sliders.audio_weight
  • metadata.control_sliders.style_weight
  • metadata.control_sliders.weirdness_constraint
  • metadata.cover_clip_id
  • metadata.duration
  • metadata.edit_session_id
  • metadata.edited_clip_id
  • metadata.error_message
  • metadata.error_type
  • metadata.gpt_description_prompt
  • metadata.has_stem
  • metadata.has_vocal
  • metadata.history
  • metadata.infill
  • metadata.infill_lyrics
  • metadata.is_audio_upload_tos_accepted
  • metadata.is_loudness_under_threshold
  • metadata.is_remix
  • metadata.negative_tags
  • metadata.persona_id
  • metadata.playlist_id
  • metadata.priority
  • metadata.prompt
  • metadata.refund_credits
  • metadata.show_remix
  • metadata.speed_clip_id
  • metadata.stem_from_id
  • metadata.stem_task
  • metadata.stem_type_group_name
  • metadata.stem_type_id
  • metadata.stream
  • metadata.styles_lyrics_clip_id
  • metadata.tags
  • metadata.task
  • metadata.type
  • metadata.upsample_clip_id
  • metadata.video_is_stale
  • model_name
  • persona.id
  • persona.image_s3_id
  • persona.is_owned
  • persona.is_public
  • persona.is_trashed
  • persona.name
  • persona.root_clip_id
  • persona.user_display_name
  • persona.user_handle
  • persona.user_image_url
  • play_count
  • project.description
  • project.id
  • project.is_public
  • project.is_trashed
  • project.name
  • reaction.feedback_reason
  • reaction.flagged
  • reaction.play_count
  • reaction.reaction_type
  • reaction.skip_count
  • reaction.updated_at
  • status
  • title
  • upvote_count
  • user_id
  • video_url

🏃 CLI Options

--out-dir PATH          Output directory (default: suno_api_dump)
--workspace NAME        Filter to specific workspace(s). Repeat for multiple.
--open-excel true|false Auto-open Excel when done (default: true)
--no-watcher            Disable clipboard watcher (manual pasting only)
--write-parquet         Also write suno_clips.parquet (requires pyarrow)
--log-dir PATH          Directory to write logs (default: logs)

ℹ️ Normal Messages

  • Waiting for auth.json refresh … or [!] 401 Unauthorized. Waiting for new token.
    Copy a fresh Copy as cURL (bash). The watcher updates auth.json automatically.

  • [!] 429 Too Many Requests.
    Normal. The script backs off and retries.

  • Progress lines:

    • page 12    adding 20 new rows   total # of rows 240

📂 Outputs

  • auth.json (deleted automatically on success)
  • suno_api_dump/pages/*.json
  • suno_api_dump/*_clips.json
  • suno_clips_YYYY-MM-DD.xlsx (auto-suffixed if needed)
  • suno_clips.parquet (optional, with --write-parquet)

🙏 Credits

  • Code by tedy02, 2025
  • Coding assistance by Chat-GPT

🛣️ Future Roadmap

Here are the changes/enhancements I would like to make in the future. If you have the ability to implement any of these for me, that would be awesome. I am new to coding—this is my first GitHub project!

  • Add CLI overrides to toggle feed filters: disliked, studio clips, generated stems. Today these are hardcoded to true. A future flag would allow quick opt-in/out.
  • Let users exclude certain metadata/columns at export time.
  • Support multiple output formats beyond Excel and Parquet, like HTML or PDF.

🤝 Contributing & Contact

Feedback, questions, and contributions are welcome! Feel free to open an issue or submit a pull request. Contact email address: tedy02@nitesidedjs.com


📜 License

MIT

<www.thenitesidedjs.com>

About

A set of python scripts to collect all of the Suno song clip's metadata and display it as an Excel file.

Resources

License

Code of conduct

Contributing

Stars

3 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors