Giter VIP home page Giter VIP logo

react-native-get-music-files's Introduction

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

    property type description
    album string album name
    artist string author
    cover string base64 of the artwork
    numberOfSongs number number of songs in this album
  • Song

    property type description
    title string title
    artist string artist
    album string album name
    duration string duration in ms
    genre string genre
    cover string base64 of the artwork
    url string path of the song

Methods

  • getAlbums

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

    • options

      Type: Object

      property type description
      artist string required
      limit number optional
      offset number required if limit set
      coverQuality number optional
      sortBy string optional
      sortOrder string optional
    • returns

      Type: Albums Error: string

  • getAll

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

    • options

      Type: Object

      property type description
      limit number optional
      offset number required if limit set
      coverQuality string optional
      minSongDuration number optional
      sortBy string optional
      sortOrder string optional
    • returns

      Type: Song Error: string

  • searchSongs

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

    • options

      Type: Object

      property type description
      searchBy string required
      limit number optional
      offset number required if limit set
      coverQuality number optional
      sortBy string optional
      sortOrder string optional
    • 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!

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.