ruby2ch 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -0,0 +1,17 @@
1
+ ruby2chはRubyで2chを解析するライブラリ群です.
2
+ VersionはRuby1.9.2で動作検証済みです.
3
+
4
+ 使い方
5
+ require 'ruby2ch'
6
+
7
+ クラス一覧
8
+ Thre:スレッドの情報を手に入れる
9
+ Board:板内のスレッド一覧を手に入れる
10
+ Dat:Datファイルをパースする
11
+
12
+
13
+ t = Thre.new("スレのURL")
14
+ t.title
15
+ t.impetus
16
+ t.ids
17
+
@@ -0,0 +1,34 @@
1
+ require 'mechanize'
2
+ require 'ruby2ch/thre'
3
+ require 'thread'
4
+ require 'ruby2ch/datparse'
5
+ include Ruby2ch
6
+
7
+ module Ruby2ch
8
+ class Board
9
+ def initialize(url)
10
+ @agent = Mechanize.new
11
+ @page = @agent.get(url)
12
+ @links = @page.links.map{|link| link.href}.map{|link| link.split("/")[0]}
13
+ @links.map!{|link| url.sub("/news/subback.html","/test/read.cgi/news/") + link}
14
+ @links.select!{|x| /\/\d*$/ =~x}
15
+ end
16
+
17
+ def threads
18
+ threads = []
19
+ @links.each{|link|
20
+ threads << Thread.start(link){|link| Dat.new(link)}
21
+ }
22
+
23
+ threads.map!{|thre|
24
+ thre.join.value
25
+ }
26
+
27
+ return threads
28
+
29
+ end
30
+
31
+ attr_accessor :links
32
+ end
33
+
34
+ end
@@ -0,0 +1,46 @@
1
+ #encoding: utf-8
2
+ require 'mechanize'
3
+ require 'kconv'
4
+ module Ruby2ch
5
+ class Dat
6
+ def initialize(url)
7
+ #http://uni.2ch.net/test/read.cgi/news/1322032301/l50
8
+ #http://bg20.2ch.net/test/r.so/uni.2ch.net/news/1322032301/
9
+ url_elements = url.split("/")
10
+ @dat_url = "http://bg20.2ch.net/test/r.so/" + url_elements[2] + "/" + url_elements[5] + "/" + url_elements[6] + "/"
11
+ @agent = Mechanize.new
12
+ @page = @agent.get(@dat_url).body.toutf8
13
+
14
+ @page = @page.split("\n").map{|res| dat_parse(res).flatten}.delete_if{|res| res == []}
15
+ @page.map{|res|
16
+ res[6] = res[6].gsub("<>","").gsub("<br>","\n")
17
+ unless res[5] == nil
18
+ res[5] = res[5].scan(/.*&gt;&gt;(\d+).*/).flatten[0]
19
+ res[5] = ">>" + res[5] + res[6]
20
+ else
21
+ res[5] = res[6]
22
+ end
23
+ res.pop
24
+
25
+ }
26
+ @thre = @page.map{|res|
27
+ {name: res[0],place: res[1], date: res[2], id: res[3], point: res[4],text: res[5]}
28
+ }
29
+ end
30
+
31
+ def to_a
32
+ @array = @page.split("\n")
33
+ end
34
+
35
+ def dat_parse(res)
36
+ res_array = res.scan(/(^\S+)\<\/b\>(\(.*\))\<b\>\<\>\S*\<\>(.+)\sID:(\S+)\s*(BE.*)*\<\>\s(\<a.*\<\/a\>)*(.*)/)
37
+ end
38
+
39
+
40
+
41
+ attr_accessor :dat_url,:page
42
+ end
43
+
44
+ end
45
+
46
+
data/lib/ruby2ch/thre.rb CHANGED
@@ -13,7 +13,9 @@ module Ruby2ch
13
13
  @no = @name.map{|n| n[0]}
14
14
  @hn = @name.map{|n| n[1]}
15
15
  name_split = @name.map{|n| n[2].split(" ")}
16
- @ids = name_split.map{|n| n[2]}.uniq.map{|id| id.sub("ID:","")}
16
+ @ids = name_split.map{|n| n[2]}.uniq.map{|id|
17
+ puts id
18
+ id.sub("ID:","")}
17
19
  @date1 = name_split.map{|n| n[0]}.map{|n| n.sub(/\(.\)/,"")}
18
20
  @time = name_split.map{|n| n[1]}
19
21
  @date = @date1[0] + " " + @time[0]
@@ -1,3 +1,3 @@
1
1
  module Ruby2ch
2
- VERSION = "0.0.4"
2
+ VERSION = "0.1.0"
3
3
  end
data/lib/ruby2ch.rb CHANGED
@@ -3,6 +3,8 @@ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname
3
3
 
4
4
  require "ruby2ch/version"
5
5
  require "ruby2ch/thre"
6
+ require 'ruby2ch/board'
7
+ require 'ruby2ch/datparse'
6
8
  include Ruby2ch
7
9
  #module Ruby2ch
8
10
  # Your code goes here...
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby2ch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-11-22 00:00:00.000000000Z
12
+ date: 2011-11-24 00:00:00.000000000Z
13
13
  dependencies: []
14
14
  description: 2ch for ruby
15
15
  email:
@@ -23,6 +23,8 @@ files:
23
23
  - README
24
24
  - Rakefile
25
25
  - lib/ruby2ch.rb
26
+ - lib/ruby2ch/board.rb
27
+ - lib/ruby2ch/datparse.rb
26
28
  - lib/ruby2ch/news.rb
27
29
  - lib/ruby2ch/thre.rb
28
30
  - lib/ruby2ch/version.rb