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.
- data/VERSION +1 -1
- data/lib/lib/job.rb +197 -3
- data/lib/lib/machine.rb +17 -8
- data/my-lib.gemspec +2 -2
- metadata +23 -23
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
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
|
-
|
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.
|
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 = "
|
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
|
+
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:
|
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: &
|
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: *
|
24
|
+
version_requirements: *2152315480
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: eventmachine
|
27
|
-
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: *
|
35
|
+
version_requirements: *2152313920
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: mechanize
|
38
|
-
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: *
|
46
|
+
version_requirements: *2152311040
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
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: *
|
57
|
+
version_requirements: *2152306960
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: yard
|
60
|
-
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: *
|
68
|
+
version_requirements: *2152304620
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bundler
|
71
|
-
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: *
|
79
|
+
version_requirements: *2152295760
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: jeweler
|
82
|
-
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: *
|
90
|
+
version_requirements: *2152293980
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rcov
|
93
|
-
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: *
|
101
|
+
version_requirements: *2152291740
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: guard
|
104
|
-
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: *
|
112
|
+
version_requirements: *2152289100
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: guard-spork
|
115
|
-
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: *
|
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: -
|
171
|
+
hash: -1701901517253713137
|
172
172
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
173
|
none: false
|
174
174
|
requirements:
|