{"id":15015375,"url":"https://github.com/greg-kennedy/p5-audio-cuesheet-libcue","last_synced_at":"2026-04-03T10:37:17.235Z","repository":{"id":249224878,"uuid":"830803660","full_name":"greg-kennedy/p5-Audio-Cuesheet-Libcue","owner":"greg-kennedy","description":"Perl XS interface to libcue","archived":false,"fork":false,"pushed_at":"2024-07-19T19:26:11.000Z","size":11,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-13T00:18:12.961Z","etag":null,"topics":["cue","cue-sheet","cuesheet","perl","perl5","perlxs"],"latest_commit_sha":null,"homepage":"https://metacpan.org/dist/Audio-Cuefile-Libcue","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/greg-kennedy.png","metadata":{"files":{"readme":"README.pod","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}},"created_at":"2024-07-19T03:19:06.000Z","updated_at":"2024-07-22T13:12:00.000Z","dependencies_parsed_at":"2024-11-18T17:44:39.104Z","dependency_job_id":"325b39aa-8a70-422a-bb65-7c06b2ce54b1","html_url":"https://github.com/greg-kennedy/p5-Audio-Cuesheet-Libcue","commit_stats":null,"previous_names":["greg-kennedy/p5-audio-cuesheet-libcue"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greg-kennedy%2Fp5-Audio-Cuesheet-Libcue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greg-kennedy%2Fp5-Audio-Cuesheet-Libcue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greg-kennedy%2Fp5-Audio-Cuesheet-Libcue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greg-kennedy%2Fp5-Audio-Cuesheet-Libcue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/greg-kennedy","download_url":"https://codeload.github.com/greg-kennedy/p5-Audio-Cuesheet-Libcue/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243313634,"owners_count":20271219,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cue","cue-sheet","cuesheet","perl","perl5","perlxs"],"created_at":"2024-09-24T19:47:10.223Z","updated_at":"2025-12-26T10:58:13.097Z","avatar_url":"https://github.com/greg-kennedy.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"=head1 NAME\n\nAudio::Cuefile::Libcue\n\n=head1 VERSION\n\nVersion 2.3.0\n\n=head1 SYNOPSIS\n\nPerl interface to the C\u003clibcue\u003e cuesheet reading library\n\n=head1 USAGE\n\n  use Audio::Cuefile::Libcue;\n\n  my $cuesheet = cue_from_string($string);\n  print Dumper($cuesheet);\n\n=head1 DESCRIPTION\n\nThis is a Perl interface to C\u003clibcue\u003e, a cuesheet parsing library written in C.\nC\u003clibcue\u003e itself was forked from the C\u003ccuetools\u003e project and further enhanced.\nThe library can read cuesheets in many common formats.\n\nThe C interface is made available to Perl, but users should not need those.\nInstead, use the one-shot parsing functions to read a cuesheet into a Perl data\nstructure.\n\n=head2 Perl Interface\n\n  my $cue = cue_from_string($string);\n\n  # or if you have an open filehandle,\n  $cue = cue_from_file($filehandle);\n\nThese two functions read a cuefile from a string or open filehandle, parse it\nusing the C functions, and return a hash structure.  The filehandle can be closed\nafter this call.\n\nAn example of the Perl usage is in F\u003ct/perl_interface.t\u003e.  Note that the C\u003ctracks\u003e and C\u003cindex\u003e, despite being numeric, are stored as string hash keys.  Use a numeric sort (C\u003csort { $a E\u003clt\u003e=E\u003cgt\u003e $b }\u003e) when iterating through the keys.\n\n=head2 C Interface\n\nIf preferred, the C functions from F\u003clibcue.h\u003e are mapped into Perl functions, with the exception of C\u003ccd_delete()\u003e as it is automatically called when needed.  \n\n  # Open a cuesheet\n  my $cd = cue_parse_string($cue);\n\n  print \"Tracks in CD: \" . cd_get_ntrack($cd) . \"\\n\";\n\n  $track_1 = cd_get_track( $cd, 1 );\n  print \"Track 1 filename: \" . track_get_filename($track_1) . \"\\n\";\n  # etc\n\nRefer to C\u003clibcue\u003e for a list of available functions, or F\u003ct/c_interface.t\u003e for further examples.\n\n=head2 Exportable functions\n\n  # Perl interface\n  cue_from_string($string)\n  cue_from_file($filehandle)\n\n  // C interface\n  struct Cd* cue_parse_file(FILE* fp)\n  struct Cd* cue_parse_string(const char* string)\n\n  enum DiscMode cd_get_mode(const struct Cd *cd)\n  const char *cd_get_cdtextfile(const struct Cd *cd)\n\n  struct Cdtext *cd_get_cdtext(const struct Cd *cd)\n  struct Cdtext *track_get_cdtext(const struct Track *track)\n  const char *cdtext_get(enum Pti pti, const struct Cdtext *cdtext)\n\n  struct Rem* cd_get_rem(const struct Cd* cd)\n  struct Rem* track_get_rem(const struct Track* track)\n  const char* rem_get(enum RemType cmt, const struct Rem* rem)\n\n  int cd_get_ntrack(const struct Cd *cd)\n  struct Track *cd_get_track(const struct Cd *cd, int i)\n\n  const char *track_get_filename(const struct Track *track)\n  long track_get_start(const struct Track *track)\n  long track_get_length(const struct Track *track)\n  enum TrackMode track_get_mode(const struct Track *track)\n  enum TrackSubMode track_get_sub_mode(const struct Track *track)\n  int track_is_set_flag(const struct Track *track, enum TrackFlag flag)\n  long track_get_zero_pre(const struct Track *track)\n  long track_get_zero_post(const struct Track *track)\n  const char *track_get_isrc(const struct Track *track)\n  long track_get_index(const struct Track *track, int i)\n\nNone of the constants are exportable.\n\n=head1 HISTORY\n\n=over\n\n=item 2.3.0\n\nOriginal version; created by h2xs 1.23 with options\n\n        -A\n        -C\n        -b\n        5.6.2\n        -v\n        2.3.0\n        -n\n        Audio::Cuefile::Libcue\n        -x\n        libcue/libcue.h\n\n=back\n\n=head1 SEE ALSO\n\nL\u003chttps://github.com/greg-kennedy/p5-Audio-Cuesheet-Libcue\u003e - repository for Audio::Cuesheet::Libcue development\n\nL\u003chttps://github.com/lipnitsk/libcue\u003e - repository for the C libcue library\n\nOther Cuesheet modules:\n\n=over\n\n=item * L\u003cAudio::Cuefile::Parser\u003e, an older pure Perl cuesheet parser\n\n=item * L\u003cAudio::Cuefile::ParserPlus\u003e, a newer Perl module which can also I\u003cwrite\u003e cuesheets.\n\n=item * L\u003cMP3::Tag::Cue\u003e, a cue parser that makes part of L\u003cMP3::Tag\u003e.\n\n=back\n\n=head1 REFERENCES\n\nL\u003chttps://en.wikipedia.org/wiki/Cue_sheet_(computing)\u003e - Wikipedia article on Cuesheets\n\nL\u003chttps://wiki.hydrogenaud.io/index.php?title=Cue_sheet\u003e - Hydrogen Audio article on Cuesheets, with more detail and examples\n\n=head1 AUTHOR\n\nGreg Kennedy, E\u003clt\u003ekennedy.greg@gmail.comE\u003cgt\u003e\n\n=head1 COPYRIGHT AND LICENSE\n\nCopyright (C) 2024 by Greg Kennedy\n\nThis library is free software; you can redistribute it and/or modify\nit under the same terms as Perl itself, either Perl version 5.36.3 or,\nat your option, any later version of Perl 5 you may have available.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgreg-kennedy%2Fp5-audio-cuesheet-libcue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgreg-kennedy%2Fp5-audio-cuesheet-libcue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgreg-kennedy%2Fp5-audio-cuesheet-libcue/lists"}