MozillaZine

Reading "jsonlz4" bookmarkbackup files

User Help for Mozilla Firefox
therube

User avatar
 
Posts: 19186
Joined: March 10th, 2004, 9:59 pm
Location: Maryland USA

Post Posted January 27th, 2016, 12:04 am

For more of this look at my RAW notes in
http://www.imagemagick.org/Usage/info/data/json.txt

404 ?
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.19) Gecko/20110420 SeaMonkey/2.0.14 Pinball CopyURL+ FetchTextURL FlashGot NoScript

antofthy
 
Posts: 14
Joined: April 12th, 2012, 5:11 pm

Post Posted January 27th, 2016, 6:19 pm

Applogies...

http://www.ict.griffith.edu.au/anthony/ ... a/json.txt

Fixing link in in the previosu post.

dickvl

User avatar
 
Posts: 52442
Joined: July 18th, 2005, 3:25 am

Post Posted January 29th, 2016, 3:45 pm

Firefox has a "Pretty Print" button in the Scratchpad and also a "jsb" command (JavaScript beautifier) in the Developer Toolbar for files loaded via internet to format a JSON file for readability.
You can always open a JSON file in a tab and run some JavaScript via the Web Console to extract data or add line breaks at specific positions.
https://developer.mozilla.org/Tools/GCLI
https://developer.mozilla.org/Tools/Web_Console

antofthy
 
Posts: 14
Joined: April 12th, 2012, 5:11 pm

Post Posted May 15th, 2016, 4:51 pm

Just a small update.

In bugzilla https://bugzilla.mozilla.org/show_bug.cgi?id=1209390#c4 Avi Halachmi announced that he used some firefox code to create a decompressor for the firefox compression

His code "dejonsonlz4" is available on GitHUB
https://github.com/avih/dejsonlz4/releases

jsonlz4
New Member
 
Posts: 1
Joined: June 17th, 2016, 3:08 pm

Post Posted June 17th, 2016, 3:13 pm

I HAVE THE ANSWER!


After spending hours and hours searching and searching how to decompress the stupid jsonlz4 file ](*,) so I could recover my bookmarks from a previous backup (after my computer crashed and windows had to be reinstalled).....

it turns out that you dont need to decompress it at all.

It all seemed so complicated, and there are a million answers out there, including crazy scripting and all kinds of crazy stuff. But its actually SUPER RIDICULOUSLY simple...

If you HAVE your stupid jsonlz4 file, here's ALL you have to do.....

Go to "view all bookmarks", go to "restore", and select the stupid jsonlz4 file. BOOM! BOOKMARKS RESTORED!!!!!!!!


I hope this post saves someone from the agony I had to go through, and the (what I thought was) complete devastation at the loss of my very important and enormous collection of bookmarks.

Lesson learned though.... I'll certainly be making a backup!

antofthy
 
Posts: 14
Joined: April 12th, 2012, 5:11 pm

Post Posted June 19th, 2016, 4:44 pm

Yes that has been brought up quite a few times.. But the original problem of this topic was to.... Do it off line..

That is automatically without a GUI. That is without using the firefox browser itself. Also it was a dig at the developers for actually using a format that can not be decoded using standard thrid party tools allowing the recovery of information to be future proofed!

Actually if anything I prefer... Plain TEXT... Because regardless of what software comes and what software goes, I can still get information I need from it, 30 years later!

RegX
 
Posts: 3
Joined: July 18th, 2011, 1:11 pm

Post Posted June 28th, 2016, 9:15 am

jsonlz4 wrote:If you HAVE your stupid jsonlz4 file, here's ALL you have to do.....

Go to "view all bookmarks", go to "restore", and select the stupid jsonlz4 file. BOOM! BOOKMARKS RESTORED!!!!!!!!


This doesn't work for me - when I select the jsonlz4 file I get a message 'Unsupported File Type'.

However, I am currently running my laptop by booting from a Linux CD (the installed Windows OS is broken) and I suspect that the version of Firefox on the CD (31.0) predates Firefox's use of the jsonlz4 file. If someone could confirm this I would be grateful! If so, when I am ready to install Linux I will then be able to upgrade to a new version of Firefox which will hopefully solve this problem.

the-edmeister

User avatar
 
Posts: 32122
Joined: February 25th, 2003, 12:51 am
Location: Chicago, IL, USA

Post Posted June 28th, 2016, 6:12 pm

Firefox 32 was the "Target Milestone" for that file format in Firefox, per the Bug report,
https://bugzilla.mozilla.org/show_bug.cgi?id=818587

But considering this thread was started by a user who posted with Firefox 33.0, it's fairly safe to assume that may have been when it arrived.

But whichever it was, it wasn't in Firefox 31.


.
A mind is a terrible thing to waste. Mine has wandered off and I'm out looking for it.

BruceAWittmeier

User avatar
 
Posts: 2633
Joined: June 9th, 2008, 10:53 am
Location: Near 37.501685 -80.147967

Post Posted June 29th, 2016, 11:43 am

Don't know if the OP is still visiting but what you might be able to do is:
- install an older copy of Firefox
- import the .jsonlz4 file
- export the bookmarks file to an .html
- import to the newer copy of Firefox as HTML

Just need a copy that will accommodate the specific file extensions. HTML has always work in all versions - unless corrupted.
~ I'm only here to Pay it Forward. ~

"I often take a very long windy road to my destination. When I arrive I often wonder how I missed the shortcut".

antofthy
 
Posts: 14
Joined: April 12th, 2012, 5:11 pm

Post Posted June 29th, 2016, 4:16 pm

BruceAWittmeier wrote:Don't know if the OP is still visiting but what you might be able to do is:
- install an older copy of Firefox
- import the .jsonlz4 file
- export the bookmarks file to an .html
- import to the newer copy of Firefox as HTML

Just need a copy that will accommodate the specific file extensions. HTML has always work in all versions - unless corrupted.


Again... as mentioned clearly in the original post... It must be done in an AUTOMATIC way, without human interaction. so NO Firefox!

In any case the problem was resolved two factors. 1/ I moved to Chrome (this was a major factor) 2/ someone wrote a utility to decode the weird LZ compression.

Tijitek
 
Posts: 43
Joined: August 13th, 2004, 11:18 am
Location: Ireland

Post Posted November 4th, 2016, 8:59 am

I just stumbled on this thread while I was looking for a way to analyse and compare old bookmark files. I could not believe that the Firefox developers would come up with a private non-standard binary file format for this. It reminds me of the horrendous Mork text format ( https://en.wikipedia.org/wiki/Mork_%28file_format%29 ) that was (is it still?) used by Thunderbird for address books. We should not need special tools to decode data that can easily be stored in standard formats.

In my own case, I ended up using the Python code posted at https://gist.github.com/Tblue/62ff47bef7f894e92ed5 (thanks!), to which I needed to add "from __future__ import print_function" at the start to keep Python 2.7 happy. The first file uncompressed from 59.5 kB to 59.8 kB. Was it really worth putting us through all these hoops for 300 bytes?

jwdevel
New Member
 
Posts: 1
Joined: November 4th, 2016, 3:20 pm

Post Posted November 4th, 2016, 3:30 pm

Tijitek wrote:In my own case, I ended up using the Python code posted at https://gist.github.com/Tblue/62ff47bef7f894e92ed5 (thanks!)


Spooky, I was just going through the same hoops and about to post a similar reply (:

In my case, I found https://gist.github.com/mnordhoff/25e42a0d29e5c12785d0
Clear from the author's comments that they weren't too happy about the situation either...

For anyone wanting to understand the nonsense, here's the main thing, from a comment in there:
# In short, 'mozLz40\0' magic number + uint32le length + lz4 data.

Another one: https://github.com/avih/dejsonlz4
That one linked from a relevant mozilla bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1209390

NanM
 
Posts: 177
Joined: September 16th, 2008, 1:04 am
Location: SW WAustralia

Post Posted November 6th, 2016, 4:06 am

I use the dev code - can't remember who wrote it, but they're one
of the longtime Firefox extension devs - directly in the browser
console for quick hacks of search file. Works fine for any lz4 file,
including the bookmarks backup ones.

Code: Select all
function decompress() {
  Task.spawn(function() {
    let cacheFilePath = OS.Path.join(OS.Constants.Path.profileDir, "search.json.mozlz4");
    let bytes = yield OS.File.read(cacheFilePath, {compression: "lz4"});
    let data = new TextDecoder().decode(bytes);
    let jsonFilePath = OS.Path.join(OS.Constants.Path.profileDir, "search.json");
    OS.File.writeAtomic(jsonFilePath, data);
  });
}
decompress();


And the reversing code:

Code: Select all
function compress() {
  Task.spawn(function() {
    let jsonFilePath = OS.Path.join(OS.Constants.Path.profileDir, "search.json");
    let bytes = yield OS.File.read(jsonFilePath);
    let data = new TextDecoder().decode(bytes);
    let cacheFilePath = OS.Path.join(OS.Constants.Path.profileDir, "search.json.mozlz4_new");
    OS.File.writeAtomic(cacheFilePath, data, {compression: "lz4"});
  });
}
compress();

morat
 
Posts: 2950
Joined: February 3rd, 2009, 6:29 pm

Post Posted November 6th, 2016, 6:06 am

Scratchpad doesn't evaluate expressions in a sandbox anymore so it's best to wrap your code.

Code: Select all
(function() {

var gBrowser = "abracadabra";

})();

viewtopic.php?f=9&t=2335397
viewtopic.php?f=9&p=13742825

Mozilla never bothered to document the change when they removed the sandbox.

@NanM

Thanks for posting that.

Code: Select all
type search.json | python -m json.tool > search.pretty_print.json

:)

Return to Firefox Support


Who is online

Users browsing this forum: Google [Bot] and 9 guests