Skip to content

Commit 3495eea

Browse files
committed
Initial commit
Extracted from https://github.com/spect88/text-scraper with minor tweaks.
0 parents  commit 3495eea

9 files changed

Lines changed: 249 additions & 0 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
node_modules
2+
npm-debug.log

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
The MIT License (MIT)
2+
3+
Copyright (c) 2015 Tomasz Szczęśniak-Szlagowski
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in
13+
all copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21+
THE SOFTWARE.

README.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# html-to-utf8
2+
3+
A Node.js library for converting HTML documents of arbitrary encoding to UTF-8.
4+
5+
### Installation
6+
7+
```shell
8+
npm install html-to-utf8
9+
```
10+
11+
### Usage
12+
13+
```javascript
14+
var request = require('request');
15+
var toUTF8 = require('html-to-utf8');
16+
17+
request({
18+
url: 'http://www.rakuten.co.jp',
19+
encoding: null // stop request from decoding response
20+
}, function(err, resp, buffer) {
21+
if (err) {
22+
console.error(err.stack);
23+
return;
24+
}
25+
26+
var htmlInUTF8 = toUTF8(buffer, resp.headers['content-type']);
27+
});
28+
```
29+
30+
### License
31+
32+
The code is available under [MIT license](LICENSE).

index.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
'use strict';
2+
3+
var jschardet = require('jschardet');
4+
var charset = require('charset');
5+
var iconv = require('iconv-lite');
6+
7+
module.exports = ensureUTF8;
8+
9+
function ensureUTF8(binaryBuffer, contentType) {
10+
var encoding = detectEncoding(binaryBuffer, contentType);
11+
12+
if (encoding === 'utf8') return binaryBuffer.toString('utf8');
13+
14+
return iconv.decode(binaryBuffer, encoding);
15+
}
16+
17+
function detectEncoding(content, contentType) {
18+
var byMetaAndContentType = charset({'content-type': contentType}, content);
19+
if (byMetaAndContentType) return byMetaAndContentType;
20+
21+
var byGuessing = jschardet.detect(content);
22+
if (byGuessing && byGuessing.encoding) return byGuessing.encoding;
23+
24+
return 'utf8';
25+
}

package.json

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{
2+
"name": "html-to-utf8",
3+
"version": "0.1.0",
4+
"description": "Convert html documents of arbitrary encoding to UTF-8",
5+
"main": "index.js",
6+
"scripts": {
7+
"test": "mocha spec"
8+
},
9+
"keywords": [
10+
"utf8",
11+
"html",
12+
"encoding"
13+
],
14+
"author": "Tomasz Szczęśniak-Szlagowski <spect88@gmail.com>",
15+
"license": "MIT",
16+
"repository": {
17+
"type": "git",
18+
"url": "git+https://github.com/spect88/html-to-utf8.git"
19+
},
20+
"bugs": {
21+
"url": "https://github.com/spect88/html-to-utf8/issues"
22+
},
23+
"homepage": "https://github.com/spect88/html-to-utf8#readme",
24+
"dependencies": {
25+
"charset": "^1.0.0",
26+
"iconv-lite": "^0.4.11",
27+
"jschardet": "^1.3.0"
28+
},
29+
"devDependencies": {
30+
"chai": "^3.2.0",
31+
"mocha": "^2.3.2"
32+
}
33+
}

spec/html-to-utf8.spec.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
'use strict';
2+
3+
var fs = require('fs');
4+
var expect = require('chai').expect;
5+
6+
var convert = require('../index');
7+
8+
describe('Encoding Converter', function() {
9+
it('properly decodes Shift-JIS html documents', function() {
10+
var input = loadExample('51242_54045.html');
11+
var output = convert(input, 'text/html');
12+
expect(output).to.contain('或る日の小せん');
13+
});
14+
15+
it('guesses encoding even without meta tags or content type', function() {
16+
var input = loadExample('shiftjis.no.meta.html');
17+
var output = convert(input, 'text/html');
18+
expect(output).to.contain('日本語');
19+
});
20+
21+
it('works for documents which already are UTF-8', function() {
22+
var input = loadExample('utf8.with.meta.html');
23+
var output = convert(input, 'text/html');
24+
expect(output).to.contain('日本語');
25+
});
26+
});
27+
28+
function loadExample(name) {
29+
return fs.readFileSync(__dirname + '/resources/' + name);
30+
}

spec/resources/51242_54045.html

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
<?xml version="1.0" encoding="Shift_JIS"?>
2+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
3+
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
4+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" >
5+
<head>
6+
<meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS" />
7+
<meta http-equiv="content-style-type" content="text/css" />
8+
<link rel="stylesheet" type="text/css" href="../../aozora.css" />
9+
<title>吉井勇 或る日の小せん</title>
10+
<script type="text/javascript" src="../../jquery-1.4.2.min.js"></script>
11+
<link rel="Schema.DC" href="http://purl.org/dc/elements/1.1/" />
12+
<meta name="DC.Title" content="或る日の小せん" />
13+
<meta name="DC.Creator" content="吉井勇" />
14+
<meta name="DC.Publisher" content="青空文庫" />
15+
</head>
16+
<body>
17+
<div class="metadata">
18+
<h1 class="title">或る日の小せん</h1>
19+
<h2 class="author">吉井勇</h2>
20+
<br />
21+
<br />
22+
</div>
23+
<div id="contents" style="display:none"></div><div class="main_text"><br />
24+
 今は故人になつてしまつたが、私の知つてゐる落語家先代の柳家小せんは、足腰が立たず、目が見えなくなつてからも、釈台を前に置いて高座を勤め、昔からある落語にもいろいろ自分で工夫をして、「芸」に磨きをかけることを忘れなかつた。<br />
25+
 久保田万太郎、岡村柿紅、私などが<ruby><rb>肝煎</rb><rp></rp><rt>きもいり</rt><rp></rp></ruby>となつて、「小せん会」と云ふものを作り、毎月一回<ruby><rb>何処</rb><rp></rp><rt>どこ</rt><rp></rp></ruby>かの寄席で独演会をやつてゐたが、幸ひにいつも大入だつたのは、要するに当人が芸に熱心だつたからなのであつた。<br />
26+
「五人廻し」「錦の袈裟」「子別れ」「とんちき」「高尾」「山崎屋」「突落し」「居残り佐平次」「磯の鮑」「お見立」「廓大学」「お茶汲」「羽織」「白銅」と云つたやうな<ruby><rb>廓話</rb><rp></rp><rt>くるわばなし</rt><rp></rp></ruby>が得意で、かう云ふ落語になると足腰の立たない盲目の身でありながら、聴き手の心をぐんぐん引き付けてゆく、不思議な魅力を持つてゐるのだつた。芸の力と云つてしまへばそれまでだが、さうなるまでには<ruby><rb>一方</rb><rp></rp><rt>ひとかた</rt><rp></rp></ruby>ならぬ苦心が重ねられてゐたのであつて、およそ世の中の「芸」と称せられるものには、何処か頭の下がるやうな底光りが感じられるのは、切瑳琢磨と云つたやうな心の<ruby><rb></rb><rp></rp><rt>みが</rt><rp></rp></ruby>きが、幾十度となくかかつてゐるからなのだらうか。<br />
27+
 小せんも落語には、いろいろ苦心をしてゐたが――或る日のことである。<br />
28+
「小せんさんゐるかい。」<br />
29+
 厩橋の直ぐ近くをちよつと曲つた、小せんの家の格子戸をがらりと開けて、声を懸けたのは岡村柿紅君。<br />
30+
「ああ、どうぞお上んなすつて下さい。」<br />
31+
 障子の中からさう云つて返事をしたのは、まさしく小せんで。<br />
32+
「やあ、稽古か。」<br />
33+
 上がると直ぐ茶の間で、瀬戸物の火鉢を中に、小せんと向ひ合つて坐つてゐるのは、近頃<ruby><rb>声色</rb><rp></rp><rt>こわいろ</rt><rp></rp></ruby>で売り出した小山三。見ると私はさう云つて、柿紅君と一緒に奥の座敷の方へ通つた。<br />
34+
「ちよつと失礼します。」<br />
35+
 と云つて、小せんが小山三に稽古をしてやつてゐるのは「高尾」の一節で、声色の冒頭として教へてやつてゐるらしい。<br />
36+
「ここまで話して置いて、それから声色にかかるんだ。いいかい。分つたかね。今度来るまでに幾度も自分でやつて見るがいいや」<br />
37+
 と云つてから稽古を終つた小せんは、女房のお時に助けられながら、私達のゐる座敷の方へ居ざつて来た。<br />
38+
「如何も失礼を致しました。上野の師匠(三代目小さん)に頼まれて、若い輩五六人に稽古をしてやつてゐるもんですから、近頃はこれで中々忙しいんです。」<br />
39+
「さうかい。そりやあ結構じやないか。」<br />
40+
「ええ、お陰様で皆さんが心配して下さるもんですから、こんな体になつても、如何にかかうにかやつてゆけます。」<br />
41+
 小せんはさう云つて、色の黒い面をちよつと伏せたが、暫くすると何か思ひ出したやうに顔を上げて、<br />
42+
「ねえ、岡村先生。あのう、白浪五人男の稲瀬川の勢揃ひの場で、それぞれツラネの<ruby><rb>台詞</rb><rp></rp><rt>せりふ</rt><rp></rp></ruby>がありますね。あの中の忠信利平のは何とか云ひましたね。餓鬼の時から手癖が悪く――」<br />
43+
「抜け参りからぐれ出して。」<br />
44+
「ああ。さうさう、旅から旅を稼ぎ廻り。」<br />
45+
 と云ふ小せんの言葉を継いで、柿紅君はすらすらと、<br />
46+
「碁打と云つて寺方や、物持百姓の家へ押し入り、盗んだ金の<ruby><rb>罪科</rb><rp></rp><rt>つみとが</rt><rp></rp></ruby>は、毛抜けの塔の二重三重、重なる悪事に高飛なし――と云ふんだらう。」<br />
47+
 と云つてから、<br />
48+
「何だい。何かにこれを使ふのかい。」<br />
49+
 訊かれると小せんの顔には、盲目とは思はれないやうな朗らかに明るい微笑が浮んだ。<br />
50+
「ええ、実はこの次の小せん会で、居残り佐平次を演らうと思つていろいろ工夫をしてゐるんですが、終ひの方に女郎屋の主人が、すつかり佐平次を持て余して、ひと先づ金の算段に出て行つて呉れと云ふところがあるでせう。」<br />
51+
「ああ、あすこで。」<br />
52+
「こいつを使はうつて云ふんですよ。へえ、それがね、もし旦那え、と芝居がかつた台詞になつてから、こちらの閾を跨いで外へ出られないと云ふのは、実は旦那、人殺しこそしてゐませんが、夜盗、かつさり、家尻切、悪いに悪いと云ふことを仕尽しまして、五尺の体の置きどころのない身の上でございますと云ふと、主人は驚いて、そんな悪いことをしさうな方でもないやうな方だと云ひます。」<br />
53+
「うん、それから。」<br />
54+
「ええ、それからがこの台詞ですが、すつかり調子を砕いてしまつて、持つて生れた悪性で、餓鬼の時から手癖が悪うございまして、抜け参りからぐれ出しまして、旅から旅を稼ぎ廻り、碁打と云つては寺方だの、物持百姓の家へ押し入りまして、盗んだ金の罪科は毛抜けの塔の二重三重、重なる悪事に高飛なしと云ふと主人が、何だか聴いたやうな文句だと云ひます。如何でせう、ひとつ今度はかう云ふ風にやつて見ようと思つてゐるんですが。」<br />
55+
「なるほど。こいつあきつと受けるね。」<br />
56+
「面白いよ。」<br />
57+
 と柿紅君と私とは口を揃へて云つたが、果して当日ここへ来ると、どつと客席が引くり返るほど受けた。<br />
58+
 その晩楽屋で苦心した甲斐のあつたことを、ひどく喜んでゐた小せんの顔を、私はいまだに忘れることが出来ない。<br />
59+
<br />
60+
<br />
61+
<br />
62+
</div>
63+
<div class="bibliographical_information">
64+
<hr />
65+
<br />
66+
底本:「日本の名随筆 別巻29 落語」作品社<br />
67+
   1993(平成5)年7月25日第1刷<br />
68+
   1999(平成11)年7月10日第4刷<br />
69+
底本の親本:「吉井勇全集 第七巻」番町書房<br />
70+
   1964(昭和39)年3月<br />
71+
入力:門田裕志<br />
72+
校正:POKEPEEK2011<br />
73+
2014年7月16日作成<br />
74+
青空文庫作成ファイル:<br />
75+
このファイルは、インターネットの図書館、<a href="http://www.aozora.gr.jp/">青空文庫(http://www.aozora.gr.jp/)</a>で作られました。入力、校正、制作にあたったのは、ボランティアの皆さんです。<br />
76+
<br />
77+
<br />
78+
</div>
79+
<div class="notation_notes">
80+
<hr />
81+
<br />
82+
●表記について<br />
83+
<ul>
84+
<li>このファイルは W3C 勧告 XHTML1.1 にそった形式で作成されています。</li>
85+
</ul>
86+
</div>
87+
<div id="card">
88+
<hr />
89+
<br />
90+
<a href="JavaScript:goLibCard();" id="goAZLibCard">●図書カード</a><script type="text/javascript" src="../../contents.js"></script>
91+
<script type="text/javascript" src="../../golibcard.js"></script>
92+
</div></body>
93+
</html>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
㱨瑭氾ਠ‼扯摹㸊††㱨ㄾ鏺陻質㰯栱㸊†㰯扯摹㸊㰯桴浬㸊
2+
<body>
3+
<h1>���{��</h1>
4+
</body>
5+
</html>

spec/resources/utf8.with.meta.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<html>
2+
<head>
3+
<meta charset="UTF-8">
4+
</head>
5+
<body>
6+
<h1>日本語</h1>
7+
</body>
8+
</html>

0 commit comments

Comments
 (0)