Marti Admin

And now it's 1.9... above comment still stands though.

Not that this is needed as all known current .user.js engines already have update checking built in... your embedded update checker is showing version 1.8 as compared to this scripts @version which is currently 1.9.

You might consider just dropping that routine and utilizing @version when you want to trigger an update.

Thanks for the look,
OUJS Admin

Your other account is banned.

  1. If we see this script hitting our site every second this account will go away as well.
  2. If you post scripts that aren't yours and claim they are yours your account will go away.

If you wish to continue here be more respectful.

OUJS Admin

Re: @TheOpenUserNut:

... formal pull request ...

Sometimes that gets the attention better.

Could have also used this FAQ applied to this:

diff --git a/./Pandora_music_replay_and_download.user.js.original b/./Pandora_music_replay_and_download.user.js
index 70549c6..ae1637e 100644
--- a/./Pandora_music_replay_and_download.user.js.original
+++ b/./Pandora_music_replay_and_download.user.js
@@ -203,7 +203,7 @@ to {transform:rotate(360deg)}
             if (!audioURLs.contains(item.src)) {
-                renderAudioHTML(item.src,$("[data-qa='mini_track_title']").text(),$("[data-qa='mini_track_artist_name']").text(),$("[data-qa='mini_track_image']")[0].src);
+                renderAudioHTML(item.src,$("[data-qa='mini_track_title']").text(),$("[data-qa='mini_track_artist_name']").text(),$("[data-qa='mini_track_image']")[0].src,$("[data-qa='playing_album_name']").text());
@@ -217,6 +217,7 @@ to {transform:rotate(360deg)}
 <div class='audioinfo'>
 <div class='audiotitle'>${title}</div>
+<div class='audioalbum'>${album}</div>
 <div class='audioartist'>${artist}</div>
 <div class="audiofns">
 <div class="audiotrack">
@@ -285,4 +286,4 @@ to {transform:rotate(360deg)}
\ No newline at end of file

using the diff keyword after the first set of three backticks. Gives some fancy colorings including which lines were changed. :)

Re: @TheOpenUserNut:

Please remember to put any code in back ticks (` ... pair of these with code in between) or code fences (three back ticks on their own lines with the code in between... see this FAQ) so the author can see what you are talking about. You can always tap the Preview button to see how it will turn out.

The posting has been fixed for you.

OUJS Admin

Re: @Mottie:

I am forced to manually update my userscripts is because the GitHub hook doesn't work

Works for me. Are you sure you followed the instructions at /user/add/scripts#sync-script?

Your account looks fine with the Auth you provided and as you it imports just fine so that leaves whatever you have done on your GH account for the webhook.


Re: @glebm:

Unescaping and beautifying the bookmarklet this comes out to be:

(function () {
  function e(e, o, r) {
    const c = e.nodeValue.split("\t").map(e => e.split(" "));
    if (1 === c.length && 1 === c[0].length) return;
    const a = e.parentNode,
      d = t => {
        a.insertBefore(t, e)
    n(c, e => 1 === e.length && "" === e[0], e => d(t(o.repeat(e))), e => n(e, e => "" === e, e => d(t(r.repeat(e))), e => d(document.createTextNode(e)))), a.removeChild(e)

  function t(e) {
    const t = document.createElement("span");
    return t.textContent = e, = c, t

  function n(e, t, n, o) {
    const r = e.length;
    e.reduce((e, c, a) => {
      const d = t(c);
      return d && a !== r - 1 ? e + 1 : (e > 0 && n(e), d || o(c), 1)
    }, 0)
  var o = "·",
    r = "â",
    c = .8;
  ! function () {
    for (const t of document.querySelectorAll("table[data-tab-size]")) {
      const n = r.padEnd(+t.dataset.tabSize),
        c = document.createTreeWalker(t, NodeFilter.SHOW_TEXT, {
          acceptNode(e) {
            let t = e.parentNode;
            for (;
              "TABLE" != t.nodeName;) {
              if (t.classList.contains("blob-code-inner")) return t.firstChild !== e || " " !== e.nodeValue ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
              t = t.parentNode
            return NodeFilter.FILTER_SKIP
        a = [];
      for (; c.nextNode();) a.push(c.currentNode);
      for (const t of a) e(t, n, o)

... looks like the identifiers have been mangled and the code compressed. Bordering on the fine line between legible and obfuscation.

Re: @sizzle:

you should use a code block with syntax highlighting

@glebm did use a code fence however I added the js to see if it would highlight and it doesn't do well with bookmarklets (inspect the HTML rendered at the pre/code tags and it will have a class of lang-js if the highlighter tried) . I'm usually validating these as much as I can and created this FAQ entry for this exact reason.

I do agree that bookmarklets shouldn't be posted especially since most of the browsers are starting to or have blocked these. Maybe the beautify option on a new script can make it look pretty for validation... haven't tried yet.

Re: @jscher2000:

... shows MIT despite ...

Better? Please give your script source code pages a quick view at your leisure. Still has one quirk that I don't know how to get rid of yet e.g. the thing that doesn't look right but I prefer a desktop where it never is in view. ;)

Re: @monk-time:

I'd like to post my fork, keeping the copyright notice and license and all. I see it's GPL v3, but I thought I should ask if you are okay with that anyway.

That's nice and very responsible to ask directly however all scripts are allowed to be forked on OUJS. See TOS terms for licensing and the permissions granted by signing up on this site. It's great to get attribution for ones work... you might consider becoming a @contributor, optionally through OUJS collaboration, if the original author is willing to do this... or just fork it. :)

One important note... if it's a derivative of this script please maintain the GPL-3.0 (SPDX) licensing and the authors @copyright metadata block keys as well. If the header is included it's best to include that as well however if it matches the @license and @copyright keys then that would be redundant for OUJS but GNU usually says keep it included... they also don't normally use metadata like Userscripts and Userlibraries. If you need a third party verification please look at GitHub's simplified explanation under Conditions on a GPL enabled repo... take my repo for example... "same license" is a condition.

Thanks for the read,
OUJS Admin

The NASA license is a U.S.A Governmental license. If you aren't a government agency it can be a felony to impersonate one. There are also international laws that prevent impersonation.

It's left in here in case we get some more government staff in here... so pick carefully.

OUJS Admin

Re: @jscher2000:

the Author Tools defaults to MIT regardless.

Site default for copying to the clipboard. You can select any of the ones in the drop down list then copy that.

When I can do up bootstrap a little more on the source code page those may move over there instead. The source page is fixed height so there's not a whole lot of tweaking room to add any authoring tools... especially on desktops when viewport is shrunk. Tried it already and it just didn't look right... still pondering.

Anyhow thanks for the fix. :)

I was hoping to keep this announcement on a more positive note but seeing a few stragglers come in with issues.

  1. If someones licensing is present in a "fork" to here from another site (including this one)... DO NOT REMOVE IT. This is violating their Copyright and Licensing... and also a Terms of Service (TOS) violation. This is immediate grounds for account removal. If you see one of these please Flag for moderation with your proof and it will be investigated. The licensing is there for your attribution as well as continued hosted publishing rights.

  2. If the license header is present and @license does not match that is a TOS violation. I understand that everyone is getting used to this "old" feature here but if a new user (or an older one especially those who are familiar with the @license key from over a decade ago) does this I'll usually make one attempt to get them to fix it in a short period of time... if it merits it. If not the script and possibly the account is eligible for removal.

Please abide by the TOS.

Re: @Marti:

the script editor just refreshes and all the changes are gone.

That gets ones attention real quick that it's definitely user error. Again always the way it has been.

And now it should not be. I've added some preliminary error code pages, which took a few days as you can all see. This is still not finished but it's a start for everyone.

The way the GH webhook works we accept a push request and if it is going to be parsed we do a response of 200. If there is a parsing error we currently have zero way to tell GH that it failed/rejected. I will mull over some thoughts, as I am already doing, for the GH import and see if there is a way of notifying GH but no promises.

Re: @Styx:

but could waste your time in tries to search a bug in wrong places.

Preaching to the choir as the aphorism goes.

Re: @blablubbb:

It would have been nice if you would have simply told me to add such a statement instead of giving no feedback and for several years. The abuse by Authors is what forced this validation of what you all were supposed to be doing the whole time. Personally running around to everyone isn't going to happen which is why the Annoucements discussion exist. Read it next time please before you start complaining about your own inability to search.

... and not updating the script.

We prefer not to alter code... that is usually your responsibility.

your own help page ablut this license statement does not yet state that you made it compulsory.

Seems to me that License Type component is required in nice bold letters.

So perhaps you may want to reread those links and spend some quality time understanding them.

Thank you for your cooperation,
OUJS Admin

Re: @Styx:


Welcome. Solving some of the older issues keeps me from tackling the current site improvements but I'm willing so far.

supports an opinion that rejecting script edit without any error text is not helpful at all.

And I'll remind those who bring this up again of the Terms of Service at , specifically the "Do my bidding" part and the bullet before that, as well as my third time saying this:

be patient... I'll be adding some more over time. ;)

Because these opinions are treading seriously on the TOS I'm refraining from just removing users at this time. Other Admin+ aren't usually this lenient. Although my patience can be tried especially when people don't read what's already been posted multiple times.

I don't mind answering questions here but I almost missed your issue @Styx because I'm on Development which is where issues like these should be.

Properly presented issues are not complaining about something or forming an opinion. It is using the issue tracker on Development and offering pull requests if you are that impatient.


Re: @Styx:

(it states that MIT should be applied by default)

This is pre @license validation and absolute requirement. MIT is the site default but now everyone must specify it. Those older scripts are still stamped MIT as per the Terms of Service.

So long story short... you were already missing Support and Homepage on your scripts homepage (they are back now)... then I added the storage check yesterday which rejected your script.

Should be good to go now.

Thanks for the report. :)