rubyVDRconvert 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/recording.rb +65 -61
  2. data/lib/recordings.rb +40 -38
  3. metadata +3 -3
data/lib/recording.rb CHANGED
@@ -7,79 +7,83 @@ require 'file_dir'
7
7
  class Recording
8
8
  attr_reader :directory, :target_dir, :processed, :friendly_name
9
9
  def initialize(directory)
10
- @mutex = Mutex.new
11
- @directory = directory
12
- @recording = nil
13
- @title = nil
14
- @subtitle = nil
15
- @friendly_name = nil
16
- @recording_time = nil
17
- @target_dir = nil
18
- @processed = false
19
- @timestamp = File.mtime(@directory + '/index')
20
- load_info
21
- determine_stream_type
22
- p "New recording: #{@friendly_name}"
10
+ @mutex = Mutex.new
11
+ @directory = directory
12
+ @recording = nil
13
+ @title = nil
14
+ @subtitle = nil
15
+ @friendly_name = nil
16
+ @recording_time = nil
17
+ @target_dir = nil
18
+ @processed = false
19
+ @timestamp = File.mtime(@directory + '/index')
20
+ load_info
21
+ determine_stream_type
22
+ p "New recording: #{@friendly_name}"
23
23
  end
24
24
  def marshal_dump()
25
- [ @directory, @recording, @title, @subtitle, @friendly_name, @target_dir, @processed, @timestamp, @recording_time ]
25
+ [ @directory, @recording, @title, @subtitle, @friendly_name, @target_dir, @processed, @timestamp, @recording_time ]
26
26
  end
27
27
  def marshal_load(variables)
28
- @mutex = Mutex.new
29
- @directory = variables[0]
30
- @recording = variables[1]
31
- @friendly_name = variables[4]
32
- @target_dir = variables[5]
33
- @processed = variables[6]
34
- @timestamp = variables[7]
35
- load_info
28
+ @mutex = Mutex.new
29
+ @directory = variables[0]
30
+ @recording = variables[1]
31
+ @friendly_name = variables[4]
32
+ @target_dir = variables[5]
33
+ @processed = variables[6]
34
+ @timestamp = variables[7]
35
+ load_info
36
36
 
37
37
  end
38
38
  def delete!()
39
- @mutex.synchronize {
40
- @recording = nil
41
- GC.start
42
- p "Deleting....", self, @target_dir
43
- FileDir.delete!(@target_dir)
44
- }
39
+ @mutex.synchronize {
40
+ @recording = nil
41
+ GC.start
42
+ p "Deleting....", self, @target_dir
43
+ FileDir.delete!(@target_dir)
44
+ }
45
45
  end
46
46
  def load_info()
47
- info = File.read(@directory + '/info')
48
- info.each_line { | line |
49
- case line[0..1]
50
- when 'T '
51
- @title = line[2..256].chomp
52
- p "Found title: #{@title}"
53
- when 'S '
54
- @subtitle = line[2..256].chomp
55
- p "Found subtitle: #{@subtitle}"
56
- when 'E '
57
- @recording_time = Time.at(line.split[2].to_i)
58
- end
59
- }
60
- @title = 'Unknown' if not @title
61
- @subtitle = 'Unknown' if not @subtitle
62
- title = @title
63
- subtitle = @subtitle
64
- title.gsub!('/', '!')
65
- subtitle.gsub!('/', '!')
66
- @target_dir = "/video/#{title}/#{subtitle}"
67
- @friendly_name = "#{@recording_time.strftime("%y%m%d-%H%M")} - #{title}"
47
+ begin
48
+ info = File.read(@directory + '/info')
49
+ rescue
50
+ return
51
+ end
52
+ info.each_line { | line |
53
+ case line[0..1]
54
+ when 'T '
55
+ @title = line[2..256].chomp
56
+ p "Found title: #{@title}"
57
+ when 'S '
58
+ @subtitle = line[2..256].chomp
59
+ p "Found subtitle: #{@subtitle}"
60
+ when 'E '
61
+ @recording_time = Time.at(line.split[2].to_i)
62
+ end
63
+ }
64
+ @title = 'Unknown' if not @title
65
+ @subtitle = 'Unknown' if not @subtitle
66
+ title = @title
67
+ subtitle = @subtitle
68
+ title.gsub!('/', '!')
69
+ subtitle.gsub!('/', '!')
70
+ @target_dir = "/video/#{title}/#{subtitle}"
71
+ @friendly_name = "#{@recording_time.strftime("%y%m%d-%H%M")} - #{title}"
68
72
  end
69
73
  def determine_stream_type()
70
- case
71
- when File.file?(@directory + '/00001.ts')
72
- @recording = RecordingTS.new(self)
73
- when File.file?(@directory + '/00001.vdr')
74
- @recording = RecordingVDR.new(self)
75
- else
76
- raise 'Unknown recording'
77
- end
74
+ case
75
+ when File.file?(@directory + '/00001.ts')
76
+ @recording = RecordingTS.new(self)
77
+ when File.file?(@directory + '/00001.vdr')
78
+ @recording = RecordingVDR.new(self)
79
+ else
80
+ raise 'Unknown recording'
81
+ end
78
82
  end
79
83
  def process!()
80
- p "Starting processing of #{@friendly_name}"
81
- @mutex.synchronize{
82
- @processed = true if @recording.process!
83
- }
84
+ p "Starting processing of #{@friendly_name}"
85
+ @mutex.synchronize{
86
+ @processed = true if @recording.process!
87
+ }
84
88
  end
85
89
  end
data/lib/recordings.rb CHANGED
@@ -5,51 +5,53 @@ require 'recording'
5
5
 
6
6
  class Recordings
7
7
  def initialize()
8
- @recordings_db = Hash.new
8
+ @recordings_db = Hash.new
9
9
  end
10
10
  def scan()
11
- basedir = '/vdr'
12
- found_directories = Array.new
13
- Find.find(basedir) { | entry |
14
- entry.force_encoding('BINARY')
15
- # Look for the index file created by VDR
16
- if File.basename(entry) == "index" then
17
- directory = File.dirname(entry)
18
- found_directories << directory
19
- if @recordings_db[directory] == nil then
20
- # Found a new entry
21
- p directory
22
- p add(directory)
23
- end
24
- end
25
- }
26
- @recordings_db.each { | recording |
27
- p recording.class, recording
28
- recording[1].delete! unless found_directories.include?(recording[1].directory)
29
- }
11
+ basedir = '/vdr'
12
+ found_directories = Array.new
13
+ Find.find(basedir) { | entry |
14
+ entry.force_encoding('BINARY')
15
+ # Look for the index file created by VDR
16
+ if File.basename(entry) == "index" then
17
+ directory = File.dirname(entry)
18
+ unless directory.end_with?('.del') # These directories have been marked as deleted from VDR...
19
+ found_directories << directory
20
+ if @recordings_db[directory] == nil then
21
+ # Found a new entry
22
+ p directory
23
+ p add(directory)
24
+ end
25
+ end
26
+ end
27
+ }
28
+ @recordings_db.each { | recording |
29
+ p recording.class, recording
30
+ recording[1].delete! unless found_directories.include?(recording[1].directory)
31
+ }
30
32
  end
31
33
  def dump()
32
- File.open('/vdr/rubyVDRconvert.recordings.marshal', 'wb:ascii-8bit') { | f |
33
- f.write(Marshal.dump(@recordings_db))
34
- }
34
+ File.open('/vdr/rubyVDRconvert.recordings.marshal', 'wb:ascii-8bit') { | f |
35
+ f.write(Marshal.dump(@recordings_db))
36
+ }
35
37
  end
36
38
  def load()
37
- begin
38
- data = File.read('/vdr/rubyVDRconvert.recordings.marshal')
39
- @recordings_db = Marshal.load(data)
40
- rescue
41
- @recordings_db = Hash.new
42
- end
39
+ begin
40
+ data = File.read('/vdr/rubyVDRconvert.recordings.marshal')
41
+ @recordings_db = Marshal.load(data)
42
+ rescue
43
+ @recordings_db = Hash.new
44
+ end
43
45
  end
44
46
  def add(directory)
45
- # TODO: Add a new recording that was found in the specified directory
46
- # Ensure that VDR has finished writing the recording by checking the mtime of the index file
47
- # Wait at least 30 seconds after VDR has finished
48
- p Time.now - File.mtime(directory + '/index')
49
- return false unless (Time.now - File.mtime(directory + '/index')) > 30
50
- p "Old enough... continuing."
51
- @recordings_db[directory] = Recording.new(directory)
52
- @recordings_db[directory].process!
53
- p @recordings_db[directory]
47
+ # TODO: Add a new recording that was found in the specified directory
48
+ # Ensure that VDR has finished writing the recording by checking the mtime of the index file
49
+ # Wait at least 30 seconds after VDR has finished
50
+ p Time.now - File.mtime(directory + '/index')
51
+ return false unless (Time.now - File.mtime(directory + '/index')) > 30
52
+ p "Old enough... continuing."
53
+ @recordings_db[directory] = Recording.new(directory)
54
+ @recordings_db[directory].process!
55
+ p @recordings_db[directory]
54
56
  end
55
57
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 6
9
- version: 0.0.6
8
+ - 7
9
+ version: 0.0.7
10
10
  platform: ruby
11
11
  authors:
12
12
  - Daniel Frank
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-11-21 00:00:00 +01:00
17
+ date: 2010-12-07 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies: []
20
20