ruby2ch 0.0.4 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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