Wyślij żądanie cURL do strony http://jsonplaceholder.typicode.com/posts/1. Jak wygląda otrzymanny wynik? Czym różni się od danych w (znanym ze wstępu do informatyki) formacie XML?
$ curl 'http://jsonplaceholder.typicode.com/posts/1'
Przyjrzyj się API strony poznan.pl
http://www.poznan.pl/api/
Za pomocą narzędzia cURL uzyskaj z API strony poznan.pl informację o wydarzeniach w formacie XML.
$ curl 'http://www.poznan.pl/mim/public/ws-information/?co=getCurrentDayEvents'
Za pomocą narzędzia cURL uzyskaj z API strony poznan.pl spis ulic w formacie JSON
$ curl 'http://www.poznan.pl/featureserver/featureserver.cgi/ulice/all.json'
Ogranicz poprzednie wywołanie do 100 pierwszych ulic
$ curl 'http://www.poznan.pl/featureserver/featureserver.cgi/ulice/all.json?maxFeatures=100'
Jeśli chcesz zobaczyć zwrócony JSON ze 100 ulicami w Poznaniu w bardziej czytelnej formie, możesz użyć polecenia jq
:
$ curl 'http://www.poznan.pl/featureserver/featureserver.cgi/ulice/all.json?maxFeatures=100' | jq
Program jq
to potężne narzędzie, można go użyć do przeszukiwania i filtrowania danych w formacie JSON. Przykładowo lista nazw ulic może zostać zbudowana w następujący sposób
$ curl 'http://www.poznan.pl/featureserver/featureserver.cgi/ulice/all.json' | jq '.features[].properties.a3'
Przejrzyj API na stronie
https://openweathermap.org/api
Jakie dane i w jakim formacie możesz na tej stronie uzyskać?
Zarejestruj się na stronie
https://openweathermap.org/api
Pobierz prywatny klucz.
Za pomocą narzędzia cURL
uzyskaj ze strony https://openweathermap.org/ pogodę w mieście o pierwszej literze takiej, jak pierwsza litera Twojego nazwiska.
Zadania podstawowe sprawdzane są automatycznie, stąd ważne jest wysłanie na odpowiedni adres i zachowanie wskazanego formatu.
Wyniki zadań dostępne są w pliku tekstowym pod adresem http://kino.vm.wmi.amu.edu.pl/dtin/######.txt, gdzie ###### to sześciocyfrowy numer indeksu.
Wyślij na http://kino.vm.wmi.amu.edu.pl:6080/dtin/z4.1/######, gdzie ###### to sześciocyfrowy numer indeksu, żądanie PUT
zawierające w treści plik JSON, dla którego poniższe zapytanie jq
zwróci sumę czynników pierwszych numeru indeksu (przykładowo dla liczby \(60=2\cdot 2\cdot 3\cdot 5\), wynikiem powinno byc 12):
[.factors[].value] | add
Nie zapomnij ustalić poprawnego nagłówka Content-Type
.
jq
Wyślij na http://kino.vm.wmi.amu.edu.pl:6080/dtin/z4.2/###### lub http://kino.vm.wmi.amu.edu.pl:6080/dtin/z4.3/######, gdzie ###### to sześciocyfrowy numer indeksu, żądanie POST
zawierające w treści filtr jq
, który dla zadanych plików zwróci odpowiednie odpowiedzi.
Wejściowy plik JSON przedstawia historię pewnych zdarzeń (block) i historię wartości pewnego parametru (hashrate). Jego ogólna struktura jest następująca:
{
"blockHistory": [1519739287, 1519739455, 1519739710 ...],
"hashrateHistory": [
{
"hr": 105355000000,
"time": 1519739200
},
{
"hr":104900000000,
"time":1519739600
}
...
]
}
Zarówno wartości w tablicy blockHistory
jak i atrybutu time
podawane są jako czas uniksowy, tj. jako liczbę sekund od początku 1970 roku.
Zadanie będzie sprawdzane na następującym pliku.
Oczekiwany wynik działania filtra:
Dla pliku wejściowego chcemy uzyskać wspólną historię wartości hashrate i bloków posortowaną chronologicznie. Plik wynikowy ma mieć następujacą strukturę:
[
{
"time": 1519739200,
"type": "hr",
},
{
"time": 1519739287,
"type": "block"
},
{
"time": 1519739455,
"type": "block"
},
{
"time": 1519739600,
"type": "hr"
},
{
"time": 1519739710,
"type": "block",
},
...
]
jq
- zmienne i funkcje
Dla pliku wejściowego chcemy uzyskać informację o wartości parametru hashrate odnotowanej bezpośrednio przed każdym zdarzeniem, posortowaną chronologicznie. Plik wynikowy ma mieć następujacą strukturę:
[
{
"lastHr": 105355000000,
"time": 1519739287
},
{
"lastHr": 105355000000,
"time": 1519739455
},
{
"lastHr": 104900000000,
"time": 1519739710
},
...
]
-f
aby zapisać filtr w osobnym pliku. Znacząco ułatwi Ci to przygotowanie rozwiązania.Napisz prostego Robota internetowego (ang. Web Crawler), który dla zadanej strony tematu na Wikipedii, wyświetli listę wszystkich tematów z sekcji See also. Przeszukiwanie ma być wykonywane rekurencyjnie.
Przykładowo dla hasła https://en.wikipedia.org/wiki/Online_chat, oprócz tematów bezpośrednio zawartych w See also takich jak: https://en.wikipedia.org/wiki/Chat_room czy https://en.wikipedia.org/wiki/Instant_messaging w wynikach powinny znaleźć się też tematy See also tych tematów (i tak dalej) przykładowo: https://en.wikipedia.org/wiki/Social_media czy https://en.wikipedia.org/wiki/Media_psychology.