Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Rsshub | 23,761 | 2 | 11 hours ago | 1,820 | September 23, 2022 | 268 | mit | JavaScript | ||
🍰 Everything is RSSible | ||||||||||
Spotify Downloader | 11,172 | 2 | 2 | 2 days ago | 64 | June 27, 2022 | 12 | mit | Python | |
Download your Spotify playlists and songs along with album art and metadata (from YouTube if a match is found). | ||||||||||
Spotiflyer | 8,051 | 6 days ago | 1,502 | gpl-3.0 | Kotlin | |||||
Kotlin Multiplatform Music Downloader, Supports Spotify / Gaana / Youtube Music / Jio Saavn / SoundCloud. NOTE: BEING REWRITTEN, SO STAY TUNED. | ||||||||||
Ytmdl | 2,676 | a month ago | 56 | March 15, 2022 | 13 | mit | Python | |||
A simple app to get songs from YouTube in mp3 format with artist name, album name etc from sources like iTunes, Spotify, LastFM, Deezer, Gaana etc. | ||||||||||
Spotube | 2,611 | 3 days ago | 86 | other | Dart | |||||
🎧 Open source Spotify client that doesn't require Premium nor uses Electron! Available for both desktop & mobile! | ||||||||||
Tizonia Openmax Il | 1,450 | 2 years ago | 125 | lgpl-3.0 | C | |||||
Command-line cloud music player for Linux with support for Spotify, Google Play Music, YouTube, SoundCloud, TuneIn, iHeartRadio, Plex servers and Chromecast devices. | ||||||||||
Spotify Dl | 1,264 | 13 days ago | 31 | April 19, 2022 | 29 | mit | Python | |||
Downloads songs from your Spotify Playlist | ||||||||||
Alltomp3 App | 1,238 | 25 days ago | 186 | agpl-3.0 | CSS | |||||
Download and Convert YouTube, SoundCloud & Spotify in MP3 with full tags (title, artist, genre, cover, lyrics 🔥) | ||||||||||
Spotify Dl | 925 | 2 months ago | 36 | May 05, 2022 | 8 | mit | JavaScript | |||
Spotify Downloader and alternative of Spotdl(python) tool made in NodeJS based on youtube-dl | ||||||||||
Savify | 776 | a month ago | 26 | January 29, 2021 | 30 | mit | Python | |||
Download Spotify songs to mp3 with full metadata and cover art! |
Download and convert an online video in MP3 with tags.
Provide several useful methods to get information about a song or to guess the track matching a YouTube video.
npm install alltomp3
const alltomp3 = require('alltomp3');
const dl = alltomp3.findAndDownload("imagine dragons on top of the world", "./", (infos) => {
console.log("It's finished: ", infos);
});
// {
// infos: {
// title: 'On Top Of The World',
// artistName: 'Imagine Dragons',
// deezerId: 63510362,
// itunesId: 555694746,
// position: 5,
// duration: 192,
// deezerAlbum: 6240279,
// discNumber: 1,
// album: 'Night Visions',
// releaseDate: '2012-01-01',
// nbTracks: 13,
// genreId: 132,
// cover: 'http://e-cdn-images.deezer.com/images/cover/7e8314f4280cffde363547a495a260bc/600x600-000000-80-0-0.jpg',
// genre: 'Pop'
// },
// file: './Imagine Dragons - On Top Of The World.mp3'
// }
Each time a trackInfos
object is referred, it corresponds to a JavaScript object with the following fields:
title
artistName
album
: name of the albumcover
: URL of an image for the coverposition
: position of the track on the albumnbTracks
: number of tracks on the albumreleaseDate
: format YYYY-MM-YYdiscNumber
: number of the disc where the track isgenre
: name of the genreduration
: duration in seconddeezerId
: ID of the track on Deezer (http://developers.deezer.com/api/track)itunesId
: ID of the track on iTunes (https://itunes.apple.com/lookup?id=)deezerAlbum
: ID of the album on Deezer (http://developers.deezer.com/api/album)genreId
: ID of the genre on Deezer (http://developers.deezer.com/api/genre)Download, convert and tag the video from url
. Does not work with playlists, only with single videos.
The callback function takes one argument, an object containing the following fields:
file
: the name of the output fileinfos
: a trackInfos
objectIf you are looking for specific query and you think url
correspond to the song you want, you can help the identification and tags with the title
argument.
This event is emitted during the download, with an object containing:
progress
: the percentage of the downloadThis event is emitted during the conversion, with an object containing:
progress
: the percentage of the conversionThis event is emitted every time new information about the track are found, with a trackInfos
object.
This event is emitted at the end (when the file has been downloaded, converted and tagged) with an object containing the following fields:
file
: the name of the output fileinfos
: a trackInfos
objectFind a YouTube music video matching the query, download and tag it. The callback function takes two arguments, first is an object containing the following fields:
file
: the name of the output fileinfos
: a trackInfos
objectAnd second is fill with an error message if any.
This event is emitted during the download, with an object containing:
progress
: the percentage of the downloadThis event is emitted during the conversion, with an object containing:
progress
: the percentage of the conversionThis event is emitted every time new information about the track are found, with a trackInfos
object.
const alltomp3 = require('alltomp3');
const dl = alltomp3.findAndDownload("imagine dragons on top of the world", (infos) => {
console.log("It's finished: ", infos);
});
dl.on('search-end', () => {
console.log('Search end');
});
dl.on('download', (infos) => {
process.stdout.cursorTo(0);
process.stdout.clearLine(1);
process.stdout.write(infos.progress + '%');
});
dl.on('download-end', () => {
console.log('', 'Download end');
});
dl.on('convert', (infos) => {
process.stdout.cursorTo(0);
process.stdout.clearLine(1);
process.stdout.write(infos.progress + '%');
});
dl.on('convert-end', () => {
console.log('', 'Convert end');
});
dl.on('infos', (infos) => {
console.log('New infos received: ', infos);
});
Search on YouTube the video which should have an audio corresponding to the query
. It works best if the query contains the artist and the title of the track.
Returns a Promise which is resolved with an ordered array of objects containing:
id
: YouTube videoIdurl
: URL of the videotitle
: title of the videohd
(boolean): true
if the quality >= 720pduration
: duration in secondsviews
: number of viewsscore
: a high score indicate a high probability of matching with the query. Can be negativeconst alltomp3 = require('alltomp3');
alltomp3.findVideo("imagine dragons on top of the world").then((results) => {
console.log(results);
});
// [ { id: 'g8PrTzLaLHc',
// url: 'https://www.youtube.com/watch?v=g8PrTzLaLHc',
// title: 'Imagine Dragons - On Top of the World -',
// hd: false,
// duration: 191,
// views: '24255381',
// score: -42.113922489729575 },
// { id: 'e74VMNgARvY',
// url: 'https://www.youtube.com/watch?v=e74VMNgARvY',
// title: 'Imagine Dragons - On Top of the World',
// hd: true,
// duration: 196,
// views: '1695902',
// score: -62.604333945991385 },
// ....
// ]
Retrieve information on the track corresponding to title
and artistName
. exact
is a boolean indicating if the terms can change a little (true
by default).
Returns a Promise with a trackInfos
object.
Try to find a title and an artist matching the query
. Works especially well with YouTube video names.
Returns a Promise with an object containing:
title
artistName
const alltomp3 = require('alltomp3');
const l = (infos) => {
console.log(infos);
};
alltomp3.guessTrackFromString('Imagine Dragons - On Top of the World - Lyrics').then(l);
alltomp3.guessTrackFromString('C2C - Happy Ft. D.Martin').then(l);
alltomp3.guessTrackFromString('David Guetta - Bang My Head (Official Video) feat Sia & Fetty Wap').then(l);
alltomp3.guessTrackFromString('David Guetta - Hey Mama (Official Video) ft Nicki Minaj, Bebe Rexha & Afrojack').then(l);
alltomp3.guessTrackFromString('hans zimmer no time for caution').then(l);
// { title: 'On Top Of The World', artistName: 'Imagine Dragons' }
// { title: 'Happy', artistName: 'C2C' }
// { title: 'Bang my Head (feat. Sia & Fetty Wap)', artistName: 'David Guetta' }
// { title: 'Hey Mama', artistName: 'David Guetta' }
// { title: 'No Time for Caution', artistName: 'Hans Zimmer' }
Search lyrics for a song.
Returns a Promise with a string
.
const alltomp3 = require('alltomp3');
alltomp3.findLyrics('Radioactive', 'Imagine Dragons').then((lyrics) => {
console.log(lyrics);
}).catch(() => {
console.log('No lyrics');
});
Download the playlist url
containing URLs (aka YouTube or SoundCloud playlist), convert and tag it in outputFolder
. maxSimultaneous
is the maximum number of parallel conversions (default to 1).
This event is emitted when information about the playlist has been received, with an array(objects)
with the following keys:
url
: URL of the video/tracktitle
: title of the video/trackimage
: image of the video/trackprogress
: object with:
download
: progression of the downloadconvert
: progression of the conversioninfos
: trackInfos
objectfile
: path to the final MP3This array is updated as the process progress.
This event is emitted when a new item is now processed, with an integer index
indicating the corresponding track.
This event is emitted during the download, with an integer index
indicating the corresponding track.
This event is emitted when the download of an item end, with an integer index
indicating the corresponding track.
This event is emitted during the conversion, with an integer index
indicating the corresponding track.
This event is emitted every time new information about a track is received, with an integer index
indicating the corresponding track.
This event is emitted when the processing of an item is finished, with an integer index
indicating the corresponding track.
This event is emitted at the end, when all items have been processed, with the list
array.
Download the playlist url
containing titles (aka Deezer Playlist or Deezer Album), find best matching video on YouTube, convert and tag it in outputFolder
. maxSimultaneous
is the maximum number of parallel conversions (default to 1).
This event is emitted when information about the playlist has been received, with an array(objects)
with the following keys:
title
: title of the trackartistName
: artist of the trackcover
: cover of the trackprogress
: object with:
download
: progression of the downloadconvert
: progression of the conversioninfos
: trackInfos
objectfile
: path to the final MP3This array is updated as the process progress.
This event is emitted when a new item is now processed, with an integer index
indicating the corresponding track.
This event is emitted when the search of YouTube videos for an item (based on the title) end, with an integer index
indicating the corresponding track.
This event is emitted during the download, with an integer index
indicating the corresponding track.
This event is emitted when the download of an item end, with an integer index
indicating the corresponding track.
This event is emitted during the conversion, with an integer index
indicating the corresponding track.
This event is emitted every time new information about a track is received, with an integer index
indicating the corresponding track.
This event is emitted when the processing of an item is finished, with an integer index
indicating the corresponding track.
This event is emitted at the end, when all items have been processed, with the list
array.