plex-autodelete 0.0.4 → 0.0.5

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: b659d1f7623d15f692ed80fd4dd4a2b984c1478a
4
- data.tar.gz: a6606c3e58a3b622a04d32f777eb230484e7b0ce
3
+ metadata.gz: a943700c4631bf182a9a65136908bede7bd1cb75
4
+ data.tar.gz: df9d8ff1f18a4a35b45f0a1d29bab9fe8f6e46ea
5
5
  SHA512:
6
- metadata.gz: 880aef4416c4baa9840637b3d5fbd87458c0003cc6b2d741534def579f294af9530095786b070d850f3aaf3f8fcb3588226cbe73959c3ebc70e46e901e525a0a
7
- data.tar.gz: a2a63ae20cc3ecfd158ead0a8a666a671d11446b91fe3919c4f457bf3a586cedc2d1bdc2c5ab13a1285bcaef174b4ef04dd9dcdcc473595d2ede4f6c06bc4c1a
6
+ metadata.gz: 0eeebd1a1e620da3a9bd6c94ad5dc7972c14a54e0f1c0c17687f77e62721e46d10ddc48244ebf3761591fd5a91f80808cb417fecb00c0495bb44ef484819d154
7
+ data.tar.gz: 59c6fc16690ac1734da8303366264346999518c9e298b780e1d6027d3270ae46064648a62a6497b99a11218203b8d698b7169e01b665a18b68fec5ba2bd91e43
data/Gemfile CHANGED
@@ -2,4 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem 'plex-ruby', github: 'ekosz/Plex-Ruby', require: 'plex-ruby'
4
4
  gem 'thor'
5
+ gem 'colorize'
5
6
  gem 'nori'
data/bin/plex-autodelete CHANGED
@@ -4,7 +4,7 @@ $:.unshift File.expand_path(File.dirname(Pathname.new(__FILE__).realpath) + '/..
4
4
  require 'plex/autodelete/cli'
5
5
 
6
6
  begin
7
- Plex::Autodelete::CLI.start(ARGV)
7
+ Plex::Autodelete::CLI.start
8
8
  rescue
9
9
  puts "Error: #{$!.message} \n\n"
10
10
  end
@@ -1,37 +1,82 @@
1
1
  require 'thor'
2
+ require 'yaml'
3
+ require 'nori'
4
+ require 'colorize'
2
5
  require 'plex/autodelete/cleanup'
3
6
 
4
7
  module Plex
5
8
  module Autodelete
9
+
6
10
  class CLI < Thor
7
11
 
12
+ @@config_file = ENV['HOME'] + '/.plex-autodelete.yml'
13
+ @@config = nil
8
14
  @@myplex = {
9
15
  host: 'plex.tv',
10
- port: 443
16
+ port: 443,
17
+ path: '/users/sign_in.xml',
18
+ client: "plex-autodelete #{Plex::Autodelete::VERSION}",
11
19
  }
12
20
 
13
21
  desc "cleanup", "Remove all watched episodes from Plex"
14
- option :host, default: '127.0.0.1', desc: 'The hostname/ip address of the Plex Server'
15
- option :port, default: 32400, desc: 'The port of the Plex Server'
16
- option :token, required: true, desc: 'The token of the plex server, generate with "plex-autodelete token"'
17
- option :skip, type: :array, desc: 'An array of shows to skip, these will not be deleted. Use quotes if show contains spaces/special characters.'
18
- option :delete, type: :boolean, default: true, desc: 'Skip actual deletion of files, useful for testing settings'
19
- option :section, type: :numeric, default: 1, desc: 'Which section are your TV shows in?'
20
22
  def cleanup
21
- output_config
23
+ unless File.exists? @@config_file
24
+ puts "Config file does not exist, please run 'plex-autocomplete install' to generate it"
25
+ exit
26
+ end
27
+
28
+ puts "#{config.to_yaml}\n"
29
+
22
30
  Plex::Autodelete::Cleanup.configure config
23
31
  Plex::Autodelete::Cleanup.cleanup
24
32
  end
25
33
 
26
- desc 'token', 'Generate the auth token needed to use "plex-autodelete cleanup"'
27
- option :username, required: true, desc: 'Your my.plex.tv username (this will not be stored)'
28
- option :password, required: true, desc: 'Your my.plex.tv password (this will not be stored)'
29
- def token
34
+ desc 'install', "Generate the config file to use with 'plex-autodelete cleanup'"
35
+ def install
36
+
37
+ puts "Generating token using https://#{@@myplex[:host]}. Username/Password will not be stored".bold
38
+ username = ask("Username")
39
+ password = ask("Password", echo: false)
40
+ token = get_token(username, password)
41
+
42
+ puts "\n"
43
+ puts "Token generated: #{token}".green
44
+
45
+ puts "\n"
46
+ puts "Configure Plex Autodelete".bold
47
+
48
+ @@config = {
49
+ host: ask("Plex Server address", default: '127.0.0.1') ,
50
+ port: ask("Plex Server port:", default: 32400),
51
+ token: token,
52
+ skip: ask("Shows to skip [comma seperated list]").split(','),
53
+ delete: true,
54
+ section: 1
55
+ }
56
+
57
+ write_config
58
+ puts "Config file has been written to #{@@config_file}".green
59
+
60
+ end
61
+
62
+ private
63
+
64
+ def write_config
65
+ File.open(@@config_file, "w") { |file|
66
+ YAML.dump(config, file)
67
+ }
68
+ end
69
+
70
+ def config
71
+ @@config ||= YAML::load_file(@@config_file)
72
+ end
73
+
74
+ def get_token(username, password)
30
75
  http = Net::HTTP.new(@@myplex[:host], @@myplex[:port])
31
76
  http.use_ssl = true
32
77
  http.start do |http|
33
- request = Net::HTTP::Post.new('/users/sign_in.xml', initheader = {'X-Plex-Client-Identifier' =>'Plex Autodelete'})
34
- request.basic_auth options[:username], options[:password]
78
+ request = Net::HTTP::Post.new(@@myplex[:path], initheader = {'X-Plex-Client-Identifier' => @@myplex[:client]})
79
+ request.basic_auth username, password
35
80
  response, data = http.request(request)
36
81
 
37
82
  parser = Nori.new
@@ -39,44 +84,14 @@ module Plex
39
84
 
40
85
  if hash.has_key?('errors')
41
86
  hash['errors'].each do |error|
42
- puts error.to_s
87
+ puts error.to_s.red
43
88
  end
89
+ exit
44
90
  else
45
- authentication_token = hash['user']['authentication_token'].to_s
46
- puts "Authentication Token: #{authentication_token}"
91
+ hash['user']['authentication_token'].to_s
47
92
  end
48
93
  end
49
94
  end
50
-
51
- private
52
- def output_config
53
- output = []
54
- output << "Host: #{config[:host]}"
55
- output << "Port: #{config[:port]}"
56
- output << "Token: #{config[:token]}"
57
- output << "Section: #{config[:section]}"
58
- output << "Skip Shows: #{config[:skip] || 'N/A'}"
59
- output << "Skip Delete: #{delete_text}"
60
- output << "--------------------"
61
- output << ""
62
- output = output.join("\n")
63
- puts output
64
- end
65
-
66
- def config
67
- {
68
- host: options[:host],
69
- port: options[:port],
70
- token: options[:token],
71
- section: options[:section],
72
- skip: options[:skip],
73
- delete: options[:delete],
74
- }
75
- end
76
-
77
- def delete_text
78
- options[:delete] ? 'true' : 'false'
79
- end
80
95
  end
81
96
  end
82
97
  end
@@ -1,5 +1,5 @@
1
1
  module Plex
2
2
  module Autodelete
3
- VERSION = "0.0.4"
3
+ VERSION = "0.0.5"
4
4
  end
5
5
  end
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
23
  spec.add_runtime_dependency 'plex-ruby', '~> 1.5', '>= 1.5.1'
24
24
  spec.add_runtime_dependency 'thor', '~> 0.19.1'
25
+ spec.add_runtime_dependency 'colorize', '~> 0.7.3'
25
26
  spec.add_runtime_dependency 'nori', '~> 2.4', '>= 2.4.0'
26
27
  spec.add_runtime_dependency 'mini_portile', '~> 0.6.1'
27
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plex-autodelete
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Robertson
@@ -72,6 +72,20 @@ dependencies:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
74
  version: 0.19.1
75
+ - !ruby/object:Gem::Dependency
76
+ name: colorize
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 0.7.3
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 0.7.3
75
89
  - !ruby/object:Gem::Dependency
76
90
  name: nori
77
91
  requirement: !ruby/object:Gem::Requirement