apple-tv-converter 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,41 +1,27 @@
1
1
  module AppleTvConverter
2
2
  class MediaConverterMacAdapter < MediaConverterAdapter
3
3
  def add_subtitles(media)
4
- puts "* Adding subtitles"
5
-
6
- # No need remove any subtitles, no video will have subtitles!
7
- # printf " * Removing any previous subtitles"
8
-
9
- # command_line = %Q[./SublerCLI -remove -dest "#{media.converted_filename}"]
10
-
11
- # AppleTvConverter.logger.debug "Executing:"
12
- # AppleTvConverter.logger.debug command_line
13
-
14
- # output = Open3.popen3(command_line) { |stdin, stdout, stderr, wait_thr| stdout.read }
15
-
16
- # puts output.strip.empty? ? " [DONE]" : (output.strip == 'Error: (null)' ? " [NONE FOUND]" : " [ERROR]")
4
+ puts "* Adding external subtitles"
17
5
 
18
6
  if has_subtitles?(media)
19
7
  list_files(media.original_filename.gsub(File.extname(media.original_filename), '*.srt')).map do |subtitle_filename|
20
- subtitle_filename =~ /(\w{3})\.srt$/
21
- language_code = $1 || 'eng'
22
-
23
- language = ::LanguageList::LanguageInfo.find_by_iso_639_3(language_code)
24
- language ||= ::LanguageList::LanguageInfo.find_by_iso_639_3('eng')
8
+ subtitle_filename =~ /\.(\w{3})\.srt$/i
9
+ language_code = $1 || 'und'
25
10
 
11
+ language_name = get_language_name(language_code)
26
12
 
27
13
  command_line = "./SublerCLI "
28
14
  command_line << %Q[-source "#{subtitle_filename}" ]
29
- command_line << %Q[-language "#{language.name}" ]
15
+ command_line << %Q[-language "#{language_name}" ]
30
16
  command_line << %Q[-dest "#{media.converted_filename}"]
31
17
 
32
18
  AppleTvConverter.logger.debug "Executing:"
33
19
  AppleTvConverter.logger.debug command_line
34
20
 
35
- printf " * Adding #{language.name} subtitles"
36
- output = Open3.popen3(command_line) { |stdin, stdout, stderr, wait_thr| stdout.read }
21
+ printf " * Adding #{language_name} subtitles"
22
+ output, exit_status = Open3.popen3(command_line) { |stdin, stdout, stderr, wait_thr| [ stdout.read, wait_thr.value] }
37
23
 
38
- puts output.strip.empty? ? " [DONE]" : " [ERROR]"
24
+ puts exit_status.exitstatus == 0 ? " [DONE]" : " [ERROR]"
39
25
  end
40
26
  else
41
27
  puts " * No subtitles found"
@@ -44,10 +30,40 @@ module AppleTvConverter
44
30
 
45
31
  def tag(media)
46
32
  metadata = ''
47
- metadata << %Q[{Name: #{media.show} S#{media.season.to_s.rjust(2, '0')}E#{media.number.to_s.rjust(2, '0')}}] if media.is_tv_show_episode?
48
- metadata << %Q[{Name: #{media.show}}] if media.is_movie?
49
- metadata << %Q[{Genre: #{media.show}}{TV Show: #{media.show}}{TV Season: #{media.season}}{TV Episode #: #{media.number}}] if media.is_tv_show_episode?
50
- metadata << %Q[{Genre: #{media.quality} Movies}] if media.is_movie?
33
+
34
+ if media.is_tv_show_episode?
35
+ metadata << %Q[{Name: #{media.show} S#{media.season.to_s.rjust(2, '0')}E#{media.number.to_s.rjust(2, '0')}}]
36
+ metadata << %Q[{Genre: #{media.genre}}]
37
+ metadata << %Q[{TV Show: #{media.show}}]
38
+ metadata << %Q[{TV Season: #{media.season}}]
39
+ metadata << %Q[{TV Episode #: #{media.number}}]
40
+ else
41
+ # imdb_movie = load_movie_from_imdb(media)
42
+
43
+ # if !imdb_movie
44
+ metadata << %Q[{Name: #{media.show}}]
45
+ metadata << %Q[{Genre: #{media.genre}}]
46
+ # else
47
+ # metadata << %Q[{Name: #{imdb_movie.title}}]
48
+ # metadata << %Q[{Genre: #{imdb_movie.genres.first}}]
49
+ # metadata << %Q[{Description: #{imdb_movie.plot}}]
50
+ # metadata << %Q[{Release Date: #{imdb_movie.year}}]
51
+ # metadata << %Q[{Director: #{imdb_movie.director.first}}]
52
+ # metadata << %Q[{Codirector: #{imdb_movie.director[1]}}] if imdb_movie.director.length > 1
53
+
54
+ # if imdb_movie.poster
55
+ # open(imdb_movie.poster) do |f|
56
+ # File.open(media.artwork_filename,"wb") do |file|
57
+ # file.puts f.read
58
+ # end
59
+ # end
60
+
61
+ # metadata << %Q[{Artwork: #{media.artwork_filename}}]
62
+ # end
63
+ # end
64
+ end
65
+
66
+ metadata << %Q[{HD Video: true}] if media.hd?
51
67
 
52
68
  command_line = %Q[./SublerCLI -metadata "#{metadata}" -dest "#{media.converted_filename}"]
53
69
 
@@ -56,44 +72,48 @@ module AppleTvConverter
56
72
 
57
73
  printf "* Tagging"
58
74
 
59
- output = Open3.popen3(command_line) { |stdin, stdout, stderr, wait_thr| stdout.read }
75
+ output, exit_status = Open3.popen3(command_line) { |stdin, stdout, stderr, wait_thr| [ stdout.read, wait_thr.value ] }
60
76
 
61
- puts output.strip.empty? ? " [DONE]" : " [ERROR]"
77
+ puts exit_status.exitstatus == 0 ? " [DONE]" : " [ERROR]"
62
78
 
63
79
  return output.strip.empty?
64
80
  end
65
81
 
66
82
  def add_to_itunes(media)
67
- printf " * Adding to iTunes"
83
+ printf "* Adding to iTunes"
68
84
 
69
85
  command_line = [
70
- "ln -s",
71
- "#{media.converted_filename}".gsub(/\s/, '\ ').gsub(/\[/, '\[').gsub(/\]/, '\]'),
72
- "#{File.expand_path(File.join('~', 'Music', 'iTunes', 'iTunes Media', 'Automatically Add to iTunes.localized'))}".gsub(/\s/, '\ ').gsub(/\[/, '\[').gsub(/\]/, '\]')
86
+ 'osascript',
87
+ '-e',
88
+ %Q['tell application "iTunes" to set results to (every file track of playlist "Library" whose name equals "#{media.name}")']
73
89
  ].join(' ')
74
90
 
75
91
  AppleTvConverter.logger.debug "Executing:"
76
92
  AppleTvConverter.logger.debug command_line
93
+ output, exit_status = Open3.popen3(command_line) { |stdin, stdout, stderr, wait_thr| [ stdout.read, wait_thr.value ] }
94
+
95
+ if output.strip.blank?
96
+ # Blank result means the file isn't in the library
97
+ command_line = [
98
+ 'osascript',
99
+ '-e',
100
+ %Q['tell application "iTunes" to add POSIX file "#{media.converted_filename}"']
101
+ ].join(' ')
102
+
103
+ AppleTvConverter.logger.debug "Executing:"
104
+ AppleTvConverter.logger.debug command_line
105
+ output, exit_status = Open3.popen3(command_line) { |stdin, stdout, stderr, wait_thr| [ stdout.read, wait_thr.value ] }
77
106
 
78
- `#{command_line}`
107
+ puts ' [DONE]'
108
+ else
109
+ puts ' [NOT NECESSARY]'
110
+ end
79
111
 
80
- puts ' [DONE]'
81
112
  return true
82
113
  end
83
114
 
84
115
  def list_files(ls)
85
- `ls -1 #{ls.gsub(/\s/, '\ ').gsub(/\[/, '\[').gsub(/\]/, '\]')} 2>/dev/null`.split("\n")
116
+ `ls -1 #{Shellwords.escape(ls).gsub(/\\\*/, '*')} 2>/dev/null`.split("\n")
86
117
  end
87
-
88
- protected
89
-
90
- def get_transcode_options(media)
91
- options = {
92
- :video_codec => convert_video?(media) ? 'mpeg4' : 'copy',
93
- :audio_codec => convert_audio?(media) ? 'libfaac' : 'copy'
94
- }
95
-
96
- return options
97
- end
98
118
  end
99
119
  end
@@ -1,3 +1,3 @@
1
1
  module AppleTvConverter
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apple-tv-converter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-20 00:00:00.000000000 Z
12
+ date: 2013-02-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec