10 Commits

Author SHA1 Message Date
Godzil
0a80f80f91 1.2.1 2018-05-08 21:37:43 +01:00
Godzil
3bf5fea735 Make Crunchy to properly return a return code when running fine or failing 2018-05-08 21:37:34 +01:00
Godzil
3a95994cc2 1.2.0 2018-03-29 22:33:15 +01:00
Godzil
a29870691b Update deps 2018-03-29 22:33:06 +01:00
Godzil
547fdc4aa0 Add a way to select the resolution. Use 1080p by default
Fix #58
2018-03-29 22:29:13 +01:00
Godzil
c78552795f 1.1.22 2018-03-29 20:41:45 +01:00
Godzil
090c7e4789 Trying to fix #59 by adding a referer to the header. Seems to fix it but need to be throughfully tested.. 2018-03-29 20:40:17 +01:00
Godzil
bf8e1fe80f Update cloudscraper 2018-03-29 20:38:38 +01:00
Manoël Trapier
7344ce3d61 Update README.md 2018-01-31 17:09:58 +00:00
Godzil
c642e76cce Make sure that it is rebuild before publishing 2017-12-27 05:34:22 +01:00
10 changed files with 233 additions and 3725 deletions

View File

@@ -1,6 +1,6 @@
# Crunchy: a fork of Deathspike/CrunchyRoll.js
[![Issue Stats](http://issuestats.com/github/Godzil/Crunchy/badge/issue)](http://issuestats.com/github/Godzil/Crunchy) [![Travis CI](https://travis-ci.org/Godzil/Crunchy.svg?branch=master)](https://travis-ci.org/Godzil/Crunchy)
[![Issue Stats](http://issuestats.com/github/Godzil/Crunchy/badge/issue)](http://issuestats.com/github/Godzil/Crunchy) [![Travis CI](https://travis-ci.org/Godzil/Crunchy.svg?branch=master)](https://travis-ci.org/Godzil/Crunchy) [![Maintainability](https://api.codeclimate.com/v1/badges/413c7ca11c0805b1ef3e/maintainability)](https://codeclimate.com/github/Godzil/Crunchy/maintainability)
*Crunchy* is capable of downloading *anime* episodes from the popular *CrunchyRoll* streaming service. An episode is stored in the original video format (often H.264 in a MP4 container) and the configured subtitle format (ASS or SRT).The two output files are then merged into a single MKV file.

10
bin/crunchy.sh Executable file
View File

@@ -0,0 +1,10 @@
#!/bin/bash
PARAMS=$*
for i in {1..20}; do
crunchy -u ${PARAMS}
if [ $? == 0 ]; then
break
fi
echo "Going to retry..."
sleep 3
done

3861
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -15,30 +15,32 @@
"engines": {
"node": ">=5.0"
},
"version": "1.1.21",
"version": "1.2.1",
"bin": {
"crunchy": "./bin/crunchy"
"crunchy": "./bin/crunchy",
"crunchy.sh": "./bin/crunchy.sh"
},
"dependencies": {
"big-integer": "^1.4.4",
"big-integer": "^1.6.27",
"cheerio": "^0.22.0",
"cloudscraper": "^1.4.1",
"commander": "^2.12.2",
"cloudscraper": "^1.5.0",
"commander": "^2.15.1",
"fs-extra": "^5.0.0",
"mkdirp": "^0.5.0",
"request": "^2.74.0",
"request": "^2.85.0",
"xml2js": "^0.4.5"
},
"devDependencies": {
"@types/cheerio": "^0.22.6",
"@types/cheerio": "^0.22.7",
"@types/mkdirp": "^0.5.2",
"@types/request": "^2.0.9",
"@types/request": "^2.47.0",
"@types/xml2js": "^0.4.2",
"tsconfig-lint": "^0.12.0",
"tslint": "^5.8.0",
"typescript": "^2.6.2"
"tslint": "^5.9.1",
"typescript": "^2.8.1"
},
"scripts": {
"prepublishOnly": "npm run build",
"build": "tsc",
"test": "tslint -c ./tslint.json --project ./tsconfig.json ./src/**/*.ts",
"start": "node ./bin/crunchy"

View File

@@ -3,6 +3,15 @@ import commander = require('commander');
import fs = require('fs');
import path = require('path');
import series from './series';
import log = require('./log');
/* correspondances between resolution and value CR excpect */
let resol_table: { [id: string]: IResolData; } = {
'360': {quality:'60', format:'106'},
'480': {quality:'61', format:'106'},
'720': {quality:'62', format:'106'},
'1080': {quality:'80', format:'108'},
};
/**
* Streams the batch of series to disk.
@@ -12,6 +21,28 @@ export default function(args: string[], done: (err?: Error) => void)
const config = parse(args);
const batchPath = path.join(config.output || process.cwd(), 'CrunchyRoll.txt');
// set resolution
if (config.resolution)
{
try
{
config.video_format = resol_table[config.resolution]['format'];
config.video_quality = resol_table[config.resolution]['quality'];
}
catch(e)
{
log.warn("Invalid resolution " + config.resolution + "p. Setting to 1080p")
config.video_format = resol_table['1080']['format'];
config.video_quality = resol_table['1080']['quality'];
}
}
else
{
/* 1080 by default */
config.video_format = resol_table['1080']['format'];
config.video_quality = resol_table['1080']['quality'];
}
tasks(config, batchPath, (err, tasks) =>
{
if (err)
@@ -151,5 +182,6 @@ function parse(args: string[]): IConfigLine
.option('-s, --series <s>', 'The series override.')
.option('-n, --filename <s>', 'The name override.')
.option('-t, --tag <s>', 'The subgroup. (Default: CrunchyRoll)')
.option('-r, --resolution <s>', 'The video resolution. (Default: 1080 (360, 480, 720, 1080))')
.parse(args);
}

View File

@@ -6,5 +6,8 @@ batch(process.argv, (err: any) =>
if (err)
{
console.error(err.stack || err);
process.exit(-1)
}
console.info("Done!")
process.exit(0)
});

View File

@@ -303,7 +303,12 @@ function scrapePlayer(config: IConfig, address: string, id: number, done: (err:
}
my_request.post(config, {
form: {current_page: address},
form: {
current_page: address,
video_format: config.video_format,
video_quality: config.video_quality,
media_id: id
},
url: url[1] + '/xml/?req=RpcApiVideoPlayer_GetStandardConfig&media_id=' + id,
}, (err, result) =>
{
@@ -328,9 +333,9 @@ function scrapePlayer(config: IConfig, address: string, id: number, done: (err:
let streamMode = 'RTMP';
if (player['default:preload'].stream_info.host === '')
{
streamMode = 'HLS';
}
{
streamMode = 'HLS';
}
done(null, {
subtitle: isSubtitled ? {

View File

@@ -14,4 +14,7 @@ interface IConfig {
series?: string;
filename?: string;
tag?: string;
resolution?: string;
video_format?: string;
video_quality?: string;
}

4
src/interface/IResolData.d.ts vendored Normal file
View File

@@ -0,0 +1,4 @@
interface IResolData {
quality: string;
format: string;
}

View File

@@ -9,8 +9,10 @@ let isPremium = false;
const defaultHeaders: request.Headers =
{
'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0',
'Connection': 'keep-alive'
'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64; x64; rv:58.0) Gecko/20100101 Firefox/58.0',
// Mozilla/5.0 (Windows NT 6.2; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0',
'Connection': 'keep-alive',
'Referer': 'https://www.crunchyroll.com/login'
};
/**
@@ -99,9 +101,9 @@ function authenticate(config: IConfig, done: (err: Error) => void)
headers: defaultHeaders,
form:
{
'login_form[redirect_url]': '/',
'login_form[name]': config.user,
'login_form[password]': config.pass,
'login_form[redirect_url]': '/',
'login_form[_token]': token
},
jar: true,