my-lib 0.2.4 → 0.2.5

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.
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: