Giter Club home page Giter Club logo

nu_plugin_id3's Introduction

nu_plugin_id3

The id3 is a plugin for nushell that helps you read the id3 metadata of your mp3 files. This is project is experimental and still under development. The public API for the user (flags, command input, etc...) may change while nushell is still pre 1.0.

Example of id3

This project is still lacking many features

  • Ability to parse Id3V1 tags
  • Show tag version information
  • Eliminate non-mp3 files from the output (nu command compact removes empty rows)
  • Missing several Id3V2 fields such as comments, data recorded, etc...
  • Ability to write to the tag (mutate artist, album, comments, lyrics, etc...)
  • Ability to convert from older Id3V1 to Id3V2.X

Installation

This project depends on a minimum of nushell 0.10.0 to be installed as that is when support for plugin names containing numbers started.

Cargo

cargo install nu_plugin_id3

Build from Source

  • Clone this repository and navigate to the project directory
  • cargo install --path .
  • You may need to restart nushell for it to recognize this plugin.

Usage

id3 will recursively walk a directory and try to parse id3 tags for each file it finds. The only parameter id3 takes is an optional path. If no optional path is given, id3 will search the current directory. You may specify an arbitrary directory or path to search.

// Searches the present working directory
id3
// Searches all directories inside of ~/mp3s/fugazi
id3 ~/mp3s/fugazi

To take advantage of some fun features of nushell like viewing images in your terminal, you'll need to have the binaryview plugin installed with nushell. You can install this via cargo install nu_plugin_binaryview.

// :)
id3 ~/mp3s/fugazi/repeater | get pictures | first | get data

nu_plugin_id3's People

Contributors

notryanb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

delapouite

nu_plugin_id3's Issues

Better public api

Currently id3 supports parsing the tags by expecting the input to be a file path. This means id3 currently has to be used in the following manner - ls | get name | id3.

This is not intuitive for the user and depends upon another command running first.

Investigate / Add Support for:

  • id3 . or just id3 where the plugin knows to look at files in the current directory
  • id3 <some file path> to look at a specific file
  • id3 <some directory> to look at all files in a specific directory.
  • open song.mp3 | id3 to parse from raw bytes

support for engine-q versions of nushell?

I'd love to see this support nushell version 0.59 and above. We're currently on 0.69.1. I was needed a mp3 tag reader to rename some files the other day and thought of this plugin.

Add support for more Id3v2.x fields

There are many fields not currently being output to the user.

  • comments
  • lyrics
  • date records
    etc...

Review the rest of the rust id3 crates docs and output the rest of the available data.

async all the things

Support for #8 may mean performance problems if a user tries to give id3 their several-hundred gigabyte main media folder and they want to do recursive directory traversal. While having several hundred-thousand rows is not ideal for output, this should still be performant as possible.

example use case:

  • I want to catalog my entire mp3 collection into a single CSV or JSON file.

Support recursive directory traversal

It might be cool to give id3 a top level directory that contains sub-directories with files in them. ie. a directory where artist_directory > [album_1, album_2, album3] and all the mp3 files within are parsed.

Include file path in plugin output

In the event a file fails to parse as a tag but is an mp3 file, the user should at least know the file path so they can see which file failed to parse or is missing data.

Parse Id3v1 tags

Currently the rust id3 crate defaults to parsing id3 tags as Id3v2.x. It will fail to parse a tag that is v1. The plugin should fallback to v1 if v2 fails.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.