2007-07 Cd/Dvd/File Catalogue

Cd/Dvd/File Catalogue

O projekcie Cd/Dvd/File Catalogue

kiedyś to uzupełnie

Możliwości (przegląd ogólny zarysu/szkicu)

Możliwości: (w kolejności od najpierw implementowanych)

katalog płyt

  • .
    • informacje o płycie
      • nazwa (tytuł z płyty)
      • identyfikator - id (nazwa wprowadzona ręcznie, domyślnie albo puste, albo z nazwy, albo data … )
      • typ nośnika (cd,cdrw,cdr,dvd…)
      • właściciel
      • marka
      • ilość sztuk
      • czy pożyczona
      • gdzie jest (osoba/dom/szafka/pulka/pudelko/numer_kolejnosci_na_szpindlu(patyku))
      • data, daty: od kiedy posiadana/wypalona, kiedy zrzucona do systemu itp.
      • dodatkowe informacje (opis)
    • ostatnie odczytanie (do sprawdzania stanu płyty)

zawartości płyt

  • .
    • lista plików i katalogów na płycie
    • informacje o plikach (rekordy stałej wielkości)
      • rozmiar pliku
      • skróty kontrolne plików (opcja)
    • informacje o plikach w archiwach
      • można zawsze doprosić o doskanowanie archiwów jeżeli wcześniej nie były przeskanowane
    • dodatkowe informacje o plikach (segment rozszerzalny, oddzielna tablica)
      • typ mime pliku

katalogowanie płyt

  • .
    • możliwość katalogowania płyt w katalogach i podkatalogach (odzwierciedlenie szafek,półek,pudełek)

zarządzanie plikami

  • .
    • dbanie by plik był w co najmniej n (=2) miejscach poprawny
    • informacje o wszystkich alternatywnych miejscach plików
    • informacje o alternatywnych nazwach pliku
    • sprawdzanie czy dwa pliki o tych samych sumach kontrolnych są identyczne 1:1, jak nie to tworzenie dwóch zbiorów
    • tworzenie opisów do plików
    • zarządzanie zasobami plikow - integracja z programami
      • Leaftag - synchronizacja z metadanymi tego programu oraz. ew. aktualizacja ścieżek
      • Amarok - synchronizacja z bazą danych amaroka oraz. ew. aktualizacja ścieżek
      • XMMS - Aktualizacja playlisty w razie potrzeby (przy przenoszeniu plików)
    • zarządzanie metadanymi - integracja z serwisami internetowymi
      • http://imdb.com/ - The Internet Movie Database (IMDb)
      • MusicBrainz , http:/last.fm/ - Music serivice…
      • Flickr (tagi)
      • Google Base - http://base.google.com
      • del.icio.us - tagowanie URLi … w przypadku rozszerzeń net…
    • tagowanie plików
      • ręczne (z możliwością otagowania jednocześnie wielu zaznaczonych np. w polu "szukaj" )
      • Leaftag - wsparcie dla Leaftag. Oraz możliwość współpracy polegającej na tym że Leaftag traci informacje o pliku po jego przeniesieniu, a CDFCAT dzięki md5sumom i innym metadanym ma możliwość domyślania się gdzie się przemieścił plik.
      • automatyczne (filtry , np. "jeżeli plik muzyczny i w tagu ma "SlipKnoT" taguj "SlipKnoT" itp., jeżeli obrazek i ma "Bianca Beauchamp" to taguj jako "Latex","Fetish_Model" - spacja i dolne podkreślenie są separatorami słów… )
    • łączenie plików zależnościami podobieństw (np. pliki w różnej jakości (nieskierowane) , czy też jeden w lepszej jakości lub nowszy od drugiego)
      • ręczne (z określaniem rodzaju etc.)
      • automatyczne - m.in. poprzez mechanizmy opisane gdzie indziej t.j. np. tworzenia sum kontrolnych części pliku a potem łączenie tych plików które mają np. >6/10 kawałków z tą samą sumą … albo plików graficznych które mają podobny ZNORMALIZOWANY HISTOGRAM … etc.
      • sychronizacja kopii pliku z ew. zmianami w źródle tudzież wersjonowanie
    • dodatkowe ustawienia dla plików, pomoc w zarządzaniu
      • data ważności pliku - po jakim czasie może być usunięty

formaty przechowywania danych

pomocnicza tablica wyszukiwawcza

  • .
    • przyśpieszenie wyszukiwania
    • tablica odwzorowań gdzie są informacje dodatkowe dotyczące plików o danym id.
    • tablica ze stałą wielkością rekordów
    • pomysły
      • skrót wyszukiwawczy nazwy pliku
        • 8 bajtów. Każdy bajt to jednobajtowy skrót ze słowa w nazwie pliku. Dzięki temu szukając pliku ze słowami "slipknot spit it out" utworzymy jednobajtowe skróty tych czterech wyrazów i będziemy szukać tylko wśród tych plików które zawierają te skróty…

kontrola poprawności plików, płyt , kontrola redundancji

  • .
    • pilnowanie by plik znajdował się w co najmniej n (=2) miejscach poprawnie. Jeżeli jedna padnie, akcja ratowania pliku (kopiowanie z drugiego nośnika na własny). Uwzględnianie PŁYT ZNAJOMYCH !!!
    • jeżeli dana płyta nie była sprawdzana określony czas, umieścić na liście płyt do sprawdzenia.
    • kontrola redundancji
      • możliwość automatycznego usuwania plików z dysku które są na płytach :D…
      • z wcześniejszym sprawdzeniem identyczności z plikiem na płycie
      • z możliwością odtworzenia zmian :P . Undo. Zapisane na HDD. Tak więc można zrobić UNDO usówania sprzed kilku dni :D.
    • korzystanie z gotowych md5-sum (i innych) z plików *.md5 lub *.md5sum lub .sha etc.
    • różna redundancja w zależności od : typu i rozmiaru pliku (np. małe pliki tekstowe pdf,doc,txt do 10MB redundancja 10x, a obrazki do 0,5MB redundancja 3x …)
    • sprawdzanie (tworzenie) sum kontrolnych podczas kopiowania z płyt (np. podczas renderowania wirtualnego katalogu) w locie !
    • sumy kontrolne części plików (np. każdej z 10 czesci) celem znalezienia plików PODOBNYCH (np. nieznacznie zmodyfikowanych, np. mp3 ze zmienionym tagie).
    • (opt) dla niektórych formatów sumy kontrolne dla fragmentów skonfertowanych do uproszczonej postaci celem znalezienia plików podobnych, albo w alternatywnych formatach, wersjach… np. Pliki pdf, doc, odt skonwerować do txt i brać dwubajtowe sumy kontrolne poszczególnych akapitów

tworzenie zasobów plików i płyt

  • .
    • Zdalny serwer
      • umieszczanie zawartości płyt , czy katalogów/plików oznaczonych jako "public"/"for friends" na serwerze. Dzięki temu dawanie możliwości przeszukiwania przez znajomych twoich zasobów danych. Oraz ew. odtwarzanie zagubionych na podstawie twoich.
      • umieszczanie możliwości "zamówienia" lub ściągnięcia miniatur plików (miniatura obrazka, pierwsze 30sek utworu w kiepskiej jakosci etc. - ew. mozliwość umieszczania próbek przez autorów płyt , by mógł zamawiający (HANDEL, sprzedarz płyt) zachęcić )
    • umieszczanie informacji o plikach …
      • możliwość wyszukiwania alternatywnych lokacji (osoba,miejsce,nośnik) pliku szukając po : md5, nazwie, wielkości
      • możliwość wyszukania sumy md5 dla pliku na płycie na podstawie : wielkości, wielkości+nazwy -> "odzyskiwanie md5" sumy w celu sprawdzenia :P
      • sprawdzanie poprawności nośnika poprzez sprawdzenie czy w bazie znajdują się pasujące odpowiadające pliki np. "wielkość + md5" lub "wielkość + md5 + nazwa" lub "wielkość + md5 + podobna (!!!) nazwa".
    • aktualizacja informacji o nośniku, a w tym - wykrywanie przeniesień plików !!! (gdy plik ma taka sama nazwe i rozmiar jak poprzedni oraz rozmiar >10MB wtedy zakłada że został przeniesiony) - brak kolejnych (niepotrzebnych ?) sprawdzeń sum kontrolnych. Dodawanie informacji o nowych plikach i ew. ich introspekcja
    • miniatury plików . Dla obrazków wiadomo. Dla muzyki to kawałek utworu w gorszej jakości. Dla video kilka/kilkanaście miniatur. Dla PDF/DOC etc -> wyeksportowane pierwsze 10k SAMEGO tekstu (bez formatowania)…. (ew. miniaturki pierwszych stron)…
    • i wiele innych :)
  • zbieranie meta-informacji o plikach z różnych serwisów np. musicbrainz, last.fm . imdb.com…

wirtualne forldery

  • .
    • wirtualne kopiowanie plików do folderów
      • albo fizycznych za pomocą plików "skrótów" albo do wirtualnych w programie
      • drag&drop
      • potem zautomatyzowane odtwarzanie plików z płyt na podstawie skrótów. (tworzenie składanek itp.)
    • renderowanie wirtualnych folderów do katalogów z możliwością wyboru nośników źródłowych (jeżeli pliki znajdują się na kilku - z podpowiedzią zestawów na podstawie spójnych itp.)
    • renderowanie wirtualnych folderów za pomocą dowiązań symbolicznych
    • zlecanie renderowania folderu (w szczegulności z obcych zasobów) - przykład użycia: komponujemy sobie płytkę z zasobów kolegi, który potem nam ją wypala za pomocą "jednego kliknięcia" :)
    • traktowanie playlist .m3u itp. (ew. list utworów w pliku txt :P) jako źródła do utworzenia wirtualnego forlderu z plikami muzycznymi. Jeżeli kilka plików jest podobnych do jednej pozycji powinno być pytanie którą wybrać. (z dodatkowymi info. o plikach… wtedy można lepszej jakości pliki wybrać :D)
    • stworzenie wirtualnego folderu na podstawie istniejącego. Dzięki temu można zrobić "snapshot" układu plików na dysku (który może być odmienny od tego na płytach) i potem go odtworzyć. (A przy wymuszeniu redyndancji np. 2x można dostać automatycznie listę "niezbackupowanych" plików :D).
    • FUSE , zrobić wirtualny filesystem (tak jak sshfs). - filesysytem w przestrzeni uzytkownika - jak projekt sshfs korzysa z "user mode… costam fs" ze sie z tego projektu robi prosto w przestrzeni urzytkownika file systemy , to mozna tez zrobic i przy probie otwarcia pliku wyswietlac okno "prosze wlozyc plyte" … z mozliwoscia trzymania w "cache" najczesniej/ostatnio uzywanych plyt/plikow :) (wtedy jak sie zrobi playliste z czegos takiego to wystarczy przed imprezka przeklikac "next" i sie same pliki przekopiuja do cache :D… albo juz przy przeciaganiu do listy odtwarzania w XMMS bedzie prosic o CD o przecierz bezdzie chcial tagi sprawdzic :D). Można spróbować rozszerzyć o tę funkcjonalność jakiś istniejący projekt np AVFS , poprzez stworzenie odpowiednika "archiwum" plików :). - patrz http://mediadatabase.sourceforge.net/
    • tworzenie pliku z suma kontrolna do wirtualnego katalogu

funkcjonalność

Wymieniona od najważniejszych

  1. Wyszukiwanie plików
    • na płytach CD/DVD/dyskach lokalnych plików
    • po nazwie
    • po danych dodatkowych (w mp3 z tagów)
  2. Sprawdzanie plików
    • z ew. usuwaniem plików na dysku identycznych z plikami na płycie
      • identycznych tzn. do wyboru:
        • identycznych 1:1
        • z identyczną sumą kontrolną i wielkością
        • z identyczną wielkością i nazwą
  3. Skanowanie wewnątrz archiwów
    1. najpierw tylko listowanie zawartości (nazwa pliku, wielkość pliku)
      • obsługa archiwów plików poprzez rozszerzenia (bash, lua, so!)
      • formaty: zip, tar, rar, 7z, gz, tar.bz2, tar.gz, etc.
    2. potem zaglądanie do zawartości tych plików
      • depakowanie nadysk /tmp
      • depakowanie w locie strumieniowe
  4. Wirtualne Foldery
    • porządkowanie plików niezależnie od ich fizycznej lokalizacji
    • renderowanie - tworzenie rzeczywistych folderów ze strukturą odpowiadającą wirtualnej.
  5. Aktualizacja informacji o nośniku/płycie
    • w przypadku zmiany części plików (np. na CD-RW lub dysku) - tak aby nie było potrzebne ponowne przetwarzanie całości danych a np. tylko nowych bądź tych ze mienionym rozmiarem
  6. Synchronizacja danych (i ew. wersjonowanie)
    • synchronizacja kopii danych z ich pododzeniem z uwzględnieniem ich poprzednich wersjii
      • kłania się URI do zasobów (czyli ew. pochodzenie WWW lub laptop etc.)
      • diff-y do zapamiętywania różnic, tudzież przesyłania różnic i patchowania
      • automatyczne aktualizacje plików (np. konfiguracyjnych wspólnych dla wielu komputerów którymi administrujemy)

pomysły

Ogólny system zarządzania danymi plikowymi

  • do obsługi zasobów plikowych na dyskach, nośnikach DVD etc. dodać jeszcze
    • dane na WWW
    • dane na FTP itp. innych miejscach w sieci
    • obsługę zmian w plikach (czyli robienie DIFFów zamiast kopii pełnych plików)
    • linkowanie zasobów WWW z lokalnymi kopiami
    • synchronizacja (Update - Mirror) z zachowaniem poprzednich wersjii (Diif ,albo kopia) -> historia serwisu WWW….
  • przygotowywanie backupów
    • na streamery, na DVD itp.
    • DAT taki program
    • archiwa pakowalne itd.
  • Interfejs
    • WWW (z hasłem dla znajomych -> tylko do publica itp.) - WWW to i windows i linux
    • FUSE - Wirtualny system plików
    • Prawy klawisz myszy (różne np. "otaguj plik" "opis plik" "otaguj +public" "dodaj do bazy" etc.)
    • "Skryptozakładka" do browserów by kliknienciem dodawac zasoby www (polaczenie do interfejsu www lub serwer pośredniczący ;) ).

plan realizacji

ver. 0.10

Tworzenie listy plików na nośniku

Dwa pliki:

  • cd_name_disk_id_list.gct
  • cd_name_disk_id_info.gct

Informacje o nośniku plik_info.gct:
/* JSon … najpierw bardzo uproszczony …. */

{
"title": "tytuł",
"id": "id",
"type":"DVD",
"description": "Description\nabout that DVD"
}

Lista plikow plik_list.gct
format (separator to pojedynczy tabulator "\t") :

id katalogu
w którym sie znajduje plik
id pliku wielkość pliku
lub D
md5sum
lub 0
nazwa pliku KONIEC
LINII

przykład:

Parent
dir
Id size md5 name
0 1 D 0 .
1 2 12543 0 index.html
1 3 D 0 images
3 4 45345 0 logo.gif

Jezeli posortowane wzgledem pierwszej kolumny to nie trzeba trzymac w pamieci, bo mozna czytywac zawartosci katalogow z pliku z baza…

Tworzenie listy plikół na nośniku - alternatywny format

W pliku z lista mamy liste jak leci z finda (redundancje rozwiązuje PAKOWANIE TEJ LISTY np. .gz albo .7z) :

x_list.gct.7z

./ala/zdjecia.zip
./ala/pamietnik
./beata/praca
./wakacje
./wakacje/zdjecie.jpg

A dane dodatkowe w oddzielnym pliku w formacie:

numer pliku
będący numerem wiersza
typ informacji
dodatkowej
informacja dodatkowa do konca wiersza

numerujemy wiersze "od 1". (zgodnie z edytorami tekstu)

coś ala:
x_additional_data.gct

1 mime zip
1 desc plik zip ze zdjeciami na haslo "ala"
5 md5 ...
5 mime image/jpeg
5 tags  wakacje

Szukanie

  • po słowach które mają być w nazwie pliku
  • z ew. użyciem || oraz &&
  • z ew. ignorowaniem rozmiaru tekstu
  • podawanie ścieżek do pliku (ścieżek bo może być w wielu miejscach)
  • możliwość otwarcia katalogu z plikiem w konquerorze (lub innym)

Szukanie redundancji

  • szukanie czy plik jest w kilku miejscach
  • szukanie czy pliki na dysku są na płytach
O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License