Skip to content

Commit b1cd2e2

Browse files
fix null data when fetching movie
1 parent 64a1c1f commit b1cd2e2

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

fetchMovie.sh

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
if test -z $1
44
then
5-
echo 'Please provide a integer as first argument'
5+
echo 'Please provide a movie ID string as first argument'
66
exit 1
77
fi
88

@@ -18,7 +18,7 @@ fi
1818
movieJson=$(curl -s "https://www.wikidata.org/wiki/Special:EntityData/$1.json")
1919

2020

21-
instanceOf=$(echo $movieJson | jq -r ".entities.$1.claims.P31[0].mainsnak.datavalue.value.id")
21+
instanceOf=$(echo "$movieJson" | jq -r ".entities.$1.claims.P31[0].mainsnak.datavalue.value.id")
2222

2323

2424
# Q11424 film
@@ -31,19 +31,20 @@ then
3131
exit 1
3232
fi
3333

34-
35-
pageId=$(echo $movieJson | jq ".entities.$1.pageid // \"\"")
36-
movieLabelFr=$(echo $movieJson | jq -r ".entities.$1.labels.fr.value")
37-
originalTitle=$(echo $movieJson | jq -r ".entities.$1.claims.P1476[0].mainsnak.datavalue.value.text // \"\"")
38-
frWiki=$(echo $movieJson | jq -r ".entities.$1.sitelinks.frwiki.url // \"\"")
39-
date=$(echo $movieJson | jq -r ".entities.$1.claims.P577[0].mainsnak.datavalue.value.time // \"\"")
40-
imdb=$(echo $movieJson | jq -r ".entities.$1.claims.P345[0].mainsnak.datavalue.value // \"\"")
41-
tmdb=$(echo $movieJson | jq -r ".entities.$1.claims.P4947[0].mainsnak.datavalue.value // \"\"")
34+
# Fetch main datas
35+
#
36+
# `// \"\"` This strange syntax allow to output an empty string if key do not exist or value is null
37+
movieLabelFr=$(echo "$movieJson" | jq -r ".entities.$1.labels.fr.value // \"\"")
38+
originalTitle=$(echo "$movieJson" | jq -r ".entities.$1.claims.P1476[0].mainsnak.datavalue.value.text // \"\"")
39+
frWiki=$(echo "$movieJson" | jq -r ".entities.$1.sitelinks.frwiki.url // \"\"")
40+
date=$(echo "$movieJson" | jq -r ".entities.$1.claims.P577[0].mainsnak.datavalue.value.time // \"\"")
41+
imdb=$(echo "$movieJson" | jq -r ".entities.$1.claims.P345[0].mainsnak.datavalue.value // \"\"")
42+
tmdb=$(echo "$movieJson" | jq -r ".entities.$1.claims.P4947[0].mainsnak.datavalue.value // \"\"")
4243

4344

4445
# Get IDs that we will use to do some other requests
45-
directorIds=$(echo $movieJson | jq -r ".entities.$1.claims.P57[].mainsnak.datavalue.value.id // \"\"")
46-
dopId=$(echo $movieJson | jq -r ".entities.$1.claims.P344[0].mainsnak.datavalue.value.id // \"\"")
46+
directorIds=$(echo "$movieJson" | jq -r ".entities.$1.claims.P57[].mainsnak.datavalue.value.id // \"\"")
47+
dopId=$(echo "$movieJson" | jq -r ".entities.$1.claims.P344[0].mainsnak.datavalue.value.id // \"\"")
4748

4849

4950
# Original title, directors and release year are mandatory
@@ -63,7 +64,7 @@ directors=()
6364
for directorId in "${directorIds[@]}"
6465
do
6566
directorJson=$(curl -s "https://www.wikidata.org/wiki/Special:EntityData/$directorId.json")
66-
directorLabelFr=$(echo $directorJson | jq -r ".entities.$directorId.labels.fr.value")
67+
directorLabelFr=$(echo "$directorJson" | jq -r ".entities.$directorId.labels.fr.value")
6768
directors+=("$directorLabelFr")
6869
done
6970

@@ -74,7 +75,7 @@ directorsJson=$(jq --compact-output --null-input '$ARGS.positional' --args -- "$
7475
if test -n "$dopId"
7576
then
7677
dopJson=$(curl -s "https://www.wikidata.org/wiki/Special:EntityData/$dopId.json")
77-
dopLabelFr=$(echo $dopJson | jq -r ".entities.$dopId.labels.fr.value")
78+
dopLabelFr=$(echo "$dopJson" | jq -r ".entities.$dopId.labels.fr.value // \"\"")
7879
else
7980
dopLabelFr=''
8081
fi

0 commit comments

Comments
 (0)