druvx13 commited on
Commit
a47e1ac
·
0 Parent(s):

Initial commit

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. images/facebook.png +0 -0
  2. images/failed.gif +0 -0
  3. images/icon.png +0 -0
  4. images/image-placeholder.jpg +0 -0
  5. images/index.php +3 -0
  6. images/new.png +0 -0
  7. images/nochange.gif +0 -0
  8. images/ok.gif +0 -0
  9. images/pinterest.png +0 -0
  10. images/running.gif +0 -0
  11. images/twitter.png +0 -0
  12. includes/class-madara-fetcher.php +250 -0
  13. includes/class-madara-handler.php +285 -0
  14. index.php +3 -0
  15. languages/index.php +3 -0
  16. languages/ultimate-manga-scraper.pot +2760 -0
  17. readme.txt +33 -0
  18. res/ImageResize/ImageResize.php +717 -0
  19. res/ImageResize/index.php +3 -0
  20. res/UMSJavaScriptUnpacker.php +174 -0
  21. res/index.php +3 -0
  22. res/mangafox-master/.gitignore +3 -0
  23. res/mangafox-master/LICENSE +21 -0
  24. res/mangafox-master/README.md +79 -0
  25. res/mangafox-master/composer.json +19 -0
  26. res/mangafox-master/composer.lock +2196 -0
  27. res/mangafox-master/phpunit.xml +22 -0
  28. res/mangafox-master/src/Exceptions/MangafoxDirectoryBuilderInvalidBrowseByFilterException.php +11 -0
  29. res/mangafox-master/src/Exceptions/MangafoxDirectoryBuilderInvalidBrowseByGenreValueException.php +11 -0
  30. res/mangafox-master/src/Exceptions/MangafoxDirectoryBuilderInvalidBrowseByInitialValueException.php +11 -0
  31. res/mangafox-master/src/Exceptions/MangafoxDirectoryBuilderInvalidBrowseByReleasedYearValueException.php +11 -0
  32. res/mangafox-master/src/Exceptions/MangafoxDirectoryBuilderInvalidBrowseByStatusValueException.php +11 -0
  33. res/mangafox-master/src/Exceptions/MangafoxDirectoryBuilderInvalidSortByDirectionException.php +11 -0
  34. res/mangafox-master/src/Exceptions/MangafoxDirectoryBuilderInvalidSortByValueException.php +11 -0
  35. res/mangafox-master/src/Exceptions/MangafoxException.php +9 -0
  36. res/mangafox-master/src/Exceptions/MangafoxInvalidArgumentException.php +11 -0
  37. res/mangafox-master/src/Exceptions/MangafoxParserDateNotSupportedException.php +11 -0
  38. res/mangafox-master/src/Exceptions/MangafoxResourceParserInvalidUrlException.php +10 -0
  39. res/mangafox-master/src/Exceptions/MangafoxResourceRequestNotFoundException.php +11 -0
  40. res/mangafox-master/src/Exceptions/MangafoxScanBuilderInvalidUrlException.php +11 -0
  41. res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidArtistFilterException.php +11 -0
  42. res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidAuthorFilterException.php +11 -0
  43. res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidCompletedValueException.php +11 -0
  44. res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidFilterException.php +11 -0
  45. res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidGenresFilterException.php +11 -0
  46. res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidGenresValueException.php +11 -0
  47. res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidNameFilterException.php +11 -0
  48. res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidRatingFilterException.php +11 -0
  49. res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidRatingValueException.php +11 -0
  50. res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidReleasedYearFilterException.php +11 -0
images/facebook.png ADDED
images/failed.gif ADDED
images/icon.png ADDED
images/image-placeholder.jpg ADDED
images/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ ?>
images/new.png ADDED
images/nochange.gif ADDED
images/ok.gif ADDED
images/pinterest.png ADDED
images/running.gif ADDED
images/twitter.png ADDED
includes/class-madara-fetcher.php ADDED
@@ -0,0 +1,250 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if (!defined('ABSPATH')) {
4
+ exit; // Exit if accessed directly.
5
+ }
6
+
7
+ /*
8
+ * Class UMS_Madara_Fetcher
9
+ * Fetches manga data from the specified URL.
10
+ */
11
+ class UMS_Madara_Fetcher {
12
+ /**
13
+ * Fetch manga data from the specified URL.
14
+ *
15
+ * @param int $page The page number to fetch.
16
+ * @param string $query The search query.
17
+ * @param string $type The type of search (new, latest, trending, etc.).
18
+ * @return array The list of manga data or an error message.
19
+ */
20
+ public static function get_manga_data($page = 0, $query = '', $type = '') {
21
+ // Get the manga fetch URL from options
22
+ $url = get_option('manga_fetch_url', 'https://manhuaus.com/wp-admin/admin-ajax.php');
23
+
24
+ // Prepare the query variables
25
+ $vars = [
26
+ 's' => $query,
27
+ 'orderby' => 'meta_value_num',
28
+ 'paged' => $page,
29
+ 'template' => 'search',
30
+ 'meta_query' => [
31
+ [
32
+ 'relation' => 'AND'
33
+ ]
34
+ ],
35
+ 'post_type' => 'wp-manga',
36
+ 'post_status' => 'publish',
37
+ 'meta_key' => '_latest_update',
38
+ 'order' => 'desc',
39
+ 'manga_archives_item_layout' => 'big_thumbnail'
40
+ ];
41
+
42
+ // Adjust search parameters based on the specified type
43
+ switch ($type) {
44
+ case 'new':
45
+ $vars['orderby'] = 'date';
46
+ break;
47
+ case 'latest':
48
+ $vars['orderby'] = 'meta_value_num';
49
+ $vars['meta_key'] = '_latest_update';
50
+ $vars['order'] = 'desc';
51
+ break;
52
+ case 'trending':
53
+ $vars['orderby'] = 'meta_value_num';
54
+ $vars['meta_key'] = '_wp_manga_week_views_value';
55
+ $vars['order'] = 'desc';
56
+ break;
57
+ case 'most_viewed':
58
+ $vars['orderby'] = 'meta_value_num';
59
+ $vars['meta_key'] = '_wp_manga_views';
60
+ $vars['order'] = 'desc';
61
+ break;
62
+ case 'rating':
63
+ $vars['orderby'] = [
64
+ ['query_avarage_reviews' => 'DESC'],
65
+ ['query_total_reviews' => 'DESC']
66
+ ];
67
+ $vars['meta_query'][] = [
68
+ 'query_avarage_reviews' => [
69
+ 'key' => '_manga_avarage_reviews'
70
+ ],
71
+ 'query_total_reviews' => [
72
+ 'key' => '_manga_total_votes'
73
+ ]
74
+ ];
75
+ break;
76
+ case 'a_z':
77
+ $vars['orderby'] = 'post_title';
78
+ $vars['order'] = 'ASC';
79
+ break;
80
+ case 'relevance':
81
+ // No additional parameters needed for relevance
82
+ break;
83
+ }
84
+
85
+ // Prepare the arguments for the HTTP request
86
+ $args = [
87
+ 'sslverify' => false,
88
+ 'body' => [
89
+ 'action' => 'madara_load_more',
90
+ 'page' => $page,
91
+ 'template' => 'madara-core/content/content-search',
92
+ 'vars' => $vars
93
+ ]
94
+ ];
95
+
96
+ // Perform the HTTP request to fetch manga data
97
+ $response = wp_remote_post($url, $args);
98
+
99
+ // Check for errors in the response
100
+ if (is_wp_error($response)) {
101
+ return ['error' => $response->get_error_message()];
102
+ }
103
+
104
+ // Retrieve and process the response body
105
+ $html = wp_remote_retrieve_body($response);
106
+ $html = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8');
107
+ if(empty($html))
108
+ {
109
+ return ['error' => 'Empty response from the server'];
110
+ }
111
+ // Load the HTML into a DOMDocument for parsing
112
+ libxml_use_internal_errors(true);
113
+ $dom = new DOMDocument();
114
+ $dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
115
+ libxml_clear_errors();
116
+
117
+ // Use XPath to query the DOM for manga items
118
+ $xpath = new DOMXPath($dom);
119
+ $manga_items = $xpath->query('//div[contains(@class, "c-tabs-item__content")]');
120
+ $manga_list = [];
121
+
122
+ // Iterate through the manga items and extract data
123
+ foreach ($manga_items as $item) {
124
+ $title = $xpath->query('.//div[@class="post-title"]/h3[@class="h4"]/a', $item)->item(0)->nodeValue;
125
+ $cover_image = $xpath->query('.//div[@class="tab-thumb c-image-hover"]/a/img', $item)->item(0)->getAttribute('data-src');
126
+ $description = '';
127
+ $genres = [];
128
+ $status = '';
129
+
130
+ $index = 0;
131
+ $summary_headings = $xpath->query('.//div[@class="summary-heading"]/h5', $item);
132
+
133
+ // Extract specific details based on the summary headings
134
+ foreach ($summary_headings as $heading) {
135
+ $heading_text = trim($heading->nodeValue);
136
+ if ($heading_text === 'Alternative') {
137
+ $description = $xpath->query('.//div[@class="summary-content"]', $item)->item($index)->nodeValue;
138
+ $index++;
139
+ } elseif ($heading_text === 'Authors' || $heading_text === 'Artists') {
140
+ $index++;
141
+ } elseif ($heading_text === 'Genres') {
142
+ $genres = [];
143
+ $genre_elements = $xpath->query('.//div[@class="summary-content"]', $item)->item($index)->getElementsByTagName('a');
144
+ foreach ($genre_elements as $genre) {
145
+ $genres[] = $genre->nodeValue;
146
+ }
147
+ $index++;
148
+ } elseif ($heading_text === 'Status') {
149
+ $status = $xpath->query('.//div[@class="summary-content"]', $item)->item($index)->nodeValue;
150
+ $index++;
151
+ }
152
+ }
153
+
154
+ // Extract additional details like last updated date and latest chapter
155
+ if($last_updated = $xpath->query('.//div[@class="meta-item post-on"]/span[@class="font-meta"]', $item)->item(0))
156
+ {
157
+ $last_updated = $xpath->query('.//div[@class="meta-item post-on"]/span[@class="font-meta"]', $item)->item(0)->nodeValue;
158
+ }
159
+ else
160
+ {
161
+ $last_updated = '';
162
+ }
163
+ if($xpath->query('.//div[@class="meta-item latest-chap"]/span[@class="font-meta chapter"]/a', $item)->item(0))
164
+ {
165
+ $latest_chapter = $xpath->query('.//div[@class="meta-item latest-chap"]/span[@class="font-meta chapter"]/a', $item)->item(0)->nodeValue;
166
+ }
167
+ else
168
+ {
169
+ $latest_chapter = '';
170
+ }
171
+ if($xpath->query('.//div[@class="post-title"]/h3[@class="h4"]/a', $item)->item(0))
172
+ {
173
+ $url = $xpath->query('.//div[@class="post-title"]/h3[@class="h4"]/a', $item)->item(0)->getAttribute('href');
174
+ }
175
+ else
176
+ {
177
+ $url = '';
178
+ }
179
+
180
+ // Add the extracted manga data to the list
181
+ $manga_list[] = [
182
+ 'title' => $title,
183
+ 'url' => $url,
184
+ 'cover_image' => $cover_image,
185
+ 'description' => trim($description),
186
+ 'genres' => implode(', ', $genres),
187
+ 'status' => trim($status),
188
+ 'last_updated' => trim($last_updated),
189
+ 'latest_chapter' => $latest_chapter,
190
+ ];
191
+ }
192
+
193
+ // Return an error message if no manga are found
194
+ if (empty($manga_list)) {
195
+ return ['error' => 'No manga found on the provided URL.'];
196
+ }
197
+
198
+ // Return the list of manga data
199
+ return $manga_list;
200
+ }
201
+
202
+ /**
203
+ * Fetch detailed manga data from a specific URL.
204
+ *
205
+ * @param string $url The URL of the manga.
206
+ * @return array The detailed manga data or an error message.
207
+ */
208
+ public static function get_manga_details($url) {
209
+ // Perform the HTTP request to fetch manga details
210
+ $response = wp_remote_get($url, ['sslverify' => false]);
211
+
212
+ // Check for errors in the response
213
+ if (is_wp_error($response)) {
214
+ return ['error' => $response->get_error_message()];
215
+ }
216
+
217
+ // Retrieve and process the response body
218
+ $html = wp_remote_retrieve_body($response);
219
+ $html = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8');
220
+
221
+ // Load the HTML into a DOMDocument for parsing
222
+ libxml_use_internal_errors(true);
223
+ $dom = new DOMDocument();
224
+ $dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
225
+ libxml_clear_errors();
226
+
227
+ // Use XPath to query the DOM for detailed manga data
228
+ $xpath = new DOMXPath($dom);
229
+
230
+ // Extract the manga details
231
+ $title = $xpath->query('//h1[@class="title"]')->item(0)->nodeValue;
232
+ $cover_image = $xpath->query('//div[@class="thumb"]/img')->item(0)->getAttribute('src');
233
+ $description = $xpath->query('//div[@class="description-summary"]/div[@class="summary__content show-more"]')->item(0)->nodeValue;
234
+ $genres = [];
235
+ $genre_elements = $xpath->query('//div[@class="genres-content"]/a');
236
+ foreach ($genre_elements as $genre) {
237
+ $genres[] = $genre->nodeValue;
238
+ }
239
+ $status = $xpath->query('//div[@class="post-status"]/div[@class="summary-content"]/a')->item(0)->nodeValue;
240
+
241
+ // Return the detailed manga data
242
+ return [
243
+ 'title' => trim($title),
244
+ 'cover_image' => $cover_image,
245
+ 'description' => trim($description),
246
+ 'genres' => implode(', ', $genres),
247
+ 'status' => trim($status)
248
+ ];
249
+ }
250
+ }
includes/class-madara-handler.php ADDED
@@ -0,0 +1,285 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if (!defined('ABSPATH')) {
4
+ exit; // Exit if accessed directly.
5
+ }
6
+
7
+ /*
8
+ * Class UMS_Madara_Handler
9
+ * Handles the admin interface and AJAX actions for the Ultimate Manga Scraper: Madara Enhancements plugin.
10
+ */
11
+ class UMS_Madara_Handler {
12
+ // Initialize hooks and actions
13
+ public static function init() {
14
+ add_action('wp_ajax_load_more_manga', [__CLASS__, 'load_more_manga']); // Handle AJAX request for loading more manga
15
+ add_action('wp_ajax_add_manga', [__CLASS__, 'add_manga']); // Handle AJAX request for adding manga
16
+ add_action('wp_ajax_search_manga', [__CLASS__, 'search_manga']); // Handle AJAX request for searching manga
17
+ add_action('wp_ajax_save_manga_fetch_url', [__CLASS__, 'save_manga_fetch_url']); // Handle AJAX request for saving manga fetch URL
18
+ }
19
+
20
+
21
+ // Display the admin page
22
+ public static function ums_enhancements() {
23
+ // Clear the madara_manga_list option on first load
24
+ update_option('madara_manga_list', []); // This empties the madara_manga_list
25
+ $manga_list = get_option('madara_manga_list', []); // Get the list of manga
26
+ $existing_manga_urls = array_map('trim', array_column(get_option('ums_manga_generic_list', []), 0)); // Get the list of existing manga URLs
27
+
28
+ // Filter out existing manga from the list
29
+ $filtered_manga_list = array_filter($manga_list, function($manga) use ($existing_manga_urls) {
30
+ return !in_array(trim($manga['url']), $existing_manga_urls);
31
+ });
32
+
33
+ $manga_fetch_url = get_option('manga_fetch_url', 'https://manhuaus.com/wp-admin/admin-ajax.php'); // Get the current manga fetch URL
34
+
35
+ ?>
36
+ <div class="wrap">
37
+ <h1>Ultimate Manga Scraper: Madara Enhancements</h1>
38
+ <p>Credits to ThuGie</p>
39
+ <!-- URL Settings Form -->
40
+ <form id="url-settings-form">
41
+ <h2>Set Manga Fetch URL</h2>
42
+ <table class="form-table">
43
+ <tr>
44
+ <th scope="row"><label for="manga-fetch-url">Manga Fetch URL</label></th>
45
+ <td><input name="manga-fetch-url" type="text" id="manga-fetch-url" value="<?php echo esc_attr($manga_fetch_url); ?>" class="regular-text" /></td>
46
+ </tr>
47
+ </table>
48
+ <button type="button" class="button button-primary" id="save-url-settings">Save URL</button>
49
+ </form>
50
+
51
+ <!-- Search Form -->
52
+ <hr />
53
+ <form id="search-form">
54
+ <h2>Search Manga</h2>
55
+ <label for="search-query">Search Query</label>
56
+ <input type="text" id="search-query" name="search-query" class="regular-text" />
57
+ <label for="search-type">Search Type</label>
58
+ <select id="search-type" name="search-type">
59
+ <option value="new">New</option>
60
+ <option value="latest">Latest</option>
61
+ <option value="trending">Trending</option>
62
+ <option value="most_viewed">Most Viewed</option>
63
+ <option value="rating">Rating</option>
64
+ <option value="a_z">A-Z</option>
65
+ <option value="relevance">Relevance</option>
66
+ </select>
67
+ <button type="button" class="button button-secondary" id="search-button">Search</button>
68
+ </form>
69
+
70
+ <!-- Manga List -->
71
+ <hr />
72
+ <div>
73
+ <label for="auto-load-more">
74
+ <input type="checkbox" id="auto-load-more" /> Enable Auto Load More
75
+ </label>
76
+ <p id="manga-count">Manga Loaded: 0</p>
77
+ </div>
78
+ <table class="widefat" id="manga-table">
79
+ <thead>
80
+ <tr>
81
+ <th>#</th>
82
+ <th>Title</th>
83
+ <th>Cover Image</th>
84
+ <th>Description</th>
85
+ <th>Genres</th>
86
+ <th>Status</th>
87
+ <th>Last Updated</th>
88
+ <th>Latest Chapter</th>
89
+ <th>Actions</th>
90
+ </tr>
91
+ </thead>
92
+ <tbody>
93
+ <?php foreach ($filtered_manga_list as $index => $manga): ?>
94
+ <tr>
95
+ <td><?php echo esc_html($index + 1); ?></td>
96
+ <td><?php echo esc_html($manga['title']); ?></td>
97
+ <td><img src="<?php echo esc_url($manga['cover_image']); ?>" alt="<?php echo esc_attr($manga['title']); ?>" width="100"></td>
98
+ <td><?php echo esc_html($manga['description']); ?></td>
99
+ <td><?php echo esc_html($manga['genres']); ?></td>
100
+ <td><?php echo esc_html($manga['status']); ?></td>
101
+ <td><?php echo esc_html($manga['last_updated']); ?></td>
102
+ <td><?php echo esc_html($manga['latest_chapter']); ?></td>
103
+ <td>
104
+ <form method="post" class="add-manga-form">
105
+ <input type="hidden" name="add_manga_url" value="<?php echo esc_attr($manga['url']); ?>">
106
+ <button type="submit" class="button button-primary">Add Manga</button>
107
+ </form>
108
+ </td>
109
+ </tr>
110
+ <?php endforeach; ?>
111
+ </tbody>
112
+ </table>
113
+ <button id="load-more" class="button button-secondary">Load More</button> <!-- Load More Button -->
114
+ </div>
115
+ <?php
116
+ }
117
+
118
+ // Handle AJAX request to load more manga
119
+ public static function load_more_manga() {
120
+ check_ajax_referer('madara_enhancements_nonce', '_ajax_nonce'); // Verify nonce for security
121
+
122
+ $page = isset($_POST['page']) ? intval($_POST['page']) : 0; // Get the current page
123
+ $query = isset($_POST['query']) ? sanitize_text_field($_POST['query']) : ''; // Get the search query
124
+ $type = isset($_POST['type']) ? sanitize_text_field($_POST['type']) : ''; // Get the search type
125
+
126
+ $manga_list = UMS_Madara_Fetcher::get_manga_data($page, $query, $type); // Fetch manga data
127
+
128
+ $existing_manga_urls = array_map('trim', array_column(get_option('ums_manga_generic_list', []), 0)); // Get the list of existing manga URLs
129
+
130
+ // Filter out existing manga from the list
131
+ $filtered_manga_list = array_filter($manga_list, function($manga) use ($existing_manga_urls) {
132
+ return !in_array(trim($manga['url']), $existing_manga_urls);
133
+ });
134
+
135
+ if (isset($manga_list['error'])) {
136
+ wp_send_json_error($manga_list['error']); // Send error response if there's an error
137
+ } else {
138
+ // Append new manga to the existing list
139
+ $current_manga_list = get_option('madara_manga_list', []);
140
+ $updated_manga_list = array_merge($current_manga_list, $filtered_manga_list);
141
+ update_option('madara_manga_list', $updated_manga_list); // Update the option with the latest manga list
142
+ wp_send_json_success($filtered_manga_list); // Send success response with the filtered manga list
143
+ }
144
+ }
145
+
146
+ // Handle AJAX request to add manga
147
+ public static function add_manga() {
148
+ check_ajax_referer('madara_enhancements_nonce', '_ajax_nonce'); // Verify nonce for security
149
+
150
+ $url = isset($_POST['add_manga_url']) ? sanitize_text_field($_POST['add_manga_url']) : null; // Get the manga URL
151
+
152
+ $manga_list = get_option('madara_manga_list', []); // Get the current manga list
153
+
154
+ if ($url !== null) {
155
+ $manga_to_add = array_filter($manga_list, function ($manga) use ($url) {
156
+ return $manga['url'] === $url;
157
+ });
158
+
159
+ if (!empty($manga_to_add)) {
160
+ $manga_to_add = array_values($manga_to_add)[0];
161
+
162
+ // Check if the manga already exists in the saved rules
163
+ $rules = get_option('ums_manga_generic_list', []);
164
+ foreach ($rules as $rule) {
165
+ if (trim($rule[0]) === trim($manga_to_add['url'])) {
166
+ wp_send_json_error('Manga already exists.');
167
+ return;
168
+ }
169
+ }
170
+
171
+ self::save_manga_rules($manga_to_add); // Save manga rules
172
+
173
+ // Remove the manga from the list after adding
174
+ $manga_list = array_filter($manga_list, function ($manga) use ($url) {
175
+ return $manga['url'] !== $url;
176
+ });
177
+ update_option('madara_manga_list', $manga_list); // Update the manga list
178
+
179
+ wp_send_json_success(); // Send success response
180
+ } else {
181
+ wp_send_json_error('Manga not found.'); // Send error response if manga not found
182
+ }
183
+ } else {
184
+ wp_send_json_error('Invalid request.'); // Send error response if the request is invalid
185
+ }
186
+ }
187
+
188
+ // Save manga rules
189
+ public static function save_manga_rules($manga) {
190
+ // Clear the cache for the option
191
+ $GLOBALS['wp_object_cache']->delete('ums_manga_generic_list', 'options');
192
+
193
+ // Get current rules
194
+ $rules = get_option('ums_manga_generic_list', []);
195
+
196
+ // Validate the schedule format
197
+ $schedule = '24';
198
+ if (!is_numeric($schedule) || $schedule <= 0) {
199
+ $schedule = '24';
200
+ }
201
+
202
+ $new_rule = [
203
+ trim($manga['url']),
204
+ $schedule,
205
+ '1',
206
+ (new DateTime())->modify('-24 hours -5 minutes')->format('Y-m-d H:i:s'),
207
+ '1000',
208
+ 'publish',
209
+ 'admin',
210
+ '',
211
+ '',
212
+ 'genre',
213
+ 'genre',
214
+ '',
215
+ '1',
216
+ '0',
217
+ '1',
218
+ '0',
219
+ '0',
220
+ '0',
221
+ '0',
222
+ ];
223
+
224
+ $rules[] = $new_rule;
225
+ update_option('ums_manga_generic_list', $rules); // Update the rules option
226
+ }
227
+
228
+ // Enqueue scripts for the admin page
229
+ public static function enqueue_scripts() {
230
+ wp_enqueue_script('madara-enhancements', plugin_dir_url(__FILE__) . '../assets/js/madara-enhancements.js', ['jquery'], null, true);
231
+ wp_localize_script('madara-enhancements', 'madaraEnhancements', [
232
+ 'ajaxUrl' => admin_url('admin-ajax.php'),
233
+ 'nonce' => wp_create_nonce('madara_enhancements_nonce'),
234
+ ]);
235
+ }
236
+
237
+ // Handle AJAX request to search manga
238
+ // Handle AJAX request to search manga
239
+ public static function search_manga() {
240
+ check_ajax_referer('madara_enhancements_nonce', '_ajax_nonce'); // Verify nonce for security
241
+
242
+ $query = isset($_POST['query']) ? sanitize_text_field($_POST['query']) : ''; // Get the search query
243
+ $type = isset($_POST['type']) ? sanitize_text_field($_POST['type']) : ''; // Get the search type
244
+ $page = isset($_POST['page']) ? intval($_POST['page']) : 0; // Get the page number
245
+
246
+ // Fetch manga data from the URL
247
+ $manga_list = UMS_Madara_Fetcher::get_manga_data($page, $query, $type);
248
+
249
+ // Check if there was an error fetching the manga data
250
+ if (isset($manga_list['error'])) {
251
+ wp_send_json_error($manga_list['error']); // Send error response if there's an error
252
+ return;
253
+ }
254
+
255
+ $existing_manga_urls = array_map('trim', array_column(get_option('ums_manga_generic_list', []), 0)); // Get the list of existing manga URLs
256
+
257
+ // Filter out existing manga from the list
258
+ $filtered_manga_list = array_filter($manga_list, function($manga) use ($existing_manga_urls) {
259
+ return !in_array(trim($manga['url']), $existing_manga_urls);
260
+ });
261
+
262
+ // Get the current madara_manga_list
263
+ $current_manga_list = get_option('madara_manga_list', []);
264
+ // Merge the current list with the new filtered list
265
+ $updated_manga_list = array_merge($current_manga_list, $filtered_manga_list);
266
+ // Update the madara_manga_list with the combined list
267
+ update_option('madara_manga_list', $updated_manga_list);
268
+
269
+ wp_send_json_success(array_values($filtered_manga_list)); // Send success response with the filtered manga list
270
+ }
271
+
272
+ // Handle AJAX request to save the manga fetch URL
273
+ public static function save_manga_fetch_url() {
274
+ check_ajax_referer('madara_enhancements_nonce', '_ajax_nonce'); // Verify nonce for security
275
+
276
+ $manga_fetch_url = isset($_POST['manga_fetch_url']) ? esc_url_raw($_POST['manga_fetch_url']) : ''; // Get the manga fetch URL
277
+
278
+ if ($manga_fetch_url) {
279
+ update_option('manga_fetch_url', $manga_fetch_url); // Update the manga fetch URL option
280
+ wp_send_json_success(); // Send success response
281
+ } else {
282
+ wp_send_json_error('Invalid URL.'); // Send error response if the URL is invalid
283
+ }
284
+ }
285
+ }
index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ ?>
languages/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ ?>
languages/ultimate-manga-scraper.pot ADDED
@@ -0,0 +1,2760 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #, fuzzy
2
+ msgid ""
3
+ msgstr ""
4
+ "Project-Id-Version: Ultimate Web Novel & Manga Scraper\n"
5
+ "POT-Creation-Date: 2023-08-10 09:03+0200\n"
6
+ "PO-Revision-Date: 2023-08-10 09:03+0200\n"
7
+ "Last-Translator: \n"
8
+ "Language-Team: \n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
13
+ "X-Generator: Poedit 3.3.2\n"
14
+ "X-Poedit-Basepath: ..\n"
15
+ "X-Poedit-Flags-xgettext: --add-comments=translators:\n"
16
+ "X-Poedit-WPHeader: ultimate-manga-scraper.php\n"
17
+ "X-Poedit-SourceCharset: UTF-8\n"
18
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
19
+ "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
20
+ "_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
21
+ "X-Poedit-SearchPath-0: .\n"
22
+ "X-Poedit-SearchPathExcluded-0: *.min.js\n"
23
+
24
+ #: res/other/plugin-dash.php:14
25
+ msgid "Recommended Plugins For You"
26
+ msgstr ""
27
+
28
+ #: res/other/plugin-dash.php:43 res/other/plugin-dash.php:141
29
+ msgid "Error getting content: "
30
+ msgstr ""
31
+
32
+ #: res/other/plugin-dash.php:50 res/other/plugin-dash.php:148
33
+ msgid "Apparently, there are no updates to show!"
34
+ msgstr ""
35
+
36
+ #: res/other/plugin-dash.php:66 res/other/plugin-dash.php:164
37
+ msgid "Learn more"
38
+ msgstr ""
39
+
40
+ #: res/other/plugin-dash.php:83
41
+ msgid "FAQ"
42
+ msgstr ""
43
+
44
+ #: res/other/plugin-dash.php:83 ultimate-manga-scraper.php:922
45
+ msgid "Support"
46
+ msgstr ""
47
+
48
+ #: res/other/plugin-dash.php:83
49
+ msgid "View More"
50
+ msgstr ""
51
+
52
+ #: res/other/plugin-dash.php:83 res/other/plugin-dash.php:181
53
+ msgid "Don't show this widget"
54
+ msgstr ""
55
+
56
+ #: res/other/plugin-dash.php:111
57
+ msgid "Latest News"
58
+ msgstr ""
59
+
60
+ #: res/other/plugin-dash.php:181
61
+ msgid "+ More"
62
+ msgstr ""
63
+
64
+ #: res/other/plugin-dash.php:220
65
+ msgid "Highlighted"
66
+ msgstr ""
67
+
68
+ #: res/other/plugin-dash.php:226
69
+ msgid "A selection of plugins, highlighted for you."
70
+ msgstr ""
71
+
72
+ #: res/other/plugin-dash.php:413
73
+ msgid "Download Now"
74
+ msgstr ""
75
+
76
+ #: res/other/plugin-dash.php:414
77
+ msgid "More information about"
78
+ msgstr ""
79
+
80
+ #: res/other/plugin-dash.php:414
81
+ msgid "More Details"
82
+ msgstr ""
83
+
84
+ #: res/other/plugin-dash.php:447 res/other/plugin-dash.php:468
85
+ msgid "Click here to get the plugin"
86
+ msgstr ""
87
+
88
+ #: res/other/plugin-dash.php:448
89
+ msgid "Download the plugin here"
90
+ msgstr ""
91
+
92
+ #: res/other/plugin-dash.php:467
93
+ msgid ""
94
+ "Just download the plugin from CodeCanyon and install it to your site in a "
95
+ "few seconds."
96
+ msgstr ""
97
+
98
+ #: res/ums-logs.php:58
99
+ msgid "System Info:"
100
+ msgstr ""
101
+
102
+ #: res/ums-logs.php:62
103
+ msgid "Some general system information."
104
+ msgstr ""
105
+
106
+ #: res/ums-logs.php:70
107
+ msgid "User Agent:"
108
+ msgstr ""
109
+
110
+ #: res/ums-logs.php:74
111
+ msgid "Web Server:"
112
+ msgstr ""
113
+
114
+ #: res/ums-logs.php:78
115
+ msgid "PHP Version:"
116
+ msgstr ""
117
+
118
+ #: res/ums-logs.php:82
119
+ msgid "PHP Max POST Size:"
120
+ msgstr ""
121
+
122
+ #: res/ums-logs.php:86
123
+ msgid "PHP Max Upload Size:"
124
+ msgstr ""
125
+
126
+ #: res/ums-logs.php:90
127
+ msgid "PHP Memory Limit:"
128
+ msgstr ""
129
+
130
+ #: res/ums-logs.php:94
131
+ msgid "PHP DateTime Class:"
132
+ msgstr ""
133
+
134
+ #: res/ums-logs.php:95 res/ums-logs.php:99
135
+ msgid "Available"
136
+ msgstr ""
137
+
138
+ #: res/ums-logs.php:95 res/ums-logs.php:99
139
+ msgid "Not available"
140
+ msgstr ""
141
+
142
+ #: res/ums-logs.php:98
143
+ msgid "PHP Curl:"
144
+ msgstr ""
145
+
146
+ #: res/ums-logs.php:109
147
+ msgid "Rules Currently Running:"
148
+ msgstr ""
149
+
150
+ #: res/ums-logs.php:113
151
+ msgid "These rules are currently running on your server."
152
+ msgstr ""
153
+
154
+ #: res/ums-logs.php:142
155
+ msgid "Unknown rule type: "
156
+ msgstr ""
157
+
158
+ #: res/ums-logs.php:151
159
+ msgid "No rules are running right now"
160
+ msgstr ""
161
+
162
+ #: res/ums-logs.php:156
163
+ msgid "Are you sure you want to clear the running list?"
164
+ msgstr ""
165
+
166
+ #: res/ums-logs.php:157
167
+ msgid "Caution! This is for debugging purpose only!"
168
+ msgstr ""
169
+
170
+ #: res/ums-logs.php:157
171
+ msgid "Clear Running Rules List"
172
+ msgstr ""
173
+
174
+ #: res/ums-logs.php:165 res/ums-logs.php:175
175
+ msgid "Restore Plugin Default Settings"
176
+ msgstr ""
177
+
178
+ #: res/ums-logs.php:169
179
+ msgid ""
180
+ "Hit this button and the plugin settings will be restored to their default "
181
+ "values. Warning! All settings will be lost!"
182
+ msgstr ""
183
+
184
+ #: res/ums-logs.php:175
185
+ msgid "Are you sure you want to restore the default plugin settings?"
186
+ msgstr ""
187
+
188
+ #: res/ums-logs.php:181
189
+ msgid "Delete All Posts Generated by this Plugin:"
190
+ msgstr ""
191
+
192
+ #: res/ums-logs.php:185
193
+ msgid "Hit this button and all posts generated by this plugin will be deleted!"
194
+ msgstr ""
195
+
196
+ #: res/ums-logs.php:191
197
+ msgid ""
198
+ "Are you sure you want to delete all generated posts? This can take a while, "
199
+ "please wait until it finishes."
200
+ msgstr ""
201
+
202
+ #: res/ums-logs.php:191
203
+ msgid "Delete All Generated Posts"
204
+ msgstr ""
205
+
206
+ #: res/ums-logs.php:196
207
+ msgid "Activity Log:"
208
+ msgstr ""
209
+
210
+ #: res/ums-logs.php:200
211
+ msgid ""
212
+ "This is the main log of your plugin. Here will be listed every single "
213
+ "instance of the rules you run or are automatically run by schedule jobs (if "
214
+ "you enable logging, in the plugin configuration)."
215
+ msgstr ""
216
+
217
+ #: res/ums-logs.php:214
218
+ msgid "Log empty"
219
+ msgstr ""
220
+
221
+ #: res/ums-logs.php:220
222
+ msgid "Are you sure you want to delete all logs?"
223
+ msgstr ""
224
+
225
+ #: res/ums-logs.php:221
226
+ msgid "Delete Logs"
227
+ msgstr ""
228
+
229
+ #: res/ums-main.php:144 res/ums-novel-list.php:39 res/ums-rules-list.php:40
230
+ #: res/ums-text-list.php:39 res/ums-vipnovel-list.php:39
231
+ msgid "Settings saved."
232
+ msgstr ""
233
+
234
+ #: res/ums-main.php:153
235
+ msgid "Plugin registration failed!"
236
+ msgstr ""
237
+
238
+ #: res/ums-main.php:162
239
+ msgid "Plugin registration successful!"
240
+ msgstr ""
241
+
242
+ #: res/ums-main.php:174
243
+ msgid "Main Switch:"
244
+ msgstr ""
245
+
246
+ #: res/ums-main.php:179
247
+ msgid "Enable or disable this plugin. This acts like a main switch."
248
+ msgstr ""
249
+
250
+ #: res/ums-main.php:197
251
+ msgid ""
252
+ "This feature of the plugin is disabled! Please enable it from the above "
253
+ "switch."
254
+ msgstr ""
255
+
256
+ #: res/ums-main.php:209
257
+ msgid "Plugin Registration Info - Automatic Updates Enabled:"
258
+ msgstr ""
259
+
260
+ #: res/ums-main.php:211
261
+ msgid "Item Name:"
262
+ msgstr ""
263
+
264
+ #: res/ums-main.php:213
265
+ msgid "Item ID:"
266
+ msgstr ""
267
+
268
+ #: res/ums-main.php:216
269
+ msgid "Created At:"
270
+ msgstr ""
271
+
272
+ #: res/ums-main.php:219
273
+ msgid "Buyer Name:"
274
+ msgstr ""
275
+
276
+ #: res/ums-main.php:222
277
+ msgid "License Type:"
278
+ msgstr ""
279
+
280
+ #: res/ums-main.php:225
281
+ msgid "Supported Until:"
282
+ msgstr ""
283
+
284
+ #: res/ums-main.php:228
285
+ msgid "Revoke License"
286
+ msgstr ""
287
+
288
+ #: res/ums-main.php:236
289
+ msgid ""
290
+ "This is a trial version of the plugin. Automatic updates for this plugin are "
291
+ "disabled. Please activate the plugin from below, so you can benefit of "
292
+ "automatic updates for it!"
293
+ msgstr ""
294
+
295
+ #: res/ums-main.php:244
296
+ #, php-format
297
+ msgid ""
298
+ "Please input your Envato purchase code, to enable automatic updates in the "
299
+ "plugin. To get your purchase code, please follow <a href=\"%s\" "
300
+ "target=\"_blank\">this tutorial</a>. Info submitted to the registration "
301
+ "server consists of: purchase code, site URL, site name, admin email. All "
302
+ "these data will be used strictly for registration purposes."
303
+ msgstr ""
304
+
305
+ #: res/ums-main.php:248
306
+ msgid "Register Envato Purchase Code To Enable Automatic Updates:"
307
+ msgstr ""
308
+
309
+ #: res/ums-main.php:250
310
+ msgid "Envato Purchase Code"
311
+ msgstr ""
312
+
313
+ #: res/ums-main.php:254
314
+ msgid "Register Purchase Code"
315
+ msgstr ""
316
+
317
+ #: res/ums-main.php:269
318
+ msgid "Tips for using the plugin:"
319
+ msgstr ""
320
+
321
+ #: res/ums-main.php:271
322
+ #, php-format
323
+ msgid ""
324
+ "This plugin requires the <a href=\"%s\" target=\"_blank\">Madara - WordPress "
325
+ "Theme for Manga</a> to work. Please get it from <a href=\"%s\" "
326
+ "target=\"_blank\">here</a>."
327
+ msgstr ""
328
+
329
+ #: res/ums-main.php:273
330
+ #, php-format
331
+ msgid ""
332
+ "Need help configuring this plugin? Please check it's <a href=\"%s\" "
333
+ "target=\"_blank\">video tutorial</a>."
334
+ msgstr ""
335
+
336
+ #: res/ums-main.php:275
337
+ #, php-format
338
+ msgid ""
339
+ "Having issues with the plugin? Please be sure to check our <a href=\"%s\" "
340
+ "target=\"_blank\">knowledge-base</a> before you contact <a href=\"%s\" "
341
+ "target=\"_blank\">our support</a>!"
342
+ msgstr ""
343
+
344
+ #: res/ums-main.php:276
345
+ #, php-format
346
+ msgid ""
347
+ "Do you enjoy our plugin? Please give it a <a href=\"%s\" "
348
+ "target=\"_blank\">rating</a> on CodeCanyon, or check <a href=\"%s\" "
349
+ "target=\"_blank\">our website</a> for other cool plugins."
350
+ msgstr ""
351
+
352
+ #: res/ums-main.php:282
353
+ msgid "Scraping Enhancements:"
354
+ msgstr ""
355
+
356
+ #: res/ums-main.php:291
357
+ #, php-format
358
+ msgid ""
359
+ "If you wish to use the HeadlessBrowserAPI to render JavaScript generated "
360
+ "content for your scraped pages, enter your API key here. Get one <a "
361
+ "href='%s' target='_blank'>here</a>. If you enter a value here, new options "
362
+ "will become available in the 'Use PhantomJs/Puppeteer/Tor To Parse "
363
+ "JavaScript On Pages' in importing rule settings."
364
+ msgstr ""
365
+
366
+ #: res/ums-main.php:295
367
+ msgid "HeadlessBrowserAPI Key (Optional)"
368
+ msgstr ""
369
+
370
+ #: res/ums-main.php:300
371
+ msgid "Remaining API Calls For Today: "
372
+ msgstr ""
373
+
374
+ #: res/ums-main.php:304 res/ums-novel-list.php:318 res/ums-novel-list.php:1268
375
+ #: res/ums-rules-list.php:513 res/ums-rules-list.php:1699
376
+ #: res/ums-text-list.php:318 res/ums-text-list.php:1267
377
+ #: res/ums-vipnovel-list.php:318 res/ums-vipnovel-list.php:1268
378
+ msgid ""
379
+ "New feature added to this plugin: it is able to use HeadlessBrowserAPI to "
380
+ "scrape with JavaScript rendered content any website from the internet. Also, "
381
+ "the Tor node of the API will be able to scrape .onion sites from the Dark "
382
+ "Net!"
383
+ msgstr ""
384
+
385
+ #: res/ums-main.php:311
386
+ msgid "API key"
387
+ msgstr ""
388
+
389
+ #: res/ums-main.php:319
390
+ msgid "Plugin Options:"
391
+ msgstr ""
392
+
393
+ #: res/ums-main.php:328
394
+ msgid ""
395
+ "Please check this checkbox if your server has CloudFlare caching active. "
396
+ "This is needed to prevent some issues happening, because CloudFlare is "
397
+ "limiting the execution time of plugins to 100 seconds."
398
+ msgstr ""
399
+
400
+ #: res/ums-main.php:332
401
+ msgid "My Server Is Using CloudFlare Caching:"
402
+ msgstr ""
403
+
404
+ #: res/ums-main.php:348
405
+ msgid ""
406
+ "Select the storage you wish to use to store scraped manga. To display more "
407
+ "options here, set up storage settings in Madara Theme Settings."
408
+ msgstr ""
409
+
410
+ #: res/ums-main.php:352
411
+ msgid "Manga Storage Device:"
412
+ msgstr ""
413
+
414
+ #: res/ums-main.php:382
415
+ msgid "Do you want to enable logging for rules?"
416
+ msgstr ""
417
+
418
+ #: res/ums-main.php:386
419
+ msgid "Enable Logging for Rules:"
420
+ msgstr ""
421
+
422
+ #: res/ums-main.php:402
423
+ msgid ""
424
+ "Do you want to enable detailed logging for rules? Note that this will "
425
+ "dramatically increase the size of the log this plugin generates."
426
+ msgstr ""
427
+
428
+ #: res/ums-main.php:406
429
+ msgid "Enable Detailed Logging for Rules:"
430
+ msgstr ""
431
+
432
+ #: res/ums-main.php:424
433
+ msgid ""
434
+ "In case of your server forcefully stopping the processing of chapters in the "
435
+ "plugin, it will attempt to recover and restart processing. On some servers, "
436
+ "this might cause duplicate content issues. Do you want to disable automatic "
437
+ "rerunning of rules?"
438
+ msgstr ""
439
+
440
+ #: res/ums-main.php:428
441
+ msgid "Disable Automatic Rerunning of Rules:"
442
+ msgstr ""
443
+
444
+ #: res/ums-main.php:444
445
+ msgid "Choose if you want to automatically clear logs after a period of time."
446
+ msgstr ""
447
+
448
+ #: res/ums-main.php:448
449
+ msgid "Automatically Clear Logs After:"
450
+ msgstr ""
451
+
452
+ #: res/ums-main.php:458 res/ums-novel-list.php:275 res/ums-novel-list.php:291
453
+ #: res/ums-novel-list.php:1214 res/ums-novel-list.php:1236
454
+ #: res/ums-rules-list.php:471 res/ums-rules-list.php:487
455
+ #: res/ums-rules-list.php:1650 res/ums-rules-list.php:1672
456
+ #: res/ums-text-list.php:275 res/ums-text-list.php:291
457
+ #: res/ums-text-list.php:1213 res/ums-text-list.php:1235
458
+ #: res/ums-vipnovel-list.php:275 res/ums-vipnovel-list.php:291
459
+ #: res/ums-vipnovel-list.php:1214 res/ums-vipnovel-list.php:1236
460
+ #: ultimate-manga-scraper.php:46
461
+ msgid "Disabled"
462
+ msgstr ""
463
+
464
+ #: res/ums-main.php:463
465
+ msgid "Once a month"
466
+ msgstr ""
467
+
468
+ #: res/ums-main.php:468
469
+ msgid "Once a week"
470
+ msgstr ""
471
+
472
+ #: res/ums-main.php:473
473
+ msgid "Once a day"
474
+ msgstr ""
475
+
476
+ #: res/ums-main.php:478
477
+ msgid "Twice a day"
478
+ msgstr ""
479
+
480
+ #: res/ums-main.php:483
481
+ msgid "Once an hour"
482
+ msgstr ""
483
+
484
+ #: res/ums-main.php:494
485
+ msgid ""
486
+ "If you want to use a proxy to crawl webpages, input it's address here. "
487
+ "Required format: IP Address/URL:port"
488
+ msgstr ""
489
+
490
+ #: res/ums-main.php:498
491
+ msgid "Web Proxy Address:"
492
+ msgstr ""
493
+
494
+ #: res/ums-main.php:503
495
+ msgid "Input web proxy url"
496
+ msgstr ""
497
+
498
+ #: res/ums-main.php:513
499
+ msgid ""
500
+ "If you want to use a proxy to crawl webpages, and it requires "
501
+ "authentification, input it's authentification details here. Required format: "
502
+ "username:password"
503
+ msgstr ""
504
+
505
+ #: res/ums-main.php:517
506
+ msgid "Web Proxy Authentification:"
507
+ msgstr ""
508
+
509
+ #: res/ums-main.php:522
510
+ msgid "Input web proxy auth"
511
+ msgstr ""
512
+
513
+ #: res/ums-main.php:532
514
+ msgid ""
515
+ "Set the timeout (in seconds) for every rule running. I recommend that you "
516
+ "leave this field at it's default value (3600)."
517
+ msgstr ""
518
+
519
+ #: res/ums-main.php:536
520
+ msgid "Timeout for Rule Running (seconds):"
521
+ msgstr ""
522
+
523
+ #: res/ums-main.php:541
524
+ msgid "Input rule timeout in seconds"
525
+ msgstr ""
526
+
527
+ #: res/ums-main.php:553
528
+ msgid ""
529
+ "Set the delay (in seconds) for every scraping request. I recommend that you "
530
+ "leave this field at it's default value (1)."
531
+ msgstr ""
532
+
533
+ #: res/ums-main.php:557
534
+ msgid "Delay Between Requests (seconds):"
535
+ msgstr ""
536
+
537
+ #: res/ums-main.php:562
538
+ msgid "Input request timeout in seconds"
539
+ msgstr ""
540
+
541
+ #: res/ums-main.php:572
542
+ msgid ""
543
+ "Set a default value for the 'Schedule' rule paramter. If you leave this "
544
+ "field blank, the value 24 will be used."
545
+ msgstr ""
546
+
547
+ #: res/ums-main.php:576
548
+ msgid "Default Value For The 'Schedule' Rule Parameter:"
549
+ msgstr ""
550
+
551
+ #: res/ums-main.php:581
552
+ msgid "24"
553
+ msgstr ""
554
+
555
+ #: res/ums-main.php:591
556
+ msgid ""
557
+ "Set a default value for the 'Author' rule paramter. If you leave this field "
558
+ "blank, there will not be set a default author for rules."
559
+ msgstr ""
560
+
561
+ #: res/ums-main.php:595
562
+ msgid "Default Value For The 'Author' Rule Parameter:"
563
+ msgstr ""
564
+
565
+ #: res/ums-main.php:622
566
+ msgid ""
567
+ "Set a default value for the 'Max # Chapters' rule paramter. If you leave "
568
+ "this field blank, the value 1 will be used."
569
+ msgstr ""
570
+
571
+ #: res/ums-main.php:626
572
+ msgid "Default Value For The 'Max # Chapters' Rule Parameter:"
573
+ msgstr ""
574
+
575
+ #: res/ums-main.php:631 res/ums-main.php:650
576
+ msgid "1"
577
+ msgstr ""
578
+
579
+ #: res/ums-main.php:641
580
+ msgid ""
581
+ "Set a default value for the 'Maximum Number Of Manga to Scrape' rule "
582
+ "paramter. If you leave this field blank, the value 1 will be used."
583
+ msgstr ""
584
+
585
+ #: res/ums-main.php:645
586
+ msgid ""
587
+ "Default Value For The 'Maximum Number Of Manga to Scrape' Rule Parameter:"
588
+ msgstr ""
589
+
590
+ #: res/ums-main.php:656 res/ums-novel-list.php:433 res/ums-novel-list.php:1426
591
+ #: res/ums-rules-list.php:615 res/ums-rules-list.php:1844
592
+ #: res/ums-text-list.php:433 res/ums-text-list.php:1425
593
+ #: res/ums-vipnovel-list.php:433 res/ums-vipnovel-list.php:1426
594
+ msgid "Translation Options:"
595
+ msgstr ""
596
+
597
+ #: res/ums-main.php:666
598
+ #, php-format
599
+ msgid ""
600
+ "If you wish to use the official version of the Google Translator API for "
601
+ "translation, you must enter first a Google API Key. Get one <a href='%s' "
602
+ "target='_blank'>here</a>. Please enable the 'Cloud Translation API' in <a "
603
+ "href='%s' target='_blank'>Google Cloud Console</a>. Translation will work "
604
+ "even without even without entering an API key here, but in this case, an "
605
+ "unofficial Google Translate API will be used."
606
+ msgstr ""
607
+
608
+ #: res/ums-main.php:670
609
+ msgid "Google Translator API Key (Optional)"
610
+ msgstr ""
611
+
612
+ #: res/ums-main.php:675
613
+ msgid "API Key (optional)"
614
+ msgstr ""
615
+
616
+ #: res/ums-main.php:687
617
+ #, php-format
618
+ msgid ""
619
+ "If you wish to use Microsoft for translation, you must enter first a "
620
+ "Microsoft 'Access Key'. Learn how to get one <a href='%s' "
621
+ "target='_blank'>here</a>. If you enter a value here, new options will become "
622
+ "available in the 'Automatically Translate Content To' and 'Source Language' "
623
+ "fields."
624
+ msgstr ""
625
+
626
+ #: res/ums-main.php:691
627
+ msgid "Microsoft Translator Access Key (Optional)"
628
+ msgstr ""
629
+
630
+ #: res/ums-main.php:696
631
+ msgid "Access key (optional)"
632
+ msgstr ""
633
+
634
+ #: res/ums-main.php:708
635
+ #, php-format
636
+ msgid ""
637
+ "If you selected a specific region in your Azure Microsoft account, you must "
638
+ "enter it here. Learn more <a href='%s' target='_blank'>here</a>. The default "
639
+ "is global."
640
+ msgstr ""
641
+
642
+ #: res/ums-main.php:712
643
+ msgid "Microsoft Translator Region Code (Optional)"
644
+ msgstr ""
645
+
646
+ #: res/ums-main.php:717
647
+ msgid "global"
648
+ msgstr ""
649
+
650
+ #: res/ums-main.php:729
651
+ #, php-format
652
+ msgid ""
653
+ "If you wish to use DeepL for translation, you must enter first a DeepL "
654
+ "'Authentication Key'. Get one <a href='%s' target='_blank'>here</a>. If you "
655
+ "enter a value here, new options will become available in the 'Automatically "
656
+ "Translate Content To' and 'Source Language' fields."
657
+ msgstr ""
658
+
659
+ #: res/ums-main.php:733
660
+ msgid "DeepL Translator Authentication Key (Optional)"
661
+ msgstr ""
662
+
663
+ #: res/ums-main.php:738
664
+ msgid "Auth key (optional)"
665
+ msgstr ""
666
+
667
+ #: res/ums-main.php:750
668
+ msgid ""
669
+ "Check this checkbox if the above API key is a DeepL free plan key. If it is "
670
+ "a PRO key, please uncheck this checkbox."
671
+ msgstr ""
672
+
673
+ #: res/ums-main.php:754
674
+ msgid "The Above Is A DeepL Free API Key:"
675
+ msgstr ""
676
+
677
+ #: res/ums-main.php:774
678
+ msgid "PhantomJS Settings:"
679
+ msgstr ""
680
+
681
+ #: res/ums-main.php:783
682
+ #, php-format
683
+ msgid ""
684
+ "Set the path on your local server of the phantomjs executable. If you leave "
685
+ "this field blank, the default 'phantomjs' call will be used. <a href='%s' "
686
+ "target='_blank'>How to install PhantomJs?</a>"
687
+ msgstr ""
688
+
689
+ #: res/ums-main.php:787
690
+ msgid "PhantomJS Path On Server:"
691
+ msgstr ""
692
+
693
+ #: res/ums-main.php:794 res/ums-novel-list.php:1277 res/ums-rules-list.php:1708
694
+ #: res/ums-text-list.php:1276 res/ums-vipnovel-list.php:1277
695
+ msgid ""
696
+ "INFO: PhantomJS not found - please install it on your server or configure "
697
+ "the path to it in plugin's 'Main Settings'!"
698
+ msgstr ""
699
+
700
+ #: res/ums-main.php:794 res/ums-novel-list.php:1277 res/ums-rules-list.php:1708
701
+ #: res/ums-text-list.php:1276 res/ums-vipnovel-list.php:1277
702
+ msgid "How to install PhantomJs?"
703
+ msgstr ""
704
+
705
+ #: res/ums-main.php:798 res/ums-novel-list.php:1281 res/ums-rules-list.php:1712
706
+ #: res/ums-text-list.php:1280 res/ums-vipnovel-list.php:1281
707
+ msgid ""
708
+ "INFO: PhantomJS cannot run - shell exec is not enabled on your server. "
709
+ "Please enable it and retry using this feature of the plugin."
710
+ msgstr ""
711
+
712
+ #: res/ums-main.php:802 res/ums-novel-list.php:1285 res/ums-rules-list.php:1716
713
+ #: res/ums-text-list.php:1284 res/ums-vipnovel-list.php:1285
714
+ msgid ""
715
+ "INFO: PhantomJS cannot run - shell exec is not allowed to run on your server "
716
+ "(in disable_functions list in php.ini). Please enable it and retry using "
717
+ "this feature of the plugin."
718
+ msgstr ""
719
+
720
+ #: res/ums-main.php:806 res/ums-novel-list.php:1289 res/ums-rules-list.php:1720
721
+ #: res/ums-text-list.php:1288 res/ums-vipnovel-list.php:1289
722
+ msgid "INFO: PhantomJS OK"
723
+ msgstr ""
724
+
725
+ #: res/ums-main.php:814
726
+ msgid "Path to phantomjs"
727
+ msgstr ""
728
+
729
+ #: res/ums-main.php:824
730
+ msgid ""
731
+ "Set the timeout (in milliseconds) for every phantomjs running. I recommend "
732
+ "that you leave this field at it's default value (15000). If you leave this "
733
+ "field blank, the default value will be used."
734
+ msgstr ""
735
+
736
+ #: res/ums-main.php:828
737
+ msgid "Timeout for PhantomJs Execution:"
738
+ msgstr ""
739
+
740
+ #: res/ums-main.php:833
741
+ msgid "Input phantomjs timeout in milliseconds"
742
+ msgstr ""
743
+
744
+ #: res/ums-main.php:845 res/ums-novel-list.php:754 res/ums-rules-list.php:936
745
+ #: res/ums-text-list.php:754 res/ums-vipnovel-list.php:754
746
+ msgid "Save Settings"
747
+ msgstr ""
748
+
749
+ #: res/ums-novel-list.php:30
750
+ msgid "BoxNovel.com Novels Scraper"
751
+ msgstr ""
752
+
753
+ #: res/ums-novel-list.php:48 res/ums-text-list.php:48
754
+ #: res/ums-vipnovel-list.php:48
755
+ msgid ""
756
+ "This is a demo version of the \"Ultimate Web Novel And Manga Scraper\" "
757
+ "plugin, you will have access to a limited feature set only (maximum scraped "
758
+ "chapter count limited to 3). To gain access to the full feature set of the "
759
+ "plugin, please purchase it"
760
+ msgstr ""
761
+
762
+ #: res/ums-novel-list.php:61 res/ums-rules-list.php:62 res/ums-text-list.php:61
763
+ #: res/ums-vipnovel-list.php:61
764
+ msgid "ID"
765
+ msgstr ""
766
+
767
+ #: res/ums-novel-list.php:65 res/ums-rules-list.php:66 res/ums-text-list.php:65
768
+ #: res/ums-vipnovel-list.php:65
769
+ msgid "This is the ID of the rule."
770
+ msgstr ""
771
+
772
+ #: res/ums-novel-list.php:71 res/ums-text-list.php:71
773
+ #: res/ums-vipnovel-list.php:71
774
+ msgid "Novels URL / Search Keyword"
775
+ msgstr ""
776
+
777
+ #: res/ums-novel-list.php:75
778
+ msgid ""
779
+ "Add the URL of the Web Novel (or a comma separated list of Web Novel URLs) "
780
+ "or a keyword search. Example Web Novel URL: https://boxnovel.com/novel/ghost-"
781
+ "emperor-wild-wife-dandy-eldest-miss/ - you can also add a comma separated "
782
+ "list of similar URLs. If you want to query all web novels, you can enter "
783
+ "here a * (star symbol)."
784
+ msgstr ""
785
+
786
+ #: res/ums-novel-list.php:80 res/ums-rules-list.php:81 res/ums-text-list.php:80
787
+ #: res/ums-vipnovel-list.php:80
788
+ msgid "Schedule"
789
+ msgstr ""
790
+
791
+ #: res/ums-novel-list.php:86 res/ums-rules-list.php:87 res/ums-text-list.php:86
792
+ #: res/ums-vipnovel-list.php:86
793
+ msgid ""
794
+ "Select the interval in minutes after which you want this rule to run. "
795
+ "Defined in minutes."
796
+ msgstr ""
797
+
798
+ #: res/ums-novel-list.php:90 res/ums-rules-list.php:91 res/ums-text-list.php:90
799
+ #: res/ums-vipnovel-list.php:90
800
+ msgid ""
801
+ "Select the interval in hours after which you want this rule to run. Defined "
802
+ "in hours."
803
+ msgstr ""
804
+
805
+ #: res/ums-novel-list.php:96 res/ums-rules-list.php:97 res/ums-text-list.php:96
806
+ #: res/ums-vipnovel-list.php:96
807
+ msgid "Max # Chapters"
808
+ msgstr ""
809
+
810
+ #: res/ums-novel-list.php:99 res/ums-text-list.php:99
811
+ #: res/ums-vipnovel-list.php:99
812
+ msgid ""
813
+ "Number of chapters to scrape from each web novel is listed and scraped by "
814
+ "this rule."
815
+ msgstr ""
816
+
817
+ #: res/ums-novel-list.php:104 res/ums-rules-list.php:105
818
+ #: res/ums-text-list.php:104 res/ums-vipnovel-list.php:104
819
+ msgid "Chapter Status"
820
+ msgstr ""
821
+
822
+ #: res/ums-novel-list.php:109 res/ums-rules-list.php:110
823
+ #: res/ums-text-list.php:109 res/ums-vipnovel-list.php:109
824
+ msgid "Select the chapter status: published, draft, pending."
825
+ msgstr ""
826
+
827
+ #: res/ums-novel-list.php:114 res/ums-text-list.php:114
828
+ #: res/ums-vipnovel-list.php:114
829
+ msgid "Novel Author"
830
+ msgstr ""
831
+
832
+ #: res/ums-novel-list.php:117 res/ums-text-list.php:117
833
+ #: res/ums-vipnovel-list.php:117
834
+ msgid ""
835
+ "Select the author that you want to assign for the automatically generated "
836
+ "web novels."
837
+ msgstr ""
838
+
839
+ #: res/ums-novel-list.php:121 res/ums-rules-list.php:122
840
+ #: res/ums-text-list.php:121 res/ums-vipnovel-list.php:121
841
+ msgid "More Options"
842
+ msgstr ""
843
+
844
+ #: res/ums-novel-list.php:124 res/ums-rules-list.php:125
845
+ #: res/ums-text-list.php:124 res/ums-vipnovel-list.php:124
846
+ msgid "Shows advanced settings for this rule."
847
+ msgstr ""
848
+
849
+ #: res/ums-novel-list.php:128 res/ums-rules-list.php:129
850
+ #: res/ums-text-list.php:128 res/ums-vipnovel-list.php:128
851
+ msgid "Del"
852
+ msgstr ""
853
+
854
+ #: res/ums-novel-list.php:131 res/ums-rules-list.php:132
855
+ #: res/ums-text-list.php:131 res/ums-vipnovel-list.php:131
856
+ msgid "Do you want to delete this rule?"
857
+ msgstr ""
858
+
859
+ #: res/ums-novel-list.php:135 res/ums-rules-list.php:136
860
+ #: res/ums-text-list.php:135 res/ums-vipnovel-list.php:135
861
+ msgid "Active"
862
+ msgstr ""
863
+
864
+ #: res/ums-novel-list.php:138 res/ums-rules-list.php:139
865
+ #: res/ums-text-list.php:138 res/ums-vipnovel-list.php:138
866
+ msgid ""
867
+ "Do you want to enable this rule? You can deactivate any rule (you don't have "
868
+ "to delete them to deactivate them)."
869
+ msgstr ""
870
+
871
+ #: res/ums-novel-list.php:144 res/ums-rules-list.php:145
872
+ #: res/ums-text-list.php:144 res/ums-vipnovel-list.php:144
873
+ msgid "Info"
874
+ msgstr ""
875
+
876
+ #: res/ums-novel-list.php:147 res/ums-text-list.php:147
877
+ #: res/ums-vipnovel-list.php:147
878
+ msgid "The number of web novels this rule has generated so far."
879
+ msgstr ""
880
+
881
+ #: res/ums-novel-list.php:151 res/ums-rules-list.php:152
882
+ #: res/ums-text-list.php:151 res/ums-vipnovel-list.php:151
883
+ msgid "Actions"
884
+ msgstr ""
885
+
886
+ #: res/ums-novel-list.php:154 res/ums-rules-list.php:155
887
+ #: res/ums-text-list.php:154 res/ums-vipnovel-list.php:154
888
+ msgid ""
889
+ "Do you want to run this rule now? Note that only one instance of a rule is "
890
+ "allowed at once."
891
+ msgstr ""
892
+
893
+ #: res/ums-novel-list.php:181 res/ums-novel-list.php:1098
894
+ #: res/ums-rules-list.php:183 res/ums-rules-list.php:1305
895
+ #: res/ums-text-list.php:181 res/ums-text-list.php:1097
896
+ #: res/ums-vipnovel-list.php:181 res/ums-vipnovel-list.php:1098
897
+ msgid "Pending -> Moderate"
898
+ msgstr ""
899
+
900
+ #: res/ums-novel-list.php:182 res/ums-novel-list.php:1103
901
+ #: res/ums-rules-list.php:184 res/ums-rules-list.php:1310
902
+ #: res/ums-text-list.php:182 res/ums-text-list.php:1102
903
+ #: res/ums-vipnovel-list.php:182 res/ums-vipnovel-list.php:1103
904
+ msgid "Draft -> Moderate"
905
+ msgstr ""
906
+
907
+ #: res/ums-novel-list.php:183 res/ums-novel-list.php:1108
908
+ #: res/ums-rules-list.php:185 res/ums-rules-list.php:1315
909
+ #: res/ums-text-list.php:183 res/ums-text-list.php:1107
910
+ #: res/ums-vipnovel-list.php:183 res/ums-vipnovel-list.php:1108
911
+ msgid "Published"
912
+ msgstr ""
913
+
914
+ #: res/ums-novel-list.php:184 res/ums-novel-list.php:1113
915
+ #: res/ums-rules-list.php:186 res/ums-rules-list.php:1320
916
+ #: res/ums-text-list.php:184 res/ums-text-list.php:1112
917
+ #: res/ums-vipnovel-list.php:184 res/ums-vipnovel-list.php:1113
918
+ msgid "Private"
919
+ msgstr ""
920
+
921
+ #: res/ums-novel-list.php:185 res/ums-novel-list.php:1118
922
+ #: res/ums-rules-list.php:187 res/ums-rules-list.php:1325
923
+ #: res/ums-text-list.php:185 res/ums-text-list.php:1117
924
+ #: res/ums-vipnovel-list.php:185 res/ums-vipnovel-list.php:1118
925
+ msgid "Trash"
926
+ msgstr ""
927
+
928
+ #: res/ums-novel-list.php:195 res/ums-novel-list.php:1133
929
+ #: res/ums-rules-list.php:204 res/ums-rules-list.php:1340
930
+ #: res/ums-text-list.php:195 res/ums-text-list.php:1132
931
+ #: res/ums-vipnovel-list.php:195 res/ums-vipnovel-list.php:1133
932
+ msgid "Random user"
933
+ msgstr ""
934
+
935
+ #: res/ums-novel-list.php:196 res/ums-novel-list.php:1138
936
+ #: res/ums-rules-list.php:205 res/ums-rules-list.php:1345
937
+ #: res/ums-text-list.php:196 res/ums-text-list.php:1137
938
+ #: res/ums-vipnovel-list.php:196 res/ums-vipnovel-list.php:1138
939
+ msgid "Import author"
940
+ msgstr ""
941
+
942
+ #: res/ums-novel-list.php:204 res/ums-rules-list.php:213
943
+ #: res/ums-text-list.php:204 res/ums-vipnovel-list.php:204
944
+ msgid "New Rule"
945
+ msgstr ""
946
+
947
+ #: res/ums-novel-list.php:204 res/ums-novel-list.php:1146
948
+ #: res/ums-rules-list.php:213 res/ums-rules-list.php:1353
949
+ #: res/ums-text-list.php:204 res/ums-text-list.php:1145
950
+ #: res/ums-vipnovel-list.php:204 res/ums-vipnovel-list.php:1146
951
+ msgid "Advanced Settings"
952
+ msgstr ""
953
+
954
+ #: res/ums-novel-list.php:214 res/ums-novel-list.php:1154
955
+ #: res/ums-rules-list.php:223 res/ums-rules-list.php:1361
956
+ #: res/ums-text-list.php:214 res/ums-text-list.php:1153
957
+ #: res/ums-vipnovel-list.php:214 res/ums-vipnovel-list.php:1154
958
+ msgid "Do you want to reverse scraping of chapters and start with oldest?"
959
+ msgstr ""
960
+
961
+ #: res/ums-novel-list.php:218 res/ums-rules-list.php:227
962
+ #: res/ums-text-list.php:218 res/ums-vipnovel-list.php:218
963
+ msgid "Reverse Scraping (Start With Oldest Chapters):"
964
+ msgstr ""
965
+
966
+ #: res/ums-novel-list.php:228 res/ums-text-list.php:228
967
+ #: res/ums-vipnovel-list.php:228
968
+ msgid "Set the maximum web novel count to scrape. This value is optional."
969
+ msgstr ""
970
+
971
+ #: res/ums-novel-list.php:232 res/ums-text-list.php:232
972
+ #: res/ums-vipnovel-list.php:232
973
+ msgid "Maximum Number Of Novels to Scrape:"
974
+ msgstr ""
975
+
976
+ #: res/ums-novel-list.php:241 res/ums-novel-list.php:1183
977
+ #: res/ums-text-list.php:241 res/ums-text-list.php:1182
978
+ #: res/ums-vipnovel-list.php:241 res/ums-vipnovel-list.php:1183
979
+ msgid ""
980
+ "Select the web novel genre that you want for the automatically generated web "
981
+ "novel to have."
982
+ msgstr ""
983
+
984
+ #: res/ums-novel-list.php:245 res/ums-text-list.php:245
985
+ #: res/ums-vipnovel-list.php:245
986
+ msgid "Additional Novel Genre:"
987
+ msgstr ""
988
+
989
+ #: res/ums-novel-list.php:248 res/ums-novel-list.php:1190
990
+ #: res/ums-rules-list.php:444 res/ums-rules-list.php:1626
991
+ #: res/ums-text-list.php:248 res/ums-text-list.php:1189
992
+ #: res/ums-vipnovel-list.php:248 res/ums-vipnovel-list.php:1190
993
+ msgid "Do Not Add a Genre"
994
+ msgstr ""
995
+
996
+ #: res/ums-novel-list.php:268 res/ums-text-list.php:268
997
+ #: res/ums-vipnovel-list.php:268
998
+ msgid ""
999
+ "Do you want to automatically add web novel genres from the web novel items?"
1000
+ msgstr ""
1001
+
1002
+ #: res/ums-novel-list.php:272 res/ums-rules-list.php:468
1003
+ #: res/ums-text-list.php:272 res/ums-vipnovel-list.php:272
1004
+ msgid "Auto Add Genres:"
1005
+ msgstr ""
1006
+
1007
+ #: res/ums-novel-list.php:276 res/ums-novel-list.php:292
1008
+ #: res/ums-novel-list.php:1219 res/ums-novel-list.php:1241
1009
+ #: res/ums-text-list.php:276 res/ums-text-list.php:292
1010
+ #: res/ums-text-list.php:1218 res/ums-text-list.php:1240
1011
+ #: res/ums-vipnovel-list.php:276 res/ums-vipnovel-list.php:292
1012
+ #: res/ums-vipnovel-list.php:1219 res/ums-vipnovel-list.php:1241
1013
+ msgid "Novel Genres"
1014
+ msgstr ""
1015
+
1016
+ #: res/ums-novel-list.php:284 res/ums-text-list.php:284
1017
+ #: res/ums-vipnovel-list.php:284
1018
+ msgid ""
1019
+ "Do you want to automatically add web novel tags from the web novel items?"
1020
+ msgstr ""
1021
+
1022
+ #: res/ums-novel-list.php:288 res/ums-text-list.php:288
1023
+ #: res/ums-vipnovel-list.php:288
1024
+ msgid "Auto Add Novel Tags:"
1025
+ msgstr ""
1026
+
1027
+ #: res/ums-novel-list.php:293 res/ums-novel-list.php:1246
1028
+ #: res/ums-text-list.php:293 res/ums-text-list.php:1245
1029
+ #: res/ums-vipnovel-list.php:293 res/ums-vipnovel-list.php:1246
1030
+ msgid "Novel Tags"
1031
+ msgstr ""
1032
+
1033
+ #: res/ums-novel-list.php:301 res/ums-novel-list.php:1252
1034
+ #: res/ums-text-list.php:301 res/ums-text-list.php:1251
1035
+ #: res/ums-vipnovel-list.php:301 res/ums-vipnovel-list.php:1252
1036
+ msgid ""
1037
+ "Select the web novel tags that you want for the automatically generated web "
1038
+ "novel to have."
1039
+ msgstr ""
1040
+
1041
+ #: res/ums-novel-list.php:305 res/ums-text-list.php:305
1042
+ #: res/ums-vipnovel-list.php:305
1043
+ msgid "Additional Novel Tags:"
1044
+ msgstr ""
1045
+
1046
+ #: res/ums-novel-list.php:314 res/ums-rules-list.php:509
1047
+ #: res/ums-text-list.php:314 res/ums-vipnovel-list.php:314
1048
+ msgid ""
1049
+ "Do you want to try to use PhantomJS to try to parse JavaScript from crawled "
1050
+ "pages (for pages that create dynamic content, on page load, using "
1051
+ "JavaScript)? Please note that for this to work, you must have PhantomJs "
1052
+ "installed on your server. You can configure the path to PhantomJS from your "
1053
+ "server, from plugin's 'Main Settings'."
1054
+ msgstr ""
1055
+
1056
+ #: res/ums-novel-list.php:317 res/ums-rules-list.php:512
1057
+ #: res/ums-text-list.php:317 res/ums-vipnovel-list.php:317
1058
+ msgid "Content Scraping Method To Use:"
1059
+ msgstr ""
1060
+
1061
+ #: res/ums-novel-list.php:326 res/ums-novel-list.php:1300
1062
+ #: res/ums-rules-list.php:521 res/ums-rules-list.php:1731
1063
+ #: res/ums-text-list.php:326 res/ums-text-list.php:1299
1064
+ #: res/ums-vipnovel-list.php:326 res/ums-vipnovel-list.php:1300
1065
+ msgid "WordPress (Default)"
1066
+ msgstr ""
1067
+
1068
+ #: res/ums-novel-list.php:327 res/ums-novel-list.php:1305
1069
+ #: res/ums-rules-list.php:522 res/ums-rules-list.php:1736
1070
+ #: res/ums-text-list.php:327 res/ums-text-list.php:1304
1071
+ #: res/ums-vipnovel-list.php:327 res/ums-vipnovel-list.php:1305
1072
+ msgid "Use PhantomJS"
1073
+ msgstr ""
1074
+
1075
+ #: res/ums-novel-list.php:328 res/ums-novel-list.php:1310
1076
+ #: res/ums-rules-list.php:523 res/ums-rules-list.php:1741
1077
+ #: res/ums-text-list.php:328 res/ums-text-list.php:1309
1078
+ #: res/ums-vipnovel-list.php:328 res/ums-vipnovel-list.php:1310
1079
+ msgid "Use Puppeteer"
1080
+ msgstr ""
1081
+
1082
+ #: res/ums-novel-list.php:329 res/ums-novel-list.php:330
1083
+ #: res/ums-novel-list.php:331 res/ums-novel-list.php:1317
1084
+ #: res/ums-novel-list.php:1326 res/ums-novel-list.php:1335
1085
+ #: res/ums-rules-list.php:524 res/ums-rules-list.php:525
1086
+ #: res/ums-rules-list.php:526 res/ums-rules-list.php:1748
1087
+ #: res/ums-rules-list.php:1757 res/ums-rules-list.php:1766
1088
+ #: res/ums-text-list.php:329 res/ums-text-list.php:330
1089
+ #: res/ums-text-list.php:331 res/ums-text-list.php:1316
1090
+ #: res/ums-text-list.php:1325 res/ums-text-list.php:1334
1091
+ #: res/ums-vipnovel-list.php:329 res/ums-vipnovel-list.php:330
1092
+ #: res/ums-vipnovel-list.php:331 res/ums-vipnovel-list.php:1317
1093
+ #: res/ums-vipnovel-list.php:1326 res/ums-vipnovel-list.php:1335
1094
+ msgid ""
1095
+ "This option is disabled. To enable it, add a HeadlessBrowserAPI Key in the "
1096
+ "plugin's 'Main Settings' menu."
1097
+ msgstr ""
1098
+
1099
+ #: res/ums-novel-list.php:329 res/ums-novel-list.php:1319
1100
+ #: res/ums-rules-list.php:524 res/ums-rules-list.php:1750
1101
+ #: res/ums-text-list.php:329 res/ums-text-list.php:1318
1102
+ #: res/ums-vipnovel-list.php:329 res/ums-vipnovel-list.php:1319
1103
+ msgid "Puppeteer (HeadlessBrowserAPI)"
1104
+ msgstr ""
1105
+
1106
+ #: res/ums-novel-list.php:329 res/ums-novel-list.php:330
1107
+ #: res/ums-novel-list.php:331 res/ums-rules-list.php:524
1108
+ #: res/ums-rules-list.php:525 res/ums-rules-list.php:526
1109
+ #: res/ums-text-list.php:329 res/ums-text-list.php:330
1110
+ #: res/ums-text-list.php:331 res/ums-vipnovel-list.php:329
1111
+ #: res/ums-vipnovel-list.php:330 res/ums-vipnovel-list.php:331
1112
+ msgid ""
1113
+ " - to enable, add a HeadlessBrowserAPI key in the plugin's 'Main Settings'"
1114
+ msgstr ""
1115
+
1116
+ #: res/ums-novel-list.php:330 res/ums-novel-list.php:1328
1117
+ #: res/ums-rules-list.php:525 res/ums-rules-list.php:1759
1118
+ #: res/ums-text-list.php:330 res/ums-text-list.php:1327
1119
+ #: res/ums-vipnovel-list.php:330 res/ums-vipnovel-list.php:1328
1120
+ msgid "Tor (HeadlessBrowserAPI)"
1121
+ msgstr ""
1122
+
1123
+ #: res/ums-novel-list.php:331 res/ums-novel-list.php:1337
1124
+ #: res/ums-rules-list.php:526 res/ums-rules-list.php:1768
1125
+ #: res/ums-text-list.php:331 res/ums-text-list.php:1336
1126
+ #: res/ums-vipnovel-list.php:331 res/ums-vipnovel-list.php:1337
1127
+ msgid "PhantomJS (HeadlessBrowserAPI)"
1128
+ msgstr ""
1129
+
1130
+ #: res/ums-novel-list.php:340 res/ums-novel-list.php:1343
1131
+ #: res/ums-rules-list.php:535 res/ums-rules-list.php:1774
1132
+ #: res/ums-text-list.php:340 res/ums-text-list.php:1342
1133
+ #: res/ums-vipnovel-list.php:340 res/ums-vipnovel-list.php:1343
1134
+ msgid ""
1135
+ "Set the number of milliseconds that phantomjs should wait before rendering "
1136
+ "pages (1000 ms = 1 sec)."
1137
+ msgstr ""
1138
+
1139
+ #: res/ums-novel-list.php:343 res/ums-rules-list.php:538
1140
+ #: res/ums-text-list.php:343 res/ums-vipnovel-list.php:343
1141
+ msgid "Headless Browser Wait Before Rendering Pages (ms):"
1142
+ msgstr ""
1143
+
1144
+ #: res/ums-novel-list.php:358 res/ums-novel-list.php:1355
1145
+ #: res/ums-text-list.php:358 res/ums-text-list.php:1354
1146
+ #: res/ums-vipnovel-list.php:358 res/ums-vipnovel-list.php:1355
1147
+ msgid "Do you want to enable comments for the generated web novel?"
1148
+ msgstr ""
1149
+
1150
+ #: res/ums-novel-list.php:362 res/ums-text-list.php:362
1151
+ #: res/ums-vipnovel-list.php:362
1152
+ msgid "Enable Comments For Novel:"
1153
+ msgstr ""
1154
+
1155
+ #: res/ums-novel-list.php:375 res/ums-text-list.php:375
1156
+ #: res/ums-vipnovel-list.php:375
1157
+ msgid "Do you want to enable pingbacks/trackbacks for the generated web novel?"
1158
+ msgstr ""
1159
+
1160
+ #: res/ums-novel-list.php:379 res/ums-rules-list.php:574
1161
+ #: res/ums-text-list.php:379 res/ums-vipnovel-list.php:379
1162
+ msgid "Enable Pingback/Trackback:"
1163
+ msgstr ""
1164
+
1165
+ #: res/ums-novel-list.php:392 res/ums-novel-list.php:1387
1166
+ #: res/ums-text-list.php:392 res/ums-text-list.php:1386
1167
+ #: res/ums-vipnovel-list.php:392 res/ums-vipnovel-list.php:1387
1168
+ msgid "Do you want to get the publish date from the source web novels?"
1169
+ msgstr ""
1170
+
1171
+ #: res/ums-novel-list.php:396 res/ums-text-list.php:396
1172
+ #: res/ums-vipnovel-list.php:396
1173
+ msgid "Get Publish Date From Novel:"
1174
+ msgstr ""
1175
+
1176
+ #: res/ums-novel-list.php:408 res/ums-novel-list.php:1403
1177
+ #: res/ums-text-list.php:408 res/ums-text-list.php:1402
1178
+ #: res/ums-vipnovel-list.php:408 res/ums-vipnovel-list.php:1403
1179
+ msgid ""
1180
+ "Set a global chapter warning message to display on the scraped web novel."
1181
+ msgstr ""
1182
+
1183
+ #: res/ums-novel-list.php:412 res/ums-rules-list.php:607
1184
+ #: res/ums-text-list.php:412 res/ums-vipnovel-list.php:412
1185
+ msgid "Global Chapter Warning Message:"
1186
+ msgstr ""
1187
+
1188
+ #: res/ums-novel-list.php:422 res/ums-novel-list.php:1415
1189
+ #: res/ums-text-list.php:422 res/ums-text-list.php:1414
1190
+ #: res/ums-vipnovel-list.php:422 res/ums-vipnovel-list.php:1415
1191
+ msgid ""
1192
+ "Set the first chapter slug for the scraped web novel. This needs to be set "
1193
+ "only if the first chapter URL is different than chapter-1"
1194
+ msgstr ""
1195
+
1196
+ #: res/ums-novel-list.php:426 res/ums-text-list.php:426
1197
+ #: res/ums-vipnovel-list.php:426
1198
+ msgid "First Chapter Slug:"
1199
+ msgstr ""
1200
+
1201
+ #: res/ums-novel-list.php:440 res/ums-rules-list.php:622
1202
+ #: res/ums-text-list.php:440 res/ums-vipnovel-list.php:440
1203
+ msgid ""
1204
+ "Do you want to automatically translate generated content using Google "
1205
+ "Translate? If set, this will overwrite the 'Automatically Translate Content "
1206
+ "To' option from plugin's 'Main Settings'."
1207
+ msgstr ""
1208
+
1209
+ #: res/ums-novel-list.php:443 res/ums-rules-list.php:625
1210
+ #: res/ums-text-list.php:443 res/ums-vipnovel-list.php:443
1211
+ msgid "Automatically Translate Content To:"
1212
+ msgstr ""
1213
+
1214
+ #: res/ums-novel-list.php:443 res/ums-novel-list.php:1432
1215
+ #: res/ums-rules-list.php:625 res/ums-rules-list.php:1850
1216
+ #: res/ums-text-list.php:443 res/ums-text-list.php:1431
1217
+ #: res/ums-vipnovel-list.php:443 res/ums-vipnovel-list.php:1432
1218
+ msgid "Info:"
1219
+ msgstr ""
1220
+
1221
+ #: res/ums-novel-list.php:443 res/ums-novel-list.php:1432
1222
+ #: res/ums-rules-list.php:625 res/ums-rules-list.php:1850
1223
+ #: res/ums-text-list.php:443 res/ums-text-list.php:1431
1224
+ #: res/ums-vipnovel-list.php:443 res/ums-vipnovel-list.php:1432
1225
+ msgid "for translation, the plugin also supports WPML."
1226
+ msgstr ""
1227
+
1228
+ #: res/ums-novel-list.php:443 res/ums-novel-list.php:1432
1229
+ #: res/ums-rules-list.php:625 res/ums-rules-list.php:1850
1230
+ #: res/ums-text-list.php:443 res/ums-text-list.php:1431
1231
+ #: res/ums-vipnovel-list.php:443 res/ums-vipnovel-list.php:1432
1232
+ msgid "Get WPML now!"
1233
+ msgstr ""
1234
+
1235
+ #: res/ums-novel-list.php:486 res/ums-rules-list.php:668
1236
+ #: res/ums-text-list.php:486 res/ums-vipnovel-list.php:486
1237
+ msgid "Do you want to not translate web novel titles"
1238
+ msgstr ""
1239
+
1240
+ #: res/ums-novel-list.php:490 res/ums-rules-list.php:672
1241
+ #: res/ums-text-list.php:490 res/ums-vipnovel-list.php:490
1242
+ msgid "Do Not Translate Title:"
1243
+ msgstr ""
1244
+
1245
+ #: res/ums-novel-list.php:513 res/ums-rules-list.php:695
1246
+ #: res/ums-text-list.php:513 res/ums-vipnovel-list.php:513
1247
+ msgid "No info."
1248
+ msgstr ""
1249
+
1250
+ #: res/ums-novel-list.php:524 res/ums-novel-list.php:1597
1251
+ #: res/ums-rules-list.php:706 res/ums-rules-list.php:2015
1252
+ #: res/ums-text-list.php:524 res/ums-text-list.php:1596
1253
+ #: res/ums-vipnovel-list.php:524 res/ums-vipnovel-list.php:1597
1254
+ msgid "Select an Action"
1255
+ msgstr ""
1256
+
1257
+ #: res/ums-novel-list.php:525 res/ums-novel-list.php:1598
1258
+ #: res/ums-rules-list.php:707 res/ums-rules-list.php:2016
1259
+ #: res/ums-text-list.php:525 res/ums-text-list.php:1597
1260
+ #: res/ums-vipnovel-list.php:525 res/ums-vipnovel-list.php:1598
1261
+ msgid "Run This Rule Now"
1262
+ msgstr ""
1263
+
1264
+ #: res/ums-novel-list.php:526 res/ums-text-list.php:526
1265
+ #: res/ums-vipnovel-list.php:526
1266
+ msgid "Move All Novel To Trash"
1267
+ msgstr ""
1268
+
1269
+ #: res/ums-novel-list.php:527 res/ums-text-list.php:527
1270
+ #: res/ums-vipnovel-list.php:527
1271
+ msgid "Permanently Delete All Novel"
1272
+ msgstr ""
1273
+
1274
+ #: res/ums-novel-list.php:749 res/ums-rules-list.php:931
1275
+ #: res/ums-text-list.php:749 res/ums-vipnovel-list.php:749
1276
+ msgid "First Page"
1277
+ msgstr ""
1278
+
1279
+ #: res/ums-novel-list.php:749 res/ums-rules-list.php:931
1280
+ #: res/ums-text-list.php:749 res/ums-vipnovel-list.php:749
1281
+ msgid "Previous Page"
1282
+ msgstr ""
1283
+
1284
+ #: res/ums-novel-list.php:749 res/ums-rules-list.php:931
1285
+ #: res/ums-text-list.php:749 res/ums-vipnovel-list.php:749
1286
+ msgid "Page"
1287
+ msgstr ""
1288
+
1289
+ #: res/ums-novel-list.php:749 res/ums-rules-list.php:931
1290
+ #: res/ums-text-list.php:749 res/ums-vipnovel-list.php:749
1291
+ msgid "of"
1292
+ msgstr ""
1293
+
1294
+ #: res/ums-novel-list.php:749 res/ums-rules-list.php:931
1295
+ #: res/ums-text-list.php:749 res/ums-vipnovel-list.php:749
1296
+ msgid "Rules Per Page:"
1297
+ msgstr ""
1298
+
1299
+ #: res/ums-novel-list.php:749 res/ums-rules-list.php:931
1300
+ #: res/ums-text-list.php:749 res/ums-vipnovel-list.php:749
1301
+ msgid "Next Page"
1302
+ msgstr ""
1303
+
1304
+ #: res/ums-novel-list.php:749 res/ums-rules-list.php:931
1305
+ #: res/ums-text-list.php:749 res/ums-vipnovel-list.php:749
1306
+ msgid "Last Page"
1307
+ msgstr ""
1308
+
1309
+ #: res/ums-novel-list.php:757 res/ums-rules-list.php:939
1310
+ #: res/ums-text-list.php:757 res/ums-vipnovel-list.php:757
1311
+ msgid "Confused about rule running status icons?"
1312
+ msgstr ""
1313
+
1314
+ #: res/ums-novel-list.php:757 res/ums-rules-list.php:939
1315
+ #: res/ums-text-list.php:757 res/ums-vipnovel-list.php:757
1316
+ msgid "More info"
1317
+ msgstr ""
1318
+
1319
+ #: res/ums-novel-list.php:762 res/ums-rules-list.php:944
1320
+ #: res/ums-text-list.php:762 res/ums-vipnovel-list.php:762
1321
+ msgid "In Progress"
1322
+ msgstr ""
1323
+
1324
+ #: res/ums-novel-list.php:762 res/ums-rules-list.php:944
1325
+ #: res/ums-text-list.php:762 res/ums-vipnovel-list.php:762
1326
+ msgid "Importing is Running"
1327
+ msgstr ""
1328
+
1329
+ #: res/ums-novel-list.php:766 res/ums-rules-list.php:948
1330
+ #: res/ums-text-list.php:766 res/ums-vipnovel-list.php:766
1331
+ msgid "Success"
1332
+ msgstr ""
1333
+
1334
+ #: res/ums-novel-list.php:766 res/ums-text-list.php:766
1335
+ #: res/ums-vipnovel-list.php:766
1336
+ msgid "New Novel Created"
1337
+ msgstr ""
1338
+
1339
+ #: res/ums-novel-list.php:770 res/ums-rules-list.php:952
1340
+ #: res/ums-text-list.php:770 res/ums-vipnovel-list.php:770
1341
+ msgid "Failed"
1342
+ msgstr ""
1343
+
1344
+ #: res/ums-novel-list.php:770 res/ums-rules-list.php:952
1345
+ #: res/ums-text-list.php:770 res/ums-vipnovel-list.php:770
1346
+ msgid "An Error Occurred."
1347
+ msgstr ""
1348
+
1349
+ #: res/ums-novel-list.php:770 res/ums-rules-list.php:952
1350
+ #: res/ums-text-list.php:770 res/ums-vipnovel-list.php:770
1351
+ msgid "Please check 'Activity and Logging' plugin menu for details."
1352
+ msgstr ""
1353
+
1354
+ #: res/ums-novel-list.php:774 res/ums-text-list.php:774
1355
+ #: res/ums-vipnovel-list.php:774
1356
+ msgid "No Change - No New Novel Created"
1357
+ msgstr ""
1358
+
1359
+ #: res/ums-novel-list.php:774 res/ums-rules-list.php:956
1360
+ #: res/ums-text-list.php:774 res/ums-vipnovel-list.php:774
1361
+ msgid "Possible reasons:"
1362
+ msgstr ""
1363
+
1364
+ #: res/ums-novel-list.php:780 res/ums-text-list.php:780
1365
+ #: res/ums-vipnovel-list.php:780
1366
+ msgid ""
1367
+ "Already all web novel are published that match your search and web novels "
1368
+ "will be published when new content will be available"
1369
+ msgstr ""
1370
+
1371
+ #: res/ums-novel-list.php:781 res/ums-rules-list.php:963
1372
+ #: res/ums-text-list.php:781 res/ums-vipnovel-list.php:781
1373
+ msgid "Some restrictions you defined in the plugin's 'Main Settings'"
1374
+ msgstr ""
1375
+
1376
+ #: res/ums-novel-list.php:781 res/ums-text-list.php:781
1377
+ #: res/ums-vipnovel-list.php:781
1378
+ msgid ""
1379
+ "example: 'Minimum Content Word Count', 'Maximum Content Word Count', "
1380
+ "'Minimum Title Word Count', 'Maximum Title Word Count', 'Banned Words List', "
1381
+ "'Reuired Words List', 'Skip Novel Without Images'"
1382
+ msgstr ""
1383
+
1384
+ #: res/ums-novel-list.php:781 res/ums-text-list.php:781
1385
+ #: res/ums-vipnovel-list.php:781
1386
+ msgid "prevent posting of new web novels."
1387
+ msgstr ""
1388
+
1389
+ #: res/ums-novel-list.php:1146 res/ums-rules-list.php:1353
1390
+ #: res/ums-text-list.php:1145 res/ums-vipnovel-list.php:1146
1391
+ msgid "Rule"
1392
+ msgstr ""
1393
+
1394
+ #: res/ums-novel-list.php:1157 res/ums-rules-list.php:1364
1395
+ #: res/ums-text-list.php:1156 res/ums-vipnovel-list.php:1157
1396
+ msgid "Reverse Scraping (Start With Oldest Chapters)"
1397
+ msgstr ""
1398
+
1399
+ #: res/ums-novel-list.php:1171 res/ums-text-list.php:1170
1400
+ #: res/ums-vipnovel-list.php:1171
1401
+ msgid "Set a maximum number of web novel to scrape. This value is optional."
1402
+ msgstr ""
1403
+
1404
+ #: res/ums-novel-list.php:1174 res/ums-text-list.php:1173
1405
+ #: res/ums-vipnovel-list.php:1174
1406
+ msgid "Maximum Number Of Novel to Scrape"
1407
+ msgstr ""
1408
+
1409
+ #: res/ums-novel-list.php:1180 res/ums-rules-list.php:430
1410
+ #: res/ums-rules-list.php:1616 res/ums-text-list.php:1179
1411
+ #: res/ums-vipnovel-list.php:1180
1412
+ msgid "Miscellaneous Options:"
1413
+ msgstr ""
1414
+
1415
+ #: res/ums-novel-list.php:1186 res/ums-text-list.php:1185
1416
+ #: res/ums-vipnovel-list.php:1186
1417
+ msgid "Additional Novel Genre"
1418
+ msgstr ""
1419
+
1420
+ #: res/ums-novel-list.php:1203 res/ums-text-list.php:1202
1421
+ #: res/ums-vipnovel-list.php:1203
1422
+ msgid "Do you want to automatically add web novel genres from the feed items?"
1423
+ msgstr ""
1424
+
1425
+ #: res/ums-novel-list.php:1206 res/ums-rules-list.php:1642
1426
+ #: res/ums-text-list.php:1205 res/ums-vipnovel-list.php:1206
1427
+ msgid "Auto Add Genres"
1428
+ msgstr ""
1429
+
1430
+ #: res/ums-novel-list.php:1225 res/ums-text-list.php:1224
1431
+ #: res/ums-vipnovel-list.php:1225
1432
+ msgid "Do you want to automatically add web novel tags from the feed items?"
1433
+ msgstr ""
1434
+
1435
+ #: res/ums-novel-list.php:1228 res/ums-text-list.php:1227
1436
+ #: res/ums-vipnovel-list.php:1228
1437
+ msgid "Auto Add Novel Tags"
1438
+ msgstr ""
1439
+
1440
+ #: res/ums-novel-list.php:1255 res/ums-text-list.php:1254
1441
+ #: res/ums-vipnovel-list.php:1255
1442
+ msgid "Additional Novel Tags"
1443
+ msgstr ""
1444
+
1445
+ #: res/ums-novel-list.php:1264 res/ums-rules-list.php:1695
1446
+ #: res/ums-text-list.php:1263 res/ums-vipnovel-list.php:1264
1447
+ msgid ""
1448
+ "Do you want to try to use PhantomJS to try to parse JavaScript from crawled "
1449
+ "pages (for pages that create dynamic content, on page load, using "
1450
+ "JavaScript)? Please note that for this to work, you must have PhantomJs "
1451
+ "installed on your server. You can configure the path to PhantomJS from your "
1452
+ "server, from plugin\\'s \\'Main Settings\\'."
1453
+ msgstr ""
1454
+
1455
+ #: res/ums-novel-list.php:1267 res/ums-rules-list.php:1698
1456
+ #: res/ums-text-list.php:1266 res/ums-vipnovel-list.php:1267
1457
+ msgid "Content Scraping Method To Use"
1458
+ msgstr ""
1459
+
1460
+ #: res/ums-novel-list.php:1346 res/ums-rules-list.php:1777
1461
+ #: res/ums-text-list.php:1345 res/ums-vipnovel-list.php:1346
1462
+ msgid "Headless Browser Wait Before Rendering Pages (ms)"
1463
+ msgstr ""
1464
+
1465
+ #: res/ums-novel-list.php:1358 res/ums-text-list.php:1357
1466
+ #: res/ums-vipnovel-list.php:1358
1467
+ msgid "Enable Comments For Novel"
1468
+ msgstr ""
1469
+
1470
+ #: res/ums-novel-list.php:1371 res/ums-text-list.php:1370
1471
+ #: res/ums-vipnovel-list.php:1371
1472
+ msgid ""
1473
+ "Do you want to enable pingbacks and trackbacks for the generated web novel?"
1474
+ msgstr ""
1475
+
1476
+ #: res/ums-novel-list.php:1374 res/ums-rules-list.php:1805
1477
+ #: res/ums-text-list.php:1373 res/ums-vipnovel-list.php:1374
1478
+ msgid "Enable Pingback/Trackback"
1479
+ msgstr ""
1480
+
1481
+ #: res/ums-novel-list.php:1390 res/ums-text-list.php:1389
1482
+ #: res/ums-vipnovel-list.php:1390
1483
+ msgid "Get Publish Date From Novel"
1484
+ msgstr ""
1485
+
1486
+ #: res/ums-novel-list.php:1406 res/ums-rules-list.php:1837
1487
+ #: res/ums-text-list.php:1405 res/ums-vipnovel-list.php:1406
1488
+ msgid "Global Chapter Warning Message"
1489
+ msgstr ""
1490
+
1491
+ #: res/ums-novel-list.php:1418 res/ums-text-list.php:1417
1492
+ #: res/ums-vipnovel-list.php:1418
1493
+ msgid "First Chapter Slug"
1494
+ msgstr ""
1495
+
1496
+ #: res/ums-novel-list.php:1429 res/ums-rules-list.php:1847
1497
+ #: res/ums-text-list.php:1428 res/ums-vipnovel-list.php:1429
1498
+ msgid ""
1499
+ "Do you want to automatically translate generated content using Google "
1500
+ "Translate? If set, this will overwrite the \\'Automatically Translate "
1501
+ "Content To\\' option from plugin\\'s \\'Main Settings\\'."
1502
+ msgstr ""
1503
+
1504
+ #: res/ums-novel-list.php:1432 res/ums-rules-list.php:1850
1505
+ #: res/ums-text-list.php:1431 res/ums-vipnovel-list.php:1432
1506
+ msgid "Automatically Translate Content To"
1507
+ msgstr ""
1508
+
1509
+ #: res/ums-novel-list.php:1475 res/ums-rules-list.php:1893
1510
+ #: res/ums-text-list.php:1474 res/ums-vipnovel-list.php:1475
1511
+ msgid "Do you want to not translate web novel titles?"
1512
+ msgstr ""
1513
+
1514
+ #: res/ums-novel-list.php:1478 res/ums-rules-list.php:1896
1515
+ #: res/ums-text-list.php:1477 res/ums-vipnovel-list.php:1478
1516
+ msgid "Do Not Translate Title"
1517
+ msgstr ""
1518
+
1519
+ #: res/ums-novel-list.php:1506 res/ums-text-list.php:1505
1520
+ #: res/ums-vipnovel-list.php:1506
1521
+ msgid "Novels Generated:"
1522
+ msgstr ""
1523
+
1524
+ #: res/ums-novel-list.php:1508 res/ums-text-list.php:1507
1525
+ #: res/ums-vipnovel-list.php:1508
1526
+ msgid "View Generated Novels"
1527
+ msgstr ""
1528
+
1529
+ #: res/ums-novel-list.php:1510 res/ums-rules-list.php:1928
1530
+ #: res/ums-text-list.php:1509 res/ums-vipnovel-list.php:1510
1531
+ msgid "Last Run: "
1532
+ msgstr ""
1533
+
1534
+ #: res/ums-novel-list.php:1516 res/ums-rules-list.php:1934
1535
+ #: res/ums-text-list.php:1515 res/ums-vipnovel-list.php:1516
1536
+ msgid "Next Run: "
1537
+ msgstr ""
1538
+
1539
+ #: res/ums-novel-list.php:1527 res/ums-rules-list.php:1945
1540
+ #: res/ums-text-list.php:1526 res/ums-vipnovel-list.php:1527
1541
+ msgid "WP-CRON Disabled. Rules will not automatically run!"
1542
+ msgstr ""
1543
+
1544
+ #: res/ums-novel-list.php:1544 res/ums-rules-list.php:1962
1545
+ #: res/ums-text-list.php:1543 res/ums-vipnovel-list.php:1544
1546
+ msgctxt "Date Time Format1"
1547
+ msgid "Y-m-d H:i:s"
1548
+ msgstr ""
1549
+
1550
+ #: res/ums-novel-list.php:1560 res/ums-rules-list.php:1978
1551
+ #: res/ums-text-list.php:1559 res/ums-vipnovel-list.php:1560
1552
+ msgid "Rule Disabled"
1553
+ msgstr ""
1554
+
1555
+ #: res/ums-novel-list.php:1563 res/ums-rules-list.php:1981
1556
+ #: res/ums-text-list.php:1562 res/ums-vipnovel-list.php:1563
1557
+ msgid "Local Time: "
1558
+ msgstr ""
1559
+
1560
+ #: res/ums-novel-list.php:1599 res/ums-text-list.php:1598
1561
+ #: res/ums-vipnovel-list.php:1599
1562
+ msgid "Move All Novels To Trash"
1563
+ msgstr ""
1564
+
1565
+ #: res/ums-novel-list.php:1600 res/ums-text-list.php:1599
1566
+ #: res/ums-vipnovel-list.php:1600
1567
+ msgid "Permanently Delete All Novels"
1568
+ msgstr ""
1569
+
1570
+ #: res/ums-rules-list.php:31
1571
+ msgid "FanFox.net Manga Scraper"
1572
+ msgstr ""
1573
+
1574
+ #: res/ums-rules-list.php:49
1575
+ msgid ""
1576
+ "This is a demo version of the \"Ultimate Web Novel And Manga Scraper\" "
1577
+ "plugin, you will have access to a limited feature set only (maximum scraped "
1578
+ "chapter count limited to 3), manga count limited to 1). To gain access to "
1579
+ "the full feature set of the plugin, please purchase it"
1580
+ msgstr ""
1581
+
1582
+ #: res/ums-rules-list.php:72
1583
+ msgid "Manga URL / Search Keyword"
1584
+ msgstr ""
1585
+
1586
+ #: res/ums-rules-list.php:76
1587
+ msgid ""
1588
+ "Add the URL of the manga or a search keyword. Example manga URL: https://"
1589
+ "fanfox.net/manga/onepunch_man/ If you want to query all results returned by "
1590
+ "the advanced search setup, you can enter here a * (star symbol). You can "
1591
+ "also add a comma separated list of URLs or keywords."
1592
+ msgstr ""
1593
+
1594
+ #: res/ums-rules-list.php:100
1595
+ msgid ""
1596
+ "Number of chapters to scrape from each manga is listed and scraped by this "
1597
+ "rule."
1598
+ msgstr ""
1599
+
1600
+ #: res/ums-rules-list.php:115
1601
+ msgid "Manga Author"
1602
+ msgstr ""
1603
+
1604
+ #: res/ums-rules-list.php:118
1605
+ msgid ""
1606
+ "Select the author that you want to assign for the automatically generated "
1607
+ "manga."
1608
+ msgstr ""
1609
+
1610
+ #: res/ums-rules-list.php:148
1611
+ msgid "The number of manga this rule has generated so far."
1612
+ msgstr ""
1613
+
1614
+ #: res/ums-rules-list.php:233 res/ums-rules-list.php:1374
1615
+ msgid "Advanced Search Options:"
1616
+ msgstr ""
1617
+
1618
+ #: res/ums-rules-list.php:240 res/ums-rules-list.php:1378
1619
+ msgid "Select the search result type to query."
1620
+ msgstr ""
1621
+
1622
+ #: res/ums-rules-list.php:244
1623
+ msgid "Search Result Type:"
1624
+ msgstr ""
1625
+
1626
+ #: res/ums-rules-list.php:247 res/ums-rules-list.php:356
1627
+ #: res/ums-rules-list.php:373 res/ums-rules-list.php:393
1628
+ #: res/ums-rules-list.php:1389 res/ums-rules-list.php:1505
1629
+ #: res/ums-rules-list.php:1532 res/ums-rules-list.php:1573
1630
+ msgid "Any"
1631
+ msgstr ""
1632
+
1633
+ #: res/ums-rules-list.php:248 res/ums-rules-list.php:1394
1634
+ msgid "Manga"
1635
+ msgstr ""
1636
+
1637
+ #: res/ums-rules-list.php:249 res/ums-rules-list.php:1399
1638
+ msgid "Chinese"
1639
+ msgstr ""
1640
+
1641
+ #: res/ums-rules-list.php:250 res/ums-rules-list.php:1404
1642
+ msgid "Korean"
1643
+ msgstr ""
1644
+
1645
+ #: res/ums-rules-list.php:259 res/ums-rules-list.php:1411
1646
+ msgid "Select the manga author you wish to query."
1647
+ msgstr ""
1648
+
1649
+ #: res/ums-rules-list.php:263
1650
+ msgid "Search Manga Author:"
1651
+ msgstr ""
1652
+
1653
+ #: res/ums-rules-list.php:272 res/ums-rules-list.php:1423
1654
+ msgid "Select the manga artist you wish to query."
1655
+ msgstr ""
1656
+
1657
+ #: res/ums-rules-list.php:276
1658
+ msgid "Search Manga Artist:"
1659
+ msgstr ""
1660
+
1661
+ #: res/ums-rules-list.php:285
1662
+ msgid "Select the manga genres you wish to query."
1663
+ msgstr ""
1664
+
1665
+ #: res/ums-rules-list.php:289
1666
+ msgid "Search Manga Genres:"
1667
+ msgstr ""
1668
+
1669
+ #: res/ums-rules-list.php:298
1670
+ msgid "Select the manga genres you wish to exclude."
1671
+ msgstr ""
1672
+
1673
+ #: res/ums-rules-list.php:302
1674
+ msgid "Exclude Manga Genres:"
1675
+ msgstr ""
1676
+
1677
+ #: res/ums-rules-list.php:311 res/ums-rules-list.php:1459
1678
+ msgid "Set a release year to query manga before it."
1679
+ msgstr ""
1680
+
1681
+ #: res/ums-rules-list.php:315
1682
+ msgid "Manga Release Year Before:"
1683
+ msgstr ""
1684
+
1685
+ #: res/ums-rules-list.php:324 res/ums-rules-list.php:1471
1686
+ msgid "Set a release year to query manga after it."
1687
+ msgstr ""
1688
+
1689
+ #: res/ums-rules-list.php:328
1690
+ msgid "Manga Release Year After:"
1691
+ msgstr ""
1692
+
1693
+ #: res/ums-rules-list.php:337 res/ums-rules-list.php:1483
1694
+ msgid "Set a minimum rating for the queried manga."
1695
+ msgstr ""
1696
+
1697
+ #: res/ums-rules-list.php:341
1698
+ msgid "Minimum Manga Rating:"
1699
+ msgstr ""
1700
+
1701
+ #: res/ums-rules-list.php:350 res/ums-rules-list.php:1495
1702
+ msgid "Do you want to search only completed manga?"
1703
+ msgstr ""
1704
+
1705
+ #: res/ums-rules-list.php:354
1706
+ msgid "Search Completed Manga:"
1707
+ msgstr ""
1708
+
1709
+ #: res/ums-rules-list.php:357 res/ums-rules-list.php:1510
1710
+ msgid "Completed"
1711
+ msgstr ""
1712
+
1713
+ #: res/ums-rules-list.php:358 res/ums-rules-list.php:1515
1714
+ msgid "Ongoing"
1715
+ msgstr ""
1716
+
1717
+ #: res/ums-rules-list.php:367 res/ums-rules-list.php:1522
1718
+ msgid "Set the sorting of the manga results?"
1719
+ msgstr ""
1720
+
1721
+ #: res/ums-rules-list.php:371
1722
+ msgid "Results Sorting:"
1723
+ msgstr ""
1724
+
1725
+ #: res/ums-rules-list.php:374 res/ums-rules-list.php:1537
1726
+ msgid "Name"
1727
+ msgstr ""
1728
+
1729
+ #: res/ums-rules-list.php:375 res/ums-rules-list.php:1542
1730
+ msgid "Rating"
1731
+ msgstr ""
1732
+
1733
+ #: res/ums-rules-list.php:376 res/ums-rules-list.php:1547
1734
+ msgid "Views"
1735
+ msgstr ""
1736
+
1737
+ #: res/ums-rules-list.php:377 res/ums-rules-list.php:1552
1738
+ msgid "Chapters"
1739
+ msgstr ""
1740
+
1741
+ #: res/ums-rules-list.php:378 res/ums-rules-list.php:1557
1742
+ msgid "Latest Chapter"
1743
+ msgstr ""
1744
+
1745
+ #: res/ums-rules-list.php:387 res/ums-rules-list.php:1563
1746
+ msgid "Select results ordering type."
1747
+ msgstr ""
1748
+
1749
+ #: res/ums-rules-list.php:391
1750
+ msgid "Results Ordering:"
1751
+ msgstr ""
1752
+
1753
+ #: res/ums-rules-list.php:394 res/ums-rules-list.php:1578
1754
+ msgid "Ascending"
1755
+ msgstr ""
1756
+
1757
+ #: res/ums-rules-list.php:395 res/ums-rules-list.php:1583
1758
+ msgid "Descending"
1759
+ msgstr ""
1760
+
1761
+ #: res/ums-rules-list.php:404
1762
+ msgid "Set the maximum manga count to scrape. This value is optional."
1763
+ msgstr ""
1764
+
1765
+ #: res/ums-rules-list.php:408
1766
+ msgid "Maximum Number Of Manga to Scrape:"
1767
+ msgstr ""
1768
+
1769
+ #: res/ums-rules-list.php:418 res/ums-rules-list.php:1602
1770
+ msgid ""
1771
+ "Do you want to remember last posted item and continue search from it the "
1772
+ "next time the importing rule runs?"
1773
+ msgstr ""
1774
+
1775
+ #: res/ums-rules-list.php:422
1776
+ msgid ""
1777
+ "Cache Items For Continuous Posting (disable to get first results page only):"
1778
+ msgstr ""
1779
+
1780
+ #: res/ums-rules-list.php:437 res/ums-rules-list.php:1619
1781
+ msgid ""
1782
+ "Select the manga genre that you want for the automatically generated manga "
1783
+ "to have."
1784
+ msgstr ""
1785
+
1786
+ #: res/ums-rules-list.php:441
1787
+ msgid "Additional Manga Genre:"
1788
+ msgstr ""
1789
+
1790
+ #: res/ums-rules-list.php:464
1791
+ msgid "Do you want to automatically add manga genres from the manga items?"
1792
+ msgstr ""
1793
+
1794
+ #: res/ums-rules-list.php:472 res/ums-rules-list.php:488
1795
+ #: res/ums-rules-list.php:1655 res/ums-rules-list.php:1677
1796
+ msgid "Manga Genres"
1797
+ msgstr ""
1798
+
1799
+ #: res/ums-rules-list.php:480
1800
+ msgid "Do you want to automatically add manga tags from the manga items?"
1801
+ msgstr ""
1802
+
1803
+ #: res/ums-rules-list.php:484
1804
+ msgid "Auto Add Manga Tags:"
1805
+ msgstr ""
1806
+
1807
+ #: res/ums-rules-list.php:496 res/ums-rules-list.php:1683
1808
+ msgid ""
1809
+ "Select the manga tags that you want for the automatically generated manga to "
1810
+ "have."
1811
+ msgstr ""
1812
+
1813
+ #: res/ums-rules-list.php:500
1814
+ msgid "Additional Manga Tags:"
1815
+ msgstr ""
1816
+
1817
+ #: res/ums-rules-list.php:553 res/ums-rules-list.php:1786
1818
+ msgid "Do you want to enable comments for the generated manga?"
1819
+ msgstr ""
1820
+
1821
+ #: res/ums-rules-list.php:557
1822
+ msgid "Enable Comments For Manga:"
1823
+ msgstr ""
1824
+
1825
+ #: res/ums-rules-list.php:570
1826
+ msgid "Do you want to enable pingbacks/trackbacks for the generated manga?"
1827
+ msgstr ""
1828
+
1829
+ #: res/ums-rules-list.php:587 res/ums-rules-list.php:1818
1830
+ msgid "Do you want to get the publish date from the source manga?"
1831
+ msgstr ""
1832
+
1833
+ #: res/ums-rules-list.php:591
1834
+ msgid "Get Publish Date From Manga:"
1835
+ msgstr ""
1836
+
1837
+ #: res/ums-rules-list.php:603 res/ums-rules-list.php:1834
1838
+ msgid "Set a global chapter warning message to display on the scraped manga."
1839
+ msgstr ""
1840
+
1841
+ #: res/ums-rules-list.php:708 res/ums-rules-list.php:2017
1842
+ msgid "Move All Manga To Trash"
1843
+ msgstr ""
1844
+
1845
+ #: res/ums-rules-list.php:709 res/ums-rules-list.php:2018
1846
+ msgid "Permanently Delete All Manga"
1847
+ msgstr ""
1848
+
1849
+ #: res/ums-rules-list.php:948
1850
+ msgid "New Manga Created"
1851
+ msgstr ""
1852
+
1853
+ #: res/ums-rules-list.php:956
1854
+ msgid "No Change - No New Manga Created"
1855
+ msgstr ""
1856
+
1857
+ #: res/ums-rules-list.php:962
1858
+ msgid ""
1859
+ "Already all manga are published that match your search and manga will be "
1860
+ "manga when new content will be available"
1861
+ msgstr ""
1862
+
1863
+ #: res/ums-rules-list.php:963
1864
+ msgid ""
1865
+ "example: 'Minimum Content Word Count', 'Maximum Content Word Count', "
1866
+ "'Minimum Title Word Count', 'Maximum Title Word Count', 'Banned Words List', "
1867
+ "'Reuired Words List', 'Skip Manga Without Images'"
1868
+ msgstr ""
1869
+
1870
+ #: res/ums-rules-list.php:963
1871
+ msgid "prevent posting of new manga."
1872
+ msgstr ""
1873
+
1874
+ #: res/ums-rules-list.php:1381
1875
+ msgid "Search Result Type"
1876
+ msgstr ""
1877
+
1878
+ #: res/ums-rules-list.php:1414
1879
+ msgid "Search Manga Author"
1880
+ msgstr ""
1881
+
1882
+ #: res/ums-rules-list.php:1426
1883
+ msgid "Search Manga Artist"
1884
+ msgstr ""
1885
+
1886
+ #: res/ums-rules-list.php:1435
1887
+ msgid ""
1888
+ "Select the manga genre you wish to query. You can enter a comma separated "
1889
+ "list of genres. Valid genres are: Action, Adult, Adventure, Comedy, "
1890
+ "Doujinshi, Drama, Ecchi, Fantasy, Gender Bender, Harem, Historical, "
1891
+ "Horror, Josei, Martial Arts, Mature, Mecha, Mystery, One Shot, "
1892
+ "Psychological, Romance, School Life, Sci-fi, Seinen, Shoujo, Shoujo "
1893
+ "Ai, Shounen, Shounen Ai, Slice of Life, Smut, Sports, Supernatural, "
1894
+ "Tragedy, Webtoons, Yaoi, Yuri"
1895
+ msgstr ""
1896
+
1897
+ #: res/ums-rules-list.php:1438
1898
+ msgid "Include Manga Genres"
1899
+ msgstr ""
1900
+
1901
+ #: res/ums-rules-list.php:1447
1902
+ msgid ""
1903
+ "Select the manga genre you wish to exclude. You can enter a comma separated "
1904
+ "list of genres. Valid genres are: Action, Adult, Adventure, Comedy, "
1905
+ "Doujinshi, Drama, Ecchi, Fantasy, Gender Bender, Harem, Historical, "
1906
+ "Horror, Josei, Martial Arts, Mature, Mecha, Mystery, One Shot, "
1907
+ "Psychological, Romance, School Life, Sci-fi, Seinen, Shoujo, Shoujo "
1908
+ "Ai, Shounen, Shounen Ai, Slice of Life, Smut, Sports, Supernatural, "
1909
+ "Tragedy, Webtoons, Yaoi, Yuri"
1910
+ msgstr ""
1911
+
1912
+ #: res/ums-rules-list.php:1450
1913
+ msgid "Exclude Manga Genres"
1914
+ msgstr ""
1915
+
1916
+ #: res/ums-rules-list.php:1462
1917
+ msgid "Manga Release Year Before"
1918
+ msgstr ""
1919
+
1920
+ #: res/ums-rules-list.php:1474
1921
+ msgid "Manga Release Year After"
1922
+ msgstr ""
1923
+
1924
+ #: res/ums-rules-list.php:1486
1925
+ msgid "Minimum Manga Rating"
1926
+ msgstr ""
1927
+
1928
+ #: res/ums-rules-list.php:1498
1929
+ msgid "Search Completed Manga"
1930
+ msgstr ""
1931
+
1932
+ #: res/ums-rules-list.php:1525
1933
+ msgid "Result Sorting"
1934
+ msgstr ""
1935
+
1936
+ #: res/ums-rules-list.php:1566
1937
+ msgid "Results Ordering"
1938
+ msgstr ""
1939
+
1940
+ #: res/ums-rules-list.php:1590
1941
+ msgid "Set a maximum number of manga to scrape. This value is optional."
1942
+ msgstr ""
1943
+
1944
+ #: res/ums-rules-list.php:1593
1945
+ msgid "Maximum Number Of Manga to Scrape"
1946
+ msgstr ""
1947
+
1948
+ #: res/ums-rules-list.php:1605
1949
+ msgid ""
1950
+ "Cache Items For Continuous Posting (disable to get first results page only)"
1951
+ msgstr ""
1952
+
1953
+ #: res/ums-rules-list.php:1622
1954
+ msgid "Additional Manga Genre"
1955
+ msgstr ""
1956
+
1957
+ #: res/ums-rules-list.php:1639
1958
+ msgid "Do you want to automatically add manga genres from the feed items?"
1959
+ msgstr ""
1960
+
1961
+ #: res/ums-rules-list.php:1661
1962
+ msgid "Do you want to automatically add manga tags from the feed items?"
1963
+ msgstr ""
1964
+
1965
+ #: res/ums-rules-list.php:1664
1966
+ msgid "Auto Add Manga Tags"
1967
+ msgstr ""
1968
+
1969
+ #: res/ums-rules-list.php:1686
1970
+ msgid "Additional Manga Tags"
1971
+ msgstr ""
1972
+
1973
+ #: res/ums-rules-list.php:1789
1974
+ msgid "Enable Comments For Manga"
1975
+ msgstr ""
1976
+
1977
+ #: res/ums-rules-list.php:1802
1978
+ msgid "Do you want to enable pingbacks and trackbacks for the generated manga?"
1979
+ msgstr ""
1980
+
1981
+ #: res/ums-rules-list.php:1821
1982
+ msgid "Get Publish Date From Manga"
1983
+ msgstr ""
1984
+
1985
+ #: res/ums-rules-list.php:1924
1986
+ msgid "Manga Generated:"
1987
+ msgstr ""
1988
+
1989
+ #: res/ums-rules-list.php:1926
1990
+ msgid "View Generated Manga"
1991
+ msgstr ""
1992
+
1993
+ #: res/ums-text-list.php:30
1994
+ msgid "WuxiaWorld.site Novels Scraper"
1995
+ msgstr ""
1996
+
1997
+ #: res/ums-text-list.php:75
1998
+ msgid ""
1999
+ "Add the URL of the Web Novel (or a comma separated list of Web Novel URLs) "
2000
+ "or a keyword search. Example Web Novel URL: https://wuxiaworld.site/novel/"
2001
+ "super-gene-webnovel-read/ - you can also add a comma separated list of "
2002
+ "similar URLs. If you want to query all web novels, you can enter here a * "
2003
+ "(star symbol)."
2004
+ msgstr ""
2005
+
2006
+ #: res/ums-vipnovel-list.php:30
2007
+ msgid "NewNovel.org Novels Scraper"
2008
+ msgstr ""
2009
+
2010
+ #: res/ums-vipnovel-list.php:75
2011
+ msgid ""
2012
+ "Add the URL of the Web Novel (or a comma separated list of Web Novel URLs) "
2013
+ "or a keyword search. Example Web Novel URL: https://newnovel.org/novel/ghost-"
2014
+ "emperor-wild-wife-dandy-eldest-miss/ - you can also add a comma separated "
2015
+ "list of similar URLs. If you want to query all web novels, you can enter "
2016
+ "here a * (star symbol)."
2017
+ msgstr ""
2018
+
2019
+ #: ultimate-manga-scraper.php:47
2020
+ msgid "Afrikaans (Google Translate)"
2021
+ msgstr ""
2022
+
2023
+ #: ultimate-manga-scraper.php:48
2024
+ msgid "Albanian (Google Translate)"
2025
+ msgstr ""
2026
+
2027
+ #: ultimate-manga-scraper.php:49
2028
+ msgid "Arabic (Google Translate)"
2029
+ msgstr ""
2030
+
2031
+ #: ultimate-manga-scraper.php:50
2032
+ msgid "Amharic (Google Translate)"
2033
+ msgstr ""
2034
+
2035
+ #: ultimate-manga-scraper.php:51
2036
+ msgid "Armenian (Google Translate)"
2037
+ msgstr ""
2038
+
2039
+ #: ultimate-manga-scraper.php:52
2040
+ msgid "Belarusian (Google Translate)"
2041
+ msgstr ""
2042
+
2043
+ #: ultimate-manga-scraper.php:53
2044
+ msgid "Bulgarian (Google Translate)"
2045
+ msgstr ""
2046
+
2047
+ #: ultimate-manga-scraper.php:54
2048
+ msgid "Catalan (Google Translate)"
2049
+ msgstr ""
2050
+
2051
+ #: ultimate-manga-scraper.php:55
2052
+ msgid "Chinese Simplified (Google Translate)"
2053
+ msgstr ""
2054
+
2055
+ #: ultimate-manga-scraper.php:56
2056
+ msgid "Croatian (Google Translate)"
2057
+ msgstr ""
2058
+
2059
+ #: ultimate-manga-scraper.php:57
2060
+ msgid "Czech (Google Translate)"
2061
+ msgstr ""
2062
+
2063
+ #: ultimate-manga-scraper.php:58
2064
+ msgid "Danish (Google Translate)"
2065
+ msgstr ""
2066
+
2067
+ #: ultimate-manga-scraper.php:59
2068
+ msgid "Dutch (Google Translate)"
2069
+ msgstr ""
2070
+
2071
+ #: ultimate-manga-scraper.php:60
2072
+ msgid "English (Google Translate)"
2073
+ msgstr ""
2074
+
2075
+ #: ultimate-manga-scraper.php:61
2076
+ msgid "Estonian (Google Translate)"
2077
+ msgstr ""
2078
+
2079
+ #: ultimate-manga-scraper.php:62
2080
+ msgid "Filipino (Google Translate)"
2081
+ msgstr ""
2082
+
2083
+ #: ultimate-manga-scraper.php:63
2084
+ msgid "Finnish (Google Translate)"
2085
+ msgstr ""
2086
+
2087
+ #: ultimate-manga-scraper.php:64
2088
+ msgid "French (Google Translate)"
2089
+ msgstr ""
2090
+
2091
+ #: ultimate-manga-scraper.php:65
2092
+ msgid "Galician (Google Translate)"
2093
+ msgstr ""
2094
+
2095
+ #: ultimate-manga-scraper.php:66
2096
+ msgid "German (Google Translate)"
2097
+ msgstr ""
2098
+
2099
+ #: ultimate-manga-scraper.php:67
2100
+ msgid "Greek (Google Translate)"
2101
+ msgstr ""
2102
+
2103
+ #: ultimate-manga-scraper.php:68
2104
+ msgid "Hebrew (Google Translate)"
2105
+ msgstr ""
2106
+
2107
+ #: ultimate-manga-scraper.php:69
2108
+ msgid "Hindi (Google Translate)"
2109
+ msgstr ""
2110
+
2111
+ #: ultimate-manga-scraper.php:70
2112
+ msgid "Hungarian (Google Translate)"
2113
+ msgstr ""
2114
+
2115
+ #: ultimate-manga-scraper.php:71
2116
+ msgid "Icelandic (Google Translate)"
2117
+ msgstr ""
2118
+
2119
+ #: ultimate-manga-scraper.php:72
2120
+ msgid "Indonesian (Google Translate)"
2121
+ msgstr ""
2122
+
2123
+ #: ultimate-manga-scraper.php:73
2124
+ msgid "Irish (Google Translate)"
2125
+ msgstr ""
2126
+
2127
+ #: ultimate-manga-scraper.php:74
2128
+ msgid "Italian (Google Translate)"
2129
+ msgstr ""
2130
+
2131
+ #: ultimate-manga-scraper.php:75
2132
+ msgid "Japanese (Google Translate)"
2133
+ msgstr ""
2134
+
2135
+ #: ultimate-manga-scraper.php:76
2136
+ msgid "Korean (Google Translate)"
2137
+ msgstr ""
2138
+
2139
+ #: ultimate-manga-scraper.php:77
2140
+ msgid "Latvian (Google Translate)"
2141
+ msgstr ""
2142
+
2143
+ #: ultimate-manga-scraper.php:78
2144
+ msgid "Lithuanian (Google Translate)"
2145
+ msgstr ""
2146
+
2147
+ #: ultimate-manga-scraper.php:79
2148
+ msgid "Norwegian (Google Translate)"
2149
+ msgstr ""
2150
+
2151
+ #: ultimate-manga-scraper.php:80
2152
+ msgid "Macedonian (Google Translate)"
2153
+ msgstr ""
2154
+
2155
+ #: ultimate-manga-scraper.php:81
2156
+ msgid "Malay (Google Translate)"
2157
+ msgstr ""
2158
+
2159
+ #: ultimate-manga-scraper.php:82
2160
+ msgid "Maltese (Google Translate)"
2161
+ msgstr ""
2162
+
2163
+ #: ultimate-manga-scraper.php:83
2164
+ msgid "Persian (Google Translate)"
2165
+ msgstr ""
2166
+
2167
+ #: ultimate-manga-scraper.php:84
2168
+ msgid "Polish (Google Translate)"
2169
+ msgstr ""
2170
+
2171
+ #: ultimate-manga-scraper.php:85
2172
+ msgid "Portuguese (Google Translate)"
2173
+ msgstr ""
2174
+
2175
+ #: ultimate-manga-scraper.php:86
2176
+ msgid "Romanian (Google Translate)"
2177
+ msgstr ""
2178
+
2179
+ #: ultimate-manga-scraper.php:87
2180
+ msgid "Russian (Google Translate)"
2181
+ msgstr ""
2182
+
2183
+ #: ultimate-manga-scraper.php:88
2184
+ msgid "Serbian (Google Translate)"
2185
+ msgstr ""
2186
+
2187
+ #: ultimate-manga-scraper.php:89
2188
+ msgid "Slovak (Google Translate)"
2189
+ msgstr ""
2190
+
2191
+ #: ultimate-manga-scraper.php:90
2192
+ msgid "Slovenian (Google Translate)"
2193
+ msgstr ""
2194
+
2195
+ #: ultimate-manga-scraper.php:91
2196
+ msgid "Spanish (Google Translate)"
2197
+ msgstr ""
2198
+
2199
+ #: ultimate-manga-scraper.php:92 ultimate-manga-scraper.php:147
2200
+ msgid "Swahili (Google Translate)"
2201
+ msgstr ""
2202
+
2203
+ #: ultimate-manga-scraper.php:93
2204
+ msgid "Swedish (Google Translate)"
2205
+ msgstr ""
2206
+
2207
+ #: ultimate-manga-scraper.php:94
2208
+ msgid "Thai (Google Translate)"
2209
+ msgstr ""
2210
+
2211
+ #: ultimate-manga-scraper.php:95
2212
+ msgid "Turkish (Google Translate)"
2213
+ msgstr ""
2214
+
2215
+ #: ultimate-manga-scraper.php:96
2216
+ msgid "Ukrainian (Google Translate)"
2217
+ msgstr ""
2218
+
2219
+ #: ultimate-manga-scraper.php:97
2220
+ msgid "Vietnamese (Google Translate)"
2221
+ msgstr ""
2222
+
2223
+ #: ultimate-manga-scraper.php:98
2224
+ msgid "Welsh (Google Translate)"
2225
+ msgstr ""
2226
+
2227
+ #: ultimate-manga-scraper.php:99
2228
+ msgid "Yiddish (Google Translate)"
2229
+ msgstr ""
2230
+
2231
+ #: ultimate-manga-scraper.php:100
2232
+ msgid "Tamil (Google Translate)"
2233
+ msgstr ""
2234
+
2235
+ #: ultimate-manga-scraper.php:101
2236
+ msgid "Azerbaijani (Google Translate)"
2237
+ msgstr ""
2238
+
2239
+ #: ultimate-manga-scraper.php:102
2240
+ msgid "Kannada (Google Translate)"
2241
+ msgstr ""
2242
+
2243
+ #: ultimate-manga-scraper.php:103
2244
+ msgid "Basque (Google Translate)"
2245
+ msgstr ""
2246
+
2247
+ #: ultimate-manga-scraper.php:104
2248
+ msgid "Bengali (Google Translate)"
2249
+ msgstr ""
2250
+
2251
+ #: ultimate-manga-scraper.php:105
2252
+ msgid "Latin (Google Translate)"
2253
+ msgstr ""
2254
+
2255
+ #: ultimate-manga-scraper.php:106
2256
+ msgid "Chinese Traditional (Google Translate)"
2257
+ msgstr ""
2258
+
2259
+ #: ultimate-manga-scraper.php:107
2260
+ msgid "Esperanto (Google Translate)"
2261
+ msgstr ""
2262
+
2263
+ #: ultimate-manga-scraper.php:108
2264
+ msgid "Georgian (Google Translate)"
2265
+ msgstr ""
2266
+
2267
+ #: ultimate-manga-scraper.php:109
2268
+ msgid "Telugu (Google Translate)"
2269
+ msgstr ""
2270
+
2271
+ #: ultimate-manga-scraper.php:110
2272
+ msgid "Gujarati (Google Translate)"
2273
+ msgstr ""
2274
+
2275
+ #: ultimate-manga-scraper.php:111
2276
+ msgid "Haitian Creole (Google Translate)"
2277
+ msgstr ""
2278
+
2279
+ #: ultimate-manga-scraper.php:112
2280
+ msgid "Urdu (Google Translate)"
2281
+ msgstr ""
2282
+
2283
+ #: ultimate-manga-scraper.php:114
2284
+ msgid "Burmese (Google Translate)"
2285
+ msgstr ""
2286
+
2287
+ #: ultimate-manga-scraper.php:115
2288
+ msgid "Bosnian (Google Translate)"
2289
+ msgstr ""
2290
+
2291
+ #: ultimate-manga-scraper.php:116
2292
+ msgid "Cebuano (Google Translate)"
2293
+ msgstr ""
2294
+
2295
+ #: ultimate-manga-scraper.php:117
2296
+ msgid "Chichewa (Google Translate)"
2297
+ msgstr ""
2298
+
2299
+ #: ultimate-manga-scraper.php:118
2300
+ msgid "Corsican (Google Translate)"
2301
+ msgstr ""
2302
+
2303
+ #: ultimate-manga-scraper.php:119
2304
+ msgid "Frisian (Google Translate)"
2305
+ msgstr ""
2306
+
2307
+ #: ultimate-manga-scraper.php:120
2308
+ msgid "Scottish Gaelic (Google Translate)"
2309
+ msgstr ""
2310
+
2311
+ #: ultimate-manga-scraper.php:121
2312
+ msgid "Hausa (Google Translate)"
2313
+ msgstr ""
2314
+
2315
+ #: ultimate-manga-scraper.php:122
2316
+ msgid "Hawaian (Google Translate)"
2317
+ msgstr ""
2318
+
2319
+ #: ultimate-manga-scraper.php:123
2320
+ msgid "Hmong (Google Translate)"
2321
+ msgstr ""
2322
+
2323
+ #: ultimate-manga-scraper.php:124
2324
+ msgid "Igbo (Google Translate)"
2325
+ msgstr ""
2326
+
2327
+ #: ultimate-manga-scraper.php:125
2328
+ msgid "Javanese (Google Translate)"
2329
+ msgstr ""
2330
+
2331
+ #: ultimate-manga-scraper.php:126
2332
+ msgid "Kazakh (Google Translate)"
2333
+ msgstr ""
2334
+
2335
+ #: ultimate-manga-scraper.php:127
2336
+ msgid "Khmer (Google Translate)"
2337
+ msgstr ""
2338
+
2339
+ #: ultimate-manga-scraper.php:128
2340
+ msgid "Kurdish (Google Translate)"
2341
+ msgstr ""
2342
+
2343
+ #: ultimate-manga-scraper.php:129
2344
+ msgid "Kyrgyz (Google Translate)"
2345
+ msgstr ""
2346
+
2347
+ #: ultimate-manga-scraper.php:130
2348
+ msgid "Lao (Google Translate)"
2349
+ msgstr ""
2350
+
2351
+ #: ultimate-manga-scraper.php:131
2352
+ msgid "Luxembourgish (Google Translate)"
2353
+ msgstr ""
2354
+
2355
+ #: ultimate-manga-scraper.php:132
2356
+ msgid "Malagasy (Google Translate)"
2357
+ msgstr ""
2358
+
2359
+ #: ultimate-manga-scraper.php:133
2360
+ msgid "Malayalam (Google Translate)"
2361
+ msgstr ""
2362
+
2363
+ #: ultimate-manga-scraper.php:134
2364
+ msgid "Maori (Google Translate)"
2365
+ msgstr ""
2366
+
2367
+ #: ultimate-manga-scraper.php:135
2368
+ msgid "Marathi (Google Translate)"
2369
+ msgstr ""
2370
+
2371
+ #: ultimate-manga-scraper.php:136
2372
+ msgid "Mongolian (Google Translate)"
2373
+ msgstr ""
2374
+
2375
+ #: ultimate-manga-scraper.php:137
2376
+ msgid "Nepali (Google Translate)"
2377
+ msgstr ""
2378
+
2379
+ #: ultimate-manga-scraper.php:138
2380
+ msgid "Pashto (Google Translate)"
2381
+ msgstr ""
2382
+
2383
+ #: ultimate-manga-scraper.php:139
2384
+ msgid "Punjabi (Google Translate)"
2385
+ msgstr ""
2386
+
2387
+ #: ultimate-manga-scraper.php:140
2388
+ msgid "Samoan (Google Translate)"
2389
+ msgstr ""
2390
+
2391
+ #: ultimate-manga-scraper.php:141
2392
+ msgid "Sesotho (Google Translate)"
2393
+ msgstr ""
2394
+
2395
+ #: ultimate-manga-scraper.php:142
2396
+ msgid "Shona (Google Translate)"
2397
+ msgstr ""
2398
+
2399
+ #: ultimate-manga-scraper.php:143
2400
+ msgid "Sindhi (Google Translate)"
2401
+ msgstr ""
2402
+
2403
+ #: ultimate-manga-scraper.php:144
2404
+ msgid "Sinhala (Google Translate)"
2405
+ msgstr ""
2406
+
2407
+ #: ultimate-manga-scraper.php:145
2408
+ msgid "Somali (Google Translate)"
2409
+ msgstr ""
2410
+
2411
+ #: ultimate-manga-scraper.php:146
2412
+ msgid "Sundanese (Google Translate)"
2413
+ msgstr ""
2414
+
2415
+ #: ultimate-manga-scraper.php:148
2416
+ msgid "Tajik (Google Translate)"
2417
+ msgstr ""
2418
+
2419
+ #: ultimate-manga-scraper.php:149
2420
+ msgid "Uzbek (Google Translate)"
2421
+ msgstr ""
2422
+
2423
+ #: ultimate-manga-scraper.php:150
2424
+ msgid "Xhosa (Google Translate)"
2425
+ msgstr ""
2426
+
2427
+ #: ultimate-manga-scraper.php:151
2428
+ msgid "Yoruba (Google Translate)"
2429
+ msgstr ""
2430
+
2431
+ #: ultimate-manga-scraper.php:152
2432
+ msgid "Zulu (Google Translate)"
2433
+ msgstr ""
2434
+
2435
+ #: ultimate-manga-scraper.php:154
2436
+ msgid "Assammese (Google Translate)"
2437
+ msgstr ""
2438
+
2439
+ #: ultimate-manga-scraper.php:155
2440
+ msgid "Aymara (Google Translate)"
2441
+ msgstr ""
2442
+
2443
+ #: ultimate-manga-scraper.php:156
2444
+ msgid "Bambara (Google Translate)"
2445
+ msgstr ""
2446
+
2447
+ #: ultimate-manga-scraper.php:157
2448
+ msgid "Bhojpuri (Google Translate)"
2449
+ msgstr ""
2450
+
2451
+ #: ultimate-manga-scraper.php:158
2452
+ msgid "Dhivehi (Google Translate)"
2453
+ msgstr ""
2454
+
2455
+ #: ultimate-manga-scraper.php:159
2456
+ msgid "Dogri (Google Translate)"
2457
+ msgstr ""
2458
+
2459
+ #: ultimate-manga-scraper.php:160
2460
+ msgid "Ewe (Google Translate)"
2461
+ msgstr ""
2462
+
2463
+ #: ultimate-manga-scraper.php:161
2464
+ msgid "Guarani (Google Translate)"
2465
+ msgstr ""
2466
+
2467
+ #: ultimate-manga-scraper.php:162
2468
+ msgid "Ilocano (Google Translate)"
2469
+ msgstr ""
2470
+
2471
+ #: ultimate-manga-scraper.php:163
2472
+ msgid "Kinyarwanda (Google Translate)"
2473
+ msgstr ""
2474
+
2475
+ #: ultimate-manga-scraper.php:164
2476
+ msgid "Konkani (Google Translate)"
2477
+ msgstr ""
2478
+
2479
+ #: ultimate-manga-scraper.php:165
2480
+ msgid "Krio (Google Translate)"
2481
+ msgstr ""
2482
+
2483
+ #: ultimate-manga-scraper.php:166
2484
+ msgid "Kurdish - Sorani (Google Translate)"
2485
+ msgstr ""
2486
+
2487
+ #: ultimate-manga-scraper.php:167
2488
+ msgid "Lingala (Google Translate)"
2489
+ msgstr ""
2490
+
2491
+ #: ultimate-manga-scraper.php:168
2492
+ msgid "Luganda (Google Translate)"
2493
+ msgstr ""
2494
+
2495
+ #: ultimate-manga-scraper.php:169
2496
+ msgid "Maithili (Google Translate)"
2497
+ msgstr ""
2498
+
2499
+ #: ultimate-manga-scraper.php:170
2500
+ msgid "Meiteilon (Google Translate)"
2501
+ msgstr ""
2502
+
2503
+ #: ultimate-manga-scraper.php:171
2504
+ msgid "Mizo (Google Translate)"
2505
+ msgstr ""
2506
+
2507
+ #: ultimate-manga-scraper.php:172
2508
+ msgid "Odia (Google Translate)"
2509
+ msgstr ""
2510
+
2511
+ #: ultimate-manga-scraper.php:173
2512
+ msgid "Oromo (Google Translate)"
2513
+ msgstr ""
2514
+
2515
+ #: ultimate-manga-scraper.php:174
2516
+ msgid "Quechua (Google Translate)"
2517
+ msgstr ""
2518
+
2519
+ #: ultimate-manga-scraper.php:175
2520
+ msgid "Sanskrit (Google Translate)"
2521
+ msgstr ""
2522
+
2523
+ #: ultimate-manga-scraper.php:176
2524
+ msgid "Sepedi (Google Translate)"
2525
+ msgstr ""
2526
+
2527
+ #: ultimate-manga-scraper.php:177
2528
+ msgid "Tatar (Google Translate)"
2529
+ msgstr ""
2530
+
2531
+ #: ultimate-manga-scraper.php:178
2532
+ msgid "Tigrinya (Google Translate)"
2533
+ msgstr ""
2534
+
2535
+ #: ultimate-manga-scraper.php:179
2536
+ msgid "Tsonga (Google Translate)"
2537
+ msgstr ""
2538
+
2539
+ #: ultimate-manga-scraper.php:180
2540
+ msgid "Turkmen (Google Translate)"
2541
+ msgstr ""
2542
+
2543
+ #: ultimate-manga-scraper.php:181
2544
+ msgid "Twi (Google Translate)"
2545
+ msgstr ""
2546
+
2547
+ #: ultimate-manga-scraper.php:182
2548
+ msgid "Uyghur (Google Translate)"
2549
+ msgstr ""
2550
+
2551
+ #: ultimate-manga-scraper.php:806
2552
+ #, php-format
2553
+ msgid ""
2554
+ "The plugin is not registered. Automatic updating is disabled. Please "
2555
+ "purchase a license for it from <a href=\"%s\" target=\"_blank\">here</a> and "
2556
+ "register the plugin from the 'Main Settings' menu using your purchase code. "
2557
+ "<a href=\"%s\" target=\"_blank\">How I find my purchase code?"
2558
+ msgstr ""
2559
+
2560
+ #: ultimate-manga-scraper.php:827
2561
+ msgid "Activate Plugin License"
2562
+ msgstr ""
2563
+
2564
+ #: ultimate-manga-scraper.php:839
2565
+ msgid "Main Settings"
2566
+ msgstr ""
2567
+
2568
+ #: ultimate-manga-scraper.php:844
2569
+ msgid "Manga Scraper (FanFox.net)"
2570
+ msgstr ""
2571
+
2572
+ #: ultimate-manga-scraper.php:847
2573
+ msgid "Web Novel Scraper (BoxNovel.com)"
2574
+ msgstr ""
2575
+
2576
+ #: ultimate-manga-scraper.php:850
2577
+ msgid "Web Novel Scraper (NewNovel.org)"
2578
+ msgstr ""
2579
+
2580
+ #: ultimate-manga-scraper.php:853
2581
+ msgid "Web Novel Scraper (WuxiaWorld.site)"
2582
+ msgstr ""
2583
+
2584
+ #: ultimate-manga-scraper.php:856
2585
+ msgid "Activity & Logging"
2586
+ msgstr ""
2587
+
2588
+ #: ultimate-manga-scraper.php:930
2589
+ msgid "Settings"
2590
+ msgstr ""
2591
+
2592
+ #: ultimate-manga-scraper.php:940
2593
+ msgid "ums Cron"
2594
+ msgstr ""
2595
+
2596
+ #: ultimate-manga-scraper.php:944
2597
+ msgid "Once A Minute"
2598
+ msgstr ""
2599
+
2600
+ #: ultimate-manga-scraper.php:948
2601
+ msgid "Once Weekly"
2602
+ msgstr ""
2603
+
2604
+ #: ultimate-manga-scraper.php:952
2605
+ msgid "Once Monthly"
2606
+ msgstr ""
2607
+
2608
+ #: ultimate-manga-scraper.php:9399
2609
+ msgctxt "taxonomy general name"
2610
+ msgid "Post Source"
2611
+ msgstr ""
2612
+
2613
+ #: ultimate-manga-scraper.php:9400
2614
+ msgctxt "taxonomy singular name"
2615
+ msgid "Post Source"
2616
+ msgstr ""
2617
+
2618
+ #: ultimate-manga-scraper.php:9401
2619
+ msgid "Search Post Source"
2620
+ msgstr ""
2621
+
2622
+ #: ultimate-manga-scraper.php:9402
2623
+ msgid "Popular Post Source"
2624
+ msgstr ""
2625
+
2626
+ #: ultimate-manga-scraper.php:9403
2627
+ msgid "All Post Sources"
2628
+ msgstr ""
2629
+
2630
+ #: ultimate-manga-scraper.php:9406
2631
+ msgid "Edit Post Source"
2632
+ msgstr ""
2633
+
2634
+ #: ultimate-manga-scraper.php:9407
2635
+ msgid "Update Post Source"
2636
+ msgstr ""
2637
+
2638
+ #: ultimate-manga-scraper.php:9408
2639
+ msgid "Add New Post Source"
2640
+ msgstr ""
2641
+
2642
+ #: ultimate-manga-scraper.php:9409
2643
+ msgid "New Post Source Name"
2644
+ msgstr ""
2645
+
2646
+ #: ultimate-manga-scraper.php:9410
2647
+ msgid "Separate Post Source with commas"
2648
+ msgstr ""
2649
+
2650
+ #: ultimate-manga-scraper.php:9411
2651
+ msgid "Add or remove Post Source"
2652
+ msgstr ""
2653
+
2654
+ #: ultimate-manga-scraper.php:9412
2655
+ msgid "Choose from the most used Post Source"
2656
+ msgstr ""
2657
+
2658
+ #: ultimate-manga-scraper.php:9413
2659
+ msgid "No Post Sources found."
2660
+ msgstr ""
2661
+
2662
+ #: ultimate-manga-scraper.php:9414
2663
+ msgid "Post Source"
2664
+ msgstr ""
2665
+
2666
+ #: ultimate-manga-scraper.php:9494
2667
+ msgid ""
2668
+ "Please enable curl PHP extension. Please contact your hosting provider's "
2669
+ "support to help you in this matter."
2670
+ msgstr ""
2671
+
2672
+ #: ultimate-manga-scraper.php:9499
2673
+ msgid "You are not allowed to activate plugins!"
2674
+ msgstr ""
2675
+
2676
+ #: ultimate-manga-scraper.php:9507
2677
+ #, php-format
2678
+ msgid ""
2679
+ "This plugin can not be activated because it requires a PHP version greater "
2680
+ "than %1$s. Please update your PHP version before you activate it."
2681
+ msgstr ""
2682
+
2683
+ #: ultimate-manga-scraper.php:9513
2684
+ #, php-format
2685
+ msgid ""
2686
+ "This plugin can not be activated because it requires a WordPress version "
2687
+ "greater than %1$s. Please go to Dashboard -> Updates to get the latest "
2688
+ "version of WordPress."
2689
+ msgstr ""
2690
+
2691
+ #: update-checker/Puc/v4/Plugin/UpdateChecker.php:363
2692
+ #: update-checker/Puc/v4p8/Plugin/Ui.php:128
2693
+ msgid "Check for updates"
2694
+ msgstr ""
2695
+
2696
+ #: update-checker/Puc/v4/Plugin/UpdateChecker.php:409
2697
+ msgid "This plugin is up to date."
2698
+ msgstr ""
2699
+
2700
+ #: update-checker/Puc/v4/Plugin/UpdateChecker.php:411
2701
+ msgid "A new version of this plugin is available."
2702
+ msgstr ""
2703
+
2704
+ #: update-checker/Puc/v4/Plugin/UpdateChecker.php:413
2705
+ #: update-checker/Puc/v4p8/Plugin/Ui.php:223
2706
+ #, php-format
2707
+ msgid "Unknown update checker status \"%s\""
2708
+ msgstr ""
2709
+
2710
+ #: update-checker/Puc/v4/Vcs/PluginUpdateChecker.php:83
2711
+ #: update-checker/Puc/v4p8/Vcs/PluginUpdateChecker.php:98
2712
+ msgid "There is no changelog available."
2713
+ msgstr ""
2714
+
2715
+ #: update-checker/Puc/v4p8/Plugin/Ui.php:54
2716
+ msgid "View details"
2717
+ msgstr ""
2718
+
2719
+ #: update-checker/Puc/v4p8/Plugin/Ui.php:77
2720
+ #, php-format
2721
+ msgid "More information about %s"
2722
+ msgstr ""
2723
+
2724
+ #: update-checker/Puc/v4p8/Plugin/Ui.php:213
2725
+ #, php-format
2726
+ msgctxt "the plugin title"
2727
+ msgid "The %s plugin is up to date."
2728
+ msgstr ""
2729
+
2730
+ #: update-checker/Puc/v4p8/Plugin/Ui.php:215
2731
+ #, php-format
2732
+ msgctxt "the plugin title"
2733
+ msgid "A new version of the %s plugin is available."
2734
+ msgstr ""
2735
+
2736
+ #: update-checker/Puc/v4p8/Plugin/Ui.php:217
2737
+ #, php-format
2738
+ msgctxt "the plugin title"
2739
+ msgid "Could not determine if updates are available for %s."
2740
+ msgstr ""
2741
+
2742
+ #. Plugin Name of the plugin/theme
2743
+ msgid "Ultimate Web Novel & Manga Scraper"
2744
+ msgstr ""
2745
+
2746
+ #. Plugin URI of the plugin/theme
2747
+ msgid "//1.envato.market/coderevolution"
2748
+ msgstr ""
2749
+
2750
+ #. Description of the plugin/theme
2751
+ msgid "This plugin will scrape manga for you, day and night"
2752
+ msgstr ""
2753
+
2754
+ #. Author of the plugin/theme
2755
+ msgid "CodeRevolution"
2756
+ msgstr ""
2757
+
2758
+ #. Author URI of the plugin/theme
2759
+ msgid "//coderevolution.ro"
2760
+ msgstr ""
readme.txt ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Ultimate Web Novel & Manga Scraper Plugin for WordPress ===
2
+ Contributors: coderevolution
3
+ Donate link: https://www.patreon.com/coderevolution
4
+ Tags: popup, subscribers
5
+ Requires at least: 4.0
6
+ Tested up to: 6.8.0
7
+ Stable tag: 6.7.1
8
+ License: Regular/Extended License
9
+
10
+ Another plugin made by CodeRevolution.
11
+
12
+ == Description ==
13
+
14
+ Nice to meet you! My name is Szabi from CodeRevolution. We are a team of a few people who work FULL TIME as freelancers, making plugins and scripts for Envato Market. Because we dedicate all our time to this, our items are filled with passion, and we can offer premium support to our customers all the time! Feel free to ask in advance any question you might have about our items! If you buy any of our items, you will have support in case something is not working as specified, related to our item, according to Envato Support Policy.
15
+ Hope that you enjoy my work!
16
+
17
+ == Installation ==
18
+
19
+ 1. Upload the plugin files to the `/wp-content/plugins/plugin-name` directory, or install the plugin through the WordPress plugins screen directly.
20
+ 2. Activate the plugin through the 'Plugins' screen in WordPress
21
+ 3. Use the Settings->Plugin Name screen to configure the plugin
22
+
23
+
24
+ == Frequently Asked Questions ==
25
+
26
+ = How do I update this plugin? =
27
+
28
+ This plugin supports automatical updating. Please click "Check for updates" for this plugin in the WordPress plugins control panel. If a new version is available you will be prompted. Click "Update now" to finish the updating process.
29
+
30
+ == Changelog ==
31
+
32
+ = 1.0 =
33
+ For a detailed changelog, please check the plugin's CodeCanyon page, from here (search for the plugin, from our portfolio): //1.envato.market/coderevolutionplugins
res/ImageResize/ImageResize.php ADDED
@@ -0,0 +1,717 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Eventviva;
4
+
5
+ /**
6
+ * PHP class to resize and scale images
7
+ */
8
+ class ImageResize
9
+ {
10
+ const CROPTOP = 1;
11
+ const CROPCENTRE = 2;
12
+ const CROPCENTER = 2;
13
+ const CROPBOTTOM = 3;
14
+ const CROPLEFT = 4;
15
+ const CROPRIGHT = 5;
16
+ const CROPTOPCENTER = 6;
17
+
18
+ public $quality_jpg = 85;
19
+ public $quality_webp = 85;
20
+ public $quality_png = 6;
21
+ public $quality_truecolor = true;
22
+
23
+ public $interlace = 1;
24
+
25
+ public $source_type;
26
+
27
+ protected $source_image;
28
+
29
+ protected $original_w;
30
+ protected $original_h;
31
+
32
+ protected $dest_x = 0;
33
+ protected $dest_y = 0;
34
+
35
+ protected $source_x;
36
+ protected $source_y;
37
+
38
+ protected $dest_w;
39
+ protected $dest_h;
40
+
41
+ protected $source_w;
42
+ protected $source_h;
43
+
44
+ protected $source_info;
45
+
46
+ /**
47
+ * Create instance from a strng
48
+ *
49
+ * @param string $image_data
50
+ * @return ImageResize
51
+ * @throws ImageResizeException
52
+ */
53
+ public static function createFromString($image_data)
54
+ {
55
+ if (empty($image_data) || $image_data === null) {
56
+ throw new ImageResizeException('image_data must not be empty');
57
+ }
58
+ $resize = new self('data://application/octet-stream;base64,' . base64_encode($image_data));
59
+ return $resize;
60
+ }
61
+
62
+ /**
63
+ * Loads image source and its properties to the instanciated object
64
+ *
65
+ * @param string $filename
66
+ * @return ImageResize
67
+ * @throws ImageResizeException
68
+ */
69
+ public function __construct($filename)
70
+ {
71
+ if (!defined('IMAGETYPE_WEBP')) {
72
+ define('IMAGETYPE_WEBP', 18);
73
+ }
74
+ $isAscii = true;
75
+ $len = strlen($filename);
76
+ for ($i = 0; $i < $len; $i++)
77
+ {
78
+ if (ord($filename[$i]) > 127)
79
+ {
80
+ $isAscii = false;
81
+ break;
82
+ }
83
+ }
84
+ if($isAscii == true)
85
+ {
86
+ global $wp_filesystem;
87
+ if ( ! is_a( $wp_filesystem, 'WP_Filesystem_Base') ){
88
+ include_once(ABSPATH . 'wp-admin/includes/file.php');$creds = request_filesystem_credentials( site_url() );
89
+ wp_filesystem($creds);
90
+ }
91
+ if ($filename === null || empty($filename) || (substr($filename, 0, 7) !== 'data://' && !$wp_filesystem->is_file($filename))) {
92
+ throw new ImageResizeException('File does not exist');
93
+ }
94
+ if(!function_exists('finfo_open'))
95
+ {
96
+ throw new ImageResizeException('finfo_open does not exist, cannot resize image.');
97
+ }
98
+ $finfo = finfo_open(FILEINFO_MIME_TYPE);
99
+ if (strstr(finfo_file($finfo, $filename), 'image') === false) {
100
+ throw new ImageResizeException('Unsupported file type (' . $filename . '): ' . finfo_file($finfo, $filename));
101
+ }
102
+ }
103
+
104
+ if (!$image_info = getimagesize($filename, $this->source_info)) {
105
+ $image_info = getimagesize($filename);
106
+ }
107
+
108
+ if (!$image_info) {
109
+ throw new ImageResizeException('Could not read file ' . $filename);
110
+ }
111
+
112
+ list(
113
+ $this->original_w,
114
+ $this->original_h,
115
+ $this->source_type
116
+ ) = $image_info;
117
+
118
+ switch ($this->source_type) {
119
+ case IMAGETYPE_GIF:
120
+ $this->source_image = imagecreatefromgif($filename);
121
+ break;
122
+
123
+ case IMAGETYPE_JPEG:
124
+ $this->source_image = $this->imageCreateJpegfromExif($filename);
125
+
126
+ // set new width and height for image, maybe it has changed
127
+ $this->original_w = ImageSX($this->source_image);
128
+ $this->original_h = ImageSY($this->source_image);
129
+
130
+ break;
131
+
132
+ case IMAGETYPE_PNG:
133
+ $this->source_image = imagecreatefrompng($filename);
134
+ break;
135
+
136
+ case IMAGETYPE_WEBP:
137
+ if (version_compare(PHP_VERSION, '5.5.0', '<')) {
138
+ throw new ImageResizeException('For WebP support PHP >= 5.5.0 is required');
139
+ }
140
+ $this->source_image = imagecreatefromwebp($filename);
141
+ break;
142
+
143
+ default:
144
+ throw new ImageResizeException('Unsupported image type');
145
+ break;
146
+ }
147
+
148
+ if (!$this->source_image) {
149
+ throw new ImageResizeException('Could not load image');
150
+ }
151
+
152
+ return $this->resize($this->getSourceWidth(), $this->getSourceHeight());
153
+ }
154
+
155
+ // http://stackoverflow.com/a/28819866
156
+ public function imageCreateJpegfromExif($filename)
157
+ {
158
+ $img = imagecreatefromjpeg($filename);
159
+
160
+ if (!function_exists('exif_read_data') || !isset($this->source_info['APP1']) || strpos($this->source_info['APP1'], 'Exif') !== 0) {
161
+ return $img;
162
+ }
163
+
164
+ $exif = exif_read_data($filename);
165
+
166
+ if (!$exif || !isset($exif['Orientation'])) {
167
+ return $img;
168
+ }
169
+
170
+ $orientation = $exif['Orientation'];
171
+
172
+ if ($orientation === 6 || $orientation === 5) {
173
+ $img = imagerotate($img, 270, 0);
174
+ } elseif ($orientation === 3 || $orientation === 4) {
175
+ $img = imagerotate($img, 180, 0);
176
+ } elseif ($orientation === 8 || $orientation === 7) {
177
+ $img = imagerotate($img, 90, 0);
178
+ }
179
+
180
+ if ($orientation === 5 || $orientation === 4 || $orientation === 7) {
181
+ imageflip($img, IMG_FLIP_HORIZONTAL);
182
+ }
183
+
184
+ return $img;
185
+ }
186
+
187
+ /**
188
+ * Saves new image
189
+ *
190
+ * @param string $filename
191
+ * @param string $image_type
192
+ * @param integer $quality
193
+ * @param integer $permissions
194
+ * @return \static
195
+ */
196
+ public function save($filename, $image_type = null, $quality = null, $permissions = null)
197
+ {
198
+ $image_type = $image_type ?: $this->source_type;
199
+ $quality = is_numeric($quality) ? (int) abs($quality) : null;
200
+
201
+ switch ($image_type) {
202
+ case IMAGETYPE_GIF:
203
+ $dest_image = imagecreatetruecolor($this->getDestWidth(), $this->getDestHeight());
204
+
205
+ $background = imagecolorallocatealpha($dest_image, 255, 255, 255, 1);
206
+ imagecolortransparent($dest_image, $background);
207
+ imagefill($dest_image, 0, 0, $background);
208
+ imagesavealpha($dest_image, true);
209
+ break;
210
+
211
+ case IMAGETYPE_JPEG:
212
+ $dest_image = imagecreatetruecolor($this->getDestWidth(), $this->getDestHeight());
213
+
214
+ $background = imagecolorallocate($dest_image, 255, 255, 255);
215
+ imagefilledrectangle($dest_image, 0, 0, $this->getDestWidth(), $this->getDestHeight(), $background);
216
+ break;
217
+
218
+ case IMAGETYPE_WEBP:
219
+ if (version_compare(PHP_VERSION, '5.5.0', '<')) {
220
+ throw new ImageResizeException('For WebP support PHP >= 5.5.0 is required');
221
+ }
222
+ $dest_image = imagecreatetruecolor($this->getDestWidth(), $this->getDestHeight());
223
+
224
+ $background = imagecolorallocate($dest_image, 255, 255, 255);
225
+ imagefilledrectangle($dest_image, 0, 0, $this->getDestWidth(), $this->getDestHeight(), $background);
226
+ break;
227
+
228
+ case IMAGETYPE_PNG:
229
+ if (!$this->quality_truecolor && !imageistruecolor($this->source_image)) {
230
+ $dest_image = imagecreate($this->getDestWidth(), $this->getDestHeight());
231
+
232
+ $background = imagecolorallocatealpha($dest_image, 255, 255, 255, 1);
233
+ imagecolortransparent($dest_image, $background);
234
+ imagefill($dest_image, 0, 0, $background);
235
+ } else {
236
+ $dest_image = imagecreatetruecolor($this->getDestWidth(), $this->getDestHeight());
237
+ }
238
+
239
+ imagealphablending($dest_image, false);
240
+ imagesavealpha($dest_image, true);
241
+ break;
242
+ }
243
+
244
+ imageinterlace($dest_image, $this->interlace);
245
+
246
+ imagecopyresampled(
247
+ $dest_image,
248
+ $this->source_image,
249
+ $this->dest_x,
250
+ $this->dest_y,
251
+ $this->source_x,
252
+ $this->source_y,
253
+ $this->getDestWidth(),
254
+ $this->getDestHeight(),
255
+ $this->source_w,
256
+ $this->source_h
257
+ );
258
+
259
+ switch ($image_type) {
260
+ case IMAGETYPE_GIF:
261
+ imagegif($dest_image, $filename);
262
+ break;
263
+
264
+ case IMAGETYPE_JPEG:
265
+ if ($quality === null || $quality > 100) {
266
+ $quality = $this->quality_jpg;
267
+ }
268
+
269
+ imagejpeg($dest_image, $filename, $quality);
270
+ break;
271
+
272
+ case IMAGETYPE_WEBP:
273
+ if (version_compare(PHP_VERSION, '5.5.0', '<')) {
274
+ throw new ImageResizeException('For WebP support PHP >= 5.5.0 is required');
275
+ }
276
+ if ($quality === null) {
277
+ $quality = $this->quality_webp;
278
+ }
279
+
280
+ imagewebp($dest_image, $filename, $quality);
281
+ break;
282
+
283
+ case IMAGETYPE_PNG:
284
+ if ($quality === null || $quality > 9) {
285
+ $quality = $this->quality_png;
286
+ }
287
+
288
+ imagepng($dest_image, $filename, $quality);
289
+ break;
290
+ }
291
+
292
+ if ($permissions) {
293
+ global $wp_filesystem;
294
+ if ( ! is_a( $wp_filesystem, 'WP_Filesystem_Base') ){
295
+ include_once(ABSPATH . 'wp-admin/includes/file.php');$creds = request_filesystem_credentials( site_url() );
296
+ wp_filesystem($creds);
297
+ }
298
+ $wp_filesystem->chmod($filename, $permissions);
299
+ }
300
+
301
+ imagedestroy($dest_image);
302
+ imagedestroy($this->source_image);
303
+
304
+ return $this;
305
+ }
306
+
307
+ /**
308
+ * Convert the image to string
309
+ *
310
+ * @param int $image_type
311
+ * @param int $quality
312
+ * @return string
313
+ */
314
+ public function getImageAsString($image_type = null, $quality = null)
315
+ {
316
+ $string_temp = tempnam(sys_get_temp_dir(), '');
317
+
318
+ $this->save($string_temp, $image_type, $quality);
319
+
320
+ global $wp_filesystem;
321
+ if ( ! is_a( $wp_filesystem, 'WP_Filesystem_Base') ){
322
+ include_once(ABSPATH . 'wp-admin/includes/file.php');$creds = request_filesystem_credentials( site_url() );
323
+ wp_filesystem($creds);
324
+ }
325
+ $string = $wp_filesystem->get_contents($string_temp);
326
+
327
+ $wp_filesystem->delete($string_temp);
328
+
329
+ return $string;
330
+ }
331
+
332
+ /**
333
+ * Convert the image to string with the current settings
334
+ *
335
+ * @return string
336
+ */
337
+ public function __toString()
338
+ {
339
+ return $this->getImageAsString();
340
+ }
341
+
342
+ /**
343
+ * Outputs image to browser
344
+ * @param string $image_type
345
+ * @param integer $quality
346
+ */
347
+ public function output($image_type = null, $quality = null)
348
+ {
349
+ $image_type = $image_type ?: $this->source_type;
350
+
351
+ header('Content-Type: ' . image_type_to_mime_type($image_type));
352
+
353
+ $this->save(null, $image_type, $quality);
354
+ }
355
+
356
+ /**
357
+ * Resizes image according to the given short side (short side proportional)
358
+ *
359
+ * @param integer $max_short
360
+ * @param boolean $allow_enlarge
361
+ * @return \static
362
+ */
363
+ public function resizeToShortSide($max_short, $allow_enlarge = false)
364
+ {
365
+ if ($this->getSourceHeight() < $this->getSourceWidth()) {
366
+ $ratio = $max_short / $this->getSourceHeight();
367
+ $long = $this->getSourceWidth() * $ratio;
368
+
369
+ $this->resize($long, $max_short, $allow_enlarge);
370
+ } else {
371
+ $ratio = $max_short / $this->getSourceWidth();
372
+ $long = $this->getSourceHeight() * $ratio;
373
+
374
+ $this->resize($max_short, $long, $allow_enlarge);
375
+ }
376
+
377
+ return $this;
378
+ }
379
+
380
+ /**
381
+ * Resizes image according to the given long side (short side proportional)
382
+ *
383
+ * @param integer $max_long
384
+ * @param boolean $allow_enlarge
385
+ * @return \static
386
+ */
387
+ public function resizeToLongSide($max_long, $allow_enlarge = false)
388
+ {
389
+ if ($this->getSourceHeight() > $this->getSourceWidth()) {
390
+ $ratio = $max_long / $this->getSourceHeight();
391
+ $short = $this->getSourceWidth() * $ratio;
392
+
393
+ $this->resize($short, $max_long, $allow_enlarge);
394
+ } else {
395
+ $ratio = $max_long / $this->getSourceWidth();
396
+ $short = $this->getSourceHeight() * $ratio;
397
+
398
+ $this->resize($max_long, $short, $allow_enlarge);
399
+ }
400
+
401
+ return $this;
402
+ }
403
+
404
+ /**
405
+ * Resizes image according to the given height (width proportional)
406
+ *
407
+ * @param integer $height
408
+ * @param boolean $allow_enlarge
409
+ * @return \static
410
+ */
411
+ public function resizeToHeight($height, $allow_enlarge = false)
412
+ {
413
+ $ratio = $height / $this->getSourceHeight();
414
+ $width = $this->getSourceWidth() * $ratio;
415
+
416
+ $this->resize($width, $height, $allow_enlarge);
417
+
418
+ return $this;
419
+ }
420
+
421
+ /**
422
+ * Resizes image according to the given width (height proportional)
423
+ *
424
+ * @param integer $width
425
+ * @param boolean $allow_enlarge
426
+ * @return \static
427
+ */
428
+ public function resizeToWidth($width, $allow_enlarge = false)
429
+ {
430
+ $ratio = $width / $this->getSourceWidth();
431
+ $height = $this->getSourceHeight() * $ratio;
432
+
433
+ $this->resize($width, $height, $allow_enlarge);
434
+
435
+ return $this;
436
+ }
437
+
438
+ /**
439
+ * Resizes image to best fit inside the given dimensions
440
+ *
441
+ * @param integer $max_width
442
+ * @param integer $max_height
443
+ * @param boolean $allow_enlarge
444
+ * @return \static
445
+ */
446
+ public function resizeToBestFit($max_width, $max_height, $allow_enlarge = false)
447
+ {
448
+ if ($this->getSourceWidth() <= $max_width && $this->getSourceHeight() <= $max_height && $allow_enlarge === false) {
449
+ return $this;
450
+ }
451
+
452
+ $ratio = $this->getSourceHeight() / $this->getSourceWidth();
453
+ $width = $max_width;
454
+ $height = $width * $ratio;
455
+
456
+ if ($height > $max_height) {
457
+ $height = $max_height;
458
+ $width = $height / $ratio;
459
+ }
460
+
461
+ return $this->resize($width, $height, $allow_enlarge);
462
+ }
463
+
464
+ /**
465
+ * Resizes image according to given scale (proportionally)
466
+ *
467
+ * @param integer|float $scale
468
+ * @return \static
469
+ */
470
+ public function scale($scale)
471
+ {
472
+ $width = $this->getSourceWidth() * $scale / 100;
473
+ $height = $this->getSourceHeight() * $scale / 100;
474
+
475
+ $this->resize($width, $height, true);
476
+
477
+ return $this;
478
+ }
479
+
480
+ /**
481
+ * Resizes image according to the given width and height
482
+ *
483
+ * @param integer $width
484
+ * @param integer $height
485
+ * @param boolean $allow_enlarge
486
+ * @return \static
487
+ */
488
+ public function resize($width, $height, $allow_enlarge = false)
489
+ {
490
+ if (!$allow_enlarge) {
491
+ // if the user hasn't explicitly allowed enlarging,
492
+ // but either of the dimensions are larger then the original,
493
+ // then just use original dimensions - this logic may need rethinking
494
+
495
+ if ($width > $this->getSourceWidth() || $height > $this->getSourceHeight()) {
496
+ $width = $this->getSourceWidth();
497
+ $height = $this->getSourceHeight();
498
+ }
499
+ }
500
+
501
+ $this->source_x = 0;
502
+ $this->source_y = 0;
503
+
504
+ $this->dest_w = $width;
505
+ $this->dest_h = $height;
506
+
507
+ $this->source_w = $this->getSourceWidth();
508
+ $this->source_h = $this->getSourceHeight();
509
+
510
+ return $this;
511
+ }
512
+
513
+ /**
514
+ * Crops image according to the given width, height and crop position
515
+ *
516
+ * @param integer $width
517
+ * @param integer $height
518
+ * @param boolean $allow_enlarge
519
+ * @param integer $position
520
+ * @return \static
521
+ */
522
+ public function crop($width, $height, $allow_enlarge = false, $position = self::CROPCENTER)
523
+ {
524
+ if (!$allow_enlarge) {
525
+ // this logic is slightly different to resize(),
526
+ // it will only reset dimensions to the original
527
+ // if that particular dimenstion is larger
528
+
529
+ if ($width > $this->getSourceWidth()) {
530
+ $width = $this->getSourceWidth();
531
+ }
532
+
533
+ if ($height > $this->getSourceHeight()) {
534
+ $height = $this->getSourceHeight();
535
+ }
536
+ }
537
+
538
+ $ratio_source = $this->getSourceWidth() / $this->getSourceHeight();
539
+ $ratio_dest = $width / $height;
540
+
541
+ if ($ratio_dest < $ratio_source) {
542
+ $this->resizeToHeight($height, $allow_enlarge);
543
+
544
+ $excess_width = ($this->getDestWidth() - $width) / $this->getDestWidth() * $this->getSourceWidth();
545
+
546
+ $this->source_w = $this->getSourceWidth() - $excess_width;
547
+ $this->source_x = $this->getCropPosition($excess_width, $position);
548
+
549
+ $this->dest_w = $width;
550
+ } else {
551
+ $this->resizeToWidth($width, $allow_enlarge);
552
+
553
+ $excess_height = ($this->getDestHeight() - $height) / $this->getDestHeight() * $this->getSourceHeight();
554
+
555
+ $this->source_h = $this->getSourceHeight() - $excess_height;
556
+ $this->source_y = $this->getCropPosition($excess_height, $position);
557
+
558
+ $this->dest_h = $height;
559
+ }
560
+
561
+ return $this;
562
+ }
563
+
564
+ /**
565
+ * Crops image according to the given width, height, x and y
566
+ *
567
+ * @param integer $width
568
+ * @param integer $height
569
+ * @param integer $x
570
+ * @param integer $y
571
+ * @return \static
572
+ */
573
+ public function freecrop($width, $height, $x = false, $y = false)
574
+ {
575
+ if ($x === false or $y === false) {
576
+ return $this->crop($width, $height);
577
+ }
578
+ $this->source_x = $x;
579
+ $this->source_y = $y;
580
+ if ($width > $this->getSourceWidth() - $x) {
581
+ $this->source_w = $this->getSourceWidth() - $x;
582
+ } else {
583
+ $this->source_w = $width;
584
+ }
585
+
586
+ if ($height > $this->getSourceHeight() - $y) {
587
+ $this->source_h = $this->getSourceHeight() - $y;
588
+ } else {
589
+ $this->source_h = $height;
590
+ }
591
+
592
+ $this->dest_w = $width;
593
+ $this->dest_h = $height;
594
+
595
+ return $this;
596
+ }
597
+
598
+ /**
599
+ * Gets source width
600
+ *
601
+ * @return integer
602
+ */
603
+ public function getSourceWidth()
604
+ {
605
+ return $this->original_w;
606
+ }
607
+
608
+ /**
609
+ * Gets source height
610
+ *
611
+ * @return integer
612
+ */
613
+ public function getSourceHeight()
614
+ {
615
+ return $this->original_h;
616
+ }
617
+
618
+ /**
619
+ * Gets width of the destination image
620
+ *
621
+ * @return integer
622
+ */
623
+ public function getDestWidth()
624
+ {
625
+ return $this->dest_w;
626
+ }
627
+
628
+ /**
629
+ * Gets height of the destination image
630
+ * @return integer
631
+ */
632
+ public function getDestHeight()
633
+ {
634
+ return $this->dest_h;
635
+ }
636
+
637
+ /**
638
+ * Gets crop position (X or Y) according to the given position
639
+ *
640
+ * @param integer $expectedSize
641
+ * @param integer $position
642
+ * @return integer
643
+ */
644
+ protected function getCropPosition($expectedSize, $position = self::CROPCENTER)
645
+ {
646
+ $size = 0;
647
+ switch ($position) {
648
+ case self::CROPBOTTOM:
649
+ case self::CROPRIGHT:
650
+ $size = $expectedSize;
651
+ break;
652
+ case self::CROPCENTER:
653
+ case self::CROPCENTRE:
654
+ $size = $expectedSize / 2;
655
+ break;
656
+ case self::CROPTOPCENTER:
657
+ $size = $expectedSize / 4;
658
+ break;
659
+ }
660
+ return $size;
661
+ }
662
+ }
663
+
664
+ // imageflip definition for PHP < 5.5
665
+ if (!function_exists('imageflip')) {
666
+ define('IMG_FLIP_HORIZONTAL', 0);
667
+ define('IMG_FLIP_VERTICAL', 1);
668
+ define('IMG_FLIP_BOTH', 2);
669
+
670
+ function imageflip($image, $mode)
671
+ {
672
+ switch ($mode) {
673
+ case IMG_FLIP_HORIZONTAL: {
674
+ $max_x = imagesx($image) - 1;
675
+ $half_x = $max_x / 2;
676
+ $sy = imagesy($image);
677
+ $temp_image = imageistruecolor($image)? imagecreatetruecolor(1, $sy): imagecreate(1, $sy);
678
+ for ($x = 0; $x < $half_x; ++$x) {
679
+ imagecopy($temp_image, $image, 0, 0, $x, 0, 1, $sy);
680
+ imagecopy($image, $image, $x, 0, $max_x - $x, 0, 1, $sy);
681
+ imagecopy($image, $temp_image, $max_x - $x, 0, 0, 0, 1, $sy);
682
+ }
683
+ break;
684
+ }
685
+ case IMG_FLIP_VERTICAL: {
686
+ $sx = imagesx($image);
687
+ $max_y = imagesy($image) - 1;
688
+ $half_y = $max_y / 2;
689
+ $temp_image = imageistruecolor($image)? imagecreatetruecolor($sx, 1): imagecreate($sx, 1);
690
+ for ($y = 0; $y < $half_y; ++$y) {
691
+ imagecopy($temp_image, $image, 0, 0, 0, $y, $sx, 1);
692
+ imagecopy($image, $image, 0, $y, 0, $max_y - $y, $sx, 1);
693
+ imagecopy($image, $temp_image, 0, $max_y - $y, 0, 0, $sx, 1);
694
+ }
695
+ break;
696
+ }
697
+ case IMG_FLIP_BOTH: {
698
+ $sx = imagesx($image);
699
+ $sy = imagesy($image);
700
+ $temp_image = imagerotate($image, 180, 0);
701
+ imagecopy($image, $temp_image, 0, 0, 0, 0, $sx, $sy);
702
+ break;
703
+ }
704
+ default: {
705
+ return;
706
+ }
707
+ }
708
+ imagedestroy($temp_image);
709
+ }
710
+ }
711
+
712
+ /**
713
+ * PHP Exception used in the ImageResize class
714
+ */
715
+ class ImageResizeException extends \Exception
716
+ {
717
+ }
res/ImageResize/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ ?>
res/UMSJavaScriptUnpacker.php ADDED
@@ -0,0 +1,174 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /* UMSJavaScriptUnPacker
3
+ * Copyright (c) 2015 Recep Karadas
4
+ *
5
+ * 26 July 2015. version 1.0
6
+ * 16 November 2015. version 1.1
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ * This program is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ * GNU General Public License for more details.
16
+ * You should have received a copy of the GNU General Public License
17
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
18
+ *
19
+ * Ported to PHP from:
20
+ * https://github.com/Eldorados/script.module.urlresolver/blob/master/lib/urlresolver/plugins/lib/jsunpack.py
21
+
22
+ *
23
+ * ----------------------------------------------------------------------
24
+ * changelog:
25
+ * 1.0 : Initial Release.
26
+ * 1.1 : Fixed the if-statements within the UMSUnbaser constructor
27
+ * ----------------------------------------------------------------------
28
+ *
29
+ * examples of usage :
30
+ * $unpacker = new UMSJavaScriptUnPacker();
31
+ * $unpacker = $myPacker->Unpack($packedJs);
32
+ * *
33
+ * The unpack() method returns the uncompressed JavasScript, as a string
34
+ * that was packed with Dean Edwards JavaScript's Packer method.
35
+ *
36
+ * Notes :
37
+ * # need PHP 5 . Tested with PHP 5.4.7 and 5.5.21
38
+ */
39
+
40
+ class UMSJavaScriptUnPacker
41
+ {
42
+ private $unbaser;
43
+ private $payload;
44
+ private $symtab;
45
+ private $radix;
46
+ private $count;
47
+
48
+ function Detect($source)
49
+ {
50
+ $source = preg_replace("/ /","",$source);
51
+ preg_match("/eval\(function\(p,a,c,k,e,[r|d]?/", $source, $res);
52
+
53
+ UMSDebug::Write($res,"detection result");
54
+
55
+ return (count($res) > 0);
56
+ }
57
+
58
+ function Unpack($source)
59
+ {
60
+ preg_match_all("/}\('(.*)', *(\d+), *(\d+), *'(.*?)'\.split\('\|'\)/",$source,$out);
61
+
62
+ UMSDebug::Write($out,"DOTALL", false);
63
+
64
+ // Payload
65
+ $this->payload = $out[1][0];
66
+ UMSDebug::Write($this->payload,"payload");
67
+ // Words
68
+ $this->symtab = preg_split("/\|/",$out[4][0]);
69
+ UMSDebug::Write($this->symtab,"symtab");
70
+ // Radix
71
+ $this->radix = (int)$out[2][0];
72
+ UMSDebug::Write($this->radix,"radix");
73
+ // Words Count
74
+ $this->count = (int)$out[3][0];
75
+ UMSDebug::Write($this->count,"count");
76
+
77
+ if( $this->count != count($this->symtab)) return; // Malformed p.a.c.k.e.r symtab !
78
+
79
+ //ToDo: Try catch
80
+ $this->unbaser = new UMSUnbaser($this->radix);
81
+
82
+ $result = preg_replace_callback(
83
+ '/\b\w+\b/',
84
+ array($this, 'Lookup')
85
+ ,
86
+ $this->payload
87
+ );
88
+ $result = str_replace('\\', '', $result);
89
+ UMSDebug::Write($result);
90
+ $this->ReplaceStrings($result);
91
+ return $result;
92
+ }
93
+
94
+ function Lookup($matches)
95
+ {
96
+ $word = $matches[0];
97
+ $ub = $this->symtab[$this->unbaser->Unbase($word)];
98
+ $ret = !empty($ub) ? $ub : $word;
99
+ return $ret;
100
+ }
101
+
102
+ function ReplaceStrings($source)
103
+ {
104
+ preg_match_all("/var *(_\w+)\=\[\"(.*?)\"\];/",$source,$out);
105
+ UMSDebug::Write($out);
106
+ }
107
+
108
+ }
109
+
110
+ class UMSUnbaser
111
+ {
112
+ private $base;
113
+ private $dict;
114
+ private $selector = 52;
115
+ private $ALPHABET = array(
116
+ 52 => '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP',
117
+ 54 => '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQR',
118
+ 62 => '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
119
+ 95 => ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'
120
+ );
121
+
122
+
123
+ function __construct($base)
124
+ {
125
+ $this->base = $base;
126
+
127
+ if($this->base > 62) $this->selector = 95;
128
+ else if($this->base > 54) $this->selector = 62;
129
+ else if($this->base > 52) $this->selector = 54;
130
+ }
131
+
132
+ function Unbase($val)
133
+ {
134
+ if( 2 <= $this->base && $this->base <= 36)
135
+ {
136
+ return intval($val,$this->base);
137
+ }else{
138
+ if(!isset($this->dict)){
139
+
140
+ $this->dict = array_flip(str_split($this->ALPHABET[$this->selector]));
141
+ }
142
+ $ret = 0;
143
+ $valArray = array_reverse(str_split($val));
144
+
145
+ for($i = 0; $i < count($valArray) ; $i++)
146
+ {
147
+ $cipher = $valArray[$i];
148
+ $ret += pow($this->base, $i) * $this->dict[$cipher];
149
+ }
150
+ return $ret;
151
+ // UnbaseExtended($x, $base)
152
+ }
153
+ }
154
+
155
+ }
156
+
157
+
158
+ class UMSDebug
159
+ {
160
+ public static $debug = false;
161
+ public static function Write($data, $header = "", $mDebug = true)
162
+ {
163
+ if(!self::$debug || !$mDebug) return;
164
+
165
+ if(!empty($header))
166
+ echo "<h4>".$header."</h4>";
167
+
168
+ echo "<pre>";
169
+ print_r($data);
170
+ echo "</pre>";
171
+ }
172
+
173
+ }
174
+ ?>
res/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ ?>
res/mangafox-master/.gitignore ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ vendor/
2
+ build/
3
+ \.php_cs\.cache
res/mangafox-master/LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2017
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
res/mangafox-master/README.md ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # MangaFox Scraper
2
+
3
+ Search and download manga from [mangafox.me](http://mangafox.me/)
4
+
5
+ MangaFox Scraper is a library that gets all the needed information about manga for a manga-reader
6
+
7
+ ## Requirements
8
+
9
+ PHP 7.0.0 or later.
10
+
11
+ ## Composer
12
+
13
+ You can install it via [Composer](https://getcomposer.org/) by typing the following command:
14
+
15
+ ```bash
16
+ composer require railken/mangafox
17
+ ```
18
+
19
+
20
+ ## Dependencies
21
+
22
+ - [`curl`](https://secure.php.net/manual/en/book.curl.php)
23
+
24
+
25
+ ## Getting Started
26
+
27
+ Simple usage looks like:
28
+
29
+ ```php
30
+
31
+ # Creating a new instance of manager
32
+ $manager = new \Railken\Mangafox\Mangafox();
33
+
34
+ # Searching a manga
35
+ $results = $manager
36
+ ->search()
37
+ ->type('any')
38
+ ->name('contains', 'One Piece')
39
+ ->author('contains', 'Oda Eiichiro')
40
+ ->artist('contains', 'Oda Eiichiro')
41
+ ->genres('include', ['Action', 'Drama', 'Historical'])
42
+ ->releasedYear('<', '2017')
43
+ ->rating('>', 4)
44
+ ->completed(0)
45
+ ->sortBy('name', 'ASC')
46
+ ->page(1)
47
+ ->get();
48
+
49
+ # Retrieving all info about a manga
50
+ $manga = $manager
51
+ ->resource('one_piece')
52
+ ->get();
53
+
54
+
55
+ # Retrieving all scans for a given manga, volume and chapter
56
+ $scans = $manager
57
+ ->scan('one_piece', 1, 1)
58
+ ->get();
59
+
60
+ # Retrieving last updates
61
+ $results = $manager->releases()->page(1)->get();
62
+
63
+ # Perform a query in the directory
64
+ $results = $manager
65
+ ->directory()
66
+ ->browseBy('genre', 'Action')
67
+ ->sortBy('name')
68
+ ->page(1)
69
+ ->get();
70
+ ```
71
+
72
+
73
+ ## License
74
+
75
+ Open-source software licensed under the [MIT license](https://opensource.org/licenses/MIT).
76
+
77
+ ## Copyright
78
+
79
+ All the manga are copyrighted to their respective author. Please buy the manga if it's available in your country.
res/mangafox-master/composer.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "railken/mangafox",
3
+ "type": "library",
4
+ "require": {
5
+ "guzzlehttp/guzzle": "~6.0",
6
+ "wa72/htmlpagedom": "^1.3",
7
+ "illuminate/support": "^5.5",
8
+ "railken/bag": "^1.0"
9
+ },
10
+ "autoload": {
11
+ "psr-4" : {
12
+ "Railken\\Mangafox\\" : "src/"
13
+ }
14
+ },
15
+ "require-dev": {
16
+ "phpunit/phpunit": "^5.2||^7.0||^8.0"
17
+ },
18
+ "minimum-stability": "stable"
19
+ }
res/mangafox-master/composer.lock ADDED
@@ -0,0 +1,2196 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_readme": [
3
+ "This file locks the dependencies of your project to a known state",
4
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5
+ "This file is @generated automatically"
6
+ ],
7
+ "content-hash": "e0529624b058e9afd86d96c84d1bd3e8",
8
+ "packages": [
9
+ {
10
+ "name": "doctrine/inflector",
11
+ "version": "v1.2.0",
12
+ "source": {
13
+ "type": "git",
14
+ "url": "https://github.com/doctrine/inflector.git",
15
+ "reference": "e11d84c6e018beedd929cff5220969a3c6d1d462"
16
+ },
17
+ "dist": {
18
+ "type": "zip",
19
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/e11d84c6e018beedd929cff5220969a3c6d1d462",
20
+ "reference": "e11d84c6e018beedd929cff5220969a3c6d1d462",
21
+ "shasum": ""
22
+ },
23
+ "require": {
24
+ "php": "^5.5||^7.0||^8.0"
25
+ },
26
+ "require-dev": {
27
+ "phpunit/phpunit": "^6.2"
28
+ },
29
+ "type": "library",
30
+ "extra": {
31
+ "branch-alias": {
32
+ "dev-master": "1.2.x-dev"
33
+ }
34
+ },
35
+ "autoload": {
36
+ "psr-4": {
37
+ "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector"
38
+ }
39
+ },
40
+ "notification-url": "https://packagist.org/downloads/",
41
+ "license": [
42
+ "MIT"
43
+ ],
44
+ "authors": [
45
+ {
46
+ "name": "Roman Borschel",
47
+ "email": "roman@code-factory.org"
48
+ },
49
+ {
50
+ "name": "Benjamin Eberlei",
51
+ "email": "kontakt@beberlei.de"
52
+ },
53
+ {
54
+ "name": "Guilherme Blanco",
55
+ "email": "guilhermeblanco@gmail.com"
56
+ },
57
+ {
58
+ "name": "Jonathan Wage",
59
+ "email": "jonwage@gmail.com"
60
+ },
61
+ {
62
+ "name": "Johannes Schmitt",
63
+ "email": "schmittjoh@gmail.com"
64
+ }
65
+ ],
66
+ "description": "Common String Manipulations with regard to casing and singular/plural rules.",
67
+ "homepage": "http://www.doctrine-project.org",
68
+ "keywords": [
69
+ "inflection",
70
+ "pluralize",
71
+ "singularize",
72
+ "string"
73
+ ],
74
+ "time": "2017-07-22T12:18:28+00:00"
75
+ },
76
+ {
77
+ "name": "guzzlehttp/guzzle",
78
+ "version": "6.3.0",
79
+ "source": {
80
+ "type": "git",
81
+ "url": "https://github.com/guzzle/guzzle.git",
82
+ "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699"
83
+ },
84
+ "dist": {
85
+ "type": "zip",
86
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699",
87
+ "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699",
88
+ "shasum": ""
89
+ },
90
+ "require": {
91
+ "guzzlehttp/promises": "^1.0",
92
+ "guzzlehttp/psr7": "^1.4",
93
+ "php": "^5.5||^7.0||^8.0"
94
+ },
95
+ "require-dev": {
96
+ "ext-curl": "*",
97
+ "phpunit/phpunit": "^5.5||^7.0||^8.0",
98
+ "psr/log": "^1.0"
99
+ },
100
+ "suggest": {
101
+ "psr/log": "Required for using the Log middleware"
102
+ },
103
+ "type": "library",
104
+ "extra": {
105
+ "branch-alias": {
106
+ "dev-master": "6.2-dev"
107
+ }
108
+ },
109
+ "autoload": {
110
+ "files": [
111
+ "src/functions_include.php"
112
+ ],
113
+ "psr-4": {
114
+ "GuzzleHttp\\": "src/"
115
+ }
116
+ },
117
+ "notification-url": "https://packagist.org/downloads/",
118
+ "license": [
119
+ "MIT"
120
+ ],
121
+ "authors": [
122
+ {
123
+ "name": "Michael Dowling",
124
+ "email": "mtdowling@gmail.com",
125
+ "homepage": "https://github.com/mtdowling"
126
+ }
127
+ ],
128
+ "description": "Guzzle is a PHP HTTP client library",
129
+ "homepage": "http://guzzlephp.org/",
130
+ "keywords": [
131
+ "client",
132
+ "curl",
133
+ "framework",
134
+ "http",
135
+ "http client",
136
+ "rest",
137
+ "web service"
138
+ ],
139
+ "time": "2017-06-22T18:50:49+00:00"
140
+ },
141
+ {
142
+ "name": "guzzlehttp/promises",
143
+ "version": "v1.3.1",
144
+ "source": {
145
+ "type": "git",
146
+ "url": "https://github.com/guzzle/promises.git",
147
+ "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
148
+ },
149
+ "dist": {
150
+ "type": "zip",
151
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
152
+ "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
153
+ "shasum": ""
154
+ },
155
+ "require": {
156
+ "php": "^5.5||^7.0||^8.0"
157
+ },
158
+ "require-dev": {
159
+ "phpunit/phpunit": "^5.5||^7.0||^8.0"
160
+ },
161
+ "type": "library",
162
+ "extra": {
163
+ "branch-alias": {
164
+ "dev-master": "1.4-dev"
165
+ }
166
+ },
167
+ "autoload": {
168
+ "psr-4": {
169
+ "GuzzleHttp\\Promise\\": "src/"
170
+ },
171
+ "files": [
172
+ "src/functions_include.php"
173
+ ]
174
+ },
175
+ "notification-url": "https://packagist.org/downloads/",
176
+ "license": [
177
+ "MIT"
178
+ ],
179
+ "authors": [
180
+ {
181
+ "name": "Michael Dowling",
182
+ "email": "mtdowling@gmail.com",
183
+ "homepage": "https://github.com/mtdowling"
184
+ }
185
+ ],
186
+ "description": "Guzzle promises library",
187
+ "keywords": [
188
+ "promise"
189
+ ],
190
+ "time": "2016-12-20T10:07:11+00:00"
191
+ },
192
+ {
193
+ "name": "guzzlehttp/psr7",
194
+ "version": "1.4.2",
195
+ "source": {
196
+ "type": "git",
197
+ "url": "https://github.com/guzzle/psr7.git",
198
+ "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
199
+ },
200
+ "dist": {
201
+ "type": "zip",
202
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
203
+ "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
204
+ "shasum": ""
205
+ },
206
+ "require": {
207
+ "php": "^5.5||^7.0||^8.0",
208
+ "psr/http-message": "~1.0"
209
+ },
210
+ "provide": {
211
+ "psr/http-message-implementation": "1.0"
212
+ },
213
+ "require-dev": {
214
+ "phpunit/phpunit": "^5.5||^7.0||^8.0"
215
+ },
216
+ "type": "library",
217
+ "extra": {
218
+ "branch-alias": {
219
+ "dev-master": "1.4-dev"
220
+ }
221
+ },
222
+ "autoload": {
223
+ "psr-4": {
224
+ "GuzzleHttp\\Psr7\\": "src/"
225
+ },
226
+ "files": [
227
+ "src/functions_include.php"
228
+ ]
229
+ },
230
+ "notification-url": "https://packagist.org/downloads/",
231
+ "license": [
232
+ "MIT"
233
+ ],
234
+ "authors": [
235
+ {
236
+ "name": "Michael Dowling",
237
+ "email": "mtdowling@gmail.com",
238
+ "homepage": "https://github.com/mtdowling"
239
+ },
240
+ {
241
+ "name": "Tobias Schultze",
242
+ "homepage": "https://github.com/Tobion"
243
+ }
244
+ ],
245
+ "description": "PSR-7 message implementation that also provides common utility methods",
246
+ "keywords": [
247
+ "http",
248
+ "message",
249
+ "request",
250
+ "response",
251
+ "stream",
252
+ "uri",
253
+ "url"
254
+ ],
255
+ "time": "2017-03-20T17:10:46+00:00"
256
+ },
257
+ {
258
+ "name": "illuminate/contracts",
259
+ "version": "v5.5.2",
260
+ "source": {
261
+ "type": "git",
262
+ "url": "https://github.com/illuminate/contracts.git",
263
+ "reference": "e935ac3bcfa32a9d8b9a082e5085f233fa9cf918"
264
+ },
265
+ "dist": {
266
+ "type": "zip",
267
+ "url": "https://api.github.com/repos/illuminate/contracts/zipball/e935ac3bcfa32a9d8b9a082e5085f233fa9cf918",
268
+ "reference": "e935ac3bcfa32a9d8b9a082e5085f233fa9cf918",
269
+ "shasum": ""
270
+ },
271
+ "require": {
272
+ "php": "^7.0||^8.0",
273
+ "psr/container": "~1.0",
274
+ "psr/simple-cache": "~1.0"
275
+ },
276
+ "type": "library",
277
+ "extra": {
278
+ "branch-alias": {
279
+ "dev-master": "5.5-dev"
280
+ }
281
+ },
282
+ "autoload": {
283
+ "psr-4": {
284
+ "Illuminate\\Contracts\\": ""
285
+ }
286
+ },
287
+ "notification-url": "https://packagist.org/downloads/",
288
+ "license": [
289
+ "MIT"
290
+ ],
291
+ "authors": [
292
+ {
293
+ "name": "Taylor Otwell",
294
+ "email": "taylor@laravel.com"
295
+ }
296
+ ],
297
+ "description": "The Illuminate Contracts package.",
298
+ "homepage": "https://laravel.com",
299
+ "time": "2017-08-27T09:20:20+00:00"
300
+ },
301
+ {
302
+ "name": "illuminate/support",
303
+ "version": "v5.5.2",
304
+ "source": {
305
+ "type": "git",
306
+ "url": "https://github.com/illuminate/support.git",
307
+ "reference": "6a1c08c4e89429a0333ad86c489088ceeadbcced"
308
+ },
309
+ "dist": {
310
+ "type": "zip",
311
+ "url": "https://api.github.com/repos/illuminate/support/zipball/6a1c08c4e89429a0333ad86c489088ceeadbcced",
312
+ "reference": "6a1c08c4e89429a0333ad86c489088ceeadbcced",
313
+ "shasum": ""
314
+ },
315
+ "require": {
316
+ "doctrine/inflector": "~1.1",
317
+ "ext-mbstring": "*",
318
+ "illuminate/contracts": "5.5.*",
319
+ "nesbot/carbon": "^1.20",
320
+ "php": ">=7.0"
321
+ },
322
+ "replace": {
323
+ "tightenco/collect": "self.version"
324
+ },
325
+ "suggest": {
326
+ "illuminate/filesystem": "Required to use the composer class (5.2.*).",
327
+ "symfony/process": "Required to use the composer class (~3.3).",
328
+ "symfony/var-dumper": "Required to use the dd function (~3.3)."
329
+ },
330
+ "type": "library",
331
+ "extra": {
332
+ "branch-alias": {
333
+ "dev-master": "5.5-dev"
334
+ }
335
+ },
336
+ "autoload": {
337
+ "psr-4": {
338
+ "Illuminate\\Support\\": ""
339
+ },
340
+ "files": [
341
+ "helpers.php"
342
+ ]
343
+ },
344
+ "notification-url": "https://packagist.org/downloads/",
345
+ "license": [
346
+ "MIT"
347
+ ],
348
+ "authors": [
349
+ {
350
+ "name": "Taylor Otwell",
351
+ "email": "taylor@laravel.com"
352
+ }
353
+ ],
354
+ "description": "The Illuminate Support package.",
355
+ "homepage": "https://laravel.com",
356
+ "time": "2017-09-04T14:00:07+00:00"
357
+ },
358
+ {
359
+ "name": "nesbot/carbon",
360
+ "version": "1.22.1",
361
+ "source": {
362
+ "type": "git",
363
+ "url": "https://github.com/briannesbitt/Carbon.git",
364
+ "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc"
365
+ },
366
+ "dist": {
367
+ "type": "zip",
368
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc",
369
+ "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc",
370
+ "shasum": ""
371
+ },
372
+ "require": {
373
+ "php": ">=5.3.0",
374
+ "symfony/translation": "~2.6 || ~3.0"
375
+ },
376
+ "require-dev": {
377
+ "friendsofphp/php-cs-fixer": "~2",
378
+ "phpunit/phpunit": "~4.0 || ~5.0"
379
+ },
380
+ "type": "library",
381
+ "extra": {
382
+ "branch-alias": {
383
+ "dev-master": "1.23-dev"
384
+ }
385
+ },
386
+ "autoload": {
387
+ "psr-4": {
388
+ "Carbon\\": "src/Carbon/"
389
+ }
390
+ },
391
+ "notification-url": "https://packagist.org/downloads/",
392
+ "license": [
393
+ "MIT"
394
+ ],
395
+ "authors": [
396
+ {
397
+ "name": "Brian Nesbitt",
398
+ "email": "brian@nesbot.com",
399
+ "homepage": "http://nesbot.com"
400
+ }
401
+ ],
402
+ "description": "A simple API extension for DateTime.",
403
+ "homepage": "http://carbon.nesbot.com",
404
+ "keywords": [
405
+ "date",
406
+ "datetime",
407
+ "time"
408
+ ],
409
+ "time": "2017-01-16T07:55:07+00:00"
410
+ },
411
+ {
412
+ "name": "psr/container",
413
+ "version": "1.0.0",
414
+ "source": {
415
+ "type": "git",
416
+ "url": "https://github.com/php-fig/container.git",
417
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
418
+ },
419
+ "dist": {
420
+ "type": "zip",
421
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
422
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
423
+ "shasum": ""
424
+ },
425
+ "require": {
426
+ "php": ">=5.3.0"
427
+ },
428
+ "type": "library",
429
+ "extra": {
430
+ "branch-alias": {
431
+ "dev-master": "1.0.x-dev"
432
+ }
433
+ },
434
+ "autoload": {
435
+ "psr-4": {
436
+ "Psr\\Container\\": "src/"
437
+ }
438
+ },
439
+ "notification-url": "https://packagist.org/downloads/",
440
+ "license": [
441
+ "MIT"
442
+ ],
443
+ "authors": [
444
+ {
445
+ "name": "PHP-FIG",
446
+ "homepage": "http://www.php-fig.org/"
447
+ }
448
+ ],
449
+ "description": "Common Container Interface (PHP FIG PSR-11)",
450
+ "homepage": "https://github.com/php-fig/container",
451
+ "keywords": [
452
+ "PSR-11",
453
+ "container",
454
+ "container-interface",
455
+ "container-interop",
456
+ "psr"
457
+ ],
458
+ "time": "2017-02-14T16:28:37+00:00"
459
+ },
460
+ {
461
+ "name": "psr/http-message",
462
+ "version": "1.0.1",
463
+ "source": {
464
+ "type": "git",
465
+ "url": "https://github.com/php-fig/http-message.git",
466
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
467
+ },
468
+ "dist": {
469
+ "type": "zip",
470
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
471
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
472
+ "shasum": ""
473
+ },
474
+ "require": {
475
+ "php": ">=5.3.0"
476
+ },
477
+ "type": "library",
478
+ "extra": {
479
+ "branch-alias": {
480
+ "dev-master": "1.0.x-dev"
481
+ }
482
+ },
483
+ "autoload": {
484
+ "psr-4": {
485
+ "Psr\\Http\\Message\\": "src/"
486
+ }
487
+ },
488
+ "notification-url": "https://packagist.org/downloads/",
489
+ "license": [
490
+ "MIT"
491
+ ],
492
+ "authors": [
493
+ {
494
+ "name": "PHP-FIG",
495
+ "homepage": "http://www.php-fig.org/"
496
+ }
497
+ ],
498
+ "description": "Common interface for HTTP messages",
499
+ "homepage": "https://github.com/php-fig/http-message",
500
+ "keywords": [
501
+ "http",
502
+ "http-message",
503
+ "psr",
504
+ "psr-7",
505
+ "request",
506
+ "response"
507
+ ],
508
+ "time": "2016-08-06T14:39:51+00:00"
509
+ },
510
+ {
511
+ "name": "psr/simple-cache",
512
+ "version": "1.0.0",
513
+ "source": {
514
+ "type": "git",
515
+ "url": "https://github.com/php-fig/simple-cache.git",
516
+ "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24"
517
+ },
518
+ "dist": {
519
+ "type": "zip",
520
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/753fa598e8f3b9966c886fe13f370baa45ef0e24",
521
+ "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24",
522
+ "shasum": ""
523
+ },
524
+ "require": {
525
+ "php": ">=5.3.0"
526
+ },
527
+ "type": "library",
528
+ "extra": {
529
+ "branch-alias": {
530
+ "dev-master": "1.0.x-dev"
531
+ }
532
+ },
533
+ "autoload": {
534
+ "psr-4": {
535
+ "Psr\\SimpleCache\\": "src/"
536
+ }
537
+ },
538
+ "notification-url": "https://packagist.org/downloads/",
539
+ "license": [
540
+ "MIT"
541
+ ],
542
+ "authors": [
543
+ {
544
+ "name": "PHP-FIG",
545
+ "homepage": "http://www.php-fig.org/"
546
+ }
547
+ ],
548
+ "description": "Common interfaces for simple caching",
549
+ "keywords": [
550
+ "cache",
551
+ "caching",
552
+ "psr",
553
+ "psr-16",
554
+ "simple-cache"
555
+ ],
556
+ "time": "2017-01-02T13:31:39+00:00"
557
+ },
558
+ {
559
+ "name": "railken/bag",
560
+ "version": "v1.2.5",
561
+ "source": {
562
+ "type": "git",
563
+ "url": "https://github.com/railken/bag.git",
564
+ "reference": "db0caded04b19e1fb0aee0f57f31ffe768dc6fe6"
565
+ },
566
+ "dist": {
567
+ "type": "zip",
568
+ "url": "https://api.github.com/repos/railken/bag/zipball/db0caded04b19e1fb0aee0f57f31ffe768dc6fe6",
569
+ "reference": "db0caded04b19e1fb0aee0f57f31ffe768dc6fe6",
570
+ "shasum": ""
571
+ },
572
+ "require-dev": {
573
+ "phpunit/phpunit": "~5.7"
574
+ },
575
+ "type": "library",
576
+ "autoload": {
577
+ "psr-4": {
578
+ "Railken\\": "src/"
579
+ }
580
+ },
581
+ "notification-url": "https://packagist.org/downloads/",
582
+ "time": "2017-09-26T20:53:42+00:00"
583
+ },
584
+ {
585
+ "name": "symfony/css-selector",
586
+ "version": "v3.3.9",
587
+ "source": {
588
+ "type": "git",
589
+ "url": "https://github.com/symfony/css-selector.git",
590
+ "reference": "c5f5263ed231f164c58368efbce959137c7d9488"
591
+ },
592
+ "dist": {
593
+ "type": "zip",
594
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/c5f5263ed231f164c58368efbce959137c7d9488",
595
+ "reference": "c5f5263ed231f164c58368efbce959137c7d9488",
596
+ "shasum": ""
597
+ },
598
+ "require": {
599
+ "php": "^5.5||^7.0||^8.0"
600
+ },
601
+ "type": "library",
602
+ "extra": {
603
+ "branch-alias": {
604
+ "dev-master": "3.3-dev"
605
+ }
606
+ },
607
+ "autoload": {
608
+ "psr-4": {
609
+ "Symfony\\Component\\CssSelector\\": ""
610
+ },
611
+ "exclude-from-classmap": [
612
+ "/Tests/"
613
+ ]
614
+ },
615
+ "notification-url": "https://packagist.org/downloads/",
616
+ "license": [
617
+ "MIT"
618
+ ],
619
+ "authors": [
620
+ {
621
+ "name": "Jean-François Simon",
622
+ "email": "jeanfrancois.simon@sensiolabs.com"
623
+ },
624
+ {
625
+ "name": "Fabien Potencier",
626
+ "email": "fabien@symfony.com"
627
+ },
628
+ {
629
+ "name": "Symfony Community",
630
+ "homepage": "https://symfony.com/contributors"
631
+ }
632
+ ],
633
+ "description": "Symfony CssSelector Component",
634
+ "homepage": "https://symfony.com",
635
+ "time": "2017-07-29T21:54:42+00:00"
636
+ },
637
+ {
638
+ "name": "symfony/dom-crawler",
639
+ "version": "v3.3.9",
640
+ "source": {
641
+ "type": "git",
642
+ "url": "https://github.com/symfony/dom-crawler.git",
643
+ "reference": "6b511d7329b203a620f09a2288818d27dcc915ae"
644
+ },
645
+ "dist": {
646
+ "type": "zip",
647
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/6b511d7329b203a620f09a2288818d27dcc915ae",
648
+ "reference": "6b511d7329b203a620f09a2288818d27dcc915ae",
649
+ "shasum": ""
650
+ },
651
+ "require": {
652
+ "php": "^5.5||^7.0||^8.0",
653
+ "symfony/polyfill-mbstring": "~1.0"
654
+ },
655
+ "require-dev": {
656
+ "symfony/css-selector": "~2.8|~3.0"
657
+ },
658
+ "suggest": {
659
+ "symfony/css-selector": ""
660
+ },
661
+ "type": "library",
662
+ "extra": {
663
+ "branch-alias": {
664
+ "dev-master": "3.3-dev"
665
+ }
666
+ },
667
+ "autoload": {
668
+ "psr-4": {
669
+ "Symfony\\Component\\DomCrawler\\": ""
670
+ },
671
+ "exclude-from-classmap": [
672
+ "/Tests/"
673
+ ]
674
+ },
675
+ "notification-url": "https://packagist.org/downloads/",
676
+ "license": [
677
+ "MIT"
678
+ ],
679
+ "authors": [
680
+ {
681
+ "name": "Fabien Potencier",
682
+ "email": "fabien@symfony.com"
683
+ },
684
+ {
685
+ "name": "Symfony Community",
686
+ "homepage": "https://symfony.com/contributors"
687
+ }
688
+ ],
689
+ "description": "Symfony DomCrawler Component",
690
+ "homepage": "https://symfony.com",
691
+ "time": "2017-09-11T15:55:22+00:00"
692
+ },
693
+ {
694
+ "name": "symfony/polyfill-mbstring",
695
+ "version": "v1.5.0",
696
+ "source": {
697
+ "type": "git",
698
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
699
+ "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803"
700
+ },
701
+ "dist": {
702
+ "type": "zip",
703
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7c8fae0ac1d216eb54349e6a8baa57d515fe8803",
704
+ "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803",
705
+ "shasum": ""
706
+ },
707
+ "require": {
708
+ "php": ">=5.3.3"
709
+ },
710
+ "suggest": {
711
+ "ext-mbstring": "For best performance"
712
+ },
713
+ "type": "library",
714
+ "extra": {
715
+ "branch-alias": {
716
+ "dev-master": "1.5-dev"
717
+ }
718
+ },
719
+ "autoload": {
720
+ "psr-4": {
721
+ "Symfony\\Polyfill\\Mbstring\\": ""
722
+ },
723
+ "files": [
724
+ "bootstrap.php"
725
+ ]
726
+ },
727
+ "notification-url": "https://packagist.org/downloads/",
728
+ "license": [
729
+ "MIT"
730
+ ],
731
+ "authors": [
732
+ {
733
+ "name": "Nicolas Grekas",
734
+ "email": "p@tchwork.com"
735
+ },
736
+ {
737
+ "name": "Symfony Community",
738
+ "homepage": "https://symfony.com/contributors"
739
+ }
740
+ ],
741
+ "description": "Symfony polyfill for the Mbstring extension",
742
+ "homepage": "https://symfony.com",
743
+ "keywords": [
744
+ "compatibility",
745
+ "mbstring",
746
+ "polyfill",
747
+ "portable",
748
+ "shim"
749
+ ],
750
+ "time": "2017-06-14T15:44:48+00:00"
751
+ },
752
+ {
753
+ "name": "symfony/translation",
754
+ "version": "v3.3.9",
755
+ "source": {
756
+ "type": "git",
757
+ "url": "https://github.com/symfony/translation.git",
758
+ "reference": "add53753d978f635492dfe8cd6953f6a7361ef90"
759
+ },
760
+ "dist": {
761
+ "type": "zip",
762
+ "url": "https://api.github.com/repos/symfony/translation/zipball/add53753d978f635492dfe8cd6953f6a7361ef90",
763
+ "reference": "add53753d978f635492dfe8cd6953f6a7361ef90",
764
+ "shasum": ""
765
+ },
766
+ "require": {
767
+ "php": "^5.5||^7.0||^8.0",
768
+ "symfony/polyfill-mbstring": "~1.0"
769
+ },
770
+ "conflict": {
771
+ "symfony/config": "<2.8",
772
+ "symfony/yaml": "<3.3"
773
+ },
774
+ "require-dev": {
775
+ "psr/log": "~1.0",
776
+ "symfony/config": "~2.8|~3.0",
777
+ "symfony/intl": "^2.8.18|^3.2.5",
778
+ "symfony/yaml": "~3.3"
779
+ },
780
+ "suggest": {
781
+ "psr/log": "To use logging capability in translator",
782
+ "symfony/config": "",
783
+ "symfony/yaml": ""
784
+ },
785
+ "type": "library",
786
+ "extra": {
787
+ "branch-alias": {
788
+ "dev-master": "3.3-dev"
789
+ }
790
+ },
791
+ "autoload": {
792
+ "psr-4": {
793
+ "Symfony\\Component\\Translation\\": ""
794
+ },
795
+ "exclude-from-classmap": [
796
+ "/Tests/"
797
+ ]
798
+ },
799
+ "notification-url": "https://packagist.org/downloads/",
800
+ "license": [
801
+ "MIT"
802
+ ],
803
+ "authors": [
804
+ {
805
+ "name": "Fabien Potencier",
806
+ "email": "fabien@symfony.com"
807
+ },
808
+ {
809
+ "name": "Symfony Community",
810
+ "homepage": "https://symfony.com/contributors"
811
+ }
812
+ ],
813
+ "description": "Symfony Translation Component",
814
+ "homepage": "https://symfony.com",
815
+ "time": "2017-07-29T21:54:42+00:00"
816
+ },
817
+ {
818
+ "name": "wa72/htmlpagedom",
819
+ "version": "v1.3.0",
820
+ "source": {
821
+ "type": "git",
822
+ "url": "https://github.com/wasinger/htmlpagedom.git",
823
+ "reference": "6e25a51ff490300b1b04704a90ffb92ff3cf7aab"
824
+ },
825
+ "dist": {
826
+ "type": "zip",
827
+ "url": "https://api.github.com/repos/wasinger/htmlpagedom/zipball/6e25a51ff490300b1b04704a90ffb92ff3cf7aab",
828
+ "reference": "6e25a51ff490300b1b04704a90ffb92ff3cf7aab",
829
+ "shasum": ""
830
+ },
831
+ "require": {
832
+ "php": ">=5.4.0",
833
+ "symfony/css-selector": ">=2.3",
834
+ "symfony/dom-crawler": "^2.3 <2.8 | ^2.8.3 | ^3.0.1"
835
+ },
836
+ "require-dev": {
837
+ "wa72/html-pretty-min": "^0.1.2"
838
+ },
839
+ "suggest": {
840
+ "wa72/html-pretty-min": "Minify or indent HTML documents"
841
+ },
842
+ "type": "library",
843
+ "extra": {
844
+ "branch-alias": {
845
+ "dev-master": "1.3.x-dev"
846
+ }
847
+ },
848
+ "autoload": {
849
+ "psr-4": {
850
+ "Wa72\\HtmlPageDom\\": "src/"
851
+ }
852
+ },
853
+ "notification-url": "https://packagist.org/downloads/",
854
+ "license": [
855
+ "MIT"
856
+ ],
857
+ "authors": [
858
+ {
859
+ "name": "Christoph Singer",
860
+ "email": "singer@webagentur72.de",
861
+ "homepage": "http://www.webagentur72.de"
862
+ }
863
+ ],
864
+ "description": "PHP implementation of the jQuery DOM manipulation API for HTML documents",
865
+ "homepage": "http://github.com/wasinger/htmlpagedom",
866
+ "keywords": [
867
+ "crawler",
868
+ "dom",
869
+ "html"
870
+ ],
871
+ "time": "2016-10-06T07:57:02+00:00"
872
+ }
873
+ ],
874
+ "packages-dev": [
875
+ {
876
+ "name": "doctrine/instantiator",
877
+ "version": "1.1.0",
878
+ "source": {
879
+ "type": "git",
880
+ "url": "https://github.com/doctrine/instantiator.git",
881
+ "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda"
882
+ },
883
+ "dist": {
884
+ "type": "zip",
885
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
886
+ "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
887
+ "shasum": ""
888
+ },
889
+ "require": {
890
+ "php": "^5.5||^7.0||^8.0"
891
+ },
892
+ "require-dev": {
893
+ "athletic/athletic": "~0.1.8",
894
+ "ext-pdo": "*",
895
+ "ext-phar": "*",
896
+ "phpunit/phpunit": "^6.2.3",
897
+ "squizlabs/php_codesniffer": "^3.0.2"
898
+ },
899
+ "type": "library",
900
+ "extra": {
901
+ "branch-alias": {
902
+ "dev-master": "1.2.x-dev"
903
+ }
904
+ },
905
+ "autoload": {
906
+ "psr-4": {
907
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
908
+ }
909
+ },
910
+ "notification-url": "https://packagist.org/downloads/",
911
+ "license": [
912
+ "MIT"
913
+ ],
914
+ "authors": [
915
+ {
916
+ "name": "Marco Pivetta",
917
+ "email": "ocramius@gmail.com",
918
+ "homepage": "http://ocramius.github.com/"
919
+ }
920
+ ],
921
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
922
+ "homepage": "https://github.com/doctrine/instantiator",
923
+ "keywords": [
924
+ "constructor",
925
+ "instantiate"
926
+ ],
927
+ "time": "2017-07-22T11:58:36+00:00"
928
+ },
929
+ {
930
+ "name": "myclabs/deep-copy",
931
+ "version": "1.6.1",
932
+ "source": {
933
+ "type": "git",
934
+ "url": "https://github.com/myclabs/DeepCopy.git",
935
+ "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102"
936
+ },
937
+ "dist": {
938
+ "type": "zip",
939
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8e6e04167378abf1ddb4d3522d8755c5fd90d102",
940
+ "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102",
941
+ "shasum": ""
942
+ },
943
+ "require": {
944
+ "php": ">=5.4.0"
945
+ },
946
+ "require-dev": {
947
+ "doctrine/collections": "1.*",
948
+ "phpunit/phpunit": "~4.1"
949
+ },
950
+ "type": "library",
951
+ "autoload": {
952
+ "psr-4": {
953
+ "DeepCopy\\": "src/DeepCopy/"
954
+ }
955
+ },
956
+ "notification-url": "https://packagist.org/downloads/",
957
+ "license": [
958
+ "MIT"
959
+ ],
960
+ "description": "Create deep copies (clones) of your objects",
961
+ "homepage": "https://github.com/myclabs/DeepCopy",
962
+ "keywords": [
963
+ "clone",
964
+ "copy",
965
+ "duplicate",
966
+ "object",
967
+ "object graph"
968
+ ],
969
+ "time": "2017-04-12T18:52:22+00:00"
970
+ },
971
+ {
972
+ "name": "phpdocumentor/reflection-common",
973
+ "version": "1.0.1",
974
+ "source": {
975
+ "type": "git",
976
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
977
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
978
+ },
979
+ "dist": {
980
+ "type": "zip",
981
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
982
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
983
+ "shasum": ""
984
+ },
985
+ "require": {
986
+ "php": ">=5.5"
987
+ },
988
+ "require-dev": {
989
+ "phpunit/phpunit": "^4.6"
990
+ },
991
+ "type": "library",
992
+ "extra": {
993
+ "branch-alias": {
994
+ "dev-master": "1.0.x-dev"
995
+ }
996
+ },
997
+ "autoload": {
998
+ "psr-4": {
999
+ "phpDocumentor\\Reflection\\": [
1000
+ "src"
1001
+ ]
1002
+ }
1003
+ },
1004
+ "notification-url": "https://packagist.org/downloads/",
1005
+ "license": [
1006
+ "MIT"
1007
+ ],
1008
+ "authors": [
1009
+ {
1010
+ "name": "Jaap van Otterdijk",
1011
+ "email": "opensource@ijaap.nl"
1012
+ }
1013
+ ],
1014
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
1015
+ "homepage": "http://www.phpdoc.org",
1016
+ "keywords": [
1017
+ "FQSEN",
1018
+ "phpDocumentor",
1019
+ "phpdoc",
1020
+ "reflection",
1021
+ "static analysis"
1022
+ ],
1023
+ "time": "2017-09-11T18:02:19+00:00"
1024
+ },
1025
+ {
1026
+ "name": "phpdocumentor/reflection-docblock",
1027
+ "version": "4.1.1",
1028
+ "source": {
1029
+ "type": "git",
1030
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
1031
+ "reference": "2d3d238c433cf69caeb4842e97a3223a116f94b2"
1032
+ },
1033
+ "dist": {
1034
+ "type": "zip",
1035
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/2d3d238c433cf69caeb4842e97a3223a116f94b2",
1036
+ "reference": "2d3d238c433cf69caeb4842e97a3223a116f94b2",
1037
+ "shasum": ""
1038
+ },
1039
+ "require": {
1040
+ "php": "^7.0||^8.0",
1041
+ "phpdocumentor/reflection-common": "^1.0@dev",
1042
+ "phpdocumentor/type-resolver": "^0.4.0",
1043
+ "webmozart/assert": "^1.0"
1044
+ },
1045
+ "require-dev": {
1046
+ "mockery/mockery": "^0.9.4",
1047
+ "phpunit/phpunit": "^4.4"
1048
+ },
1049
+ "type": "library",
1050
+ "autoload": {
1051
+ "psr-4": {
1052
+ "phpDocumentor\\Reflection\\": [
1053
+ "src/"
1054
+ ]
1055
+ }
1056
+ },
1057
+ "notification-url": "https://packagist.org/downloads/",
1058
+ "license": [
1059
+ "MIT"
1060
+ ],
1061
+ "authors": [
1062
+ {
1063
+ "name": "Mike van Riel",
1064
+ "email": "me@mikevanriel.com"
1065
+ }
1066
+ ],
1067
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
1068
+ "time": "2017-08-30T18:51:59+00:00"
1069
+ },
1070
+ {
1071
+ "name": "phpdocumentor/type-resolver",
1072
+ "version": "0.4.0",
1073
+ "source": {
1074
+ "type": "git",
1075
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
1076
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
1077
+ },
1078
+ "dist": {
1079
+ "type": "zip",
1080
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
1081
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
1082
+ "shasum": ""
1083
+ },
1084
+ "require": {
1085
+ "php": "^5.5||^7.0||^8.0",
1086
+ "phpdocumentor/reflection-common": "^1.0"
1087
+ },
1088
+ "require-dev": {
1089
+ "mockery/mockery": "^0.9.4",
1090
+ "phpunit/phpunit": "^5.2||^4.8.24"
1091
+ },
1092
+ "type": "library",
1093
+ "extra": {
1094
+ "branch-alias": {
1095
+ "dev-master": "1.0.x-dev"
1096
+ }
1097
+ },
1098
+ "autoload": {
1099
+ "psr-4": {
1100
+ "phpDocumentor\\Reflection\\": [
1101
+ "src/"
1102
+ ]
1103
+ }
1104
+ },
1105
+ "notification-url": "https://packagist.org/downloads/",
1106
+ "license": [
1107
+ "MIT"
1108
+ ],
1109
+ "authors": [
1110
+ {
1111
+ "name": "Mike van Riel",
1112
+ "email": "me@mikevanriel.com"
1113
+ }
1114
+ ],
1115
+ "time": "2017-07-14T14:27:02+00:00"
1116
+ },
1117
+ {
1118
+ "name": "phpspec/prophecy",
1119
+ "version": "v1.7.2",
1120
+ "source": {
1121
+ "type": "git",
1122
+ "url": "https://github.com/phpspec/prophecy.git",
1123
+ "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6"
1124
+ },
1125
+ "dist": {
1126
+ "type": "zip",
1127
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6",
1128
+ "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6",
1129
+ "shasum": ""
1130
+ },
1131
+ "require": {
1132
+ "doctrine/instantiator": "^1.0.2",
1133
+ "php": "^5.5||^7.0||^8.0",
1134
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
1135
+ "sebastian/comparator": "^1.1|^2.0",
1136
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0"
1137
+ },
1138
+ "require-dev": {
1139
+ "phpspec/phpspec": "^2.5|^3.2",
1140
+ "phpunit/phpunit": "^4.8 || ^5.6.5"
1141
+ },
1142
+ "type": "library",
1143
+ "extra": {
1144
+ "branch-alias": {
1145
+ "dev-master": "1.7.x-dev"
1146
+ }
1147
+ },
1148
+ "autoload": {
1149
+ "psr-0": {
1150
+ "Prophecy\\": "src/"
1151
+ }
1152
+ },
1153
+ "notification-url": "https://packagist.org/downloads/",
1154
+ "license": [
1155
+ "MIT"
1156
+ ],
1157
+ "authors": [
1158
+ {
1159
+ "name": "Konstantin Kudryashov",
1160
+ "email": "ever.zet@gmail.com",
1161
+ "homepage": "http://everzet.com"
1162
+ },
1163
+ {
1164
+ "name": "Marcello Duarte",
1165
+ "email": "marcello.duarte@gmail.com"
1166
+ }
1167
+ ],
1168
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
1169
+ "homepage": "https://github.com/phpspec/prophecy",
1170
+ "keywords": [
1171
+ "Double",
1172
+ "Dummy",
1173
+ "fake",
1174
+ "mock",
1175
+ "spy",
1176
+ "stub"
1177
+ ],
1178
+ "time": "2017-09-04T11:05:03+00:00"
1179
+ },
1180
+ {
1181
+ "name": "phpunit/php-code-coverage",
1182
+ "version": "4.0.8",
1183
+ "source": {
1184
+ "type": "git",
1185
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
1186
+ "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d"
1187
+ },
1188
+ "dist": {
1189
+ "type": "zip",
1190
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
1191
+ "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
1192
+ "shasum": ""
1193
+ },
1194
+ "require": {
1195
+ "ext-dom": "*",
1196
+ "ext-xmlwriter": "*",
1197
+ "php": "^5.5||^7.0||^8.0",
1198
+ "phpunit/php-file-iterator": "^1.3",
1199
+ "phpunit/php-text-template": "^1.2",
1200
+ "phpunit/php-token-stream": "^1.4.2 || ^2.0",
1201
+ "sebastian/code-unit-reverse-lookup": "^1.0",
1202
+ "sebastian/environment": "^1.3.2 || ^2.0",
1203
+ "sebastian/version": "^1.0 || ^2.0"
1204
+ },
1205
+ "require-dev": {
1206
+ "ext-xdebug": "^2.1.4",
1207
+ "phpunit/phpunit": "^5.7"
1208
+ },
1209
+ "suggest": {
1210
+ "ext-xdebug": "^2.5.1"
1211
+ },
1212
+ "type": "library",
1213
+ "extra": {
1214
+ "branch-alias": {
1215
+ "dev-master": "4.0.x-dev"
1216
+ }
1217
+ },
1218
+ "autoload": {
1219
+ "classmap": [
1220
+ "src/"
1221
+ ]
1222
+ },
1223
+ "notification-url": "https://packagist.org/downloads/",
1224
+ "license": [
1225
+ "BSD-3-Clause"
1226
+ ],
1227
+ "authors": [
1228
+ {
1229
+ "name": "Sebastian Bergmann",
1230
+ "email": "sb@sebastian-bergmann.de",
1231
+ "role": "lead"
1232
+ }
1233
+ ],
1234
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
1235
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
1236
+ "keywords": [
1237
+ "coverage",
1238
+ "testing",
1239
+ "xunit"
1240
+ ],
1241
+ "time": "2017-04-02T07:44:40+00:00"
1242
+ },
1243
+ {
1244
+ "name": "phpunit/php-file-iterator",
1245
+ "version": "1.4.2",
1246
+ "source": {
1247
+ "type": "git",
1248
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
1249
+ "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5"
1250
+ },
1251
+ "dist": {
1252
+ "type": "zip",
1253
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
1254
+ "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
1255
+ "shasum": ""
1256
+ },
1257
+ "require": {
1258
+ "php": ">=5.3.3"
1259
+ },
1260
+ "type": "library",
1261
+ "extra": {
1262
+ "branch-alias": {
1263
+ "dev-master": "1.4.x-dev"
1264
+ }
1265
+ },
1266
+ "autoload": {
1267
+ "classmap": [
1268
+ "src/"
1269
+ ]
1270
+ },
1271
+ "notification-url": "https://packagist.org/downloads/",
1272
+ "license": [
1273
+ "BSD-3-Clause"
1274
+ ],
1275
+ "authors": [
1276
+ {
1277
+ "name": "Sebastian Bergmann",
1278
+ "email": "sb@sebastian-bergmann.de",
1279
+ "role": "lead"
1280
+ }
1281
+ ],
1282
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
1283
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
1284
+ "keywords": [
1285
+ "filesystem",
1286
+ "iterator"
1287
+ ],
1288
+ "time": "2016-10-03T07:40:28+00:00"
1289
+ },
1290
+ {
1291
+ "name": "phpunit/php-text-template",
1292
+ "version": "1.2.1",
1293
+ "source": {
1294
+ "type": "git",
1295
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
1296
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
1297
+ },
1298
+ "dist": {
1299
+ "type": "zip",
1300
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
1301
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
1302
+ "shasum": ""
1303
+ },
1304
+ "require": {
1305
+ "php": ">=5.3.3"
1306
+ },
1307
+ "type": "library",
1308
+ "autoload": {
1309
+ "classmap": [
1310
+ "src/"
1311
+ ]
1312
+ },
1313
+ "notification-url": "https://packagist.org/downloads/",
1314
+ "license": [
1315
+ "BSD-3-Clause"
1316
+ ],
1317
+ "authors": [
1318
+ {
1319
+ "name": "Sebastian Bergmann",
1320
+ "email": "sebastian@phpunit.de",
1321
+ "role": "lead"
1322
+ }
1323
+ ],
1324
+ "description": "Simple template engine.",
1325
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
1326
+ "keywords": [
1327
+ "template"
1328
+ ],
1329
+ "time": "2015-06-21T13:50:34+00:00"
1330
+ },
1331
+ {
1332
+ "name": "phpunit/php-timer",
1333
+ "version": "1.0.9",
1334
+ "source": {
1335
+ "type": "git",
1336
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
1337
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
1338
+ },
1339
+ "dist": {
1340
+ "type": "zip",
1341
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
1342
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
1343
+ "shasum": ""
1344
+ },
1345
+ "require": {
1346
+ "php": "^5.5||^7.0||^8.0"
1347
+ },
1348
+ "require-dev": {
1349
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
1350
+ },
1351
+ "type": "library",
1352
+ "extra": {
1353
+ "branch-alias": {
1354
+ "dev-master": "1.0-dev"
1355
+ }
1356
+ },
1357
+ "autoload": {
1358
+ "classmap": [
1359
+ "src/"
1360
+ ]
1361
+ },
1362
+ "notification-url": "https://packagist.org/downloads/",
1363
+ "license": [
1364
+ "BSD-3-Clause"
1365
+ ],
1366
+ "authors": [
1367
+ {
1368
+ "name": "Sebastian Bergmann",
1369
+ "email": "sb@sebastian-bergmann.de",
1370
+ "role": "lead"
1371
+ }
1372
+ ],
1373
+ "description": "Utility class for timing",
1374
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
1375
+ "keywords": [
1376
+ "timer"
1377
+ ],
1378
+ "time": "2017-02-26T11:10:40+00:00"
1379
+ },
1380
+ {
1381
+ "name": "phpunit/php-token-stream",
1382
+ "version": "2.0.1",
1383
+ "source": {
1384
+ "type": "git",
1385
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
1386
+ "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0"
1387
+ },
1388
+ "dist": {
1389
+ "type": "zip",
1390
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9a02332089ac48e704c70f6cefed30c224e3c0b0",
1391
+ "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0",
1392
+ "shasum": ""
1393
+ },
1394
+ "require": {
1395
+ "ext-tokenizer": "*",
1396
+ "php": "^5.5||^7.0||^8.0"
1397
+ },
1398
+ "require-dev": {
1399
+ "phpunit/phpunit": "^6.2.4"
1400
+ },
1401
+ "type": "library",
1402
+ "extra": {
1403
+ "branch-alias": {
1404
+ "dev-master": "2.0-dev"
1405
+ }
1406
+ },
1407
+ "autoload": {
1408
+ "classmap": [
1409
+ "src/"
1410
+ ]
1411
+ },
1412
+ "notification-url": "https://packagist.org/downloads/",
1413
+ "license": [
1414
+ "BSD-3-Clause"
1415
+ ],
1416
+ "authors": [
1417
+ {
1418
+ "name": "Sebastian Bergmann",
1419
+ "email": "sebastian@phpunit.de"
1420
+ }
1421
+ ],
1422
+ "description": "Wrapper around PHP's tokenizer extension.",
1423
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
1424
+ "keywords": [
1425
+ "tokenizer"
1426
+ ],
1427
+ "time": "2017-08-20T05:47:52+00:00"
1428
+ },
1429
+ {
1430
+ "name": "phpunit/phpunit",
1431
+ "version": "5.7.22",
1432
+ "source": {
1433
+ "type": "git",
1434
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
1435
+ "reference": "10df877596c9906d4110b5b905313829043f2ada"
1436
+ },
1437
+ "dist": {
1438
+ "type": "zip",
1439
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/10df877596c9906d4110b5b905313829043f2ada",
1440
+ "reference": "10df877596c9906d4110b5b905313829043f2ada",
1441
+ "shasum": ""
1442
+ },
1443
+ "require": {
1444
+ "ext-dom": "*",
1445
+ "ext-json": "*",
1446
+ "ext-libxml": "*",
1447
+ "ext-mbstring": "*",
1448
+ "ext-xml": "*",
1449
+ "myclabs/deep-copy": "~1.3",
1450
+ "php": "^5.5||^7.0||^8.0",
1451
+ "phpspec/prophecy": "^1.6.2",
1452
+ "phpunit/php-code-coverage": "^4.0.4",
1453
+ "phpunit/php-file-iterator": "~1.4",
1454
+ "phpunit/php-text-template": "~1.2",
1455
+ "phpunit/php-timer": "^1.0.6",
1456
+ "phpunit/phpunit-mock-objects": "^3.2",
1457
+ "sebastian/comparator": "^1.2.4",
1458
+ "sebastian/diff": "^1.4.3",
1459
+ "sebastian/environment": "^1.3.4 || ^2.0",
1460
+ "sebastian/exporter": "~2.0",
1461
+ "sebastian/global-state": "^1.1",
1462
+ "sebastian/object-enumerator": "~2.0",
1463
+ "sebastian/resource-operations": "~1.0",
1464
+ "sebastian/version": "~1.0.3|~2.0",
1465
+ "symfony/yaml": "~2.1|~3.0"
1466
+ },
1467
+ "conflict": {
1468
+ "phpdocumentor/reflection-docblock": "3.0.2"
1469
+ },
1470
+ "require-dev": {
1471
+ "ext-pdo": "*"
1472
+ },
1473
+ "suggest": {
1474
+ "ext-xdebug": "*",
1475
+ "phpunit/php-invoker": "~1.1"
1476
+ },
1477
+ "bin": [
1478
+ "phpunit"
1479
+ ],
1480
+ "type": "library",
1481
+ "extra": {
1482
+ "branch-alias": {
1483
+ "dev-master": "5.7.x-dev"
1484
+ }
1485
+ },
1486
+ "autoload": {
1487
+ "classmap": [
1488
+ "src/"
1489
+ ]
1490
+ },
1491
+ "notification-url": "https://packagist.org/downloads/",
1492
+ "license": [
1493
+ "BSD-3-Clause"
1494
+ ],
1495
+ "authors": [
1496
+ {
1497
+ "name": "Sebastian Bergmann",
1498
+ "email": "sebastian@phpunit.de",
1499
+ "role": "lead"
1500
+ }
1501
+ ],
1502
+ "description": "The PHP Unit Testing framework.",
1503
+ "homepage": "https://phpunit.de/",
1504
+ "keywords": [
1505
+ "phpunit",
1506
+ "testing",
1507
+ "xunit"
1508
+ ],
1509
+ "time": "2017-09-24T07:23:38+00:00"
1510
+ },
1511
+ {
1512
+ "name": "phpunit/phpunit-mock-objects",
1513
+ "version": "3.4.4",
1514
+ "source": {
1515
+ "type": "git",
1516
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
1517
+ "reference": "a23b761686d50a560cc56233b9ecf49597cc9118"
1518
+ },
1519
+ "dist": {
1520
+ "type": "zip",
1521
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118",
1522
+ "reference": "a23b761686d50a560cc56233b9ecf49597cc9118",
1523
+ "shasum": ""
1524
+ },
1525
+ "require": {
1526
+ "doctrine/instantiator": "^1.0.2",
1527
+ "php": "^5.5||^7.0||^8.0",
1528
+ "phpunit/php-text-template": "^1.2",
1529
+ "sebastian/exporter": "^1.2 || ^2.0"
1530
+ },
1531
+ "conflict": {
1532
+ "phpunit/phpunit": "<5.4.0"
1533
+ },
1534
+ "require-dev": {
1535
+ "phpunit/phpunit": "^5.4"
1536
+ },
1537
+ "suggest": {
1538
+ "ext-soap": "*"
1539
+ },
1540
+ "type": "library",
1541
+ "extra": {
1542
+ "branch-alias": {
1543
+ "dev-master": "3.2.x-dev"
1544
+ }
1545
+ },
1546
+ "autoload": {
1547
+ "classmap": [
1548
+ "src/"
1549
+ ]
1550
+ },
1551
+ "notification-url": "https://packagist.org/downloads/",
1552
+ "license": [
1553
+ "BSD-3-Clause"
1554
+ ],
1555
+ "authors": [
1556
+ {
1557
+ "name": "Sebastian Bergmann",
1558
+ "email": "sb@sebastian-bergmann.de",
1559
+ "role": "lead"
1560
+ }
1561
+ ],
1562
+ "description": "Mock Object library for PHPUnit",
1563
+ "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
1564
+ "keywords": [
1565
+ "mock",
1566
+ "xunit"
1567
+ ],
1568
+ "time": "2017-06-30T09:13:00+00:00"
1569
+ },
1570
+ {
1571
+ "name": "sebastian/code-unit-reverse-lookup",
1572
+ "version": "1.0.1",
1573
+ "source": {
1574
+ "type": "git",
1575
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
1576
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
1577
+ },
1578
+ "dist": {
1579
+ "type": "zip",
1580
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1581
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1582
+ "shasum": ""
1583
+ },
1584
+ "require": {
1585
+ "php": "^5.5||^7.0||^8.0"
1586
+ },
1587
+ "require-dev": {
1588
+ "phpunit/phpunit": "^5.7 || ^6.0"
1589
+ },
1590
+ "type": "library",
1591
+ "extra": {
1592
+ "branch-alias": {
1593
+ "dev-master": "1.0.x-dev"
1594
+ }
1595
+ },
1596
+ "autoload": {
1597
+ "classmap": [
1598
+ "src/"
1599
+ ]
1600
+ },
1601
+ "notification-url": "https://packagist.org/downloads/",
1602
+ "license": [
1603
+ "BSD-3-Clause"
1604
+ ],
1605
+ "authors": [
1606
+ {
1607
+ "name": "Sebastian Bergmann",
1608
+ "email": "sebastian@phpunit.de"
1609
+ }
1610
+ ],
1611
+ "description": "Looks up which function or method a line of code belongs to",
1612
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
1613
+ "time": "2017-03-04T06:30:41+00:00"
1614
+ },
1615
+ {
1616
+ "name": "sebastian/comparator",
1617
+ "version": "1.2.4",
1618
+ "source": {
1619
+ "type": "git",
1620
+ "url": "https://github.com/sebastianbergmann/comparator.git",
1621
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
1622
+ },
1623
+ "dist": {
1624
+ "type": "zip",
1625
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
1626
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
1627
+ "shasum": ""
1628
+ },
1629
+ "require": {
1630
+ "php": ">=5.3.3",
1631
+ "sebastian/diff": "~1.2",
1632
+ "sebastian/exporter": "~1.2 || ~2.0"
1633
+ },
1634
+ "require-dev": {
1635
+ "phpunit/phpunit": "~4.4"
1636
+ },
1637
+ "type": "library",
1638
+ "extra": {
1639
+ "branch-alias": {
1640
+ "dev-master": "1.2.x-dev"
1641
+ }
1642
+ },
1643
+ "autoload": {
1644
+ "classmap": [
1645
+ "src/"
1646
+ ]
1647
+ },
1648
+ "notification-url": "https://packagist.org/downloads/",
1649
+ "license": [
1650
+ "BSD-3-Clause"
1651
+ ],
1652
+ "authors": [
1653
+ {
1654
+ "name": "Jeff Welch",
1655
+ "email": "whatthejeff@gmail.com"
1656
+ },
1657
+ {
1658
+ "name": "Volker Dusch",
1659
+ "email": "github@wallbash.com"
1660
+ },
1661
+ {
1662
+ "name": "Bernhard Schussek",
1663
+ "email": "bschussek@2bepublished.at"
1664
+ },
1665
+ {
1666
+ "name": "Sebastian Bergmann",
1667
+ "email": "sebastian@phpunit.de"
1668
+ }
1669
+ ],
1670
+ "description": "Provides the functionality to compare PHP values for equality",
1671
+ "homepage": "http://www.github.com/sebastianbergmann/comparator",
1672
+ "keywords": [
1673
+ "comparator",
1674
+ "compare",
1675
+ "equality"
1676
+ ],
1677
+ "time": "2017-01-29T09:50:25+00:00"
1678
+ },
1679
+ {
1680
+ "name": "sebastian/diff",
1681
+ "version": "1.4.3",
1682
+ "source": {
1683
+ "type": "git",
1684
+ "url": "https://github.com/sebastianbergmann/diff.git",
1685
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
1686
+ },
1687
+ "dist": {
1688
+ "type": "zip",
1689
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
1690
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
1691
+ "shasum": ""
1692
+ },
1693
+ "require": {
1694
+ "php": "^5.5||^7.0||^8.0"
1695
+ },
1696
+ "require-dev": {
1697
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
1698
+ },
1699
+ "type": "library",
1700
+ "extra": {
1701
+ "branch-alias": {
1702
+ "dev-master": "1.4-dev"
1703
+ }
1704
+ },
1705
+ "autoload": {
1706
+ "classmap": [
1707
+ "src/"
1708
+ ]
1709
+ },
1710
+ "notification-url": "https://packagist.org/downloads/",
1711
+ "license": [
1712
+ "BSD-3-Clause"
1713
+ ],
1714
+ "authors": [
1715
+ {
1716
+ "name": "Kore Nordmann",
1717
+ "email": "mail@kore-nordmann.de"
1718
+ },
1719
+ {
1720
+ "name": "Sebastian Bergmann",
1721
+ "email": "sebastian@phpunit.de"
1722
+ }
1723
+ ],
1724
+ "description": "Diff implementation",
1725
+ "homepage": "https://github.com/sebastianbergmann/diff",
1726
+ "keywords": [
1727
+ "diff"
1728
+ ],
1729
+ "time": "2017-05-22T07:24:03+00:00"
1730
+ },
1731
+ {
1732
+ "name": "sebastian/environment",
1733
+ "version": "2.0.0",
1734
+ "source": {
1735
+ "type": "git",
1736
+ "url": "https://github.com/sebastianbergmann/environment.git",
1737
+ "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac"
1738
+ },
1739
+ "dist": {
1740
+ "type": "zip",
1741
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
1742
+ "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
1743
+ "shasum": ""
1744
+ },
1745
+ "require": {
1746
+ "php": "^5.5||^7.0||^8.0"
1747
+ },
1748
+ "require-dev": {
1749
+ "phpunit/phpunit": "^5.0"
1750
+ },
1751
+ "type": "library",
1752
+ "extra": {
1753
+ "branch-alias": {
1754
+ "dev-master": "2.0.x-dev"
1755
+ }
1756
+ },
1757
+ "autoload": {
1758
+ "classmap": [
1759
+ "src/"
1760
+ ]
1761
+ },
1762
+ "notification-url": "https://packagist.org/downloads/",
1763
+ "license": [
1764
+ "BSD-3-Clause"
1765
+ ],
1766
+ "authors": [
1767
+ {
1768
+ "name": "Sebastian Bergmann",
1769
+ "email": "sebastian@phpunit.de"
1770
+ }
1771
+ ],
1772
+ "description": "Provides functionality to handle HHVM/PHP environments",
1773
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
1774
+ "keywords": [
1775
+ "Xdebug",
1776
+ "environment",
1777
+ "hhvm"
1778
+ ],
1779
+ "time": "2016-11-26T07:53:53+00:00"
1780
+ },
1781
+ {
1782
+ "name": "sebastian/exporter",
1783
+ "version": "2.0.0",
1784
+ "source": {
1785
+ "type": "git",
1786
+ "url": "https://github.com/sebastianbergmann/exporter.git",
1787
+ "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4"
1788
+ },
1789
+ "dist": {
1790
+ "type": "zip",
1791
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
1792
+ "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
1793
+ "shasum": ""
1794
+ },
1795
+ "require": {
1796
+ "php": ">=5.3.3",
1797
+ "sebastian/recursion-context": "~2.0"
1798
+ },
1799
+ "require-dev": {
1800
+ "ext-mbstring": "*",
1801
+ "phpunit/phpunit": "~4.4"
1802
+ },
1803
+ "type": "library",
1804
+ "extra": {
1805
+ "branch-alias": {
1806
+ "dev-master": "2.0.x-dev"
1807
+ }
1808
+ },
1809
+ "autoload": {
1810
+ "classmap": [
1811
+ "src/"
1812
+ ]
1813
+ },
1814
+ "notification-url": "https://packagist.org/downloads/",
1815
+ "license": [
1816
+ "BSD-3-Clause"
1817
+ ],
1818
+ "authors": [
1819
+ {
1820
+ "name": "Jeff Welch",
1821
+ "email": "whatthejeff@gmail.com"
1822
+ },
1823
+ {
1824
+ "name": "Volker Dusch",
1825
+ "email": "github@wallbash.com"
1826
+ },
1827
+ {
1828
+ "name": "Bernhard Schussek",
1829
+ "email": "bschussek@2bepublished.at"
1830
+ },
1831
+ {
1832
+ "name": "Sebastian Bergmann",
1833
+ "email": "sebastian@phpunit.de"
1834
+ },
1835
+ {
1836
+ "name": "Adam Harvey",
1837
+ "email": "aharvey@php.net"
1838
+ }
1839
+ ],
1840
+ "description": "Provides the functionality to export PHP variables for visualization",
1841
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
1842
+ "keywords": [
1843
+ "export",
1844
+ "exporter"
1845
+ ],
1846
+ "time": "2016-11-19T08:54:04+00:00"
1847
+ },
1848
+ {
1849
+ "name": "sebastian/global-state",
1850
+ "version": "1.1.1",
1851
+ "source": {
1852
+ "type": "git",
1853
+ "url": "https://github.com/sebastianbergmann/global-state.git",
1854
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
1855
+ },
1856
+ "dist": {
1857
+ "type": "zip",
1858
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
1859
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
1860
+ "shasum": ""
1861
+ },
1862
+ "require": {
1863
+ "php": ">=5.3.3"
1864
+ },
1865
+ "require-dev": {
1866
+ "phpunit/phpunit": "~4.2"
1867
+ },
1868
+ "suggest": {
1869
+ "ext-uopz": "*"
1870
+ },
1871
+ "type": "library",
1872
+ "extra": {
1873
+ "branch-alias": {
1874
+ "dev-master": "1.0-dev"
1875
+ }
1876
+ },
1877
+ "autoload": {
1878
+ "classmap": [
1879
+ "src/"
1880
+ ]
1881
+ },
1882
+ "notification-url": "https://packagist.org/downloads/",
1883
+ "license": [
1884
+ "BSD-3-Clause"
1885
+ ],
1886
+ "authors": [
1887
+ {
1888
+ "name": "Sebastian Bergmann",
1889
+ "email": "sebastian@phpunit.de"
1890
+ }
1891
+ ],
1892
+ "description": "Snapshotting of global state",
1893
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
1894
+ "keywords": [
1895
+ "global state"
1896
+ ],
1897
+ "time": "2015-10-12T03:26:01+00:00"
1898
+ },
1899
+ {
1900
+ "name": "sebastian/object-enumerator",
1901
+ "version": "2.0.1",
1902
+ "source": {
1903
+ "type": "git",
1904
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
1905
+ "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7"
1906
+ },
1907
+ "dist": {
1908
+ "type": "zip",
1909
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7",
1910
+ "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7",
1911
+ "shasum": ""
1912
+ },
1913
+ "require": {
1914
+ "php": "^5.5||^7.0||^8.0",
1915
+ "sebastian/recursion-context": "~2.0"
1916
+ },
1917
+ "require-dev": {
1918
+ "phpunit/phpunit": "~5"
1919
+ },
1920
+ "type": "library",
1921
+ "extra": {
1922
+ "branch-alias": {
1923
+ "dev-master": "2.0.x-dev"
1924
+ }
1925
+ },
1926
+ "autoload": {
1927
+ "classmap": [
1928
+ "src/"
1929
+ ]
1930
+ },
1931
+ "notification-url": "https://packagist.org/downloads/",
1932
+ "license": [
1933
+ "BSD-3-Clause"
1934
+ ],
1935
+ "authors": [
1936
+ {
1937
+ "name": "Sebastian Bergmann",
1938
+ "email": "sebastian@phpunit.de"
1939
+ }
1940
+ ],
1941
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
1942
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
1943
+ "time": "2017-02-18T15:18:39+00:00"
1944
+ },
1945
+ {
1946
+ "name": "sebastian/recursion-context",
1947
+ "version": "2.0.0",
1948
+ "source": {
1949
+ "type": "git",
1950
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
1951
+ "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a"
1952
+ },
1953
+ "dist": {
1954
+ "type": "zip",
1955
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a",
1956
+ "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a",
1957
+ "shasum": ""
1958
+ },
1959
+ "require": {
1960
+ "php": ">=5.3.3"
1961
+ },
1962
+ "require-dev": {
1963
+ "phpunit/phpunit": "~4.4"
1964
+ },
1965
+ "type": "library",
1966
+ "extra": {
1967
+ "branch-alias": {
1968
+ "dev-master": "2.0.x-dev"
1969
+ }
1970
+ },
1971
+ "autoload": {
1972
+ "classmap": [
1973
+ "src/"
1974
+ ]
1975
+ },
1976
+ "notification-url": "https://packagist.org/downloads/",
1977
+ "license": [
1978
+ "BSD-3-Clause"
1979
+ ],
1980
+ "authors": [
1981
+ {
1982
+ "name": "Jeff Welch",
1983
+ "email": "whatthejeff@gmail.com"
1984
+ },
1985
+ {
1986
+ "name": "Sebastian Bergmann",
1987
+ "email": "sebastian@phpunit.de"
1988
+ },
1989
+ {
1990
+ "name": "Adam Harvey",
1991
+ "email": "aharvey@php.net"
1992
+ }
1993
+ ],
1994
+ "description": "Provides functionality to recursively process PHP variables",
1995
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
1996
+ "time": "2016-11-19T07:33:16+00:00"
1997
+ },
1998
+ {
1999
+ "name": "sebastian/resource-operations",
2000
+ "version": "1.0.0",
2001
+ "source": {
2002
+ "type": "git",
2003
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
2004
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
2005
+ },
2006
+ "dist": {
2007
+ "type": "zip",
2008
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
2009
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
2010
+ "shasum": ""
2011
+ },
2012
+ "require": {
2013
+ "php": "^5.5||^7.0||^8.0.0"
2014
+ },
2015
+ "type": "library",
2016
+ "extra": {
2017
+ "branch-alias": {
2018
+ "dev-master": "1.0.x-dev"
2019
+ }
2020
+ },
2021
+ "autoload": {
2022
+ "classmap": [
2023
+ "src/"
2024
+ ]
2025
+ },
2026
+ "notification-url": "https://packagist.org/downloads/",
2027
+ "license": [
2028
+ "BSD-3-Clause"
2029
+ ],
2030
+ "authors": [
2031
+ {
2032
+ "name": "Sebastian Bergmann",
2033
+ "email": "sebastian@phpunit.de"
2034
+ }
2035
+ ],
2036
+ "description": "Provides a list of PHP built-in functions that operate on resources",
2037
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
2038
+ "time": "2015-07-28T20:34:47+00:00"
2039
+ },
2040
+ {
2041
+ "name": "sebastian/version",
2042
+ "version": "2.0.1",
2043
+ "source": {
2044
+ "type": "git",
2045
+ "url": "https://github.com/sebastianbergmann/version.git",
2046
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
2047
+ },
2048
+ "dist": {
2049
+ "type": "zip",
2050
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
2051
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
2052
+ "shasum": ""
2053
+ },
2054
+ "require": {
2055
+ "php": "^5.5||^7.0||^8.0"
2056
+ },
2057
+ "type": "library",
2058
+ "extra": {
2059
+ "branch-alias": {
2060
+ "dev-master": "2.0.x-dev"
2061
+ }
2062
+ },
2063
+ "autoload": {
2064
+ "classmap": [
2065
+ "src/"
2066
+ ]
2067
+ },
2068
+ "notification-url": "https://packagist.org/downloads/",
2069
+ "license": [
2070
+ "BSD-3-Clause"
2071
+ ],
2072
+ "authors": [
2073
+ {
2074
+ "name": "Sebastian Bergmann",
2075
+ "email": "sebastian@phpunit.de",
2076
+ "role": "lead"
2077
+ }
2078
+ ],
2079
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
2080
+ "homepage": "https://github.com/sebastianbergmann/version",
2081
+ "time": "2016-10-03T07:35:21+00:00"
2082
+ },
2083
+ {
2084
+ "name": "symfony/yaml",
2085
+ "version": "v3.3.9",
2086
+ "source": {
2087
+ "type": "git",
2088
+ "url": "https://github.com/symfony/yaml.git",
2089
+ "reference": "1d8c2a99c80862bdc3af94c1781bf70f86bccac0"
2090
+ },
2091
+ "dist": {
2092
+ "type": "zip",
2093
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/1d8c2a99c80862bdc3af94c1781bf70f86bccac0",
2094
+ "reference": "1d8c2a99c80862bdc3af94c1781bf70f86bccac0",
2095
+ "shasum": ""
2096
+ },
2097
+ "require": {
2098
+ "php": "^5.5||^7.0||^8.0"
2099
+ },
2100
+ "require-dev": {
2101
+ "symfony/console": "~2.8|~3.0"
2102
+ },
2103
+ "suggest": {
2104
+ "symfony/console": "For validating YAML files using the lint command"
2105
+ },
2106
+ "type": "library",
2107
+ "extra": {
2108
+ "branch-alias": {
2109
+ "dev-master": "3.3-dev"
2110
+ }
2111
+ },
2112
+ "autoload": {
2113
+ "psr-4": {
2114
+ "Symfony\\Component\\Yaml\\": ""
2115
+ },
2116
+ "exclude-from-classmap": [
2117
+ "/Tests/"
2118
+ ]
2119
+ },
2120
+ "notification-url": "https://packagist.org/downloads/",
2121
+ "license": [
2122
+ "MIT"
2123
+ ],
2124
+ "authors": [
2125
+ {
2126
+ "name": "Fabien Potencier",
2127
+ "email": "fabien@symfony.com"
2128
+ },
2129
+ {
2130
+ "name": "Symfony Community",
2131
+ "homepage": "https://symfony.com/contributors"
2132
+ }
2133
+ ],
2134
+ "description": "Symfony Yaml Component",
2135
+ "homepage": "https://symfony.com",
2136
+ "time": "2017-07-29T21:54:42+00:00"
2137
+ },
2138
+ {
2139
+ "name": "webmozart/assert",
2140
+ "version": "1.2.0",
2141
+ "source": {
2142
+ "type": "git",
2143
+ "url": "https://github.com/webmozart/assert.git",
2144
+ "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f"
2145
+ },
2146
+ "dist": {
2147
+ "type": "zip",
2148
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f",
2149
+ "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f",
2150
+ "shasum": ""
2151
+ },
2152
+ "require": {
2153
+ "php": "^5.5||^7.0||^8.0"
2154
+ },
2155
+ "require-dev": {
2156
+ "phpunit/phpunit": "^4.6",
2157
+ "sebastian/version": "^1.0.1"
2158
+ },
2159
+ "type": "library",
2160
+ "extra": {
2161
+ "branch-alias": {
2162
+ "dev-master": "1.3-dev"
2163
+ }
2164
+ },
2165
+ "autoload": {
2166
+ "psr-4": {
2167
+ "Webmozart\\Assert\\": "src/"
2168
+ }
2169
+ },
2170
+ "notification-url": "https://packagist.org/downloads/",
2171
+ "license": [
2172
+ "MIT"
2173
+ ],
2174
+ "authors": [
2175
+ {
2176
+ "name": "Bernhard Schussek",
2177
+ "email": "bschussek@gmail.com"
2178
+ }
2179
+ ],
2180
+ "description": "Assertions to validate method input/output with nice error messages.",
2181
+ "keywords": [
2182
+ "assert",
2183
+ "check",
2184
+ "validate"
2185
+ ],
2186
+ "time": "2016-11-23T20:04:58+00:00"
2187
+ }
2188
+ ],
2189
+ "aliases": [],
2190
+ "minimum-stability": "stable",
2191
+ "stability-flags": [],
2192
+ "prefer-stable": false,
2193
+ "prefer-lowest": false,
2194
+ "platform": [],
2195
+ "platform-dev": []
2196
+ }
res/mangafox-master/phpunit.xml ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <phpunit backupGlobals="false"
3
+ backupStaticAttributes="false"
4
+ bootstrap="vendor/autoload.php"
5
+ colors="true"
6
+ convertErrorsToExceptions="true"
7
+ convertNoticesToExceptions="true"
8
+ convertWarningsToExceptions="true"
9
+ processIsolation="false"
10
+ stopOnFailure="false">
11
+ <testsuites>
12
+ <testsuite name="Application Test Suite">
13
+ <directory suffix="Test.php">./tests</directory>
14
+ </testsuite>
15
+ </testsuites>
16
+ <filter>
17
+ <whitelist>
18
+ <directory suffix=".php">src/</directory>
19
+ <directory suffix=".php">tests/</directory>
20
+ </whitelist>
21
+ </filter>
22
+ </phpunit>
res/mangafox-master/src/Exceptions/MangafoxDirectoryBuilderInvalidBrowseByFilterException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxDirectoryBuilderInvalidBrowseByFilterException extends MangafoxInvalidArgumentException
6
+ {
7
+ public function __construct($value = null, $suggestions = [])
8
+ {
9
+ return parent::__construct('browseBy', $value, $suggestions);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxDirectoryBuilderInvalidBrowseByGenreValueException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxDirectoryBuilderInvalidBrowseByGenreValueException extends MangafoxInvalidArgumentException
6
+ {
7
+ public function __construct($value = null, $suggestions = [])
8
+ {
9
+ return parent::__construct('browseBy', $value, $suggestions);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxDirectoryBuilderInvalidBrowseByInitialValueException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxDirectoryBuilderInvalidBrowseByInitialValueException extends MangafoxInvalidArgumentException
6
+ {
7
+ public function __construct($value = null, $suggestions = [])
8
+ {
9
+ return parent::__construct('browseBy', $value, $suggestions);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxDirectoryBuilderInvalidBrowseByReleasedYearValueException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxDirectoryBuilderInvalidBrowseByReleasedYearValueException extends MangafoxInvalidArgumentException
6
+ {
7
+ public function __construct($value = null, $suggestions = [])
8
+ {
9
+ $this->message = sprintf("invalid value '%s' for method %s(), expects: 4 digits year (e.g. 2017 or 'older')", $value, 'browseBy');
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxDirectoryBuilderInvalidBrowseByStatusValueException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxDirectoryBuilderInvalidBrowseByStatusValueException extends MangafoxInvalidArgumentException
6
+ {
7
+ public function __construct($value = null, $suggestions = [])
8
+ {
9
+ return parent::__construct('browseBy', $value, $suggestions);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxDirectoryBuilderInvalidSortByDirectionException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxDirectoryBuilderInvalidSortByDirectionException extends MangafoxInvalidArgumentException
6
+ {
7
+ public function __construct($value = null, $suggestions = [])
8
+ {
9
+ return parent::__construct('sortBy', $value, $suggestions);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxDirectoryBuilderInvalidSortByValueException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxDirectoryBuilderInvalidSortByValueException extends MangafoxInvalidArgumentException
6
+ {
7
+ public function __construct($value = null, $suggestions = [])
8
+ {
9
+ return parent::__construct('sortBy', $value, $suggestions);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxException.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ use Exception;
6
+
7
+ class MangafoxException extends Exception
8
+ {
9
+ }
res/mangafox-master/src/Exceptions/MangafoxInvalidArgumentException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxInvalidArgumentException extends MangafoxException
6
+ {
7
+ public function __construct($field, $value = null, $suggestions = [])
8
+ {
9
+ $this->message = sprintf("invalid value '%s' for method %s(), expects: ".implode(', ', $suggestions).'', $value, $field);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxParserDateNotSupportedException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxParserDateNotSupportedException extends MangafoxException
6
+ {
7
+ public function __construct($date)
8
+ {
9
+ $this->message = sprintf('Format %s not supported', $date);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxResourceParserInvalidUrlException.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxResourceParserInvalidUrlException extends MangafoxException
6
+ {
7
+ public function __construct()
8
+ {
9
+ }
10
+ }
res/mangafox-master/src/Exceptions/MangafoxResourceRequestNotFoundException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxResourceRequestNotFoundException extends MangafoxException
6
+ {
7
+ public function __construct($uid)
8
+ {
9
+ $this->message = sprintf("The resource %s doesn't exist or is invalid", $uid);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxScanBuilderInvalidUrlException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxScanBuilderInvalidUrlException extends MangafoxException
6
+ {
7
+ public function __construct($url, $suggestion)
8
+ {
9
+ $this->message = sprintf("invalid value '%s' for method %s(), e.g (%s)", $url, 'url', $suggestion);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidArtistFilterException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxSearchBuilderInvalidArtistFilterException extends MangafoxInvalidArgumentException
6
+ {
7
+ public function __construct($value = null, $suggestions = [])
8
+ {
9
+ return parent::__construct('artist', $value, $suggestions);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidAuthorFilterException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxSearchBuilderInvalidAuthorFilterException extends MangafoxInvalidArgumentException
6
+ {
7
+ public function __construct($value = null, $suggestions = [])
8
+ {
9
+ return parent::__construct('author', $value, $suggestions);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidCompletedValueException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxSearchBuilderInvalidCompletedValueException extends MangafoxInvalidArgumentException
6
+ {
7
+ public function __construct($value = null, $suggestions = [])
8
+ {
9
+ return parent::__construct('completed', $value, $suggestions);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidFilterException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxSearchBuilderInvalidFilterException extends MangafoxInvalidArgumentException
6
+ {
7
+ public function __construct($field, $value = null, $suggestions = [])
8
+ {
9
+ return parent::__construct($field, $value, $suggestions);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidGenresFilterException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxSearchBuilderInvalidGenresFilterException extends MangafoxInvalidArgumentException
6
+ {
7
+ public function __construct($value = null, $suggestions = [])
8
+ {
9
+ return parent::__construct('genres', $value, $suggestions);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidGenresValueException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxSearchBuilderInvalidGenresValueException extends MangafoxInvalidArgumentException
6
+ {
7
+ public function __construct($value = null, $suggestions = [])
8
+ {
9
+ return parent::__construct('genres', implode(', ', $value), $suggestions);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidNameFilterException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxSearchBuilderInvalidNameFilterException extends MangafoxInvalidArgumentException
6
+ {
7
+ public function __construct($value = null, $suggestions = [])
8
+ {
9
+ return parent::__construct('name', $value, $suggestions);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidRatingFilterException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxSearchBuilderInvalidRatingFilterException extends MangafoxInvalidArgumentException
6
+ {
7
+ public function __construct($value = null, $suggestions = [])
8
+ {
9
+ return parent::__construct('rating', $value, $suggestions);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidRatingValueException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxSearchBuilderInvalidRatingValueException extends MangafoxInvalidArgumentException
6
+ {
7
+ public function __construct($value = null, $suggestions = [])
8
+ {
9
+ return parent::__construct('rating', $value, $suggestions);
10
+ }
11
+ }
res/mangafox-master/src/Exceptions/MangafoxSearchBuilderInvalidReleasedYearFilterException.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Railken\Mangafox\Exceptions;
4
+
5
+ class MangafoxSearchBuilderInvalidReleasedYearFilterException extends MangafoxInvalidArgumentException
6
+ {
7
+ public function __construct($value = null, $suggestions = [])
8
+ {
9
+ return parent::__construct('releasedYear', $value, $suggestions);
10
+ }
11
+ }