Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
48544020a1 | ||
|
|
cc68d21107 | ||
|
|
acd91e2679 | ||
|
|
53f0a9462a | ||
|
|
10d71944d9 | ||
|
|
b5bbde7cdd | ||
|
|
c406bc70ee |
@@ -4,7 +4,7 @@ node_js:
|
||||
- 5
|
||||
- 6
|
||||
before_install:
|
||||
- npm install --dev
|
||||
- npm install --only=dev
|
||||
script:
|
||||
- npm run types
|
||||
- npm run compile
|
||||
|
||||
0
bin/crunchy
Normal file → Executable file
0
bin/crunchy
Normal file → Executable file
1655
package-lock.json
generated
Normal file
1655
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -12,7 +12,10 @@
|
||||
"type": "git",
|
||||
"url": "git://github.com/Godzil/crunchyroll.js.git"
|
||||
},
|
||||
"version": "1.1.19",
|
||||
"engines": {
|
||||
"node": ">=5.0"
|
||||
},
|
||||
"version": "1.1.20",
|
||||
"bin": {
|
||||
"crunchy": "./bin/crunchy"
|
||||
},
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
import cheerio = require('cheerio');
|
||||
import fs = require('fs');
|
||||
import mkdirp = require('mkdirp');
|
||||
import request = require('./request');
|
||||
import my_request = require('./my_request');
|
||||
import path = require('path');
|
||||
import subtitle from './subtitle/index';
|
||||
import video from './video/index';
|
||||
@@ -63,6 +63,11 @@ function fileExist(path: string)
|
||||
}
|
||||
}
|
||||
|
||||
function sanitiseFileName(str: string)
|
||||
{
|
||||
return str.replace(/[\/':\?\*"<>\.]/g, '_');
|
||||
}
|
||||
|
||||
/**
|
||||
* Downloads the subtitle and video.
|
||||
*/
|
||||
@@ -70,8 +75,8 @@ function download(config: IConfig, page: IEpisodePage, player: IEpisodePlayer, d
|
||||
{
|
||||
let series = config.series || page.series;
|
||||
|
||||
series = series.replace('/', '_').replace('\'', '_').replace(':', '_');
|
||||
let fileName = name(config, page, series, '').replace('/', '_').replace('\'', '_').replace(':', '_');
|
||||
series = sanitiseFileName(series);
|
||||
let fileName = sanitiseFileName(name(config, page, series, ''));
|
||||
let filePath = path.join(config.output || process.cwd(), series, fileName);
|
||||
|
||||
if (fileExist(filePath + '.mkv'))
|
||||
@@ -82,7 +87,7 @@ function download(config: IConfig, page: IEpisodePage, player: IEpisodePlayer, d
|
||||
do
|
||||
{
|
||||
count = count + 1;
|
||||
fileName = name(config, page, series, '-' + count).replace('/', '_').replace('\'', '_').replace(':', '_');
|
||||
fileName = sanitiseFileName(name(config, page, series, '-' + count));
|
||||
filePath = path.join(config.output || process.cwd(), series, fileName);
|
||||
} while (fileExist(filePath + '.mkv'));
|
||||
|
||||
@@ -96,6 +101,7 @@ function download(config: IConfig, page: IEpisodePage, player: IEpisodePlayer, d
|
||||
return done(errM, false);
|
||||
}
|
||||
|
||||
log.dispEpisode(fileName, 'Fetching...', false);
|
||||
downloadSubtitle(config, player, filePath, (errDS) =>
|
||||
{
|
||||
if (errDS)
|
||||
@@ -106,7 +112,7 @@ function download(config: IConfig, page: IEpisodePage, player: IEpisodePlayer, d
|
||||
const now = Date.now();
|
||||
if (player.video.file !== undefined)
|
||||
{
|
||||
log.dispEpisode(fileName, 'Fetching...', false);
|
||||
log.dispEpisode(fileName, 'Fetching video...', false);
|
||||
downloadVideo(config, page, player, filePath, (errDV) =>
|
||||
{
|
||||
if (errDV)
|
||||
@@ -121,6 +127,7 @@ function download(config: IConfig, page: IEpisodePage, player: IEpisodePlayer, d
|
||||
|
||||
const isSubtited = Boolean(player.subtitle);
|
||||
|
||||
log.dispEpisode(fileName, 'Merging...', false);
|
||||
video.merge(config, isSubtited, player.video.file, filePath, player.video.mode, (errVM) =>
|
||||
{
|
||||
if (errVM)
|
||||
@@ -239,7 +246,7 @@ function scrapePage(config: IConfig, address: string, done: (err: Error, page?:
|
||||
return done(new Error('Invalid address.'));
|
||||
}
|
||||
|
||||
request.get(config, address, (err, result) =>
|
||||
my_request.get(config, address, (err, result) =>
|
||||
{
|
||||
if (err)
|
||||
{
|
||||
@@ -295,7 +302,7 @@ function scrapePlayer(config: IConfig, address: string, id: number, done: (err:
|
||||
return done(new Error('Invalid address.'));
|
||||
}
|
||||
|
||||
request.post(config, {
|
||||
my_request.post(config, {
|
||||
form: {current_page: address},
|
||||
url: url[1] + '/xml/?req=RpcApiVideoPlayer_GetStandardConfig&media_id=' + id,
|
||||
}, (err, result) =>
|
||||
|
||||
@@ -28,10 +28,10 @@ export function warn(str: string)
|
||||
export function dispEpisode(name: string, status: string, addNL: boolean)
|
||||
{
|
||||
/* Do fancy output */
|
||||
process.stdout.write(' \x1B[1;33m> \x1B[37m' + name + '\x1B[0m : \x1B[33m' + status + '\x1B[0m\x1B[0G');
|
||||
process.stdout.write('\x1B[K \x1B[1;33m> \x1B[37m' + name + '\x1B[0m : \x1B[33m' + status + '\x1B[0m\x1B[0G');
|
||||
|
||||
if (addNL)
|
||||
{
|
||||
console.log('');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ const defaultHeaders: request.Headers =
|
||||
/**
|
||||
* Performs a GET request for the resource.
|
||||
*/
|
||||
export function get(config: IConfig, options: request.Options, done: (err: Error, result?: string) => void)
|
||||
export function get(config: IConfig, options: string|request.Options, done: (err: Error, result?: string) => void)
|
||||
{
|
||||
authenticate(config, err =>
|
||||
{
|
||||
@@ -3,7 +3,7 @@ import cheerio = require('cheerio');
|
||||
import episode from './episode';
|
||||
import fs = require('fs');
|
||||
const fse = require('fs-extra');
|
||||
import request = require('./request');
|
||||
import my_request = require('./my_request');
|
||||
import path = require('path');
|
||||
import url = require('url');
|
||||
import log = require('./log');
|
||||
@@ -158,7 +158,7 @@ function page(config: IConfig, address: string, done: (err: Error, result?: ISer
|
||||
else
|
||||
{
|
||||
let episodeCount = 0;
|
||||
request.get(config, address, (err, result) => {
|
||||
my_request.get(config, address, (err, result) => {
|
||||
if (err) {
|
||||
return done(err);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
"src/interface/ISubtitle.d.ts",
|
||||
"src/interface/ISubtitleEvent.d.ts",
|
||||
"src/interface/ISubtitleStyle.d.ts",
|
||||
"src/request.ts",
|
||||
"src/my_request.ts",
|
||||
"src/series.ts",
|
||||
"src/subtitle/decode.ts",
|
||||
"src/subtitle/formats/ass.ts",
|
||||
|
||||
Reference in New Issue
Block a user