my-lib 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/VERSION +1 -1
  2. data/lib/lib/job.rb +197 -3
  3. data/lib/lib/machine.rb +17 -8
  4. data/my-lib.gemspec +2 -2
  5. metadata +23 -23
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.4
1
+ 0.2.5
data/lib/lib/job.rb CHANGED
@@ -58,9 +58,6 @@ class MyJobAnime44
58
58
  @a[:machine].retry job
59
59
  end
60
60
 
61
-
62
-
63
-
64
61
  unless flg == true
65
62
  begin
66
63
  @agent.get @a[:url]
@@ -398,6 +395,203 @@ class MyJobAnisoku
398
395
  end
399
396
  end
400
397
  end
398
+
399
+
400
+
401
+ class MyJobAnisoku2
402
+
403
+ def initialize(args = { })
404
+ require 'rubygems'
405
+ require 'kconv'
406
+ require 'mechanize'
407
+ require 'net/http'
408
+ @a = args
409
+ @debug = args[:debug] ||= false
410
+ @a[:url] ||= 'http://youtubeanisoku1.blog106.fc2.com/'
411
+ @a[:url] = URI.parse @a[:url] unless @a[:url].class == URI::HTTP
412
+ @agent = Mechanize.new
413
+ @a[:status] ||= :tokkakari
414
+ @a[:recent] ||= 7
415
+ @a[:limit] ||= 4
416
+ @FC2magick = @a[:fc2magick] ||='_gGddgPfeaf_gzyr' #updated FC2 2011.7
417
+ raise "job have no machine error" unless @a[:machine]
418
+ end
419
+
420
+ # check kousin page
421
+ def tokkakari
422
+ print "Tokkakari".yellow
423
+ @agent.get @a[:url]
424
+ links_kousins = @agent.page.links_with(:text => /#{"更新状況"}/).map(&:uri)
425
+ links_kousins.each_with_index do |link,i|
426
+ break if i >= @a[:recent]
427
+ job = MyJobAnisoku2.new(@a.merge({ :url => link,:status => :second, }) )
428
+ @a[:machine].retry job
429
+ end
430
+ end
431
+
432
+ # check shoukai page
433
+ def second
434
+ print "Second".yellow
435
+ @agent.get @a[:url]
436
+ links_kousin = @agent.page/"/html/body/table/tr[2]/td/table/tr/td[2]/div[4]/ul/li/a/@href"
437
+ links_kobetu = []
438
+ links_kousin.each do |link|
439
+ links_kobetu << $1 if link.value =~ /(http:\/\/youtubeanisoku.*)/
440
+ end
441
+ # make job for each links_kobetu
442
+ links_kobetu.each do |link|
443
+ job = MyJobAnisoku2.new(@a.merge({:url => link,:status => :kobetu}))
444
+ @a[:machine].retry job
445
+ end
446
+ end
447
+
448
+ #access say-move and make video job
449
+ def kobetu
450
+ print "Kobetu".yellow
451
+ @agent.get @a[:url]
452
+ title = @agent.page.title.gsub(' ★ You Tube アニ速 ★','')
453
+ # acume url
454
+ htmlA = @agent.page/"/html/body/table/tr[2]/td/table/tr/td[2]/div[4]/div[@class='kijisub']"
455
+ require 'pp'
456
+ targsHTMLs = htmlA.inner_html.toutf8.split(/ランキング/)[0].split(/\n第/).reverse!
457
+ #http://posterous.com/getfile/files.posterous.com/temp-2011-08-21/eolunzlwwwFopCnhszaBwJlFEJEnHcloqkoyaFuhdezmdgipcyyiyzdpqcpG/cro08nyoutube.doc
458
+ require 'digest'
459
+ targsHTMLs.each_with_index do |html,i|
460
+ break if i >= @a[:limit]
461
+ key = title + html.to_s
462
+ unless @a[:machine].episode_exists?( Digest::MD5.hexdigest(key) )
463
+ indi = Nokogiri::HTML.fragment(html).css("a")
464
+ indi.each do |va|
465
+ p va[:href] if @debug
466
+ if va[:href] =~ /(http:\/\/say-move\.org\/comeplay\.php.*)/
467
+ job = MyJobAnisoku2.new(
468
+ @a.merge({
469
+ :url => $1,
470
+ :title => title + '第' + html.split('<').first.gsub(' ','').gsub(' ',''),
471
+ :status => :third}))
472
+ @a[:machine].retry job
473
+ end
474
+ end
475
+ else
476
+ puts "ALREADY REGISTED CANCELL FETCH".cyan.bold + html[0..20].yellow.bold if @debug
477
+ end
478
+ key = nil
479
+ end
480
+ end
481
+
482
+ #access say-move and make video job
483
+ def third
484
+ print "Third".yellow
485
+ sm = { :title => @a[:title],:url => @a[:url]}
486
+ @agent.get(sm[:url])
487
+ sm[:title] += @agent.page.title.gsub!('FC2 SayMove!','')
488
+ set = @agent.page/"/html/body/div/div[2]/div[7]/div[2]/input/@value"
489
+ if !set.empty?
490
+ sm[:videourl] = set[0].value
491
+ else
492
+ set = @agent.page/"/html/body/div/div[2]/div[3]/object/param[5]/@value"
493
+ fc2 = set[0].value.split('&')[1].split('=')[1]
494
+ unless fc2.nil?
495
+ p sm[:url] if @debug
496
+ job = MyJobAnisoku2.new(
497
+ @a.merge({
498
+ :url => sm[:url],
499
+ :fc2 => fc2,
500
+ :title => sm[:title],
501
+ :status => :fc2
502
+ }))
503
+ @a[:machine].retry job
504
+ return
505
+ else
506
+ end
507
+ end
508
+
509
+ job = MyJobAnisoku2.new(
510
+ @a.merge({
511
+ :url => sm[:videourl],
512
+ :title => sm[:title],
513
+ :status => :video
514
+ }))
515
+ @a[:machine].retry job
516
+ end
517
+
518
+ def fc2
519
+ print "fc2".yellow
520
+ require 'digest'
521
+ url = "http://video.fc2.com/ginfo.php?mimi=#{Digest::MD5.hexdigest(@a[:fc2] + @FC2magick)}&v=#{@a[:fc2]}&upid=#{@a[:fc2]}&otag=1"
522
+ url = `curl -# -L -R "#{url} "`
523
+ url = url.split('&')[0].split('=')[1] + '?' + url.split('&')[1]
524
+ puts url.red.bold
525
+ job = MyJobAnisoku2.new(
526
+ @a.merge({
527
+ :url => url,
528
+ :status => :video
529
+ }))
530
+ @a[:machine].retry job
531
+ end
532
+
533
+ #fetch video
534
+ def video
535
+ print "video".yellow
536
+ # save video directory is supplied by machine.
537
+ savedir = @a[:machine].savedir
538
+ Dir.chdir savedir
539
+ filename = "#{@a[:title].gsub(' ','').gsub(' ','')}.mp4"
540
+ savepath = "#{savedir}/#{filename}"
541
+ # check fetch candidate had been already saved?
542
+ if File.exist?(savepath) && File.size(savepath) > 1024 * 1024 * 3
543
+ puts "File Already Saved ".yellow.bold + savepath
544
+ return
545
+ else
546
+ puts "Fetching ".green.bold + savepath
547
+ MyLogger.ln "Fetch Attempt Start ".green.bold + savepath
548
+ end
549
+
550
+ # use curl command
551
+ # no need UA...
552
+ uri = "http://#{@a[:url].host}#{@a[:url].path}"
553
+ uri += "?#{@a[:url].query}" if @a[:url].query
554
+ command = "curl -# -L -R -o '#{filename}' '#{uri}' >/dev/null 2>&1"
555
+ # command += "&& growlnotify -t '#{filename}' -m '#{uri}' "
556
+
557
+ puts command if @debug
558
+ system command unless @debug
559
+ end
560
+
561
+ # run in thread
562
+ def run
563
+ t = Thread.new do
564
+ send @a[:status]
565
+ end
566
+ end
567
+ end
568
+
569
+
570
+
571
+
572
+
573
+
574
+
575
+
576
+
577
+
578
+
579
+
580
+
581
+
582
+
583
+
584
+
585
+
586
+
587
+
588
+
589
+
590
+
591
+
592
+
593
+
594
+
401
595
 
402
596
 
403
597
  class MyJobDojin
data/lib/lib/machine.rb CHANGED
@@ -291,7 +291,7 @@ class MyMachineAnisoku
291
291
  def go
292
292
  EM.run do
293
293
  EM.add_periodic_timer(0.00001) do
294
- # print "loop".green
294
+ print "loop".green
295
295
  if should_stop_machine?
296
296
  finalize_files
297
297
  EM.stop
@@ -315,13 +315,6 @@ class MyMachineAnisoku
315
315
 
316
316
  # setup jobs
317
317
  def setupjobs
318
- ajob = MyJobAnisoku
319
- .new(
320
- :machine => self,
321
- :limit => @args[:limit],
322
- :recent => @args[:recent],
323
- :debug => @debug,
324
- )
325
318
  if @args[:mode] == :anime44
326
319
  ajob = MyJobAnime44
327
320
  .new(
@@ -330,6 +323,22 @@ class MyMachineAnisoku
330
323
  :recent => @args[:recent],
331
324
  :debug => @debug,
332
325
  )
326
+ elsif @args[:mode] == :second
327
+ ajob = MyJobAnime44
328
+ .new(
329
+ :machine => self,
330
+ :limit => @args[:limit],
331
+ :recent => @args[:recent],
332
+ :debug => @debug,
333
+ )
334
+ else
335
+ ajob = MyJobAnisoku2
336
+ .new(
337
+ :machine => self,
338
+ :limit => @args[:limit],
339
+ :recent => @args[:recent],
340
+ :debug => @debug,
341
+ )
333
342
  end
334
343
  @queue.push ajob
335
344
  end
data/my-lib.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "my-lib"
8
- s.version = "0.2.4"
8
+ s.version = "0.2.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["modeverv"]
12
- s.date = "2011-11-15"
12
+ s.date = "2012-01-09"
13
13
  s.description = "longer description of your gem"
14
14
  s.email = "modeverv@gmail.com"
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: my-lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-11-15 00:00:00.000000000Z
12
+ date: 2012-01-09 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: term-ansicolor
16
- requirement: &2152847200 !ruby/object:Gem::Requirement
16
+ requirement: &2152315480 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2152847200
24
+ version_requirements: *2152315480
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: eventmachine
27
- requirement: &2152845860 !ruby/object:Gem::Requirement
27
+ requirement: &2152313920 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2152845860
35
+ version_requirements: *2152313920
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: mechanize
38
- requirement: &2152844740 !ruby/object:Gem::Requirement
38
+ requirement: &2152311040 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2152844740
46
+ version_requirements: *2152311040
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &2152843880 !ruby/object:Gem::Requirement
49
+ requirement: &2152306960 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>'
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 2.3.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2152843880
57
+ version_requirements: *2152306960
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: yard
60
- requirement: &2152843040 !ruby/object:Gem::Requirement
60
+ requirement: &2152304620 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>'
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.6.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2152843040
68
+ version_requirements: *2152304620
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
- requirement: &2152842240 !ruby/object:Gem::Requirement
71
+ requirement: &2152295760 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>'
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.0.0
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2152842240
79
+ version_requirements: *2152295760
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: jeweler
82
- requirement: &2152841340 !ruby/object:Gem::Requirement
82
+ requirement: &2152293980 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *2152841340
90
+ version_requirements: *2152293980
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rcov
93
- requirement: &2152840520 !ruby/object:Gem::Requirement
93
+ requirement: &2152291740 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *2152840520
101
+ version_requirements: *2152291740
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: guard
104
- requirement: &2152839740 !ruby/object:Gem::Requirement
104
+ requirement: &2152289100 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *2152839740
112
+ version_requirements: *2152289100
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: guard-spork
115
- requirement: &2152839040 !ruby/object:Gem::Requirement
115
+ requirement: &2152283300 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,7 +120,7 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *2152839040
123
+ version_requirements: *2152283300
124
124
  description: longer description of your gem
125
125
  email: modeverv@gmail.com
126
126
  executables: []
@@ -168,7 +168,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
168
168
  version: '0'
169
169
  segments:
170
170
  - 0
171
- hash: -1376944094576272955
171
+ hash: -1701901517253713137
172
172
  required_rubygems_version: !ruby/object:Gem::Requirement
173
173
  none: false
174
174
  requirements: