В силу ряда причин у меня имеется три браузера, которыми я с той или иной интенсивностью пользуюсь. Это Firefox, Chromium и Opera. Естественно, хотелось бы иметь возможность без лишней мороки синхронизировать закладки между этими тремя браузерами, чтобы в каждом имелась актуальная версия закладок. Первым делом я задействовал Хрустальный Шар, но он мне показал исключительно сервисы онлайн. Я не хочу онлайн. Не доверяю. Хочу всё локально. Так родилась идея написать программу, которая бы и занималась синхронизацией под Linux. Данный текст не просьба, не жалоба, а попытка составить полное техническое задание на написание программы. Вариантов написания "сперва начнём, а там будет видно" я не приемлю. А как говорил мой знакомый программист на Си -- "правильная постановка задачи нуждается только в переводе на язык программирования". на чём это будет писаться? Не знаю. Думаю, что на Gambas. Но там посмотрим.
Итак, приступим.
Необходимо получить интерфейс с тремя полями. В каждое из них вводится расположение файла с закладками. Первое поле является полем браузера-донора (из него берём данные). Оставшиеся два поля для браузеров-акцепторов -- туда переносим данные. Работа программы для пользователя выглядит следующим образом: нажатие на кнопки, на экране прогресс-бар показывает процент выполнения, затем выводится рапорт о готовности. Важно предусмотреть возможность исключить некоторые данные в списке экспортируемых/удаляемых нашей программой. Например, Firefox имеет в закладках сайт mozilla.ru, который не обязательно отправлять остальным браузерам.
Работа программы представляется следующим образом. Сперва закладки из браузера-донора конвертируются в форматы остальных двух браузеров. Далее открываются файлы, где уже лежат закладки и производится проверка на наличие закладок, совпадающих с вновь вносимыми. Строки, совпадающие с уже имеющимися, игнорируются. Новые строки вносятся. Если у донора отсутствует ряд закладок, то необходимо их удалить и у акцепторов (должно настраиваться).
Необходимая информация:
1. Выясняем место хранения закладок во всех трёх браузерах
1.1 Firefox -- ~/.mozilla/firefox/какой-то бред/bookmarks.html;
1.2 Chromium -- ~/.config/chromium/Default/Bookmarks;
1.3 Opera -- ~/.opera/bookmarks.adr.
2. Выясняем формат хранения закладок во всех трёх браузерах
2.1 Firefox -- html;
2.2 Chromium -- JSON (прочитать здесь о парсинге);
2.3 Opera -- свой формат (пока не понял, как делать контрольные суммы).
Как конвертировать файлы из одного формата в другой пока себе представляю слабо. И как составить вопрос гуглу -- пока тоже.
Если у кого-то есть мысли по поводу алгоритмов считывания, парсинга и записи -- с интересом прочитаю. Короче -- давайте составим грамотную постановку, а уж на какой язык это переводить разберёмся по ходу дела.
Так все ж браузеры поддерживают импорт/экспорт закладок в ХТМЛ, всё везде совместимо, никаких проблем не испытывал, это поможет избежать возможных проблем при конвертации форматов файла закладок Разве что подумать, как оттуда "выкинуть лишнее".
Вызывать каждый браузер, в нём вызывать экспорт, закрывать каждый браузер, парсить получившиеся файлы, вызывать браузеры, импортировать всё назад... Мне кажется, или это таки через задний проход?
Не нужно вызывать сам браузер полностью, нужен лишь менеджер закладок.
Может и кажется, а может и через проход.
Можно. Но того функционала, который я хочу, не получится.
Если бы не упоминалась опера, я бы посоветовал хмарк, с настройкой своего (локального) сервера, благо там две команды.
Но вот опера... :-(
Я тоже об этом думал. И тоже споткнулся об оперу. Потому, собственно, появилась идея писать что-то своё. Но пока погряз в документации и голова начинает пухнуть уже.
ну мне проще, я не оперун... :-)
Я оперофоб, скорее...
Ну НЕ НРАВИТСЯ она мне, ОЧЕНЬ не нравится.
Не сказал бы, что я от неё в восторге (особенно в последнее время), но тут выхода нету: необходимо кое-что проверять и в опере тоже. А раз инструмент есть, то его неплохо бы держать в настроенном состоянии.
Решение никуда не годится. Я не хочу запускать браузеры из своей программы.
Честно говоря, желание что-то делать уменьшается с каждым днём...
Да не надо браузеры запускать. Надо только то, что нужно записать туда, куда нужно (ведь изначально закладка - это ссылка на нужный адрес).
Люблю теоретиков! Я написал где именно базируются файлы, содержащие закладки. Советую открыть вышеозначенные файлы и посмотреть, как там на счёт "только то, что нужно".
Да, это я понял. Они в разных форматах:
Но тогда каким образом происходит синхронизация закладок между браузерами, когда они запущены и мы жмем одноименную кнопку "синхронизация закладок"?
Если речь идёт о маздайных программах, то там строго говорится: сперва закрыть браузеры.
Если речь идёт о закачивании чужих закладок, то:
1. Firefox требует, чтобы ему скормили html (но умеет всасывать в себя из оперы -- надо разобраться как)
2. Chromium работает исключительно с html и ни с чем другим (как импорт, так и экспорт)
3. Opera экспортирует в html и в свой формат, а импортирует Opera, Firefox, Internet Explorer и по какой-то странной логике Konqueror.
Таким образом, получаем единственную возможность (если использовать браузеры) -- перегнать в html. Но это половинчатое решение. Мы не получим возможностей, которые мне бы хотелось видеть: отказаться от переноса некоторых закладок, сделать удаление и т.д.
Может конечно я фигню пишу, но вот прикинь: открываем браузер№1 горячей клавишей А, открываем диспетчер закладок горячей клавишей Б, Ctrl+A, Ctrl+C, открываем браузер№2 горячей клавишей В, открываем диспетчер закладок и жмем Ctrl+V и т.д. с браузером№3 (ну либо, если не прокатит из-за разных форматов, то жмем клавишу синхронизации закладок). Как уменьшить и упростить алгоритм действий:
Нет. Прямым копированием не получится. Такой возможности ни у одного из вышеозначенных браузеров нету.
Вот что ни говори, а оптимальный метод хранения закладок у Internet Explorer -- там каждая закладка отдельный файл и тягать их одно удовольствие.
Есть идея: открываешь любой браузер и жмешь ctrl+D... Что получается? Правильно, открывается окно сохранения закладки... Вот, а если создать правило, что при сохранении закладки (при нажатии ctrl+D) адрес сайта сохранялся в одну и ту же папку... Как считаешь, можно такое реализовать?
Думаю, что можно. Только не понимаю а) зачем, б) что это даст.
А вообще сейчас несколько не до того. Так что временно подзабросил.
Ну это даст то, что в одной папке (либо файле) будут ссылки на все сайты с закладок и дальше можно подумать, как все ссылки одним нажатием комбинации клавиш открыть в любом браузере...
Имеет смысл в html. Можно подумать.
Ну что там ребята, решение найдено?
куча есть решений... Простой самый - встроенный в фаерфокс.....
Да не решение это. И, на самом деле, решений нету. Я ещё пороюсь маленько и придётся писать.
Отправить комментарий