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 +4 -4
- data/lib/plex/autodelete/cleanup.rb +100 -35
- data/lib/plex/autodelete/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ddda4b90cdd368ee480bcac9e83786ef57f4d95e
|
4
|
+
data.tar.gz: bc94db99ab83d8724516727ce05d5de92c080924
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
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
|
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.
|
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-
|
11
|
+
date: 2014-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|