8000 fix: fix using custom filter cli options, including filtering through… · fent/node-ytdl@a87fb28 · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Commit a87fb28

Browse files
committed
fix: fix using custom filter cli options, including filtering through -o
fix #155
1 parent b6441e9 commit a87fb28

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

bin/ytdl.js

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,12 @@ if (opts.infoJson) {
136136
const filters = [];
137137

138138
/**
139+
* @param {string} name
139140
* @param {string} field
140141
* @param {string} regexpStr
141142
* @param {boolean|null} negated
142143
*/
143-
const createFilter = (field, regexpStr, negated) => {
144+
const createFilter = (name, field, regexpStr, negated) => {
144145
let regexp;
145146
try {
146147
regexp = new RegExp(regexpStr, 'i');
@@ -149,19 +150,22 @@ if (opts.infoJson) {
149150
process.exit(1);
150151
}
151152

152-
filters.push(format => negated !== regexp.test(format[field]));
153+
filters.push([name, format => negated !== regexp.test(format[field])]);
153154
};
154155

155156
['container', 'resolution:qualityLabel', 'encoding'].forEach((field) => {
156157
let [fieldName, fieldKey] = field.split(':');
158+
fieldKey = fieldKey || fieldName;
157159
let optsKey = 'filter' + fieldName[0].toUpperCase() + fieldName.slice(1);
160+
let value = opts[optsKey];
161+
let name = `${fieldName}=${value}`;
158162
if (opts[optsKey]) {
159-
createFilter(fieldKey, opts[optsKey], false);
163+
createFilter(name, fieldKey, value, false);
160164
}
161165

162166
optsKey = 'un' + optsKey;
163167
if (opts[optsKey]) {
164-
createFilter(fieldKey, opts[optsKey], true);
168+
createFilter(name, fieldKey, value, true);
165169
}
166170
});
167171

@@ -171,24 +175,24 @@ if (opts.infoJson) {
171175
const hasAudio = format => !!format.audioBitrate;
172176
switch (opts.filter) {
173177
case 'video':
174-
filters.push(hasVideo);
178+
filters.push(['video', hasVideo]);
175179
break;
176180

177181
case 'videoonly':
178-
filters.push(format => hasVideo(format) && !hasAudio(format));
182+
filters.push(['videoonly', format => hasVideo(format) && !hasAudio(format)]);
179183
break;
180184

181185
case 'audio':
182-
filters.push(hasAudio);
186+
filters.push(['audio', hasAudio]);
183187
break;
184188

185189
case 'audioonly':
186-
filters.push(format => !hasVideo(format) && hasAudio(format));
190+
filters.push(['audioonly', format => !hasVideo(format) && hasAudio(format)]);
187191
break;
188192
}
189193

190194
ytdlOptions.filter = (format) => {
191-
return filters.every(filter => filter< 8000 span class="pl-kos">(format));
195+
return filters.every(filter => filter[1](format));
192196
};
193197

194198
if (opts.printUrl) {
@@ -353,7 +357,11 @@ if (opts.infoJson) {
353357
});
354358

355359
readStream.on('error', (err) => {
356-
console.error(err.message);
360+
if (/No such format found/.test(err.message) && filters.length) {
361+
console.error(`No videos matching filters: ${filters.map(filter => filter[0]).join(', ')}`);
362+
} else {
363+
console.error(err.message);
364+
}
357365
process.exit(1);
358366
});
359367

0 commit comments

Comments
 (0)
0