EsalRider said:
BUG:

Subscription checking's broken again. It never finishes (and blocks auto-updates). No relevant error message appeared in the console, though. So I took a peek at the network activity, and... http://kepfeltoltes.hu/140430/eSix_Extend_Subscription_Bug_www.kepfeltoltes.hu_.png

Wow, that must be a really long pool o_o

It actually sets the next check to 1/1/4000 :P
No, really, I know that. Believe it or not, that's the part where I've been poking the most. I think I got it for this update, which will come in a few hours (once I get home from school and do some cleanup to it).

FEATURE REQUEST:

It'd be nice to reach any tag's wiki entry by pressing ctrl+enter in the search field (so instead of searching for posts, it should head to the wiki with your search query as the title). I'm mainly thinking of single tag queries, but if opening each tag's wiki page of a multi-tag query on new tabs can be solved without too much effort, then that would be nice too.

Hmmm, sounds nice. You mean it as a kind of shortcut, right?


Xch3l said:
Hmmm, sounds nice. You mean it as a kind of shortcut, right?

Pretty much, yes. A quick way to get to the wiki page you need directly from the post listing. (Or maybe any post page.)

Also, an idea to avoid this accidental auto-update killing bug.

Right now, the script stores the time when the next update is due. And to avoid multiple pages updating simultaneously, it temporarily changes the update time to 1/1/4000. And after updates are checked, the next update time is stored.
BUT! If the tab is closed before the update check finishes, the update time never gets properly set, thus preventing further automatic updates. So, instead of storing the time of the next update, it would better to store the time of the current update.
The script should first check whether the set amount of time has passed since the last update, and if it did, set that variable to the current time before proceeding. This way, the script wouldn't have problems even if the update process was cancelled (or bugged), while still preventing multiple simultaneous updates.


EsalRider said:
Pretty much, yes. A quick way to get to the wiki page you need directly from the post listing. (Or maybe any post page.)

Also, an idea to avoid this accidental auto-update killing bug.

Right now, the script stores the time when the next update is due. And to avoid multiple pages updating simultaneously, it temporarily changes the update time to 1/1/4000. And after updates are checked, the next update time is stored.
BUT! If the tab is closed before the update check finishes, the update time never gets properly set, thus preventing further automatic updates. So, instead of storing the time of the next update, it would better to store the time of the current update.
The script should first check whether the set amount of time has passed since the last update, and if it did, set that variable to the current time before proceeding. This way, the script wouldn't have problems even if the update process was cancelled (or bugged), while still preventing multiple simultaneous updates.

Thanks for the feedback. I also thought of setting a flag that technically said "hey, I haven't finished" but as soon as another tab could be open, the checking process would start again, the same could happen there. I currently have it so when next update time has come, set the timer for the next 10 minutes and when it finishes, set it again with the correct time you have in your settings.

New update is posted, btw!


[04/30/14] Version 2.881 (Code 300414)

  • Fixed the way the script handles retrieving settings (it used to fail and die; now it just panics, fails and dies) (it now checks settings > fallback settings [defset] > fails and returns null. This had to be done manually and I forgot to do it in some parts which lead to not-so-noticeable errors)
  • Changed the gray color on some items ("help" cursor will not display anymore)
  • Counting tags will now display the correct number instead of how many spaces are in the tags box
  • Improved settings importing
  • Search in the wiki for the tags in the search box by pressing Ctrl+Enter [forum #128148]
  • Added a check for posts when either an image or a flash animation is viewed the "Reload over HTTP" workaround should apply
  • Improved "Get Source": It will now take "data.furaffinity.net" URLs as filename candidates
  • New option: "Highlight blacklisted posts". This will make blacklisted posts glow red-ish on the borders after enabling them on the post listing via the "Blacklisted" group
  • When navigating in a pool's posts at the second to last post, the script will now check if there's more posts in it
  • Almost rewrote the subscription updater, this should notify updates on the last forum or pool subscription in the list
  • Fixed an issue where closing a tab in the middle of the subscription checking process would make it never check again (or until 1/01/4000)
  • Improvements when displaying updates (and when there are no updates too)

(V2.881, C300414, +2998B)


TypeError: Cannot read property 'length' of undefined
    at countSubsUpdates (unknown source)), 2301:41)
    at eval (unknown source)), 349:23)
    at Object.eval (unknown source)), 2549:3)
    at Object.eval (unknown source)), 2552:4)
    at s (unknown source), 28:86)
    at eval (unknown source), 1:25)
    at TM_do (32:242)
    at n (unknown source), 46:114)
    at Y (unknown source), 28:102)
    at $ (unknown source), 56:125)

Also, I'm starting to suspect that Tampermonkey's bugged. This is the third time I had to do a manual userscript "downgrade" to update the script. Anyone else having problems?


EsalRider said:
[code]

Also, I'm starting to suspect that Tampermonkey's bugged. This is the third time I had to do a manual userscript "downgrade" to update the script. Anyone else having problems?

Probably. When I try to update on TM, it says that there are no updates (even if it's 2 versions old). Also, I've noticed that that happens each time I update the settings or the way they are handled (though, I did'nt do any major change), so it might be on my part...


BUGS?:

Every time I browse to a new page, a green popup displays saying "User ID, level and name stored"

Also, I can't save any of my extension settings to disable the popups D:


Okay... Seems like the function countSubsUpdates causes a fatal error, and the script won't be loaded further than displaying the faves counter.

I commented it out (and put return 0; to the end), then I got this error in the console:

GET https://e926.net/pool/show.json?id=undefined&page=1 404 (Not Found)

Interesting...

Ok, I took a peek at the contents of the LocalStorage. Every single quotation mark in the forum and pool subscription parts is escaped as ". Somehow I doubt that it does any good there. Nope, that doesn't seem to be the cause. Or not exactly. Anyways, I've cleared my pool and forum subscriptions manually, now everything seems to be working fine.

Seems like this bug WAS caused by that excessive escaping thing. I've re-added some forum threads and pools to the lists, it's working fine.

@MrGaoth: Maybe this will help: put this in the address bar while viewing an e621 page (any page, even this thread will do)

javascript:{localStorage.removeItem("forumSubscriptions"); localStorage.removeItem("poolSubscriptions");}

You might need to re-add javascript: at the beginning if the browser removes it, but other than that, it should work. Don't forget to refresh.


MrGaoth said:
BUGS?:

Every time I browse to a new page, a green popup displays saying "User ID, level and name stored"

Also, I can't save any of my extension settings to disable the popups D:

You probably have localStorage disabled or are browsing in a private tab

EsalRider said:
Okay... Seems like the function countSubsUpdates causes a fatal error, and the script won't be loaded further than displaying the faves counter.

I commented it out (and put return 0; to the end), then I got this error in the console:

GET https://e926.net/pool/show.json?id=undefined&page=1 404 (Not Found)

Interesting...

Ok, I took a peek at the contents of the LocalStorage. Every single quotation mark is escaped as ". Somehow I doubt that it does any good there.

Is that, I don't know why is caused. When I changed this thread's title, the script failed while updating, so I had to escape "s and 's to avoid that, but somewhere in the updater, the objects to store get converted as a string. So the problem is in either "saveForumSubscriptions", "savePoolSubscriptions" or "asJSON" (which converts objects to strings because I did'nt like how JSON.stringify did it and caused too much problems)

I don't know how did you get that 404 though, the updates counter is independent of any other request. In fact, it is the last step of the updater.

Try this, copy "poolSubscriptions" and/or "forumSubscriptions" (whichever has the " problem, probably the forums one) from the local storage in any text editor, replace quotes to nothing and " to quotes and save again in the local storage. This works as a temporary fix to whatever causes this problem (I really don't know what is, but I'm looking at it)


@Xch3l: I'm suspecting a version conversion glitch, if you had to do something like that because of the string escaping. Freshly added subscriptions seem to be OK.

Xch3l said:

Try this, copy "poolSubscriptions" and/or "forumSubscriptions" (whichever has the " problem, probably the forums one) from the local storage in any text editor, replace quotes to nothing and " to quotes and save again in the local storage. This works as a temporary fix to whatever causes this problem (I really don't know what is, but I'm looking at it)

Tried something similar, though I didn't remove quotes first. Didn't work.


EsalRider said:
I'm suspecting a version conversion glitch, if you had to do something like that because of the string escaping. Freshly added subscriptions seem to be OK.

Maybe, but still, I don't know why it gets passed as a string...

Yeah, newly added subscriptions get saved correctly, though, sometimes they get screwed again :I

Tried something similar, though I didn't remove quotes first. Didn't work.

Huh, I've tried it several times and it has worked for me.


Xch3l said:
Maybe, but still, I don't know why it gets passed as a string...

Yeah, newly added subscriptions get saved correctly, though, sometimes they get screwed again :I

Weird...

Huh, I've tried it several times and it has worked for me.

I guess there was a " somewhere within a string (or a regular " slipped in) and it broke everything, and that caused an error.


In a perfect world, there would be an update today. Unfortunately there isn't one... no, wait. There is one!

[05/04/2014] Version 2.89 (Code 040514, -305 B)

  • Reduced some lines in the code related to floating panels (Heading, some dialogs, subscription updates lists, get source, etc.)
  • Improved counting of tags in the TinyAlias editor
  • Added check to see whether the field to search for tags exists in the page (broke TinyAliases on pages where it didn't exist *coughWhenUploadingcough*)
  • Fixed problem while saving the settings. Mainly the one that screwed up subscriptions.

So, yup. The "countSubsUpdates" bug is ded. Let's give a minute of silence *5 seconds later* WHO WANTS TACOS!! :3

Munkelzahn
Privileged
4 years ago

Could you add an option to replace *all* HTTPS links with HTTP links?
I've been getting the "images won't load" bug recently, especially with thumbnails.
And I don't care if the NSA knows what porn I'm looking at :p


Munkelzahn said:
Could you add an option to replace *all* HTTPS links with HTTP links?
I've been getting the "images won't load" bug recently, especially with thumbnails.
And I don't care if the NSA knows what porn I'm looking at :p

It has been happening to thumbnails too? I haven't seen it happening since a while


Was soup! *reads upper post* Wow, it really was 27 days ago? It felt as if it was more time. No, really... Anyway... before talking, I want to say some words:

[6/06/2014] Version 2.891 (Code 060614, +1120 B)

  • Added setting to apply the HTTP Tweak on every image (change HTTPS to HTTP on image's SRC attribute) [forum #129101]
  • Added check for empty contents for the encoder used in the settings exporter
  • Dropped support for beta.ouroboros.ws since the site is no longer active
  • Fixed a typo in the subscriptions link (the one that opens the subscription panel) [Reported via PM]
  • Capitalized First Word On Every Alt Text Of The Main Links ( ▶ [Name] [PMs] [Faves] [Subscriptions] )
  • Added shortcut to stop reading the current post that is on a pool
  • Fixed a small selection that is based on which browser the script is running (determines if the browser uses WebKit or not)

And now for something completely different, yesterday was Donut Day, as well as the D-Day (which I don't know what does that mean). Did you guys got your recommended dose of donuts? :3

Update shall come in a moment.

Munkelzahn
Privileged
4 years ago

Xch3l said:
Added setting to apply the HTTP Tweak on every image (change HTTPS to HTTP on image's SRC attribute) [forum #129101]

Thank you very much!
This fixes the "images not loading" problem for me, both for thumbnails and previews.


Munkelzahn said:
Thank you very much!
This fixes the "images not loading" problem for me, both for thumbnails and previews.

Welcome! Btw, the setting is disabled by default.

Munkelzahn
Privileged
4 years ago

Can you implement this feature request in eSix Extend?
https://e926.net/forum/show/130083


Munkelzahn said:
Can you implement this feature request in eSix Extend?
https://e926.net/forum/show/130083

I think so. In fact, I have so fix some stuff. Since the new site update some links that the script adds are shown as normal text (white color in Hexagon theme) but they're still functional, some paddings here and there, etc.

If you see some places that might need a fix too, do tell here! :)

Update shall come in less than 2 days (unless my brother wants to see a movie and takes my laptop again yay for being back home -3- )

Edit: Update will be pushed more a couple of days, sorry for that. I'm having a bit of problems...


After some emotional outbursts, I managed to fix the thing!

[06/17/14] Version 2.892 (Code 170614, +4726)

  • Improved handlng of settings. Now it just doesn't fail after the first attempt at any error encountered, it tries a second time (both without - original - and with parentheses - new format, caused problems, no longer used)
  • Removed an unused function in TinyAliases (I can't remember why I added that)
  • Improved theme link color detection! The clickable links the script makes will no longer appear as normal text! Their color should also change when you change your theme (not always accurate)
  • Added a bit of padding for settings panes so they look nicer
  • Right clicking the settings link ( S▶ ) will no longer pop out a new window, instead will change the page with the script's settings
  • Speaking of the settings page, I've reworded some of the texts that appear there and added some "(?)"s to reduce visible text
  • Changed a bit of order when selecting a subscription ("Check selection > clear preview > load new preview" to "Clear preview > check selection > load new preview"). Won't be really noticeable, unless you're using Chrome (it can select selection groups - bold text)
  • Improved again how tags are counted
  • While tagging, either while uploading or editing a post, tags are now counted automatically (removed the "Count" button too! "Sort" still remains)
  • Checking tags will now have spaces replaced for underscores (these things: _) and pressing [Enter] again will now reactivate the tags box
  • Floating formatting buttons (double click on their space or between the buttons to make them float) now have a visible dragging handle (double clicking on it will return them to their original place)
  • Pressing [Enter] on the fields for the buttons "Wiki", "Section" and "Link" will focus the next field or insert the format tags if there are no more fields
  • Right-clicking "Quote" button will insert an inverse quote (Normal: "[quote][/quote]", inverse: "[/quote][quote]"). For those who like to split quotes and reply to them in parts
  • Fixed the "last messaged to" selection box while sending PMs to fit like it did some versions ago
  • Added a setting to include a link to user profiles when quoting (as explained in forum #130083) [forum #131061]
  • Added support to enhance warning messages (never seen one personally, but I couldn't resist leaving it alone)

And in other news, I have a future feature (lol, they sound alike) I'd like to add: autocomplete for TinyAlias.

Edit: Holy shit! Did I really do that lot of changes!?

EDIT 2: WAIT!!! DON'T SAVE CHANGES YET!! SUBSCRIPTIONS WILL GET SCREWED UP AGAIN!!! I'M FIXING THIS RIGHT NOW! . Fixed. You may save now. C: Version should be 2.892A

Munkelzahn
Privileged
4 years ago

Xch3l said:
Added a setting to include a link to user profiles when quoting (as explained in forum #130083) [forum #131061]

<3


Is there any possibility of implementing tag completion at some point?
It seems like it would cut down on problems like forum #131576 (gender_bend / genderbent /genderbend), it certainly does in my own local tagging system.

I have e621 tag data if needed; the totality of e621's tags as of a few weeks ago, adds up to roughly 2.1mb on disk uncompressed (this is storing a very simple name:count map in JSON format.).


savageorange said:
Is there any possibility of implementing tag completion at some point?
It seems like it would cut down on problems like forum #131576 (gender_bend / genderbent /genderbend), it certainly does in my own local tagging system.

I have e621 tag data if needed; the totality of e621's tags as of a few weeks ago, adds up to roughly 2.1mb on disk uncompressed (this is storing a very simple name:count map in JSON format.).

I actually have something planned like that but for DNP artists (conditional DNP too). So, when you add an artist tag that is on the DNP, the script will notify you about that.

But I don't know how to do it yet (use a separate script as a library or include it in the main script)

Now, on to your idea, as I got it. When you add a tag, if there is a similar tag but more widely used, it will be replaced by that one? Or it pops out suggestions ordered by post count (popularity or on how many posts it is used) and filters them as you type?


Xch3l said:
I actually have something planned like that but for DNP artists (conditional DNP too). So, when you add an artist tag that is on the DNP, the script will notify you about that.

That seems quite useful.

When you add a tag, if there is a similar tag but more widely used, it will be replaced by that one?

That's an interesting idea, but I think it would require some manual massaging of the tag data (you can't just go by levenshtein distances, I've tried it, it for example picks up 'dress' and 'dressing' as similar, which is true but not useful.). Definitely not the idea I was going for though, to be clear.

Or it pops out suggestions ordered by post count (popularity or on how many posts it is used) and filters them as you type?

Yes, this is what I meant. Though I believe you probably mean tagging count -- the number of times that the particular tag has been applied.. Being able to seeing what options already exist is VASTLY superior to just writing text, from my own experience with TMSU and dmenu on my own machine. IMO once the offending taggers had started typing 'gender', they would see that there was already an option available and select it.

IMO dmenu-style completion would work well for e621. By that I mean that what the user types would ideally be treated as a fragment of a tag, rather than the beginning of a tag -- this would allow 'gender' to complete into 'crossgender', and 'hair' to bring up the black|brown|aqua|..._hair tags as well as hair_over_eyes, hairband, etc.
Given user input of 'hair', classical completion is like searching hair*, whereas dmenu style completion is like searching *hair*


savageorange said:
Yes, this is what I meant. Though I believe you probably mean tagging count -- the number of times that the particular tag has been applied.. Being able to seeing what options already exist is VASTLY superior to just writing text, from my own experience with TMSU and dmenu on my own machine. IMO once the offending taggers had started typing 'gender', they would see that there was already an option available and select it.

Yeah, tagging count. Didn't know exactly how to put it... Anyhoo, that sounds like a neat idea. It'll be kinda hard to make but this could be a great addition to the script. I have no experience with either (never heard of them until now) but yeah, +1 from me

IMO dmenu-style completion would work well for e621. By that I mean that what the user types would ideally be treated as a fragment of a tag, rather than the beginning of a tag -- this would allow 'gender' to complete into 'crossgender', and 'hair' to bring up the black|brown|aqua|..._hair tags as well as hair_over_eyes, hairband, etc.
Given user input of 'hair', classical completion is like searching hair*, whereas dmenu style completion is like searching *hair*

Oh, yeah. This'll require some testing.


Xch3l said:
Yeah, tagging count. Didn't know exactly how to put it... Anyhoo, that sounds like a neat idea. It'll be kinda hard to make but this could be a great addition to the script. I have no experience with either (never heard of them until now) but yeah, +1 from me

Oh, yeah. This'll require some testing.

Well, imo the actual searching should be straightforward, since the source for DMenu is available. I don't know javascript very well, but I can probably write up a Python version of DMenu's matching algorithm if that would make it more understandable.

It really just splits the string into a list of tokens (dmenu uses space as a token separator, underscore would make more sense for e621), then iterates over the candidate items, skipping them if any of the tokens are not matched (ie the token is not a substring of the candidate), otherwise adding them to the list of items to display.

so technically it's like this (Python):

# Assuming the candidates are stored in the list named 'candidates',
# and userinput in 'userinput' variable
tokens = userinput.split(' ')
completion_result = []
for candidate in candidates:
    if all(token in candidate for token in tokens):
         completion_result.append(candidate)

There is a little additional work done by the dmenu code to place exact matches first
(eg. if you type 'foo' and there is a candidate 'foo', it should be the first result listed), followed by prefix matches (eg. you type 'foo' and there is a candidate foo_bar) , followed by substrings (eg. you type 'foo' and there is a candidate sharing_food). That's obviously not essential, just a UI improvement.


savageorange said:
Well, imo the actual searching should be straightforward, since the source for DMenu is available. I don't know javascript very well, but I can probably write up a Python version of DMenu's matching algorithm if that would make it more understandable.

It really just splits the string into a list of tokens (dmenu uses space as a token separator, underscore would make more sense for e621), then iterates over the candidate items, skipping them if any of the tokens are not matched (ie the token is not a substring of the candidate), otherwise adding them to the list of items to display.

so technically it's like this (Python):

# Assuming the candidates are stored in the list named 'candidates',
# and userinput in 'userinput' variable
tokens = userinput.split(' ')
completion_result = []
for candidate in candidates:
    if all(token in candidate for token in tokens):
         completion_result.append(candidate)

There is a little additional work done by the dmenu code to place exact matches first
(eg. if you type 'foo' and there is a candidate 'foo', it should be the first result listed), followed by prefix matches (eg. you type 'foo' and there is a candidate foo_bar) , followed by substrings (eg. you type 'foo' and there is a candidate sharing_food). That's obviously not essential, just a UI improvement.

I was imagining something like that. Taking 'foo' as the tag:

  • Direct possible matches would come first: foo, food, fool, foot, etc.
  • Then indirect matches: i_pity_da_foo, sharing_food, etc.

And yeah, Pyhon technically makes it a bit more understandable. C (or C++) needs more words for the same routine that uses less on other languages... I understand a bit of C, though, it's just that pointers and stuff are a tad too technical for me (I don't get how I understand Java)...

I'll get on to it, then...


Java != Javascript, BTW -- they basically have no relation to speak of. Yes, this is absurd.


savageorange said:
Java != Javascript, BTW -- they basically have no relation to speak of. Yes, this is absurd.

I know that Java is not the same as Javascript, I meant about the fact that I can understand it... :I

I've adapted some JS to Java without much problems, though. Sometimes I prefer JS because is far more simple (you can assign an object to a variable that held a number or a string into a boolean)

And this is absurd? Maybe confusing one language with another but that story is for another day...