plex-autodelete 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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