plex-autodelete 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5a1d53c4fa5d587c74aa04d563a7ebe5b0b6a163
4
- data.tar.gz: 98d241fbdfb431efc91908038b8014adf8f030e1
3
+ metadata.gz: ddda4b90cdd368ee480bcac9e83786ef57f4d95e
4
+ data.tar.gz: bc94db99ab83d8724516727ce05d5de92c080924
5
5
  SHA512:
6
- metadata.gz: 79b7792381c7037df0cc995f7c4a731cd01942360998ddb7d62376ef5fa540821da9a9e2407b51207aed954b9e7193fee51b8875d5e070f621d95573628cb113
7
- data.tar.gz: 5a81bd2ac6e77869399bbd49b1fe744988ee25c45c306d366900aa23a1a35be6765b610d6da9d3071f48c75926d3db5b789b5393a58103a6ca803c861de31249
6
+ metadata.gz: b13baf433e70542adaa3bb6e0434edac6eec88c7aff8012a4c5aead717a42ec6e33fdcffc022dc117eebfe4b65d8369e67226abfc14b57537a02756983bd0c0c
7
+ data.tar.gz: e80c48be3790b1be5d168a69840165f66fd9daf562ba1d1ac016cf3a27fd3dcb9f8cb188e269c3fe139c8e2f8b5d758cfb0fa67a626169c02bef65c34f5c75e6
@@ -5,6 +5,13 @@ module Plex
5
5
  module Autodelete
6
6
  class Cleanup
7
7
 
8
+ @stats = {
9
+ skipped: 0,
10
+ deleted: 0,
11
+ kept: 0,
12
+ failed: 0,
13
+ }
14
+
8
15
  @config = {
9
16
  host: '127.0.0.1',
10
17
  port: 32400,
@@ -20,6 +27,17 @@ module Plex
20
27
  opts.each {|key, value| @config[key.to_sym] = value if @config_keys.include? key.to_sym}
21
28
  end
22
29
 
30
+ def self.cleanup
31
+ self.required_params!
32
+ self.plex_server.library.section(@config[:section]).all.each do |show|
33
+ self.proccess_show show
34
+ end
35
+
36
+ self.output_stats
37
+ end
38
+
39
+ private
40
+
23
41
  def self.required_params!
24
42
  [:host, :port, :token, :section].each do |param|
25
43
  if @config[param].nil?
@@ -28,48 +46,95 @@ module Plex
28
46
  end
29
47
  end
30
48
 
31
- def self.cleanup
32
-
33
- self.required_params!
34
-
49
+ def self.plex_server
35
50
  Plex.configure do |config|
36
51
  config.auth_token = @config[:token]
37
52
  end
38
53
 
39
- server = Plex::Server.new(@config[:host], @config[:port])
40
-
41
- server.library.section(@config[:section]).all.each do |show|
42
- puts "#{show.title}".bold
43
- show.seasons.each do |season|
44
- puts " - #{season.title}"
45
- season.episodes.each do |episode|
46
- print " - #{episode.title}"
47
- if episode.respond_to?(:view_count)
48
- episode.medias.each do |media|
49
- media.parts.each do |part|
50
- if @config[:delete] and not @config[:skip].include? show.title and File.exist?(part.file)
51
- File.delete(part.file)
52
- puts " (deleted)".yellow
53
- else
54
- if @config[:delete] or @config[:skip].include? show.title
55
- puts " (skipped)".green
56
- else
57
- puts " (failed)".red
58
- end
59
- end
60
- end
61
- end
62
- else
63
- if @config[:skip].include? show.title
64
- puts ' (skipped)'.green
65
- else
66
- puts ' (kept)'.blue
67
- end
68
- end
69
- end
54
+ Plex::Server.new(@config[:host], @config[:port])
55
+ end
56
+
57
+ def self.proccess_show show
58
+ puts nil
59
+ puts "#{show.title}".bold
60
+ show_skipped = @config[:skip].include? show.title
61
+ show.seasons.each do |season|
62
+ self.proccess_season season, show_skipped
63
+ end
64
+ end
65
+
66
+ def self.proccess_season season, show_skipped
67
+ puts " - #{season.title}"
68
+ season.episodes.each do |episode|
69
+ self.proccess_episode episode, show_skipped
70
+ end
71
+ end
72
+
73
+ def self.proccess_episode episode, show_skipped
74
+ print " - #{episode.title} - "
75
+ if self.should_delete_episode? episode, show_skipped
76
+ episode.medias.each do |media|
77
+ self.process_media media, show_skipped
70
78
  end
79
+ else
80
+ self.output_episode_skipped_reason episode, show_skipped
81
+ end
82
+ end
83
+
84
+ def self.should_delete_episode? episode, show_skipped
85
+ @config[:delete] and not show_skipped and episode_watched? episode
86
+ end
87
+
88
+ def self.output_episode_skipped_reason episode, show_skipped
89
+ if episode_watched? episode and not @config[:delete]
90
+ self.increment_stat :skipped
91
+ puts 'Skipped (Test mode enabled, disable to perform delete)'.blue
92
+ elsif episode_watched? episode and show_skipped
93
+ self.increment_stat :skipped
94
+ puts 'Skipped (Show in skip list)'.blue
95
+ else
96
+ self.increment_stat :kept
97
+ puts 'Not watched yet'.blue
71
98
  end
72
99
  end
100
+
101
+ def self.episode_watched? episode
102
+ episode.respond_to?(:view_count) and episode.view_count.to_i > 0
103
+ end
104
+
105
+ def self.proccess_media media, show_skipped
106
+ media.parts.each do |part|
107
+ self.proccess_part part, show_skipped
108
+ end
109
+ end
110
+
111
+ def self.proccess_part part, show_skipped
112
+ if File.exist?(part.file)
113
+ self.increment_stat :deleted
114
+ File.delete(part.file)
115
+ puts "Deleted".yellow
116
+ else
117
+ self.increment_stat :failed
118
+ puts "File does not exist".red
119
+ end
120
+ end
121
+
122
+ def self.increment_stat stat
123
+ @stats[stat] += 1
124
+ end
125
+
126
+ def self.output_stats
127
+ puts nil
128
+ puts '-------------'
129
+ puts ' Stats '
130
+ puts '-------------'
131
+ puts "Deleted: #{@stats[:deleted].to_i}"
132
+ puts "Skipped: #{@stats[:skipped].to_i}"
133
+ puts "Kept: #{@stats[:kept].to_i}"
134
+ puts "Failed: #{@stats[:failed].to_i}"
135
+ puts nil
136
+ end
137
+
73
138
  end
74
139
  end
75
140
  end
@@ -1,5 +1,5 @@
1
1
  module Plex
2
2
  module Autodelete
3
- VERSION = "0.1.3"
3
+ VERSION = "0.1.4"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plex-autodelete
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Robertson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-05 00:00:00.000000000 Z
11
+ date: 2014-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler