2021-01-16 23:03:41 +01:00
import 'should' ;
import * as ytmusic from '../../lib/services/ytmusic/index.js' ;
describe ( 'ytmusic' , function ( ) {
2021-01-17 00:29:05 +01:00
describe ( 'lookupId' , ( ) => {
it ( 'should find album by ID' , async function testV ( ) {
const result = await ytmusic . lookupId ( 'MPREb_nlOKEssnatr' , 'album' ) ;
result . name . should . equal ( 'Carne de Pescoço' ) ;
} ) ;
it ( 'should find track by ID' , async function ( ) {
const result = await ytmusic . lookupId ( '9zrYXvUXiQk' , 'track' ) ;
2021-06-02 20:31:40 +02:00
result . name . should . equal ( 'One Vision' ) ;
2021-01-17 16:22:46 +01:00
result . artist . name . should . equal ( 'Queen' ) ;
2021-06-02 20:31:40 +02:00
result . album . name . should . equal ( 'A Kind Of Magic' )
} ) ;
it ( 'should find track by ID' , async function ( ) {
const result = await ytmusic . lookupId ( 'rAzfNuU1f8E' , 'track' ) ;
result . name . should . equal ( 'Erre (Live)' ) ;
result . artist . name . should . equal ( 'Boogarins' ) ;
// The copyright notice is too long and is the only place where the album name is.
result . album . name . should . equal ( '' )
} ) ;
it ( 'should find track by ID' , async function ( ) {
const result = await ytmusic . lookupId ( 'Wst0la_TgTY' , 'track' ) ;
result . name . should . equal ( 'Às Vezes Bate Uma Saudade' ) ;
// XXX: This is very odd. Sometimes, google will return the first artist "Rodrigo Alarcon", sometimes "Rodrigo Alarcon, Ana Muller & Mariana Froes" and sometimes
// "Rodrigo Alarcon, Ana Muller, Mariana Froes". Same API call, same everything. Go figure.
// result.artist.name.should.equal('Rodrigo Alarcon, Ana Muller, Mariana Froes');
result . artist . name . should . startWith ( 'Rodrigo Alarcon' ) ;
result . album . name . should . equal ( 'Taquetá Vol.1' )
2021-01-17 00:29:05 +01:00
} ) ;
} ) ;
2021-01-17 02:03:23 +01:00
describe ( 'search' , ( ) => {
it ( 'should find album by search' , async function ( ) {
const result = await ytmusic . search ( { type : 'album' , artist : { name : 'Jamie xx' } , name : 'In Colour' } ) ;
result . name . should . startWith ( 'In Colour' ) ;
result . id . should . equal ( "MPREb_IbDz5pAZFvJ" ) ;
} ) ;
it ( 'should find album with various artists by search' , async function ( ) {
const result = await ytmusic . search ( { type : 'album' , artist : { name : 'Various Artists' } , name : 'Sambabook João Nogueira' } ) ;
result . name . should . equal ( 'Sambabook João Nogueira' ) ;
result . id . should . equal ( 'MPREb_iZt1VjORlv7' ) ;
} ) ;
2021-01-17 16:40:16 +01:00
it ( 'should find album and make sure it makes sense by search' , async function ( ) {
const result = await ytmusic . search ( { type : 'album' , artist : { name : 'The Beatles' } , name : 'The Beatles' } ) ;
result . name . should . equal ( 'The Beatles' ) ;
result . id . should . equal ( 'MPREb_S5TiUIYvI78' ) ;
} ) ;
2021-01-17 02:03:23 +01:00
it ( 'should find track by search' , async function ( ) {
const result = await ytmusic . search ( { type : 'track' , artist : { name : 'Oasis' } , albumName : 'Stop The Clocks' , name : 'Wonderwall' } ) ;
result . name . should . equal ( 'Wonderwall' ) ;
result . id . should . equal ( 'Gvfgut8nAgw' ) ;
} ) ;
} ) ;
2021-01-16 23:03:41 +01:00
describe ( 'lookupUrl' , ( ) => {
describe ( 'parseUrl' , ( ) => {
it ( 'should parse track url into ID' , async function ( ) {
const result = await ytmusic . parseUrl ( 'https://music.youtube.com/watch?v=YLp2cW7ICCU&feature=share' ) ;
result . id . should . equal ( "YLp2cW7ICCU" ) ;
2021-01-17 12:05:16 +01:00
result . streamUrl . should . equal ( "https://music.youtube.com/watch?v=YLp2cW7ICCU" ) ;
2021-01-16 23:03:41 +01:00
} ) ;
it ( 'should parse album url into ID' , async function ( ) {
const result = await ytmusic . parseUrl ( 'https://music.youtube.com/browse/MPREb_9C36yscfgmJ' ) ;
result . id . should . equal ( "MPREb_9C36yscfgmJ" ) ;
2021-01-17 12:05:16 +01:00
result . streamUrl . should . equal ( "https://music.youtube.com/browse/MPREb_9C36yscfgmJ" ) ;
2021-01-16 23:03:41 +01:00
} ) ;
it ( 'should parse alternative album url into ID' , async function ( ) {
const result = await ytmusic . parseUrl ( 'https://music.youtube.com/playlist?list=OLAK5uy_lx9K5RpiBEwd3E4C1GKqY7e06qTlwydvs' ) ;
result . id . should . equal ( "MPREb_9C36yscfgmJ" ) ;
} ) ;
2021-06-08 19:06:36 +02:00
it ( 'should parse alternative album url into ID, regression' , async function ( ) {
const result = await ytmusic . parseUrl ( 'https://music.youtube.com/playlist?list=OLAK5uy_kxepMtCUKFek54-bgWICIsmglK86HD0TM' ) ;
result . id . should . equal ( "MPREb_XmlDLpyWvMt" ) ;
} ) ;
2021-01-16 23:03:41 +01:00
} ) ;
} ) ;
} ) ;