xxx_rename 0.0.1

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.
Files changed (97) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/codeql-analysis.yml +42 -0
  3. data/.github/workflows/ruby.yml +44 -0
  4. data/.gitignore +12 -0
  5. data/.rspec +3 -0
  6. data/.rubocop.yml +41 -0
  7. data/.ruby-version +1 -0
  8. data/Gemfile +6 -0
  9. data/Gemfile.lock +174 -0
  10. data/README.md +319 -0
  11. data/Rakefile +12 -0
  12. data/bin/console +23 -0
  13. data/bin/install +22 -0
  14. data/bin/setup +8 -0
  15. data/codecov.yml +2 -0
  16. data/docs/DEVELOPMENT.md +42 -0
  17. data/exe/xxx_rename +12 -0
  18. data/lib/xxx_rename/actions/base_action.rb +20 -0
  19. data/lib/xxx_rename/actions/log_new_filename.rb +40 -0
  20. data/lib/xxx_rename/actions/resolver.rb +32 -0
  21. data/lib/xxx_rename/actions/stash_app_post_movie.rb +62 -0
  22. data/lib/xxx_rename/actors_helper.rb +117 -0
  23. data/lib/xxx_rename/cli.rb +211 -0
  24. data/lib/xxx_rename/client.rb +110 -0
  25. data/lib/xxx_rename/constants.rb +96 -0
  26. data/lib/xxx_rename/contract/config_contract.rb +241 -0
  27. data/lib/xxx_rename/contract/config_generator.rb +207 -0
  28. data/lib/xxx_rename/contract/file_rename_op_contract.rb +54 -0
  29. data/lib/xxx_rename/contract/types.rb +10 -0
  30. data/lib/xxx_rename/core_extensions/string.rb +39 -0
  31. data/lib/xxx_rename/data/base.rb +34 -0
  32. data/lib/xxx_rename/data/config.rb +97 -0
  33. data/lib/xxx_rename/data/file_rename_op.rb +42 -0
  34. data/lib/xxx_rename/data/file_rename_op_datastore.rb +111 -0
  35. data/lib/xxx_rename/data/naughty_america_database.rb +22 -0
  36. data/lib/xxx_rename/data/query_interface.rb +78 -0
  37. data/lib/xxx_rename/data/scene_data.rb +71 -0
  38. data/lib/xxx_rename/data/scene_datastore.rb +401 -0
  39. data/lib/xxx_rename/data/site_config.rb +84 -0
  40. data/lib/xxx_rename/data/types.rb +13 -0
  41. data/lib/xxx_rename/errors.rb +28 -0
  42. data/lib/xxx_rename/file_scanner.rb +49 -0
  43. data/lib/xxx_rename/file_utilities.rb +38 -0
  44. data/lib/xxx_rename/filename_generator.rb +173 -0
  45. data/lib/xxx_rename/integrations/base.rb +20 -0
  46. data/lib/xxx_rename/integrations/stash_app.rb +316 -0
  47. data/lib/xxx_rename/log.rb +26 -0
  48. data/lib/xxx_rename/migration_client.rb +139 -0
  49. data/lib/xxx_rename/processed_file.rb +203 -0
  50. data/lib/xxx_rename/search.rb +166 -0
  51. data/lib/xxx_rename/site_client_matcher.rb +299 -0
  52. data/lib/xxx_rename/site_clients/adult_time.rb +31 -0
  53. data/lib/xxx_rename/site_clients/algolia_common.rb +48 -0
  54. data/lib/xxx_rename/site_clients/algolia_v2.rb +181 -0
  55. data/lib/xxx_rename/site_clients/babes.rb +15 -0
  56. data/lib/xxx_rename/site_clients/base.rb +61 -0
  57. data/lib/xxx_rename/site_clients/blacked.rb +12 -0
  58. data/lib/xxx_rename/site_clients/blacked_raw.rb +12 -0
  59. data/lib/xxx_rename/site_clients/brazzers.rb +15 -0
  60. data/lib/xxx_rename/site_clients/configuration.rb +55 -0
  61. data/lib/xxx_rename/site_clients/digital_playground.rb +15 -0
  62. data/lib/xxx_rename/site_clients/elegant_angel.rb +168 -0
  63. data/lib/xxx_rename/site_clients/errors.rb +103 -0
  64. data/lib/xxx_rename/site_clients/evil_angel.rb +59 -0
  65. data/lib/xxx_rename/site_clients/goodporn.rb +109 -0
  66. data/lib/xxx_rename/site_clients/jules_jordan.rb +22 -0
  67. data/lib/xxx_rename/site_clients/jules_jordan_media.rb +175 -0
  68. data/lib/xxx_rename/site_clients/manuel_ferrara.rb +24 -0
  69. data/lib/xxx_rename/site_clients/mg_premium.rb +247 -0
  70. data/lib/xxx_rename/site_clients/mofos.rb +15 -0
  71. data/lib/xxx_rename/site_clients/naughty_america.rb +272 -0
  72. data/lib/xxx_rename/site_clients/nfbusty.rb +84 -0
  73. data/lib/xxx_rename/site_clients/query_generator/base.rb +89 -0
  74. data/lib/xxx_rename/site_clients/query_generator/evil_angel.rb +36 -0
  75. data/lib/xxx_rename/site_clients/query_generator/goodporn.rb +27 -0
  76. data/lib/xxx_rename/site_clients/query_generator/mg_premium.rb +26 -0
  77. data/lib/xxx_rename/site_clients/query_generator/naughty_america.rb +24 -0
  78. data/lib/xxx_rename/site_clients/query_generator/stash_db.rb +21 -0
  79. data/lib/xxx_rename/site_clients/query_generator/vixen.rb +27 -0
  80. data/lib/xxx_rename/site_clients/query_generator/whale.rb +39 -0
  81. data/lib/xxx_rename/site_clients/reality_kings.rb +14 -0
  82. data/lib/xxx_rename/site_clients/stash_db.rb +257 -0
  83. data/lib/xxx_rename/site_clients/tushy.rb +12 -0
  84. data/lib/xxx_rename/site_clients/tushy_raw.rb +12 -0
  85. data/lib/xxx_rename/site_clients/twistys.rb +15 -0
  86. data/lib/xxx_rename/site_clients/vixen.rb +12 -0
  87. data/lib/xxx_rename/site_clients/vixen_media.rb +130 -0
  88. data/lib/xxx_rename/site_clients/whale.rb +106 -0
  89. data/lib/xxx_rename/site_clients/wicked.rb +52 -0
  90. data/lib/xxx_rename/site_clients/x_empire.rb +51 -0
  91. data/lib/xxx_rename/site_clients/zero_tolerance.rb +36 -0
  92. data/lib/xxx_rename/utils.rb +81 -0
  93. data/lib/xxx_rename/version.rb +5 -0
  94. data/lib/xxx_rename.rb +60 -0
  95. data/output.png +0 -0
  96. data/xxx_rename.gemspec +42 -0
  97. metadata +411 -0
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "net/protocol"
4
+
5
+ module XxxRename
6
+ module Utils
7
+ #
8
+ # Accept an array of strings which make up the scene name
9
+ # The function returns a string where the elements which make
10
+ # up one word are joined together.
11
+ #
12
+ def adjust_apostrophe(arr)
13
+ # Convert the hyphen to spaces for easier searching
14
+ apostrophe_chars = %w[t s d ve ll re m ve]
15
+ resp = []
16
+ arr.each_with_index do |e, i|
17
+ next if apostrophe_chars.include? e
18
+
19
+ resp << if apostrophe_chars.include? arr[i + 1]
20
+ [e, arr[i + 1]].join("'")
21
+ else
22
+ e
23
+ end
24
+ end
25
+ resp.join(" ")
26
+ end
27
+
28
+ RETRIABLE_ERRORS = [
29
+ Net::OpenTimeout,
30
+ Net::ReadTimeout,
31
+ SiteClients::Errors::TooManyRequestsError
32
+ ].freeze
33
+
34
+ # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
35
+ # @param [HTTParty::Response|NilClass] net_response
36
+ # @param [Boolean] return_raw
37
+ # @param [Integer] current_attempt
38
+ # @param [Integer] max_attempts
39
+ def handle_response!(return_raw: false, current_attempt: 1, max_attempts: 5, &block)
40
+ raise ArgumentError, "expected HTTParty::Response or Proc, invoked with nil" unless block
41
+
42
+ response = block.call
43
+
44
+ case response.code
45
+ when 200 then return_raw ? response : response.parsed_response
46
+ when 302 then raise api_error(SiteClients::Errors::RedirectedError, response)
47
+ when 400 then raise api_error(SiteClients::Errors::BadRequestError, response)
48
+ when 401 then raise api_error(SiteClients::Errors::UnauthorizedError, response)
49
+ when 403 then raise api_error(SiteClients::Errors::ForbiddenError, response)
50
+ when 429 then raise api_error(SiteClients::Errors::TooManyRequestsError, response)
51
+ when 404 then raise api_error(SiteClients::Errors::NotFoundError, response)
52
+ when 500 then raise api_error(SiteClients::Errors::InternalServerError, response)
53
+ when 503 then raise api_error(SiteClients::Errors::BadGatewayError, response)
54
+ else raise api_error(SiteClients::Errors::UnhandledError, response)
55
+ end
56
+ rescue *RETRIABLE_ERRORS => e
57
+ raise e if current_attempt > max_attempts
58
+
59
+ if e.instance_of?(SiteClients::Errors::TooManyRequestsError)
60
+ XxxRename.logger.error "[RATE LIMIT EXCEEDED] Sleeping for 3 minutes. Cancel to run the app at a different time."
61
+ 6.times do |counter|
62
+ sleep(30)
63
+ XxxRename.logger.info "[SLEEP ELAPSED] #{counter * 30}s"
64
+ end
65
+ else
66
+ XxxRename.logger.error "#{e.class}: message:#{e.message}"
67
+ end
68
+ handle_response!(return_raw: return_raw, current_attempt: current_attempt + 1, max_attempts: max_attempts, &block)
69
+ end
70
+ # rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
71
+
72
+ # @param [Class<AdultTimeDL::APIError>] klass
73
+ # @param [HTTParty::Response] response
74
+ # @return [AdultTimeDL::APIError]
75
+ def api_error(klass, response)
76
+ endpoint = "#{response.request.base_uri}#{response.request.path}"
77
+ klass.new(endpoint: endpoint, code: response.code,
78
+ body: response.parsed_response, headers: response.headers)
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module XxxRename
4
+ VERSION = "0.0.1"
5
+ end
data/lib/xxx_rename.rb ADDED
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/core_ext/string/inflections"
4
+ require "active_support/core_ext/hash/except"
5
+
6
+ require "date"
7
+ require "colorize"
8
+ require "deep_merge/rails_compat"
9
+ require "dry-types"
10
+ require "dry-struct"
11
+ require "dry-validation"
12
+ require "thor"
13
+ require "set"
14
+ require "yaml"
15
+
16
+ require "pry" if ENV["RACK_ENV"] == "development"
17
+
18
+ require "xxx_rename/log"
19
+
20
+ module XxxRename
21
+ def self.logger(**opts)
22
+ @logger ||= XxxRename::Log.new(**opts).logger
23
+ end
24
+ end
25
+
26
+ # Monkey Patches
27
+ require_relative "xxx_rename/core_extensions/string"
28
+ String.include XxxRename::CoreExtensions::String
29
+
30
+ # Helper files
31
+ require_relative "xxx_rename/actors_helper"
32
+ require_relative "xxx_rename/constants"
33
+ require_relative "xxx_rename/errors"
34
+ require_relative "xxx_rename/file_scanner"
35
+ require_relative "xxx_rename/file_utilities"
36
+ require_relative "xxx_rename/filename_generator"
37
+ require_relative "xxx_rename/search"
38
+ require_relative "xxx_rename/processed_file"
39
+ require_relative "xxx_rename/utils"
40
+
41
+ # Data Files
42
+ require_relative "xxx_rename/data/types"
43
+ require_relative "xxx_rename/data/base"
44
+ require_relative "xxx_rename/data/site_config"
45
+ require_relative "xxx_rename/data/config"
46
+ require_relative "xxx_rename/data/naughty_america_database"
47
+ require_relative "xxx_rename/data/scene_data"
48
+
49
+ # Schema Files
50
+ require_relative "xxx_rename/contract/types"
51
+ require_relative "xxx_rename/contract/config_contract"
52
+ require_relative "xxx_rename/contract/config_generator"
53
+
54
+ # Commands
55
+ require_relative "xxx_rename/version"
56
+
57
+ # Top level modules
58
+ require_relative "xxx_rename/cli"
59
+ require_relative "xxx_rename/client"
60
+ require_relative "xxx_rename/migration_client"
data/output.png ADDED
Binary file
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/xxx_rename/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "xxx_rename"
7
+ spec.version = XxxRename::VERSION
8
+ spec.authors = ["c477y"]
9
+ spec.email = ["c477y@pm.me"]
10
+
11
+ spec.summary = "Gem to rename files downloaded from porn sites"
12
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
13
+
14
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
15
+
16
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
17
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
18
+ end
19
+ spec.bindir = "exe"
20
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
21
+
22
+ spec.require_paths = ["lib"]
23
+ spec.add_runtime_dependency "activesupport", "~> 7.0"
24
+ spec.add_runtime_dependency "algolia", "~> 2.3"
25
+ spec.add_runtime_dependency "awesome_print", "~> 1.9"
26
+ spec.add_runtime_dependency "colorize", "~> 0.8.1"
27
+ spec.add_runtime_dependency "deep_merge", "~> 1.2"
28
+ spec.add_runtime_dependency "dry-struct", "~> 1.4"
29
+ spec.add_runtime_dependency "dry-types", "~> 1.5"
30
+ spec.add_runtime_dependency "dry-validation", "~> 1.8"
31
+ spec.add_runtime_dependency "httparty", ">= 0.18.1", "< 0.22.0"
32
+ spec.add_runtime_dependency "nokogiri", "~> 1.12"
33
+ spec.add_runtime_dependency "rake", "~> 13.0"
34
+ spec.add_runtime_dependency "thor", "~> 1.1"
35
+ spec.add_development_dependency "codecov", "~> 0.6.0"
36
+ spec.add_development_dependency "pry", "~> 0.13.1"
37
+ spec.add_development_dependency "rspec", "~> 3.10"
38
+ spec.add_development_dependency "rubocop", "~> 1.7"
39
+ spec.add_development_dependency "simplecov"
40
+ spec.add_development_dependency "timecop", "~> 0.9.4"
41
+ spec.add_development_dependency "webmock", "~> 3.14"
42
+ end
metadata ADDED
@@ -0,0 +1,411 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: xxx_rename
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - c477y
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2023-01-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '7.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '7.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: algolia
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.3'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: awesome_print
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.9'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.9'
55
+ - !ruby/object:Gem::Dependency
56
+ name: colorize
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.8.1
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.8.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: deep_merge
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.2'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: dry-struct
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.4'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.4'
97
+ - !ruby/object:Gem::Dependency
98
+ name: dry-types
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.5'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.5'
111
+ - !ruby/object:Gem::Dependency
112
+ name: dry-validation
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.8'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.8'
125
+ - !ruby/object:Gem::Dependency
126
+ name: httparty
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: 0.18.1
132
+ - - "<"
133
+ - !ruby/object:Gem::Version
134
+ version: 0.22.0
135
+ type: :runtime
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: 0.18.1
142
+ - - "<"
143
+ - !ruby/object:Gem::Version
144
+ version: 0.22.0
145
+ - !ruby/object:Gem::Dependency
146
+ name: nokogiri
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '1.12'
152
+ type: :runtime
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '1.12'
159
+ - !ruby/object:Gem::Dependency
160
+ name: rake
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '13.0'
166
+ type: :runtime
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '13.0'
173
+ - !ruby/object:Gem::Dependency
174
+ name: thor
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '1.1'
180
+ type: :runtime
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '1.1'
187
+ - !ruby/object:Gem::Dependency
188
+ name: codecov
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: 0.6.0
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: 0.6.0
201
+ - !ruby/object:Gem::Dependency
202
+ name: pry
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: 0.13.1
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: 0.13.1
215
+ - !ruby/object:Gem::Dependency
216
+ name: rspec
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - "~>"
220
+ - !ruby/object:Gem::Version
221
+ version: '3.10'
222
+ type: :development
223
+ prerelease: false
224
+ version_requirements: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - "~>"
227
+ - !ruby/object:Gem::Version
228
+ version: '3.10'
229
+ - !ruby/object:Gem::Dependency
230
+ name: rubocop
231
+ requirement: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - "~>"
234
+ - !ruby/object:Gem::Version
235
+ version: '1.7'
236
+ type: :development
237
+ prerelease: false
238
+ version_requirements: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - "~>"
241
+ - !ruby/object:Gem::Version
242
+ version: '1.7'
243
+ - !ruby/object:Gem::Dependency
244
+ name: simplecov
245
+ requirement: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - ">="
248
+ - !ruby/object:Gem::Version
249
+ version: '0'
250
+ type: :development
251
+ prerelease: false
252
+ version_requirements: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - ">="
255
+ - !ruby/object:Gem::Version
256
+ version: '0'
257
+ - !ruby/object:Gem::Dependency
258
+ name: timecop
259
+ requirement: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - "~>"
262
+ - !ruby/object:Gem::Version
263
+ version: 0.9.4
264
+ type: :development
265
+ prerelease: false
266
+ version_requirements: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - "~>"
269
+ - !ruby/object:Gem::Version
270
+ version: 0.9.4
271
+ - !ruby/object:Gem::Dependency
272
+ name: webmock
273
+ requirement: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - "~>"
276
+ - !ruby/object:Gem::Version
277
+ version: '3.14'
278
+ type: :development
279
+ prerelease: false
280
+ version_requirements: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - "~>"
283
+ - !ruby/object:Gem::Version
284
+ version: '3.14'
285
+ description:
286
+ email:
287
+ - c477y@pm.me
288
+ executables:
289
+ - xxx_rename
290
+ extensions: []
291
+ extra_rdoc_files: []
292
+ files:
293
+ - ".github/workflows/codeql-analysis.yml"
294
+ - ".github/workflows/ruby.yml"
295
+ - ".gitignore"
296
+ - ".rspec"
297
+ - ".rubocop.yml"
298
+ - ".ruby-version"
299
+ - Gemfile
300
+ - Gemfile.lock
301
+ - README.md
302
+ - Rakefile
303
+ - bin/console
304
+ - bin/install
305
+ - bin/setup
306
+ - codecov.yml
307
+ - docs/DEVELOPMENT.md
308
+ - exe/xxx_rename
309
+ - lib/xxx_rename.rb
310
+ - lib/xxx_rename/actions/base_action.rb
311
+ - lib/xxx_rename/actions/log_new_filename.rb
312
+ - lib/xxx_rename/actions/resolver.rb
313
+ - lib/xxx_rename/actions/stash_app_post_movie.rb
314
+ - lib/xxx_rename/actors_helper.rb
315
+ - lib/xxx_rename/cli.rb
316
+ - lib/xxx_rename/client.rb
317
+ - lib/xxx_rename/constants.rb
318
+ - lib/xxx_rename/contract/config_contract.rb
319
+ - lib/xxx_rename/contract/config_generator.rb
320
+ - lib/xxx_rename/contract/file_rename_op_contract.rb
321
+ - lib/xxx_rename/contract/types.rb
322
+ - lib/xxx_rename/core_extensions/string.rb
323
+ - lib/xxx_rename/data/base.rb
324
+ - lib/xxx_rename/data/config.rb
325
+ - lib/xxx_rename/data/file_rename_op.rb
326
+ - lib/xxx_rename/data/file_rename_op_datastore.rb
327
+ - lib/xxx_rename/data/naughty_america_database.rb
328
+ - lib/xxx_rename/data/query_interface.rb
329
+ - lib/xxx_rename/data/scene_data.rb
330
+ - lib/xxx_rename/data/scene_datastore.rb
331
+ - lib/xxx_rename/data/site_config.rb
332
+ - lib/xxx_rename/data/types.rb
333
+ - lib/xxx_rename/errors.rb
334
+ - lib/xxx_rename/file_scanner.rb
335
+ - lib/xxx_rename/file_utilities.rb
336
+ - lib/xxx_rename/filename_generator.rb
337
+ - lib/xxx_rename/integrations/base.rb
338
+ - lib/xxx_rename/integrations/stash_app.rb
339
+ - lib/xxx_rename/log.rb
340
+ - lib/xxx_rename/migration_client.rb
341
+ - lib/xxx_rename/processed_file.rb
342
+ - lib/xxx_rename/search.rb
343
+ - lib/xxx_rename/site_client_matcher.rb
344
+ - lib/xxx_rename/site_clients/adult_time.rb
345
+ - lib/xxx_rename/site_clients/algolia_common.rb
346
+ - lib/xxx_rename/site_clients/algolia_v2.rb
347
+ - lib/xxx_rename/site_clients/babes.rb
348
+ - lib/xxx_rename/site_clients/base.rb
349
+ - lib/xxx_rename/site_clients/blacked.rb
350
+ - lib/xxx_rename/site_clients/blacked_raw.rb
351
+ - lib/xxx_rename/site_clients/brazzers.rb
352
+ - lib/xxx_rename/site_clients/configuration.rb
353
+ - lib/xxx_rename/site_clients/digital_playground.rb
354
+ - lib/xxx_rename/site_clients/elegant_angel.rb
355
+ - lib/xxx_rename/site_clients/errors.rb
356
+ - lib/xxx_rename/site_clients/evil_angel.rb
357
+ - lib/xxx_rename/site_clients/goodporn.rb
358
+ - lib/xxx_rename/site_clients/jules_jordan.rb
359
+ - lib/xxx_rename/site_clients/jules_jordan_media.rb
360
+ - lib/xxx_rename/site_clients/manuel_ferrara.rb
361
+ - lib/xxx_rename/site_clients/mg_premium.rb
362
+ - lib/xxx_rename/site_clients/mofos.rb
363
+ - lib/xxx_rename/site_clients/naughty_america.rb
364
+ - lib/xxx_rename/site_clients/nfbusty.rb
365
+ - lib/xxx_rename/site_clients/query_generator/base.rb
366
+ - lib/xxx_rename/site_clients/query_generator/evil_angel.rb
367
+ - lib/xxx_rename/site_clients/query_generator/goodporn.rb
368
+ - lib/xxx_rename/site_clients/query_generator/mg_premium.rb
369
+ - lib/xxx_rename/site_clients/query_generator/naughty_america.rb
370
+ - lib/xxx_rename/site_clients/query_generator/stash_db.rb
371
+ - lib/xxx_rename/site_clients/query_generator/vixen.rb
372
+ - lib/xxx_rename/site_clients/query_generator/whale.rb
373
+ - lib/xxx_rename/site_clients/reality_kings.rb
374
+ - lib/xxx_rename/site_clients/stash_db.rb
375
+ - lib/xxx_rename/site_clients/tushy.rb
376
+ - lib/xxx_rename/site_clients/tushy_raw.rb
377
+ - lib/xxx_rename/site_clients/twistys.rb
378
+ - lib/xxx_rename/site_clients/vixen.rb
379
+ - lib/xxx_rename/site_clients/vixen_media.rb
380
+ - lib/xxx_rename/site_clients/whale.rb
381
+ - lib/xxx_rename/site_clients/wicked.rb
382
+ - lib/xxx_rename/site_clients/x_empire.rb
383
+ - lib/xxx_rename/site_clients/zero_tolerance.rb
384
+ - lib/xxx_rename/utils.rb
385
+ - lib/xxx_rename/version.rb
386
+ - output.png
387
+ - xxx_rename.gemspec
388
+ homepage:
389
+ licenses: []
390
+ metadata:
391
+ allowed_push_host: https://rubygems.org
392
+ post_install_message:
393
+ rdoc_options: []
394
+ require_paths:
395
+ - lib
396
+ required_ruby_version: !ruby/object:Gem::Requirement
397
+ requirements:
398
+ - - ">="
399
+ - !ruby/object:Gem::Version
400
+ version: 2.7.0
401
+ required_rubygems_version: !ruby/object:Gem::Requirement
402
+ requirements:
403
+ - - ">="
404
+ - !ruby/object:Gem::Version
405
+ version: '0'
406
+ requirements: []
407
+ rubygems_version: 3.1.6
408
+ signing_key:
409
+ specification_version: 4
410
+ summary: Gem to rename files downloaded from porn sites
411
+ test_files: []