Skip to content

TurboHsu/munager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

40df2a3 ยท Nov 21, 2023

History

52 Commits
Sep 9, 2023
Sep 9, 2023
Nov 21, 2023
Nov 21, 2023
Jul 12, 2023
Nov 20, 2023
Jul 13, 2023
Jul 11, 2023
Sep 9, 2023
Sep 9, 2023
Nov 20, 2023
Nov 20, 2023
Jul 12, 2023

Repository files navigation

Munager

Go Report Card

ไธญๆ–‡ๆ–‡ๆกฃ

0x00 Intro

Munager is a music library management helper that have several functions:

  • Automatically search for lyric files on online services like Netease Music, etc.
  • Syncs your music library between devices with customizable transcoding rules.

0x01 Install

If you wanna compile yourself, just clone this project and run go build ..

If you just want to run the binary, find it in Releases or Github Actions Artifacts for CI Build.

0x02 Usage

Munager is quite self-explained. Use --help for explainations.

Lyric

Type munager lyric for help. It have several subcommand which does:

  • query Querys lyric for given keyword.
  • fetch Fetches lyrics for every songs in provided path.

Sync

Type munager sync for help. It have several subcommands which does:

  • client Starts a client. It can automatically discover server side and syncs local music library with server side. You can also transcode your received songs to another format (FFmpeg) using --transcode flag.
  • server Starts a server. It broadcasts its existance to local network, and serves local music library as you expected.

0x03 Example

Fetching lyrics

Now you have an folder which contains some songs:

THE BOOK
โ”œโ”€โ”€ 01. Epilogue.flac
โ”œโ”€โ”€ 02. ใ‚ขใƒณใ‚ณใƒผใƒซ.flac
โ”œโ”€โ”€ 03. ใƒใƒซใ‚ธใ‚ชใƒณ.flac
โ”œโ”€โ”€ 04. ใ‚ใฎๅคขใ‚’ใชใžใฃใฆ.flac
โ”œโ”€โ”€ 05. ใŸใถใ‚“.flac
โ”œโ”€โ”€ 06. ็พค้’.flac
โ”œโ”€โ”€ 07. ใƒใƒซใ‚ซ.flac
โ”œโ”€โ”€ 08. ๅคœใซ้ง†ใ‘ใ‚‹.flac
โ”œโ”€โ”€ 09. Prologue.flac
โ””โ”€โ”€ cover.png

1 directory, 10 files

To fetch lyric for it, just run

$ munager lyric fetch --path="./THE BOOK/"
2023-07-14 09:43:53  [I]  Found 9 songs without lyrics
 100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| (9/9, 7 it/s)        
2023-07-14 09:43:55  [I]  Done!

Then you should see some .lrc files in your sweet folder.

THE BOOK
โ”œโ”€โ”€ 01. Epilogue.flac
โ”œโ”€โ”€ 01. Epilogue.lrc
โ”œโ”€โ”€ 02. ใ‚ขใƒณใ‚ณใƒผใƒซ.flac
โ”œโ”€โ”€ 02. ใ‚ขใƒณใ‚ณใƒผใƒซ.lrc
โ”œโ”€โ”€ 03. ใƒใƒซใ‚ธใ‚ชใƒณ.flac
โ”œโ”€โ”€ 03. ใƒใƒซใ‚ธใ‚ชใƒณ.lrc
โ”œโ”€โ”€ 04. ใ‚ใฎๅคขใ‚’ใชใžใฃใฆ.flac
โ”œโ”€โ”€ 04. ใ‚ใฎๅคขใ‚’ใชใžใฃใฆ.lrc
โ”œโ”€โ”€ 05. ใŸใถใ‚“.flac
โ”œโ”€โ”€ 05. ใŸใถใ‚“.lrc
โ”œโ”€โ”€ 06. ็พค้’.flac
โ”œโ”€โ”€ 06. ็พค้’.lrc
โ”œโ”€โ”€ 07. ใƒใƒซใ‚ซ.flac
โ”œโ”€โ”€ 07. ใƒใƒซใ‚ซ.lrc
โ”œโ”€โ”€ 08. ๅคœใซ้ง†ใ‘ใ‚‹.flac
โ”œโ”€โ”€ 08. ๅคœใซ้ง†ใ‘ใ‚‹.lrc
โ”œโ”€โ”€ 09. Prologue.flac
โ”œโ”€โ”€ 09. Prologue.lrc
โ””โ”€โ”€ cover.png

1 directory, 19 files

Syncing music library

Imagine you have two devices which contains music library that is not synced.

server
โ””โ”€โ”€ THE BOOK
    โ”œโ”€โ”€ 01. Epilogue.flac
    โ”œโ”€โ”€ 01. Epilogue.lrc
    โ”œโ”€โ”€ 02. ใ‚ขใƒณใ‚ณใƒผใƒซ.flac
    โ”œโ”€โ”€ 02. ใ‚ขใƒณใ‚ณใƒผใƒซ.lrc
    โ”œโ”€โ”€ 03. ใƒใƒซใ‚ธใ‚ชใƒณ.flac
    โ”œโ”€โ”€ 03. ใƒใƒซใ‚ธใ‚ชใƒณ.lrc
    โ”œโ”€โ”€ 04. ใ‚ใฎๅคขใ‚’ใชใžใฃใฆ.flac
    โ”œโ”€โ”€ 04. ใ‚ใฎๅคขใ‚’ใชใžใฃใฆ.lrc
    โ”œโ”€โ”€ 05. ใŸใถใ‚“.flac
    โ”œโ”€โ”€ 05. ใŸใถใ‚“.lrc
    โ”œโ”€โ”€ 06. ็พค้’.flac
    โ”œโ”€โ”€ 06. ็พค้’.lrc
    โ”œโ”€โ”€ 07. ใƒใƒซใ‚ซ.flac
    โ”œโ”€โ”€ 07. ใƒใƒซใ‚ซ.lrc
>   โ”œโ”€โ”€ 08. ๅคœใซ้ง†ใ‘ใ‚‹.flac
>   โ”œโ”€โ”€ 08. ๅคœใซ้ง†ใ‘ใ‚‹.lrc
>   โ”œโ”€โ”€ 09. Prologue.flac
>   โ”œโ”€โ”€ 09. Prologue.lrc
    โ””โ”€โ”€ cover.png   
client
โ””โ”€โ”€ THE BOOK
    โ”œโ”€โ”€ 01. Epilogue.flac
    โ”œโ”€โ”€ 01. Epilogue.lrc
    โ”œโ”€โ”€ 02. ใ‚ขใƒณใ‚ณใƒผใƒซ.flac
    โ”œโ”€โ”€ 02. ใ‚ขใƒณใ‚ณใƒผใƒซ.lrc
    โ”œโ”€โ”€ 03. ใƒใƒซใ‚ธใ‚ชใƒณ.flac
    โ”œโ”€โ”€ 03. ใƒใƒซใ‚ธใ‚ชใƒณ.lrc
    โ”œโ”€โ”€ 04. ใ‚ใฎๅคขใ‚’ใชใžใฃใฆ.flac
    โ”œโ”€โ”€ 04. ใ‚ใฎๅคขใ‚’ใชใžใฃใฆ.lrc
    โ”œโ”€โ”€ 05. ใŸใถใ‚“.flac
    โ”œโ”€โ”€ 05. ใŸใถใ‚“.lrc
    โ”œโ”€โ”€ 06. ็พค้’.flac
    โ”œโ”€โ”€ 06. ็พค้’.lrc
    โ”œโ”€โ”€ 07. ใƒใƒซใ‚ซ.flac
    โ”œโ”€โ”€ 07. ใƒใƒซใ‚ซ.lrc
    โ””โ”€โ”€ cover.png

4 directories, 34 files

On server side, just run munager sync server, and on client side, just run munager sync client. After they do their stuff, the music library should be synced.

Adding a --transcode flag can also achieve this:

server
โ””โ”€โ”€ THE BOOK
    โ”œโ”€โ”€ 01. Epilogue.flac
    โ”œโ”€โ”€ 02. ใ‚ขใƒณใ‚ณใƒผใƒซ.flac
    โ”œโ”€โ”€ 03. ใƒใƒซใ‚ธใ‚ชใƒณ.flac
    โ”œโ”€โ”€ 04. ใ‚ใฎๅคขใ‚’ใชใžใฃใฆ.flac
    โ”œโ”€โ”€ 05. ใŸใถใ‚“.flac
    โ”œโ”€โ”€ 06. ็พค้’.flac
    โ”œโ”€โ”€ 07. ใƒใƒซใ‚ซ.flac
    โ”œโ”€โ”€ 08. ๅคœใซ้ง†ใ‘ใ‚‹.flac
    โ”œโ”€โ”€ 09. Prologue.flac
    โ””โ”€โ”€ cover.png
client
โ””โ”€โ”€ THE BOOK
    โ”œโ”€โ”€ 01. Epilogue.opus
    โ”œโ”€โ”€ 02. ใ‚ขใƒณใ‚ณใƒผใƒซ.opus
    โ”œโ”€โ”€ 03. ใƒใƒซใ‚ธใ‚ชใƒณ.opus
    โ”œโ”€โ”€ 04. ใ‚ใฎๅคขใ‚’ใชใžใฃใฆ.opus
    โ”œโ”€โ”€ 05. ใŸใถใ‚“.opus
    โ”œโ”€โ”€ 06. ็พค้’.opus
    โ”œโ”€โ”€ 07. ใƒใƒซใ‚ซ.opus
    โ”œโ”€โ”€ 08. ๅคœใซ้ง†ใ‘ใ‚‹.opus
    โ”œโ”€โ”€ 09. Prologue.opus
    โ””โ”€โ”€ cover.png

4 directories, 20 files

0xFF Credits

  • Netease API is somehow encrypted, I took some code from mxget for reference.

About

Music managing utils which can fetch lyrics and do syncs

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages