pic2ch 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/lib/pic2ch.rb +1 -0
- data/lib/pic2ch/parsers.rb +1 -0
- data/lib/pic2ch/parsers/errors.rb +15 -0
- data/lib/pic2ch/parsers/thread.rb +39 -3
- data/lib/pic2ch/thread.rb +1 -1
- data/lib/pic2ch/thread/static.rb +4 -1
- data/spec/fixtures/36603.html +69 -0
- data/spec/fixtures/deleted.html +73 -0
- data/spec/its_helper.rb +15 -0
- data/spec/provide_helper.rb +36 -0
- data/spec/spec_helper.rb +16 -0
- data/spec/thread_parser_spec.rb +33 -0
- metadata +9 -2
data/Rakefile
CHANGED
data/lib/pic2ch.rb
CHANGED
data/lib/pic2ch/parsers.rb
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
module Pic2ch
|
2
|
+
module Parsers
|
3
|
+
ParseError = Class.new(RuntimeError)
|
4
|
+
DeletedPage = Class.new(ParseError)
|
5
|
+
class NotFound < ParseError
|
6
|
+
def initialize(attr)
|
7
|
+
@attr = attr
|
8
|
+
end
|
9
|
+
|
10
|
+
def message
|
11
|
+
"#{@attr} is not found"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -16,13 +16,35 @@ module Pic2ch
|
|
16
16
|
@doc ||= Nokogiri::HTML(html)
|
17
17
|
end
|
18
18
|
|
19
|
-
|
19
|
+
def deleted?
|
20
|
+
check_deleted
|
21
|
+
return false
|
22
|
+
rescue DeletedPage
|
23
|
+
return true
|
24
|
+
end
|
25
|
+
|
26
|
+
def count
|
27
|
+
unless @count
|
28
|
+
check_deleted
|
29
|
+
count = doc.css('h2').text.scan(/\((\d+)\)$/).flatten.first.to_s
|
30
|
+
raise NotFound, "count" if count.empty?
|
31
|
+
@count = count.to_i
|
32
|
+
end
|
33
|
+
return @count
|
34
|
+
end
|
35
|
+
|
20
36
|
def jpgs
|
21
|
-
@jpgs
|
37
|
+
unless @jpgs
|
38
|
+
check_deleted
|
39
|
+
urls = extract(:urls).split(/:/)
|
40
|
+
raise ParseError, "expected #{count} urls exist, but got #{urls.size}" unless urls.size == count
|
41
|
+
@jpgs = urls
|
42
|
+
end
|
43
|
+
return @jpgs
|
22
44
|
end
|
23
45
|
|
24
46
|
def time
|
25
|
-
@time ||=
|
47
|
+
@time ||= extract(:id).to_i
|
26
48
|
end
|
27
49
|
|
28
50
|
def title
|
@@ -40,6 +62,20 @@ module Pic2ch
|
|
40
62
|
def images_with_thumbs
|
41
63
|
@images_with_thumbs ||= [images, thumbs].transpose
|
42
64
|
end
|
65
|
+
|
66
|
+
private
|
67
|
+
def check_deleted
|
68
|
+
raise DeletedPage if html =~ /このスレッドは削除されました/
|
69
|
+
end
|
70
|
+
|
71
|
+
def extract(key)
|
72
|
+
# {id:'1243648801',urls:'54b14715c000a6334ad2e8771cbf70e8.jpg:1e611e8710dd60d616e345aa69334c2d.jpg:...'}
|
73
|
+
if html =~ /(\{|'\s*,)\s*#{key}:'(.*?)'/
|
74
|
+
return $2.to_s
|
75
|
+
else
|
76
|
+
raise NotFound, key.to_s
|
77
|
+
end
|
78
|
+
end
|
43
79
|
end
|
44
80
|
end
|
45
81
|
end
|
data/lib/pic2ch/thread.rb
CHANGED
@@ -22,7 +22,7 @@ module Pic2ch
|
|
22
22
|
@parser ||= Parsers::Thread.new(self)
|
23
23
|
end
|
24
24
|
|
25
|
-
delegate :jpgs, :thumbs, :images, :title, :to=>"parser"
|
25
|
+
delegate :deleted?, :jpgs, :thumbs, :images, :title, :to=>"parser"
|
26
26
|
|
27
27
|
######################################################################
|
28
28
|
### Downloader
|
data/lib/pic2ch/thread/static.rb
CHANGED
@@ -0,0 +1,69 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" >
|
4
|
+
<head>
|
5
|
+
<meta name="keywords" content="2ch,画像,まとめ,ポニーテールの女の子の画像 11本目"/>
|
6
|
+
<meta name="description" content="ポニーテールの女の子の画像 11本目 - 2ch画像まとめ。2chに書き込まれた面白画像やエロ画像が全て見れます!。常に最新の情報に更新されています。"/>
|
7
|
+
<meta name="verify-v1" content="ePPL3qVW/7DeTPnasbxeygRQZ2pcSSeKm/y5ixvw7dE=" />
|
8
|
+
<meta name="y_key" content="eb7d4d3b35906d30" />
|
9
|
+
<link rel="alternate" type="application/atom+xml" title="Atom" href="/feed" />
|
10
|
+
<link rel="stylesheet" type="text/css" href="http://strage.giox.info/stylesheets/pic2ch-min.css?9" />
|
11
|
+
<title>ポニーテールの女の子の画像 11本目 - 2ch画像まとめ</title>
|
12
|
+
</head>
|
13
|
+
<body>
|
14
|
+
<div id="header">
|
15
|
+
<h1>
|
16
|
+
<a href="/" style="color:#000">2ch画像まとめ</a>
|
17
|
+
|
18
|
+
<a href="http://b.hatena.ne.jp/append?http://pic2ch.giox.org/"><img src="http://strage.giox.info/images/b_hatena.gif" alt="Hatenaブックマークに追加" title="Hatenaブックマークに追加" /></a>
|
19
|
+
<a href="http://b.hatena.ne.jp/entry/http://pic2ch.giox.org/"><img src="http://b.hatena.ne.jp/entry/image/normal/http://pic2ch.giox.org/" alt="Hatenaブックマーク" title="Hatenaブックマーク" /></a>
|
20
|
+
<a href="http://clip.livedoor.com/clip/add?link=http://pic2ch.giox.org/"><img src="http://strage.giox.info/images/b_clip.gif" alt="livedoorクリップに追加" title="livedoorクリップに追加" /></a>
|
21
|
+
<a href="/feed"><img src="http://strage.giox.info/images/feed.png" alt="Rss/Atom" title="Rss/Atom" /></a>
|
22
|
+
|
23
|
+
</h1>
|
24
|
+
</div>
|
25
|
+
<div id="content">
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
<h2>ポニーテールの女の子の画像 11本目 (150)<span id="star"><img id="add" src="http://strage.giox.info/images/add.gif" /></span></h2>
|
30
|
+
|
31
|
+
<div class="ads_container">
|
32
|
+
<div class="adb">
|
33
|
+
<a href="http://track.bannerbridge.net/click.php?APID=30615&affID=49172&siteID=98547" target="_blank"><img src="http://track.bannerbridge.net/adgserv.php?APID=30615&affID=49172&siteID=98547" width="125" height="125" border="0" alt="" title="" /></a>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
|
37
|
+
<div id="container"></div>
|
38
|
+
<!--[if lt IE 8]>
|
39
|
+
<script src="http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE8.js" type="text/javascript"></script>
|
40
|
+
<![endif]-->
|
41
|
+
<script type="text/javascript" src="http://strage.giox.info/javascripts/pic2ch-min.js?1"></script>
|
42
|
+
<script type="text/javascript">
|
43
|
+
window.onload=function(){
|
44
|
+
pic2ch.slideshow.init(
|
45
|
+
{id:'1259455593',urls:'73f8e3cbd73869672865c6d56e6096de.jpg:4185344f6fcea5862dbd43d24255db66.jpg:bff45b17e372f199d7f4de824130a395.jpg:a161746c84da806a3ca10acbb96bf664.jpg:55a30ab6a7331a17de1f502504f172d7.jpg:075802043a30950ce37d0c50f788d41c.jpg:cb23abeda94490d7ff5b5bcdcf4b4d81.jpg:b7898a8d4911b1e2968189c74ba12c5e.jpg:e98fd5dfd1a432b51d74ca1fb71a3515.jpg:60cbd7b6501d9c1224ffc5fd6b36fd81.jpg:483b7ea72741176b055c4b4420a2d7ce.jpg:5ff009c3f0161fbc646dbbe93b4d7d22.jpg:7c438c8e254f45624a07076e69d59d8b.jpg:3fe1b5fe4fe79c8f7eaac3d0f0fa46bc.jpg:06c711445d4a994ea8350453040585a8.jpg:1f54b0dd1f385da66b01527891360a81.jpg:a64c35c54ac3b1bf1f8c80de0ff8c44a.jpg:62eab58fce3a246b2f67e0ec2bdb4bcd.jpg:4067541962c8cc9340bb0248506887b1.jpg:a040d3c6fafefca35ee14d4621c0c209.jpg:3812264ace5f24cc51cb0e49cbfb6364.jpg:88c2a36d7d2f5594bd9dbeb89f5af640.jpg:e59dbec6ae67e424af62c0931d267814.jpg:9ba203ae3d9d8167584a99a1d1e544cf.jpg:0edafc2a6344f689651258c77f2c3679.jpg:ae8cbcd364852ae24271104e9cafbc80.jpg:1e674071c403f41734427296bc96049d.jpg:2f5e6bc2376116079de36ac1167ddacc.jpg:6729cdb9fbab768664901c72acd6adbd.jpg:c60adb604765412744389e7e7ec328a6.jpg:85bf3bea5e01d24145b30bc3f716de92.jpg:93d6ba71a3a2505d898aaa817af86252.jpg:973021f3eac7a9fb3e7274d5234792cf.jpg:ae8ec1ecc74eb975774c4ce299a90ce2.jpg:a279c58ebab2e38010706eaa0c69ed53.jpg:861be973e4f7566638952ad5d4ef7b39.jpg:704f96e70739d7976641149e28a272b7.jpg:53bd6701b80e7abd037af0193d43bd29.jpg:bbcca2012031117afd99bda5e3c721fb.jpg:c55570570e0eda08e18c53eabd38357a.jpg:101882982e5dafd890d9b32b3a3dacd3.jpg:dd0fdc1e68a6e6e753e377df89455c8f.jpg:bc1d7732b46f7e4ff297d59fab1695fb.jpg:b1650577b3e80b6ce869f605d786d72c.jpg:d1bb60837be415a6f94c8aca443a2826.jpg:9af9266caffa94846891bd84c2bab4b0.jpg:3297f7201de89cf73afb35d69b86bfad.jpg:47a172dfe9c929914f282e92d4726ffe.jpg:0b5b86f998fab67f97c7fadab983a946.jpg:ac8e49206e4c8c781a6c12ab94b4ad80.jpg:a9bc0551bb9be49b79a3cae6a68511ec.jpg:4237bbd3d19909bfabd086880802a38c.jpg:3faccd9e6caee220afaee9fb99e782ca.jpg:b34f5429ab6c99342742b93c1f92a9ae.jpg:dfd60190014b730d5597db7c2b493ada.jpg:99a1a8331d7da4cbb7c645dc954dd714.jpg:313bb680b5f4803bfe0374aa8bc249e3.jpg:7c620593474f6202662ca10f2462e317.jpg:95751fea704198cfcc5311480ffce309.jpg:3dfbf1c78f91cc043475ec2e1e296e2d.jpg:235a941b4f17f4646a1faa659a720d2f.jpg:4986bcb1e5b60a12be0874d1b83f59cd.jpg:7c9997ea7d4ef83afb86a9198fe528d8.jpg:fe7c4c666186c911ec5e3ea3fa42c53e.jpg:49768a240392ea75a28b19e54e20d243.jpg:ecc0386e13a9e39847b6ebd1e0785963.jpg:a27c8563ef34f4a61ad7f4af7c4c632f.jpg:26f1cd8fe8ef3d0bd6946f45ec924b18.jpg:0398f7dc822bfe560a528604aa019029.jpg:bb9d1f3da22746ba26d8da4fba791941.jpg:371a12cfa5cd7f880d31326b724f8851.jpg:53a08358e10e5aa0bfcc7f9b307425bf.jpg:e24afe174c86b7164b1d06d1b85f14d0.jpg:5aeacd3a4245c309c018f8f59345f989.jpg:4a3693bf51e1ecc43b0e94a2f62c56f0.jpg:1e63c31c24cf31a9033d957c4635db8e.jpg:07da772c44b435600a15c41f971c8928.jpg:f2ddb340234c31244efcfa11169b20eb.jpg:8a99697b96d0e1c03353b8abe270c30d.jpg:b551987676f8fd2353e5d2c88f505c4c.jpg:8625bf4b92f03680667797ba2b4cf264.jpg:6b3c503645cbb8700349bb3a35afefba.jpg:5659d3ba80d629fe0f5abe1683c9dfb0.jpg:1b8704381b7b018de0e39d36368156dd.jpg:16141a900f3b73c9a051aef2d85c2208.jpg:41e868ec48d3852b629a33efb8e6a2fb.jpg:61932b346baaad9c82c4f83601d8cd41.jpg:134b1369b7cabb8a94f6f1c178c75779.jpg:744b91d71e933e6c4d5a0c85f1bf2abf.jpg:fbdc410b2c88bbf4ad814c747674a391.jpg:0d9f04bf2f31b85d329cabf6d638fec9.jpg:494da4e63a8b9ca33ff0e45e2c1155af.jpg:f713e997fc7ce44fb37b8b9c1ace403c.jpg:eab9da347841e0bd11e7c9cf0ed16736.jpg:1bbaa481be82d18a46967aab3d6f2d12.jpg:c64680a9eb8158f428602010a4978dd8.jpg:3ed8d0ff3dbbcf792d6a8c6eb3c71225.jpg:7aefc3e8dded1199d776a5ccdb61fa30.jpg:9357b5d970eaef24158c3a8fa19e1681.jpg:c34f44483c5d0dfe0854ad340a59270c.jpg:2e56e3190731799a074923ec4506fc48.jpg:4d5bfbd69a688fd33cd14f4d0d856684.jpg:967cc2f1645ec3f5e72ea374607abeba.jpg:05b380c0abd5ba28a5f4d64e9d8109d5.jpg:6a5c3e9e0d42f831bacc0f37f0135143.jpg:f6f8c5ee311072a70e91b3bad208c498.jpg:0e4e79d213d0d1474e736470ece1f3a0.jpg:174573312cd2f4aca5a273a2489568b1.jpg:3b564fd335c472a5a15d218e5e265e57.jpg:bd90337f08b3961c4b5a278ae1919136.jpg:392819c9fe6fa1df14f16c05d85d854a.jpg:5934668094bb76524e56269522882659.jpg:ca86aea1a8b930978d74d3af862143fa.jpg:90420247fd75db63c9130d4d89f9e4b4.jpg:a73fa2c10a71db4d6f9454137e37e34c.jpg:e67b4bdec1af23da9cd378be1c0d2795.jpg:93b962813fcecf200aabe934412d1094.jpg:1cd477a85ca5b3d1e85ad19e53a9ea11.jpg:bc7d4d3281daad32f3e060abef6d0ae5.jpg:65344303c9fbf380313ad4bbbbc5a5b9.jpg:ed9dd59af4a6dcea74341df53225b578.jpg:42e44110cebd0bd30cfc85d524070075.jpg:6f9d9a9a6e7dafd66a6eba12436a58dd.jpg:d34c988fc6833d74fb3869a2f960f917.jpg:205bfd164117da54d6ae4dd1e66c259e.jpg:ffb2f327880afb2d56da2ee2dca686b8.jpg:7a32aceeead4e8615c66a54492f24a89.jpg:de8343dd9c48f321db10dc125c06fa2f.jpg:cd08ed8f3eae166dfe524d87af62c437.jpg:cdab4dee76166dca77a74c1196aa84bd.jpg:035ca226085f44531c1af83c424f6cb2.jpg:3c84e80b984028c0d5d92ff94b7fe2bb.jpg:2de45ebabca6c4dfac538bbe469fbb39.jpg:5619e99179ea611f88b4abf1576b6f9d.jpg:782c29dd29c6c749961bfaf0a5ff6a71.jpg:231a9dc995017be9c9adc2ac295c0734.jpg:dc4c1aec723e1add23471b5b65898233.jpg:64c47505a8199f3455edeb98b503b553.jpg:779a57d637247b8edd4ae63604d36ec1.jpg:bb6975b5f76c26f65218dddae8e38f4c.jpg:a01f4c8c224f5bf642128430bc6aba35.jpg:ee8865be627d32d3c44e01b7844e9c4d.jpg:936262fc6dbafc9b86d49343e84f61e5.jpg:80d4625e9100e6cbf471606c44b954ad.jpg:20911086b01ceee49d84392eda744d8e.jpg:e91c93ca0d5959007fbbfc393866f318.jpg:1d6a334c605f80be2e48132d037d80a0.jpg:adbd3fd26dfa81fe382f8c1992ef7685.jpg:c33b3e09a23a702a39c9c3f0500214cf.jpg:0e0b2f034e09f7319fd95e6c363434e0.jpg'.split(':'),path:'http://strage.giox.info',container:'container'});
|
46
|
+
pic2ch.addStar('add', 'star', '36603', 4, 'http://strage.giox.info');
|
47
|
+
};
|
48
|
+
</script>
|
49
|
+
|
50
|
+
</div>
|
51
|
+
<div id="footer">
|
52
|
+
<a href="http://p2m.giox.org/">2ch画像まとめモバイル</a> |
|
53
|
+
<a href="http://d.hatena.ne.jp/gioext/">Blog</a> |
|
54
|
+
<a href="https://ssl.kodama.com/securemail.aspx?id=qn70rje68t3n8w56">Mail</a> |
|
55
|
+
<span class="copyright">© 2008-2009 Giox.org</span>
|
56
|
+
</div>
|
57
|
+
|
58
|
+
<script type="text/javascript">
|
59
|
+
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
60
|
+
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
61
|
+
</script>
|
62
|
+
<script type="text/javascript">
|
63
|
+
try {
|
64
|
+
var pageTracker = _gat._getTracker("UA-6512399-3");
|
65
|
+
pageTracker._trackPageview();
|
66
|
+
} catch(err) {}</script>
|
67
|
+
|
68
|
+
</body>
|
69
|
+
</html>
|
@@ -0,0 +1,73 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" >
|
4
|
+
<head>
|
5
|
+
<meta name="keywords" content="2ch,画像,まとめ,この世のすべての女子高生画像を集めたい。"/>
|
6
|
+
<meta name="description" content="この世のすべての女子高生画像を集めたい。 - 2ch画像まとめ。2chに書き込まれた面白画像やエロ画像が全て見れます!。常に最新の情報に更新されています。"/>
|
7
|
+
<meta name="verify-v1" content="ePPL3qVW/7DeTPnasbxeygRQZ2pcSSeKm/y5ixvw7dE=" />
|
8
|
+
<meta name="y_key" content="eb7d4d3b35906d30" />
|
9
|
+
<link rel="alternate" type="application/atom+xml" title="Atom" href="/feed" />
|
10
|
+
<link rel="stylesheet" type="text/css" href="http://strage.giox.info/stylesheets/pic2ch-min.css?9" />
|
11
|
+
<title>この世のすべての女子高生画像を集めたい。 - 2ch画像まとめ</title>
|
12
|
+
</head>
|
13
|
+
<body>
|
14
|
+
<div id="header">
|
15
|
+
<h1>
|
16
|
+
<a href="/" style="color:#000">2ch画像まとめ</a>
|
17
|
+
|
18
|
+
<a href="http://b.hatena.ne.jp/append?http://pic2ch.giox.org/"><img src="http://strage.giox.info/images/b_hatena.gif" alt="Hatenaブックマークに追加" title="Hatenaブックマークに追加" /></a>
|
19
|
+
<a href="http://b.hatena.ne.jp/entry/http://pic2ch.giox.org/"><img src="http://b.hatena.ne.jp/entry/image/normal/http://pic2ch.giox.org/" alt="Hatenaブックマーク" title="Hatenaブックマーク" /></a>
|
20
|
+
<a href="http://clip.livedoor.com/clip/add?link=http://pic2ch.giox.org/"><img src="http://strage.giox.info/images/b_clip.gif" alt="livedoorクリップに追加" title="livedoorクリップに追加" /></a>
|
21
|
+
<a href="/feed"><img src="http://strage.giox.info/images/feed.png" alt="Rss/Atom" title="Rss/Atom" /></a>
|
22
|
+
|
23
|
+
</h1>
|
24
|
+
</div>
|
25
|
+
<div id="content">
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
<h2>この世のすべての女子高生画像を集めたい。 </h2>
|
30
|
+
<div>このスレッドは削除されました。別スレッドをお楽しみください。<a href="/">2ch画像まとめTOP</a></div>
|
31
|
+
<div><div><a href="http://track.bannerbridge.net/click.php?APID=8975&affID=49172&siteID=98547"><img src="http://track.bannerbridge.net/adgserv.php?APID=8975&affID=49172&siteID=98547" width="468" height="60" alt="" title="" /><br />30分以内に可愛い女性を虜にしませんか?</a></div>
|
32
|
+
<div><a href="http://track.bannerbridge.net/click.php?APID=29932&affID=49172&siteID=98547"><span class="new">もう出会い系にはだまされない!</span></a><img src="http://track.bannerbridge.net/adtserv.php?APID=29932&affID=49172&siteID=98547" width="1" height="1" alt="" title="" /></div>
|
33
|
+
<div><a href="http://track.bannerbridge.net/click.php?APID=8985&affID=49172&siteID=98547"><span class="new">☆どんな女でも虜にする究極のセックス講座パーフェクトセックス☆</span></a><img src="http://track.bannerbridge.net/adtserv.php?APID=8985&affID=49172&siteID=98547" width="1" height="1" alt="" title="" /></div>
|
34
|
+
<div><a href="http://track.bannerbridge.net/click.php?APID=16628&affID=49172&siteID=98547"><span class="new">[18禁]出会いコミュニティー デジカフェ</span></a><img src="http://track.bannerbridge.net/adtserv.php?APID=16628&affID=49172&siteID=98547" width="1" height="1" alt="" title=""></div>
|
35
|
+
</div>
|
36
|
+
<h2>最新の画像 - 【男一人】ハーレムな画像【女複数】第7夫人</h2>
|
37
|
+
|
38
|
+
<img src="http://strage.giox.info/thumbs/1219284933/d1fef5e72deb06112620d96bc08f3216.jpg" alt="【男一人】ハーレムな画像【女複数】第7夫人 " />
|
39
|
+
|
40
|
+
<img src="http://strage.giox.info/thumbs/1219284933/702b9778179ec7e8bca66349c09a90d8.jpg" alt="【男一人】ハーレムな画像【女複数】第7夫人 " />
|
41
|
+
|
42
|
+
<img src="http://strage.giox.info/thumbs/1219284933/f6a0755ccc58d3d1ee58242347dddb24.jpg" alt="【男一人】ハーレムな画像【女複数】第7夫人 " />
|
43
|
+
|
44
|
+
<img src="http://strage.giox.info/thumbs/1219284933/d82665da5548c2a0c99b4eaa69f538d5.jpg" alt="【男一人】ハーレムな画像【女複数】第7夫人 " />
|
45
|
+
|
46
|
+
<img src="http://strage.giox.info/thumbs/1219284933/f98ed6918a912f97d1a24b0e443f801b.jpg" alt="【男一人】ハーレムな画像【女複数】第7夫人 " />
|
47
|
+
|
48
|
+
<br />
|
49
|
+
<a href="http://track.bannerbridge.net/click.php?APID=30615&affID=49172&siteID=98547" target="_blank"><img src="http://track.bannerbridge.net/adgserv.php?APID=30615&affID=49172&siteID=98547" width="125" height="125" border="0" alt="" title=""></a>
|
50
|
+
<h2>2ch画像まとめモバイル</h2>
|
51
|
+
<div><a href="http://p2m.giox.org/">2ch画像まとめモバイル</a>も宜しくお願いいたします</div>
|
52
|
+
<img src="http://strage.giox.info/images/qrcode.jpg" alt="モバイル版QRコード" title="モバイル版QRコード" />
|
53
|
+
|
54
|
+
</div>
|
55
|
+
<div id="footer">
|
56
|
+
<a href="http://p2m.giox.org/">2ch画像まとめモバイル</a> |
|
57
|
+
<a href="http://d.hatena.ne.jp/gioext/">Blog</a> |
|
58
|
+
<a href="https://ssl.kodama.com/securemail.aspx?id=qn70rje68t3n8w56">Mail</a> |
|
59
|
+
<span class="copyright">© 2008-2009 Giox.org</span>
|
60
|
+
</div>
|
61
|
+
|
62
|
+
<script type="text/javascript">
|
63
|
+
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
64
|
+
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
65
|
+
</script>
|
66
|
+
<script type="text/javascript">
|
67
|
+
try {
|
68
|
+
var pageTracker = _gat._getTracker("UA-6512399-3");
|
69
|
+
pageTracker._trackPageview();
|
70
|
+
} catch(err) {}</script>
|
71
|
+
|
72
|
+
</body>
|
73
|
+
</html>
|
data/spec/its_helper.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
######################################################################
|
2
|
+
### provide matcher
|
3
|
+
Spec::Matchers.define :provide do |expected|
|
4
|
+
match do |obj|
|
5
|
+
(obj.public_methods + obj.protected_methods + obj.private_methods).include?(expected.to_s)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
module Spec
|
10
|
+
module Example
|
11
|
+
module Subject
|
12
|
+
module ExampleGroupMethods
|
13
|
+
# == Examples
|
14
|
+
#
|
15
|
+
# describe User do
|
16
|
+
# subject { User.new }
|
17
|
+
# provide :name
|
18
|
+
#
|
19
|
+
# [intead of]
|
20
|
+
#
|
21
|
+
# it "should provide #name" do
|
22
|
+
# methods = subject.public_methods + subject.protected_methods + subject.private_methods
|
23
|
+
# methods.should include("name")
|
24
|
+
# end
|
25
|
+
# end
|
26
|
+
#
|
27
|
+
def provide(name)
|
28
|
+
it "should provide ##{name}" do
|
29
|
+
subject.should provide(name)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
require 'spec'
|
3
|
+
require 'rr'
|
4
|
+
|
5
|
+
Dir.glob(File.join(File.dirname(__FILE__), '/../lib/*.rb')).each{|lib| require lib}
|
6
|
+
require File.join(File.dirname(__FILE__), '/its_helper')
|
7
|
+
require File.join(File.dirname(__FILE__), '/provide_helper')
|
8
|
+
|
9
|
+
|
10
|
+
def path(key)
|
11
|
+
Pathname(File.join(File.dirname(__FILE__) + "/fixtures/#{key}"))
|
12
|
+
end
|
13
|
+
|
14
|
+
def data(key)
|
15
|
+
(@__fixture_data_cache__ ||= {})[key] ||= path(key).read{}
|
16
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '/spec_helper')
|
2
|
+
|
3
|
+
describe Pic2ch::Parsers::Thread do
|
4
|
+
describe "for normal page" do
|
5
|
+
subject {
|
6
|
+
t = Pic2ch::Parsers::Thread.new(nil)
|
7
|
+
def t.html() data('36603.html'); end
|
8
|
+
t
|
9
|
+
}
|
10
|
+
|
11
|
+
its(:title) { should == "ポニーテールの女の子の画像 11本目 - 2ch画像まとめ" }
|
12
|
+
its(:time ) { should == 1259455593 }
|
13
|
+
its(:count) { should == 150 }
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "for deleted page" do
|
17
|
+
subject {
|
18
|
+
t = Pic2ch::Parsers::Thread.new(nil)
|
19
|
+
def t.html() data('deleted.html'); end
|
20
|
+
t
|
21
|
+
}
|
22
|
+
|
23
|
+
its(:title) { should == "この世のすべての女子高生画像を集めたい。 - 2ch画像まとめ" }
|
24
|
+
|
25
|
+
it "should raise NotFound when time is called" do
|
26
|
+
lambda { subject.time }.should raise_error(Pic2ch::Parsers::NotFound)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should raise DeletedPage when count is called" do
|
30
|
+
lambda { subject.count }.should raise_error(Pic2ch::Parsers::DeletedPage)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pic2ch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- maiha
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-02-
|
12
|
+
date: 2010-02-09 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -49,6 +49,7 @@ files:
|
|
49
49
|
- lib/pic2ch/pages/index.rb
|
50
50
|
- lib/pic2ch/parsers/thread.rb
|
51
51
|
- lib/pic2ch/parsers/index.rb
|
52
|
+
- lib/pic2ch/parsers/errors.rb
|
52
53
|
- lib/pic2ch/downloaders.rb
|
53
54
|
- lib/pic2ch/thread.rb
|
54
55
|
- lib/pic2ch/downloaders/thread.rb
|
@@ -57,6 +58,12 @@ files:
|
|
57
58
|
- lib/pic2ch/parsers.rb
|
58
59
|
- lib/pic2ch/cached_accessor.rb
|
59
60
|
- lib/pic2ch/pages.rb
|
61
|
+
- spec/provide_helper.rb
|
62
|
+
- spec/fixtures/deleted.html
|
63
|
+
- spec/fixtures/36603.html
|
64
|
+
- spec/its_helper.rb
|
65
|
+
- spec/spec_helper.rb
|
66
|
+
- spec/thread_parser_spec.rb
|
60
67
|
has_rdoc: true
|
61
68
|
homepage: http://github.com/maiha/pic2ch
|
62
69
|
licenses: []
|