2.2.4 • Published 5 months ago

react-native-get-music-files v2.2.4

Weekly downloads
39
License
MIT
Repository
github
Last release
5 months ago

react-native-get-music-files

React Native package to get music files from local and sd for iOS and Android

What does this package?

This package allow you to get music files from Android & iOS with following properties:

  • Title
  • Author
  • Album
  • Duration
  • FilePath
  • Cover
  • Duration
  • Genre

Getting started

$ yarn add react-native-get-music-files or $ yarn add https://github.com/cinder92/react-native-get-music-files.git

iOS

  1. Add in info.plist following permission
<key>NSAppleMusicUsageDescription</key>
<string>This permission is not needed by the app, but it is required by an underlying API. If you see this dialog, contact us.</string>
  1. Add MediaPlayer.framework under build settings in Xcode
  2. Ensure all your music files are sync from a computer to a real iPhone device (this package does not work in simulators)

Android

  1. Navigate to android/app/src/main/AndroidManifest.xml and ensure to add this permission
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/> <-- Add this for Android 13 and newer versions

Before usage

As this package needs permissions from the device, please ensure that you asked for permissions before run any of this package functions.

Constants

SortSongFields {
    TITLE, DURATION, ARTIST, GENRE, ALBUM
}

SortSongOrder {
    ASC, DESC
}

Usage

import { getAll, getAlbums, searchSongs, SortSongFields, SortSongOrder } from "react-native-get-music-files";


const songsOrError = await getAll({
    limit: 20,
    offset: 0,
    coverQuality: 50,
    minSongDuration: 1000,
    sortBy: SortSongFields.TITLE,
    sortOrder: SortSongOrder.DESC,
});

// error 
if (typeof songsOrError === 'string') {
    // do something with the error
    return;
}

const albumsOrError = await getAlbums({
    limit: 10,
    offset: 0,
    coverQuality: 50,
    artist: 'Rihanna',
    sortBy: SortSongFields.ALBUM,
    sortOrder: SortSongOrder.DESC,
});

// error 
if (typeof albumsOrError === 'string') {
    // do something with the error
    return;
}

const resultsOrError = await searchSongs({
    limit: 10,
    offset: 0,
    coverQuality: 50,
    searchBy: '...',
    sortBy: SortSongFields.DURATION,
    sortOrder: SortSongOrder.DESC,
});

// error 
if (typeof resultsOrError === 'string') {
    // do something with the error
    return;
}

MusicFiles returns an array of objects where you can loop, something like this.

[
  {
    title : "La danza del fuego",
    author : "Mago de Oz",
    album : "Finisterra",
    genre : "Folk",
    duration : 209120,
    cover : "data:image/jpeg;base64, ....",
    url : "/sdcard/0/la-danza-del-fuego.mp3"
  }
]

Return Types

  • Album

    Type: Object

    propertytypedescription
    albumstringalbum name
    artiststringauthor
    coverstringbase64 of the artwork
    numberOfSongsnumbernumber of songs in this album
  • Song

    propertytypedescription
    titlestringtitle
    artiststringartist
    albumstringalbum name
    durationstringduration in ms
    genrestringgenre
    coverstringbase64 of the artwork
    urlstringpath of the song

Methods

  • getAlbums

    async getAlbums(options) → {Promise<Album[] | string>}

    • options

      Type: Object

      propertytypedescription
      artiststringrequired
      limitnumberoptional
      offsetnumberrequired if limit set
      coverQualitynumberoptional
      sortBystringoptional
      sortOrderstringoptional
    • returns

      Type: Albums Error: string

  • getAll

    async getAll(options) → {Promise<Song[] | string>}

    • options

      Type: Object

      propertytypedescription
      limitnumberoptional
      offsetnumberrequired if limit set
      coverQualitystringoptional
      minSongDurationnumberoptional
      sortBystringoptional
      sortOrderstringoptional
    • returns

      Type: Song Error: string

  • searchSongs
    async searchSongs(options) → { Promise<Song[] | string> }
    • options

      Type: Object

      propertytypedescription
      searchBystringrequired
      limitnumberoptional
      offsetnumberrequired if limit set
      coverQualitynumberoptional
      sortBystringoptional
      sortOrderstringoptional
    • returns Type: Song Error: string

Usage:

example app

Version Changes

2.2

  • Android & iOS compatible
  • Retro-compat turbo module
  • Limit & offset to paginate results
  • Compatible with https://github.com/zoontek/react-native-permissions

PR are welcome!

2.2.1

5 months ago

2.2.2

5 months ago

2.2.4

5 months ago

2.2.0

6 months ago

2.1.0

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago