module Dolit
Constants
- VERSION
Public Class Methods
parse(url, user_agent = nil)
click to toggle source
# File lib/dolit.rb, line 19 def self.parse(url, user_agent = nil) pResult = FFI::MemoryPointer.new :pointer ret = video_parse(url, user_agent, pResult) return if ret != 0 pos = 0 res = {} pVideoResult = pResult.read_pointer res[:site_id] = pVideoResult.get_int(pos) pos += 4 res[:time_length] = pVideoResult.get_long(pos) pos += 8 res[:framCount] = pVideoResult.get_long(pos) pos += 8 res[:total_size] = pVideoResult.get_long(pos) pos += 8 res[:v_name] = pVideoResult.get_pointer(pos).read_string pos += 4 res[:tags] = pVideoResult.get_pointer(pos).read_string pos += 4 count = pVideoResult.get_int(pos) pos += 4 pTypePtr = pVideoResult.get_pointer(pos) pos += 4 if count > 0 p = 0 res[:strs] = [] count.times do |i| type_hash = {} type_hash[:str_type] = pTypePtr.get_pointer(p).read_string p += 4 segCount = pTypePtr.get_int(p) p += 4 pSegPtr = pTypePtr.get_pointer(p) p += 4 if segCount > 0 type_hash[:files] = [] segPinterPos = 0 segCount.times do |j| file_hash = {} file_hash[:file_size] = pSegPtr.get_long(segPinterPos) segPinterPos += 8 file_hash[:seconds] = pSegPtr.get_int(segPinterPos) segPinterPos += 4 file_hash[:file_no] = pSegPtr.get_int(segPinterPos) segPinterPos += 4 file_hash[:url] = pSegPtr.get_pointer(segPinterPos).read_string segPinterPos += 4 type_hash[:files][j] = file_hash end end res[:strs][i] = type_hash end end video_freevideoresult(pVideoResult) res end