dolit 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/dolit.rb +53 -3
- data/lib/dolit/version.rb +1 -1
- metadata +1 -1
data/lib/dolit.rb
CHANGED
@@ -13,13 +13,63 @@ module Dolit
|
|
13
13
|
typedef :int, :status
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
16
|
attach_function :video_parse, :DLVideo_Parse, [:string, :string, :id], :status
|
18
17
|
attach_function :video_freevideoresult, :DLVideo_FreeVideoResult, [:id], :void
|
19
18
|
|
20
|
-
def parse(url, user_agent = nil)
|
21
|
-
pResult =
|
19
|
+
def self.parse(url, user_agent = nil)
|
20
|
+
pResult = MemoryPointer.new :pointer
|
22
21
|
ret = video_parse(url, user_agent, pResult)
|
22
|
+
return if ret != 0
|
23
|
+
pos = 0
|
24
|
+
res = {}
|
25
|
+
pVideoResult = pResult.get_pointer
|
26
|
+
res[:site_id] = pVideoResult.get_int(pos)
|
27
|
+
pos += 4
|
28
|
+
res[:time_length] = pVideoResult.get_long(pos)
|
29
|
+
pos += 8
|
30
|
+
res[:framCount] = pVideoResult.get_long(pos)
|
31
|
+
pos += 8
|
32
|
+
res[:total_size] = pVideoResult.get_long(pos)
|
33
|
+
pos += 8
|
34
|
+
res[:v_name] = pVideoResult.get_pointer(pos).read_string
|
35
|
+
pos += 4
|
36
|
+
res[:tags] = pVideoResult.get_pointer(pos).read_string
|
37
|
+
pos += 4
|
38
|
+
count = pVideoResult.get_int(pos)
|
39
|
+
pos += 4
|
40
|
+
pTypePtr = pVideoResult.get_pointer(pos)
|
41
|
+
pos += 4
|
42
|
+
if count > 0
|
43
|
+
p = 0
|
44
|
+
res[:str_typs] = []
|
45
|
+
0.upto(count - 1) do |i|
|
46
|
+
type_hash = {}
|
47
|
+
type_hash[:str_type] = pTypePtr.get_pointer(p).read_string
|
48
|
+
p += 4
|
49
|
+
segCount = pTypePtr.get_int(p)
|
50
|
+
pSegPtr = pTypePtr.get_pointer(p)
|
51
|
+
p += 4
|
23
52
|
|
53
|
+
if segCount > 0
|
54
|
+
type_hash[:files] = []
|
55
|
+
segPinterPos = 0
|
56
|
+
0.upto(segCount - 1) do |j|
|
57
|
+
file_hash = {}
|
58
|
+
file_hash[:file_size] = pSegPtr.get_long(segPinterPos)
|
59
|
+
segPinterPos += 8
|
60
|
+
file_hash[:seconds] = pSegPtr.get_int(segPinterPos)
|
61
|
+
segPinterPos += 4
|
62
|
+
file_hash[:file_no] = pSegPtr.get_int(segPinterPos)
|
63
|
+
segPinterPos += 4
|
64
|
+
file_hash[:url] = pSegPtr.get_int(segPinterPos).read_string
|
65
|
+
segPinterPos += 4
|
66
|
+
type_hash[:files][j] = file_hash
|
67
|
+
end
|
68
|
+
end
|
69
|
+
res[:str_typs][i] = type_hash
|
70
|
+
end
|
71
|
+
end
|
72
|
+
video_freevideoresult(pResult)
|
73
|
+
res
|
24
74
|
end
|
25
75
|
end
|
data/lib/dolit/version.rb
CHANGED