Быстрый и грязный способ разбора файла json в Mozilla Firefox - PullRequest
4 голосов
/ 18 ноября 2010

Я хочу очистить все ссылки из моей резервной копии закладок .json, которую создает firefox, и вывести файл .txt.

Вот пример одного из объектов, расположенных в файле:

{"index":1,"title":"Bookmarks Toolbar","id":3,"parent":1,"dateAdded":1219177758531250,"lastModified":1288873459187000,"annos":[{"name":"bookmarkProperties/description","flags":0,"expires":4,"mimeType":null,"type":3,"value":"Add bookmarks to this folder to see them displayed on the Bookmarks Toolbar"}],"type":"text/x-moz-place-container","root":"toolbarFolder","children":[{"title":"","id":25,"parent":3,"dateAdded":1224693644437500,"lastModified":1236888979406250,"annos":[{"name":"placesInternal/GUID","flags":0,"expires":4,"mimeType":null,"type":3,"value":"{f6066e21-10ff-46a2-af7a-2891f8dca345}0"}],"type":"text/x-moz-place","uri":"http://www.google.com/"}

Эти объекты разделены запятыми, и должен содержать хотя бы один элемент, содержащий строку, значением которой является URL-адрес закладки.

Вот пример того, что файл .txt будет иметь в нем:

http://www.google.com
http://www.yahoo.com
http://www.etc.com`

В идеале мне интересно посмотреть, можно ли это осуществить с помощью любых инструментов сценариев, доступных вуниверсальная «среда» Windows XP.

Если Windows не может ее обрезать, что будет самым быстрым и простым решением для этого?

Существует ли веб-сайт или программа, которая может выполнить сопоставление с образцом или регулярное выражение для анализа файла, выполнить поиск и замену, прежде чем я установлю что-то вроде Active Perl или Strawberry Perl и напишу для него скрипт.

Ответы [ 3 ]

2 голосов
/ 21 января 2011

Другой способ, который я нашел, это метод на следующем сайте:

http://forums.mozillazine.org/viewtopic.php?f=38&t=1057265&sid=66d981cc79d1ff63644e0cdd5b665a37

В основном вы делаете следующее:

(1) Создайте закладку Firefox с помощьюв качестве местоположения укажите следующее:

javascript:(function(){var E=document.getElementsByTagName('PRE')[0],T=E.innerHTML,i=0,r1,r2;t=new Array();while(/("uri":"([^"]*)")/g.exec(T)){r1=RegExp.$1;r2=RegExp.$2;if(/^https?:/.exec(r2)){t[i++]='['+(i)+']:<a href='+r2+'>'+r2+'<\/a>';}}with(window.open().document){for(i=0;t[i];i++)write(t[i]+'<br>');close();}})();

(2) Откройте пустую вкладку Firefox.

(3) перетащите файл json Firefox на пустую вкладку, это должно открыть файл json.

(4) перейдите к закладке, созданной на шаге 1.

(5) у вас должен быть список «кликабельных URL» для всех ваших закладок.

0 голосов
/ 07 апреля 2013

Я не проверял это.

ПРИМЕЧАНИЕ. Проверьте / исправьте все нижеуказанные пути к файлам, чтобы они соответствовали вашей системе.

@Echo Off
Rem FFExportBookmarks.bat

SetLocal EnableDelayedExpansion
Set JSONFile="%APPDATA%\Mozilla\Firefox\Profiles\xyz42pdq.default\bookmarkbackups\Bookmarks.json"
Set FavOut="%USERPROFILE%\My Documents\FFBookmarks.txt"
Set JSONTemp="%Temp%\JSONTemp.txt"
Echo.> %JSONTemp%
Set JSONTemp1="%Temp%\JSONTemp1.txt"
Echo.> %JSONTemp1%

For /f "UseBackQ Delims=" %%N In ('Type %JSONFile%') Do (
  Set JSONInput=%%N
Rem Filter double " and other delimiters
  Set JSONInput=!JSONInput:"=!
  Set JSONInput=!JSONInput: =!
  Set JSONInput=!JSONInput:^,= !
  Set JSONInput=!JSONInput:[= !
  Set JSONInput=!JSONInput:]= !
  Set JSONInput=!JSONInput:{= !
  Set JSONInput=!JSONInput:}= !

  For %%K In (!JSONInput!) Do For /f "Tokens=1,2 Delims=:" %%X In ("%%K") Do (
    If /i "%%X"=="uri" Echo %%Y >> %FavOut%
  )
)

Start "" %FavOut%

Это было не очень быстро, но много грязного!

0 голосов
/ 18 ноября 2010

Если у вас есть Excel, возможно, легко сделать разделение текста на столбцы

на ".Поскольку формат (порядок полей) всегда один и тот же, у вас должны быть URL-адреса где-то рядом с последним столбцом.

...