Sha256: d9f3cfbc9b541477d8c181e2d64c1e87581b7f8c1f9f6138c24bf3afb0f545be
Contents?: true
Size: 1.22 KB
Versions: 7
Compression:
Stored size: 1.22 KB
Contents
require 'bencode' class VideoTorrentInfo autoload :TorrentClient, 'torrent_client' autoload :FFmpegVideoInfo, 'ffmpeg_video_info' DEFAULTS = { port1: 8661, port2: 8662, temp_path: '/tmp', supported_extensions: %w{ .avi .mkv .mpg .mpeg .3gp .wmv .mov .flv .mts }, download_limit: 1000000 } def initialize(params = {}) @params = DEFAULTS.merge(params) @torrent_client = VideoTorrentInfo::TorrentClient.new end def load(torrent_path) string = File.open(torrent_path){ |file| file.read } torrent = string.bdecode files = get_video_files(torrent) @torrent_client.load(torrent_path, files.keys.first, @params[:download_limit], @params[:temp_path], @params[:port1], @params[:port2]) dest = @params[:temp_path] + '/' + files.values.first res = FFmpegVideoInfo.get(dest) File.unlink(dest) res end def get_video_files(torrent) info = torrent['info'] res = {} files = [] if info['files'].nil? files = [info['name']] else files = info['files'].map { |e| (info['name'] + path).join('/') } end files.each do |f| if @params[:supported_extensions].include?(File.extname(f)) res[files.index(f)] = f end end res end end
Version data entries
7 entries across 7 versions & 1 rubygems