Problem z zakładkami
Jestem użytkownikiem programów tworzonych przez fundację Mozilla od 2003 roku. W tamtym czasie główną przeglądarką była Mozilla Suite, rok później pojawił się Firefox korzystający z tego samego silnika, ale z kompletnie przebudowanym interfejsem użytkownika. Przez ten czas wielokrotnie migrowałem swój przeglądarkowy profil, ale zawsze zachowywałem zakładki. Niektóre z nich pamiętają jeszcze czasy sprzed Firefox’a, aczkolwiek większość z takich właśnie zapewne prowadzi już do nieistniejących stron. Przez cały ten czas uzbierałem nieco ponad 1000 zakładek. I to właśnie jest problem.
Dotychczas miałem kilka podejść do uporządkowania tego zbioru. Próbowałem ręcznie wyszukiwać nieaktualne zakładki, całość pogrupować w foldery. Próbowałem też korzystać ze słów kluczowych i opisów, żeby później móc efektywniej wyszukiwać. Ale rezultat był raczej mizerny. Zanim napisałem ten post miałem kilkanaście folderów, ale gdy przychodziło do wyszukiwania czegoś zawsze pojawiał się ten sam problem: pamiętam, że znalazłem jakąś istotną dla mnie stronę, pamiętam czego ona dotyczyła i pamiętam też, że na pewno dodawałem ją do zakładek. Ale nie jestem w stanie jej odnaleźć w tych zakładkach. Albo z powodu nie pasującego tytułu, albo dziwnych, nie nawiązujących do treści słów w adresie (a tylko według tych kryteriów możemy wyszukiwać).
Potrzebowałem narzędzia do wyszukiwania, które ma znacznie większą “moc” niż standardowe wyszukiwanie w przeglądarce. Ponieważ nie udało mi się znaleźć niczego takiego, to stworzyłem je sam. Narzędzie to nazwałem BookmarksBase. Jest to otwarto-źródłowy program napisany w języku C#.
Program realizuje pomysł, który może początkowo wydawać się niedorzeczny: spróbujmy pobrać tekst ze wszystkich stron internetowych z zakładek. Czy to będzie zajmowało dużo miejsca? Jak dużo? Czy nawet jeśli byłyby to setki megabajtów, to nie byłoby warto mieć narzędzie do przeszukiwania tej treści?
Okazuje się, że taki zbiór danych wcale nie zajmuje tak dużo miejsca, jak początkowo mi się wydawało, a samo narzędzie działa zaskakująco szybko, pomimo tego, że nie próbowałem stosować żadnych wyrafinowanych optymalizacji.
Narzędzie składa się z kilku programów. Najpierw uruchamia się program zbierający adresy stron internetowych z zakładek (BookmarksBase.Importer). Pobieranie i przetwarzanie zawartości stron w moim przypadku trwało ok. 2 minut (przypominam, że chodzi o sam tekst, w moim przypadku jednak z dość dużej liczby ok 1000 zakładek). W wyniku tworzony jest plik bookmarksbase.xml (w moim przypadku ok 12 MiB) zawierający tekst ze wszystkich stron, w postaci czytelnej dla dowolnego programu. Następnie do właściwego wyszukiwania służy BookmarksBase.Search, który pełni rolę przeglądarki dla utworzonego pliku. Wyszukujemy dowolny tekst, a program znajduje go w treści, adresie lub tytule i wyświetla wszystko jednocześnie.
Szczegóły oraz link do pobierania dostępne są na moim koncie GitHub.
W momencie publikacji tego wpisu program znajduje się w wersji stabilnie działającej, ale planuję wprowadzić jeszcze kilka udoskonaleń np. wyświetlanie listy nieaktualnych zakładek przez importer oraz usprawnienie nawigacji po BookmarksBase.Search przy użyciu klawiatury.