@@ -84,9 +84,9 @@ export function getPlaylistID(url) {
8484}
8585
8686const defaultSearchOptions = {
87- part : 'id' ,
87+ part : 'id,snippet ' ,
8888 fields : `
89- items(id/videoId),
89+ items(id/videoId, snippet/liveBroadcastContent ),
9090 pageInfo,
9191 nextPageToken,
9292 prevPageToken
@@ -146,12 +146,14 @@ export default function youTubeSource(uw, opts = {}) {
146146 maxHeight : 8192
147147 } ) ;
148148
149- return result . items . map ( normalizeMedia ) ;
149+ return result . items . map ( normalizeMedia ) . filter ( item => item . duration > 0 ) ;
150150 }
151151
152152 async function get ( sourceIDs ) {
153+ const ids = sourceIDs . map ( id => getYouTubeID ( id ) || id ) ;
154+
153155 const pages = await Promise . all (
154- chunk ( sourceIDs , 50 ) . map ( getPage )
156+ chunk ( ids , 50 ) . map ( getPage )
155157 ) ;
156158 return pages . reduce ( ( result , page ) => result . concat ( page ) , [ ] ) ;
157159 }
@@ -162,14 +164,17 @@ export default function youTubeSource(uw, opts = {}) {
162164 // URLs.
163165 const id = getYouTubeID ( query , { fuzzy : false } ) ;
164166 const result = await youTubeSearch ( {
167+ ...params ,
165168 ...defaultSearchOptions ,
166169 ...searchOptions ,
167- ...params ,
168170 q : id ? `"${ id } "` : query ,
169171 pageToken : page
170172 } ) ;
171173
172- return get ( result . items . map ( item => item . id . videoId ) ) ;
174+ return get (
175+ result . items
176+ . filter ( item => ! item . snippet || item . snippet . liveBroadcastContent === 'none' )
177+ . map ( item => item . id . videoId ) ) ;
173178 }
174179
175180 async function getPlaylistPage ( playlistID , page = null ) {
0 commit comments