-
Notifications
You must be signed in to change notification settings - Fork 15
Nekopaw Grabber GUI
First and main rule of that application is
"It's not to search content, but to download"
That means you're use it to download content only from known resources. And in that means if you getting errors or nothing from resources you DO NOT know - it's your own problem, not app's.
Resources are too different from each other, and there is no way to make only ONE way to download from all of them a the same time. They're have different search rules, keywords, storing methods and other. So, you must to know, how to work with resource you're using.
- First screen
- New list screen
- Downloading
- Filter features
- Settings
- Interface
- Threads
- Proxy
- Doubles
- Name formatting
- string-number format
- datetime format
By default, after a launch an application automatically checks for updates. If updates are found, window pops up and suggests to update an application. You can disable autocheck in settings.
- New list - create a new list;
- Load list - load a list saved before (does it even work? can't remember);
- Settings - well, app settings;
- Exit - Exit.
Appears after clicking "New List".
On the right side of a screen you can see a list of resources that you can add. On the left side - list of added items. To add an item you need to click a button with an arrow, also you can remove items from the current list.
For the next step of list making you need to click a "Continue" button. To return, click a "Change list" button.
After clicking "Continue" button, a resource settings panel will appear. "General" item in the list is global for all list's items, if you don't want to inherit settings from it, you need to uncheck "Inherit configuration" flag for other resources in the list.
To finish your list click "Finish".
After you made your first list, next time constructor will skip the first (select resource) part and will suggest to use last time used set again. To change it just click "change list" button.
List gathering will start just after list is created. You can interrupt it by clicking a "Stop getting list" button on the main menu.
After gathering is done you can start to download pictures. For it you need to click "Start download pictures" button. To interrupt it click a "stop pictures downloading". Only marked by checkbox pictures Will be downloaded.
"Fields" menu allows you to add or remove picture's attributes to the table.
"Filter" execute filter's settings.
"Check" and "Uncheck" allows to execute massive marking of pictures. You can select "all","selected" or "filtered", also you can "invert" marking.
To add a new tab (and to start a new list) you need to click "new list" from main menu.
On the bottom of a table you can see supporting information:
- ON AIR - work in progress;
- TTL - total amount of items;
- IGN - ignored duplicates;
- TBL - time used to add item to the table (ms);
- DBL - time used to add item to the massive (including duplicate search, ms).
All fields, that can be filtered, have their own data types.
Like that, for number-fields you can chose "less" or "more" conditions, but for string-fields you can only chose "equal" or "contains". For "contains" condition you must use rules like in SQL:
- symbol "
%
" means it doesn't matter which text will be instead of this symbol, ex.: "%sup
" - search for all words ending with "sup"; "f%k
" - starting with "f" and ending with "k"; - symbol "
_
" means skipping only one symbol for every "_
". ex.:pic00_
- search for all pictures, where only last symbol can by any.
When downloading in progress, "Downloaded", "Size" and "Progress" fields will appear. If you will filter field "Downloaded" by content (i.e. = not empty), you can watch all downloading at a moment pictures.
- Language - interface language;
- Check updates on application started - automatically check for updates when application started;
- Check updates now - well, click it to check for updates now;
- Appearance - list of build-in skins. Not really big list;
- Use "Look-n-feel" style - application will try to inherit style from your OS;
- Show menu item captions - enable or disable captions for menu items on grid screen;
- Show tips - only one tip existing is where "download" button is located. Uncheck to disable;
- Log mode - save some special data to log file (rootdir\log).
- List threads count - how many threads will handle picture gathering (not downloading) at the same time;
- Threads per resource (checkbox) - limit number of threads for each separate resource;
- Threads per resource - maximum thread count for each resource (if checkbox is marked);
- Pictures thread count - how many threads will download pictures at the same time;
- Retries count - how much times thread will try to download the same picture after an error;
- Speed - maximum download speed (for whole application);
- Use load distribution by resources - threads will by distributed between all resources in list (kinda queue), it will help to distribute pressure on resources. If disabled - pictures will be downloaded in order of adding to list;
Proxy settings.
Rules to filter duplicates of pictures from list. Every rule working independently (like "OR" condition), and to count picture as a double must be fulfilled at last one of them. But every rule have it's own list of conditions. Conditions designer is available to edit existing rule or create a new one. In it, you need to point, which existing picture's fields (left side) should be compared to new picture's fields (right side). Condition "url = url
OR url = source
" will look like this:
url | url |
source |
ie to get a condition "OR" you need to leave first field empty. To get condition "url = url
AND url = source
) you need to put field name again instead of empty one:
url | url |
url | source |
For any API-based boards (like danbooru or gelbooru) is enough to create md5=md5 rule. For all other is much harder. Any way, if picture haven't a field, what should be compared, then rule will be ignored.
resources - there you can preset typical settings for each resource (or for all using inheriting from "general").
Using variables is not required, but it can help to name a file or distribute files by directories more clearly. In common situation is enough to chose directory to save, then by default will be used format $fname$<($fn$)>.$ext$
. Default format will be used every time, when generated name is empty.
variable | description | example |
---|---|---|
file extension | jpeg, gif | |
default file name (from url), without extension | b6b3a54dc0c3984e75cc1134dbc844bd5b45d145 | |
sequence number in situation, when name is already exists. Zero (0) if do not use isolation <> | name, name1, name2 | |
sequence number inside of directory. You can duplicate a number N times in a row (helpful to create a branched structures) | $fnn$_$fname$: 1_name.jpg, 2_anothername.png |
|
sequence number in list | ||
resource name | safebooru.org | |
application root directory, without ending path delimiter "\" | x:\nekopaw | |
short resource name | sfbr, glbr, imto | |
keywords posted in "tags" field | ||
picture's tags. N - tags count, all by default. | ||
%{picture's attribute}% | attribute, obtained during the gathering | id, source, width, rating |
If variable or attribute's name does not exist, it will remain in file name.
example | result |
---|---|
c:\$bname$\$short$ %author% %id% | c:\$bname$\sfbr %author% 123456789 c:\$bname$\imto Gidrant 987654321 |
To avoid unwanted keywords, you can isolate it using angle brackets:
example | result |
---|---|
c:\<$bname$\>$short$< %author%> %id% | c:\sfbr 123456789 c:\imto Gidrant 987654321 |
Also isolation affects all symbols inside, ie you can make a construction like %id%< page%page%>.$ext$
.
You can isolate more than one name. In that case, text remains if one of them can be inserted. Those, that can't be inserted, will be deleted.
Also now is possible to use a display format for keywords. If it's a date, then will be used datetime format, for all other will be used string-number format. It can be set up by writing a colon after a keyword's name.
example | source | result |
---|---|---|
15 | 0F | |
%posted:yyyy-mm-dd% | 31.12.2012 | 2011-12-31 |
%width:.6d% | 1024 | 001024 |
type | description | example | type | description | example |
---|---|---|---|---|---|
d | Decimal | -123 | e | Exponent | 1.2345678000E+004 |
f | Fixed | 12345.68 | g | General | 12345.678 |
n | Number | 12,345,68 | m | Money | $12,345.68 12 345,68р. |
p | Pointer | 0069FC90 | s | String | Hello |
u | Unsigned decimal | 123 | x | Hexadecimal | 8C |
key | description | key | description |
---|---|---|---|
y | Year last 2 digits (without leading zero) | m | Month number (without leading zero) |
yy | Year last 2 digits (with leading zero) | mm | Month number as 2 digits |
yyyy | Year as 4 digits | mmm | Month using "ShortMonthNames" |
d | Day (without leading zero) | mmmm | Month using "LongMonthNames" |
dd | Day (with leading zero) | h | Hour (without leading zero) |
ddd | Month using "ShortDayNames" | hh | Hour (with leading zero) |
dddd | Month using "LongDayNames" | n | Minutes (without leading zero) |
ddddd | Day using "ShortDateFormat" | nn | Minutes (with leading zero) |
dddddd | Day using "LongDateFormat" | s | Seconds (without leading zero) |
t | Time using "ShortTimeFormat" | ss | Seconds (with leading zero) |
tt | Time using "LongTimeFormat" | c | "ShortDateFormat" + "LongTimeFormat" |
am/pm | Use after h : gives 12 hours + am/pm | / | Substituted by "DateSeparator" value |
a/p | Use after h : gives 12 hours + a/p | : | Substituted by "TimeSeparator" value |
ampm | As a/p but using "TimeAMString","TimePMString" |
In addition to this formatting, different from above, options are affected by the following variables with their default value (default is determined by the OS):
name | example | name | example |
---|---|---|---|
"DateSeparator" | . | "TimeSeparator" | : |
"ShortDateFormat" | dd/mm/yyyy | "LongDateFormat" | dd mmm yyyy |
"TimeAMString" | AM | "TimePMString" | PM |
"ShortTimeFormat" | hh:nn | "LongTimeFormat" | hh:nn:ss |
"ShortMonthNames" | Jan, Feb, ... | "LongMonthNames" | January, February, ... |
"ShortDayNames" | Sun, Mon, ... | "LongDayNames" | Sunday, Monday, ... |