
Studio Ghibli API - nandaja
https://ghibliapi.herokuapp.com/
======
owenversteeg
I just took a look. It's 48kB uncompressed JSON. You can easily load this into
a browser tab. Why is it an API?

To save anybody from copy-and-pasting it, here's ten seconds of playing
around:

> ghibli

Object {films: Array(20), people: Array(16), locations: Array(25), species:
Array(5), vehicles: Array(3)}

> ghibli.films[0]

Object {id: "2baf70d1-42bb-4437-b551-e5fed5a87abe", title: "Castle in the
Sky", description: "The orphan Sheeta inherited a mysterious crystal t…uta's
science to make himself ruler of the world.", director: "Hayao Miyazaki",
producer: "Isao Takahata"…}

> ghibli.locations[0]

Object {id: "11014596-71b0-4b3e-b8c0-1c4b15f28b9a", name: "Irontown", climate:
"Continental", terrain: "Mountain", surface_water: "40"…}

> ghibli.people[0]

Object {id: "ba924631-068e-4436-b6de-f3283fa848f0", name: "Ashitaka", gender:
"male", age: "late teens", eye_color: "brown"…}

~~~
flashman
> Why is it an API?

It's not an official Studio Ghibli API. But it's exactly what you'd build if
you were learning to build APIs.

------
munro
A more minimal data api. :)

    
    
        requests.get('https://raw.githubusercontent.com/janaipakos/ghibliapi/master/data.json').json()
    

Now it can be loaded into Pandas for analysis. Even if I was building an app
I'd want to own the data 1) so my users aren't being logged by the API service
2) control over the uptime 3) lower latency 4) flexibility of serving the
data, such as generating static pages.

------
Something1234
What's with attaching the id to the url when scrolling with the next section,
its a bad user experience. Jacked my back button.

~~~
Fauntleroy
They should be using replaceState instead of pushState

~~~
nxrabl
Looks like the site was generated by this [0]. They'd probably appreciate
someone raising an issue.

[0] [https://github.com/Rebilly/ReDoc](https://github.com/Rebilly/ReDoc)

~~~
romanhotsiy
ReDoc author here. Thanks folks, for submitting a bug. I've implemented this
feature recently and I usually do not use back button during testing :)

------
saurik
The more I look at this the more it feels like an unofficial random project
endpoint relying on trademark infringement to look important and get extra
publicity than a case of "who the hell at Ghibli thought this was needed and
decided to build this?".

~~~
rena-anju
Couldn't agree more. I see exactly _no_ potential use cases for this.

------
falsedan
I had to swipe back 6 times to return to HN so I could write a comment to
complain…

More usefully, this isn't an API, it's a data source for in-universe facts! It
_has_ an API (but is not one).

~~~
toyg
It's like the extremely popular Pokeapi
([https://pokeapi.co](https://pokeapi.co)) or SWAPI
([https://swapi.co](https://swapi.co)): a service providing data over a REST
interface. In other words, an API.

It's honestly the first time I see anyone claiming "an API is not an API
unless it changes something".

~~~
mikekchar
API stands for "Application Programming Interface". A website that serves up
data is not an API. The best way to explain the difference is that you can
write an API on a piece of paper and it is still an API (i.e., you don't have
to implement it). It documents how different parts of an application interface
with each other. Normally it consists of things like the definitions of
functions that you can call to achieve various results.

An API is specifically not a service. You can have many services that all use
the same API. REST itself is an API. You can build another API on top of REST.
So if someone says they have a REST API for querying movie information, that's
sensible. If you have a service that serves up movie information, that's not
an API. That's a service. It _uses_ an API.

It might seem pedantic, but I have talked with otherwise talented programmers
who didn't actually know what an API was. They mentioned using "the API" in
their front end code and when I asked the only reasonable question, "Which
API?" they didn't know how to respond. They've got about a billion libraries
in their front end code (like everyone else ;-) ) and each one of them has an
API -- otherwise they couldn't use it. However "API" _only_ meant talking to
the server to them.

I realise common usage is trumping the original definition of the term, but I
think that's to the detriment of everyone involved.

------
cachesking
My guess is that this was built for practice. That said, some of the data is
coming back bad. The 'url' property contains an address that is missing the
'u' and 'a'. [https://ghibliapi.herokpp.com](https://ghibliapi.herokpp.com)

~~~
phinnaeus
It's just a typo
[https://github.com/janaipakos/ghibliapi/blob/master/data.jso...](https://github.com/janaipakos/ghibliapi/blob/master/data.json#L375)

------
knicholes
I'd like someone to introduce slug fields to the programmers of this API. I'd
like to search for species/cats and not /species/3.

------
toyg
I struggle to understand the general negativity of this thread. Like zillions
of other projects seen on HN, this is just someone playing around and offering
a service others may or may not find interesting.

Sure, the dataset is currently small, but it can easily get bigger if anyone
starts doing things like marking appearance times, quotes with translations,
pictures and so on.

Sure, it might not be an official Ghibli project, in the same way IMDB or
ComicDB did not start as official projects.

I personally find it fun and will look into building something with it, just
for kicks. One obvious application would be a GMap mashup with locations, at
least for the realistic films. Another would be a Youtube mashup with clips
for each element.

Sometimes the internet seems too cynical even for a sad old fart like me.

------
norswap
> It was created to help users discover resources

It's not the first time I see this claim in a REST API. What is it supposed to
mean? Does it hint at some form of automatic (machine-driven) discovery, or is
it just a pompous way to say they expose capabilities via a REST API?

~~~
liveoneggs
a principal of REST which is often ignored or improperly implemented is
hypermedia-driven discovery. You should be able to discover the entire api via
a top-level entry point which will return a bunch of links.

[https://en.wikipedia.org/wiki/HATEOAS](https://en.wikipedia.org/wiki/HATEOAS)

~~~
nailer
It's really weird:

\- SOAP had discovery

\- XML based REST APIs had discovery (via HATEOAS)

\- JSON based REST APIs inevitably _never_ have discovery (looks like there's
no standard JSON version of the 'link rel' from HATEOAS)

\- GraphQL has discovery

~~~
liveoneggs
if you implement swagger (now openapi) then you put the discovery in:
[https://github.com/OAI/OpenAPI-
Specification/blob/master/ver...](https://github.com/OAI/OpenAPI-
Specification/blob/master/versions/2.0.md#pathsObject)

------
er0l
I like the formatting of this. Were any libraries used? Reminds me of Stripes
API documentation a bit.

~~~
dewey
Scroll down,
[https://github.com/Rebilly/ReDoc](https://github.com/Rebilly/ReDoc)

------
huangc10
Cool! any chance you can add music (song, composer, album, etc.)? I think
that's like one of the most wonderful things about Studio Ghibli films.

~~~
toyg
+1, although it can be challenging - Ghibli covers are extremely popular in
Japan, they are now classics and even Ghibli themselves pushed different
albums at different times. It's a bit like trying to get the original for "The
Girl from Ipanema".

------
erik_seaberg
If you ever find yourself assigning a unique URL to a thing which has a name
and a type, and assigning a unique URL to the type which has a name and a
supertype, consider dusting off rdf:type and rdf:subClassOf and maybe JSON-LD
rather than reinventing something very similar.

------
johansch
I'm confused by the thinking behind things like these. Seems like they should
be static data dumps rather then network APIs. (Or why not both?)

~~~
bpicolo
Pretty sure it's just for funsies.

~~~
ribosometronome
An interesting thing to talk about in an interview, for sure.

------
robertlagrant
Cool idea; bad overuse of history on website.

------
ptrptr
What is possible use case for this?

------
novaleaf
Looking at the example, they show catbus as male. Isn't it female?

~~~
foobarrio
Catbus has balls:

* [http://i.imgur.com/gySIZ.png](http://i.imgur.com/gySIZ.png)

~~~
novaleaf
I thought that was a labia, as I don't see any other male organ...

~~~
foobarrio
Heh heh This is a clearer picture:

* [http://farm2.static.flickr.com/1258/1355972123_12a28bd3b6.jp...](http://farm2.static.flickr.com/1258/1355972123_12a28bd3b6.jpg?v=0)

Seeing that the peehole is forward would make it male no? This little toy also
seems male:

* [https://img0.etsystatic.com/110/0/11763563/il_570xN.88580129...](https://img0.etsystatic.com/110/0/11763563/il_570xN.885801298_dk7r.jpg)

I'll be sure to ask the opinion of my friends next time I play with their
cats! Btw I am not trying to argue. I'm just curious.

~~~
novaleaf
i thought that "peehole" is a bellybutton, but yeah, maybe it's okay to be
interpreted by the viewer :P

------
barkingcat
This webpage does some funky history writing on firefox and chrome on scroll,
so just scrolling through the page you get dozens of fragments in your visit
history. You need to click back a dozen times before you get out of the page
depending on how far you scroll!

~~~
dandelany
Perfect use case for history.replace instead of history.push.

------
ClassyJacket
This page hijacked my back history in some weird way. Avoid.

~~~
phailhaus
Nah, it's just that scrolling updates the URL the same way the sidebar links
do, so it gets added to your browser history. Seems like an honest mistake.

~~~
romanhotsiy
I'm the author of the tool used to generate the doc. And yes this is just my
mistake (I don't use back button so much during testing so never noticed
this). Will fix it asap.

