Sha256: ffa7e5f8ed0af685b0e4a1cdff9569bde81580270a075a312e43d9463e660958
Contents?: true
Size: 1.38 KB
Versions: 3
Compression:
Stored size: 1.38 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 .mp4 }, download_limit: 100000, timeout: 30 } def initialize(params = {}) @params = DEFAULTS.merge(params) @torrent_client = VideoTorrentInfo::TorrentClient.new end def load(torrent_path) dest = download_video(torrent_path) res = FFmpegVideoInfo.get(dest) File.unlink(dest) res end def download_video(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], @params[:timeout]) @params[:temp_path] + '/' + files.values.first 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']] + e['path']).join('/') } end files.each do |f| if @params[:supported_extensions].include?(File.extname(f)) res[files.index(f)] = f end end raise "No files supported" if res.empty? res end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
video-torrent-info-0.1.18 | lib/video_torrent_info.rb |
video-torrent-info-0.1.17 | lib/video_torrent_info.rb |
video-torrent-info-0.1.16 | lib/video_torrent_info.rb |