Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Parsing/editing tags ID3, MP4, FLAC

License

NotificationsYou must be signed in to change notification settings

frolovo22/tag

Repository files navigation

version: golang-versionBuild StatusGo Report Cardcodecov

Tag

Its pure golang library for parsing and editing tags in mp3, mp4 and flac formats

Install

gogetgithub.com/frolovo22/tag

For using command line arguments

goinstallgithub.com/frolovo22/tag

Supported tags

NameID3v1ID3v2.2ID3v2.3ID3v2.4MP4FLAC
TitleTitleTT2TIT2TIT2\xa9namTITLE
ArtistArtistTP1TPE1TPE1\xa9artARTIST
AlbumAlbumTALTALBTALB\xa9albALBUM
YearYearTYETYERTDOR\xa9dayYEAR
CommentCommentCOMCOMMCOMMCOMMENT
GenreGenreTCOTCONTCON\xa9genGENRE
Album Artist-TOATPE2TPE2aARTALBUMARTIST
Date-TIMTYERTDRCDATE
Arranger--IPLSIPLSARRANGER
Author-TOLTOLYTOLYAUTHOR
BPM-BPMTBPMTBPMBPM
Catalog Number--TXXX:CATALOGNUMBERTXXX:CATALOGNUMBERCATALOGNUMBER
Compilation--TCMPTCMPCOMPILATION
Composer-TCMTCOMTCOM\xa9wrtCOMPOSER
Conductor-TP3TPE3TPE3CONDUCTOR
Copyright-TCRTCOPTCOPcprtCOPYRIGHT
Description-TXXTIT3TIT3DESCRIPTION
Disc Number--TPOSTPOSDISCNUMBER
Encoded by-TENTENCTENC\xa9tooENCODED-BY
Track NumberTrackNumberTRKTRCKTRCKtrknTRACKNUMBER
Picture-PICAPICAPICcovrMETADATA_BLOCK_PICTURE

Status

In progress
Future features:

  • Support all tags (id3 v1, v1.1, v2.2, v2.3, v2.4, mp4, flac)
  • Fix errors in files (empty tags, incorrect size, tag size, tag parameters)
  • Command line arguments
FormatReadSetDeleteSave
idv1
idv1.1
idv2.2
idv2.3
idv2.4
mp4
FLAC

Command line arguments

Cli info

taghelp

For read tags use

tagread -in"path/to/file"# example outputversion: id3v2.4description: subtitletrack number: 12/12author: Kittencatalog number: catalogcatbmp: 777conductor: catconductorcopyright: 2019album: CatAlbumcomment: catcomment

for save meta information use

tagread -in"path/to/file" -out"path/to/outputfile.json"

Now supported only json output file

How to use

tags,err:=tag.ReadFile("song.mp3")iferr!=nil {returnerr}fmt.Println(tags.GetTitle())

tag.ReadFile or tag.Read return interfaceMetadata:

package tagtypeMetadatainterface {GetMetadataSetMetadataDeleteMetadataSaveMetadata}typeGetMetadatainterface {GetAllTagNames() []stringGetVersion()VersionGetFileData() []byte// all another file dataGetTitle() (string,error)GetArtist() (string,error)GetAlbum() (string,error)GetYear() (int,error)GetComment() (string,error)GetGenre() (string,error)GetAlbumArtist() (string,error)GetDate() (time.Time,error)GetArranger() (string,error)GetAuthor() (string,error)GetBMP() (int,error)GetCatalogNumber() (int,error)GetCompilation() (string,error)GetComposer() (string,error)GetConductor() (string,error)GetCopyright() (string,error)GetDescription() (string,error)GetDiscNumber() (int,int,error)// number, totalGetEncodedBy() (string,error)GetTrackNumber() (int,int,error)// number, totalGetPicture() (image.Image,error)}typeSetMetadatainterface {SetTitle(titlestring)errorSetArtist(artiststring)errorSetAlbum(albumstring)errorSetYear(yearint)errorSetComment(commentstring)errorSetGenre(genrestring)errorSetAlbumArtist(albumArtiststring)errorSetDate(date time.Time)errorSetArranger(arrangerstring)errorSetAuthor(authorstring)errorSetBMP(bmpint)errorSetCatalogNumber(catalogNumberint)errorSetCompilation(compilationstring)errorSetComposer(composerstring)errorSetConductor(conductorstring)errorSetCopyright(copyrightstring)errorSetDescription(descriptionstring)errorSetDiscNumber(numberint,totalint)errorSetEncodedBy(encodedBystring)errorSetTrackNumber(numberint,totalint)errorSetPicture(picture image.Image)error}typeDeleteMetadatainterface {DeleteAll()errorDeleteTitle()errorDeleteArtist()errorDeleteAlbum()errorDeleteYear()errorDeleteComment()errorDeleteGenre()errorDeleteAlbumArtist()errorDeleteDate()errorDeleteArranger()errorDeleteAuthor()errorDeleteBMP()errorDeleteCatalogNumber()errorDeleteCompilation()errorDeleteComposer()errorDeleteConductor()errorDeleteCopyright()errorDeleteDescription()errorDeleteDiscNumber()errorDeleteEncodedBy()errorDeleteTrackNumber()errorDeletePicture()error}typeSaveMetadatainterface {SaveFile(pathstring)errorSave(input io.WriteSeeker)error}

Also you can read defined format. For Example:

package mainimport ("fmt""github.com/frolovo22/tag""os")funcRead()error {file,err:=os.Open("path/to/file")iferr!=nil {returnerr}deferfile.Close()id3v2,err:=tag.ReadID3v24(file)iferr!=nil {returnerr}// Get tag value by namevalue,err:=id3v2.GetString("TIT2")iferr!=nil {returnerr}fmt.Println("title: "+value)// Set tag valueerr=id3v2.SetString("TIT2","Title")iferr!=nil {returnerr}// User defined tagsvalue,err=id3v2.GetStringTXXX("MYTAG")iferr!=nil {returnerr}fmt.Println("my tag: "+value)// Set user tagerr=id3v2.SetStringTXXX("MYTAG222","Dogs")iferr!=nil {returnerr}// Save changeserr=id3v2.SaveFile("path/to/file")iferr!=nil {returnerr}}

Contribution


[8]ページ先頭

©2009-2025 Movatter.jp