-
-
Save calraith/5ea698d022dfe77d3927e75af7cdea75 to your computer and use it in GitHub Desktop.
# Copy your Tampermonkey storage.js into the same directory as this script. | |
# It'll extract the user scripts from storage.js and write them as .user.js files | |
# in the current working directory. | |
add-type -as System.Web.Extensions | |
$JSON = new-object Web.Script.Serialization.JavaScriptSerializer | |
$obj = $JSON.DeserializeObject((gc storage.js)) | |
foreach ($key in $obj.keys) { | |
foreach ($val in $obj[$key].value) { | |
if ($val -match "\r?\n//\s+@name\s+(.+)\r?\n") { | |
$val | out-file ("{0}.user.js" -f $matches[1]) | |
} | |
} | |
} |
@calraith I tried to run your gawk and did get following errors:
I already inserted before and after a square bracket a space because a post on stackoverflow suggested that. Do you have any idea why it is still not working?
@Cappuccino90 I think I see from your screenshot what's going on. The version of gawk supplied with GnuWin32 is ancient (last updated in 2008 I think). My code requires at least gawk version 4 I believe. That's why I recommended using the ezwinports build.
FWIW, arrayname["parent"]["child"]
is the appropriate format for a multi-depth array in awk. Don't let anyone talk you into inserting extra spaces.
@calraith Thanks for the response. Sadly it is still not working. It does run the gawk command though without any printed out errors. http://prntscr.com/k5hej4
I downloaded gawk-4.2.1-w32-bin.zip from the link you provided. I hope that was the right package.
This is the content of my json.awk file: https://pastebin.com/U4SBnmNN
After the execution the storage.js file does not seem to have been altered in any form. Also the powershell script still throws the same error: http://prntscr.com/k5hiek Also tried to run powershell as administrator.
Sorry that some of the texts are in german.
Do you have any idea why it is not working?
Kind regards
@Cappuccino90: Would you care to PM me on Pastebin? My username there is rojo. If you like, you can create a private paste of your storage.js then PM me the URL and I'll see if I can help you figure out what's wrong with it. Or if you prefer, try pasting the contents of your storage.js into a JSON validator. The error message in your screenshot, Ausnahme beim Aufrufen von "DeserializeObject" mit 1 Argument(en): "Ungultiger JSON-Primitiv: ."
, hints that the reason you're having trouble extracting the .user.js files is due to invalid JSON, like maybe your storage.js file is corrupt.
My storage.js file begins like the following:
(function() { Registry.require(["promise"], function() { var f = rea.FEATURES,
JSONLint validator also tells me that the very first character is faulty. The open bracket.
@calraith How does your storage.js begin?
TY so much!
I wish there was an upvote in github to let more users know about this!
@calraith Where is this so-called Tampermonkey storage.js file located? The one I found at %appdata%\Opera Software\Opera Stable\Extensions\dhdgffkkebhmkfjojejmpbldmpobfkfo\4.7.54_0\storage.js
is just 13 KB of JavaScript, not JSON. So I get the same error as @BangDroid and @Remonell.
@calraith Where is this so-called Tampermonkey storage.js file located? The one I found at
%appdata%\Opera Software\Opera Stable\Extensions\dhdgffkkebhmkfjojejmpbldmpobfkfo\4.7.54_0\storage.js
is just 13 KB of JavaScript, not JSON. So I get the same error as @BangDroid and @Remonell.
I guess this script did nothing. The actual scripts should be in User Data\Default\Local Extension Settings
and stored in db not some random storage.js.
if you can't get this PowerShell script to work, I also wrote a JSON serializer / deserializer for gawk.
END{...}
section with the following code:cd
to the directory where you want to save your user.js files