Skip to content

Commit e0039d4

Browse files
committed
fix(url): return only urls with 200 statusCode
1 parent a2d7bcd commit e0039d4

File tree

2 files changed

+44
-2
lines changed

2 files changed

+44
-2
lines changed

src/index.js

+34-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
'use strict'
22

33
const http = require('http')
4+
const https = require('https')
5+
const { URL } = require('url')
46
const cheerio = require('cheerio')
57
const querystring = require('querystring')
68
const Fuse = require('fuse.js')
@@ -18,6 +20,34 @@ const requestOptions = uri => {
1820
}
1921
}
2022

23+
const testLink = uri => {
24+
return new Promise((resolve, reject) => {
25+
const myURL = new URL(uri)
26+
const options = {
27+
headers: { 'User-Agent': userAgent },
28+
hostname: myURL.hostname,
29+
port: myURL.port,
30+
path: myURL.pathname,
31+
method: 'GET'
32+
}
33+
let request
34+
if (myURL.protocol === 'https:') {
35+
request = https.request
36+
} else {
37+
request = http.request
38+
}
39+
const req = request(options, res => {
40+
if (res.statusCode !== 200) {
41+
resolve(null)
42+
} else {
43+
resolve(uri)
44+
}
45+
})
46+
req.on('error', () => resolve(null))
47+
req.end()
48+
})
49+
}
50+
2151
const getOriginalLinks = uri => {
2252
return new Promise((resolve, reject) => {
2353
const options = requestOptions(uri)
@@ -57,15 +87,17 @@ const getLinksByUrl = uri => {
5787
.get()
5888
.filter(x => regex.test(x))
5989
.map(x =>
60-
getOriginalLinks(`/stream/jkmedia/${regex.exec(x)[1]}/`)
90+
getOriginalLinks(`/stream/jkmedia/${regex.exec(x)[1]}/`).then(
91+
testLink
92+
)
6193
)
6294
Promise.all(promises)
6395
.then(urls => {
6496
resolve({
6597
title: title,
6698
codeName: codeName,
6799
chapter: chapter,
68-
urls: urls
100+
urls: urls.filter(uri => uri !== null)
69101
})
70102
})
71103
.catch(reject)

test/test.js

+10
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,11 @@ describe('anime-dl', function () {
8282
}
8383
]
8484
})
85+
nock('https://www2.mp4upload.com:282')
86+
.get(
87+
'/d/rgx3762vz3b4quuoykue6jcwkwyu7xsrj57jctgg65tu5hmtf53xlbb4/video.mp4'
88+
)
89+
.reply(200)
8590
})
8691

8792
it('should return valid data of a chapter of a anime', done => {
@@ -128,6 +133,11 @@ describe('anime-dl', function () {
128133
}
129134
]
130135
})
136+
nock('https://www2.mp4upload.com:282')
137+
.get(
138+
'/d/rgx3762vz3b4quuoykue6jcwkwyu7xsrj57jctgg65tu5hmtf53xlbb4/video.mp4'
139+
)
140+
.reply(200)
131141
})
132142

133143
it('should return valid data of a chapter of a anime', done => {

0 commit comments

Comments
 (0)