Skip to content

Commit 6801368

Browse files
committed
Remove live streams from search results.
1 parent 44035c3 commit 6801368

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

src/index.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,9 @@ export function getPlaylistID(url) {
8484
}
8585

8686
const 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

Comments
 (0)