Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/parse.sh
blob: afc056dbc4e33f975dee1d3361382a3f5db9f6ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/bin/bash
# run this on the backup directory

datafile="datalist"
mime="mime_type"
home=$PWD
er_m="$home/err_mime.log"
er_d="$home/err_data.log"
gnomedir="gnome"



function err_m {
	echo $1 >> $er_m
}

function err_d {
	echo $1
	echo $1 >> $er_d
}

for folder in `ls */ -d`
do
	cd $folder
	echo Working dir: $folder
	# datastore

	[[ -d home ]] && rm -rf ./home

	if [ ! -f *.bz2 ]
	then
		echo "$PWD is not a backup directory"
        continue
    fi

	tar xjf *.bz2
	[[ $? -ne 0 ]] && err_d "TAR error, please recover the $PWD archive"

	out="$home/out/$folder"
	mkdir -p $out/datastore
	[[ -f home/olpc/.sugar/default/datastore/nickname ]] && cp home/olpc/.sugar/default/datastore/nickname $out/datastore
	int=1

	rm $datafile 2>/dev/null
	find . -name data >> $datafile

	for path in `cat $datafile`
	do
		cd ${path%\/data}/metadata

		ext="unknown"
		size=0

			if [ -f $mime ]
			then
				grep -q application/pdf $mime && ext="pdf"
				grep -q application/x-fototoon-activity $mime && ext="fototoon"
				grep -q application/x-memorize-project $mime && ext="memorize"
				grep -q application/x-physics-activity $mime && ext="physics"
				grep -q application/x-turtle-art $mime && ext="turtle"
				grep -q gcompris $mime && ext="gcompris"
				grep -q ogg $mime && ext="ogg"
				grep -q image/jpeg $mime && ext="jpeg"
				grep -q image/png $mime && ext="png"
				grep -q text/plain $mime && ext="txt"
				grep -q text/x-python $mime && ext="py"
				grep -q opendocument $mime && ext="odf"
				grep -q application/epub $mime && ext="epub"
				grep -q application/rtf $mime && ext="rtf"
				grep -q mpeg $mime && ext="mpeg"
				grep -q html $mime && ext="html"

				grep -q Speak activity && ext="speak"
				grep -q Calculate activity && ext="Calculate"
				grep -q Chat activity && ext="Chat"
			else
				err_d "mime type file does not exists: $PWD"
				[[ ! -f ../data ]] && err_d "data file does not exists: $PWD"
				continue
			fi

			[[ -f "preview" ]] && size=`ls -sk preview | awk '{ print $1 }'`
			if [ $ext == "unknown" ]
			then
				err_m "Format unknown: $PWD"
				[[ -d $out/datastore/unknown ]] || mkdir $out/datastore/unknown
				[[ $size -gt 0 ]] && cp -a preview $out/datastore/unknown/$int.$ext.preview.png
			else
				cp -a ../data $out/datastore/$int.$ext
				[[ $size -gt 0 ]] && cp -a preview $out/datastore/$int.$ext.preview.png
			fi
			int=$((int + 1))

		cd $home/$folder
	done
	rm $datafile

	[[ -d home ]] && rm -rf ./home

	# GNOME directory
	if [ -d $home/$folder/$gnomedir ]
	then
		for f in `ls -d $home/$folder/$gnomedir/*/`
		do
			size=`du -skb  $f | awk '{ print $1 }'`
			[[ $size -lt 4097 ]] && continue
			mkdir -p $out/$gnomedir
			cp -aR ${f%\/} $out/$gnomedir
		done
	else
		err_d "There is no gnome dir for this backup: $PWD"
	fi

	cd $home
done
echo "Done"