duck7000 / imdbGraphQLPHP

IMDb GraphQL API PHP class
11 stars 1 forks source link

Name class new methods needed? #47

Closed duck7000 closed 7 months ago

duck7000 commented 7 months ago

@GeorgeFive

Do you need/want first 12 photos and or videos from a person in Name class?

I thought about it to add it (as they are in Title class)

GeorgeFive commented 7 months ago

I probably wouldn't use it, but others may. I may not be the target audience for this one, hah.

duck7000 commented 7 months ago

well me neither, for now i leave it like it is, if anyone want it it is easily added

duck7000 commented 7 months ago

@GeorgeFive

For Title and or Name class perhaps this: external sites or external reviews? (i don't for sure but others may want it)

GeorgeFive commented 7 months ago

I might try out the external sites method if that existed... not a huge priority on my end, but it could be neat.

duck7000 commented 7 months ago

External sites doesn't exist right now but i can add it

Would you like this in separate methods or a all in one method just like connections?

GeorgeFive commented 7 months ago

Maybe all in one, but with a value of what type the link is? ie, "official", "misc", "video", etc

duck7000 commented 7 months ago

Yes of course, connections does do the same thing. check the output of connection() you see what i mean.

The output array has index names according to a categories.

array[misc]-> array() array[official]->array()

duck7000 commented 7 months ago

@GeorgeFive I added extSites() method to Title class (info is in the wiki) so if you have the time check it out (latest git version)

Do you want this also for Name class? It is easy as it is almost the same as this one.

GeorgeFive commented 7 months ago

Sounds good! Yeah, I'd definitely try it out for names as well...

duck7000 commented 7 months ago

I added extSites to Name class as well, so check it out if you have the time

If you need/want any other method let me know, there is still some information left that is not in imdbphp6 but most is present now

duck7000 commented 7 months ago

@GeorgeFive for Name class there is this info left:

Faq (frequently asked user questions ) which i already added to Title class Publicity parts, right now only pubprint and pubmovie methods are included but the others can be added as well Photo and video is also available but you already said that this is not in your interest.

For Title class:

Techspecs, right now only sound, color, aspect ratio and camera are included but there are 5 more categories Filming dates and production dates are available but not included Credits, right now producer, director, composer, writer and cast are included but there are plenty more categories (i mean a lot!) I have no interest in this and i doubt you will either.

What do you think about this? Worth the trouble to include or not, i don't mind to do the work as this way our version will be a very complete version so more users could use it. And it is beginning to be a pet project for me hah

GeorgeFive commented 7 months ago

For credits, I would probably use "stunts", "visual effects", "special effects", and "thanks". This isn't really a huge priority and I wouldn't lose sleep if they don't show up, but I would use them. The rest of the credits information, not really interested in...

The only other real information that I am interested in would be the streaming info that we discussed a while back, but I recall you saying that it wasn't really possible.

duck7000 commented 7 months ago

About the streaming info, no only their own info is available like amazon prime, others are not available

Those credit categories would that be in separate methods like writer, producer etc? I will look in to this

I will add faq to Name class as well, for completeness reasons Edit: there are faqs in Name class.. only faq powered by alexa which i don't want to include

duck7000 commented 7 months ago

@GeorgeFive I added stunts, thanks, visualEffects and specialEffects to the title class, all info is.. All in separate methods (as i already have the helper for it)

GeorgeFive commented 7 months ago

stunts and thanks work fine (thanks!), but special / visual effects don't seem to work right? I get no data for either.

duck7000 commented 7 months ago

mm strange, this works at my end

$imdb = new \Imdb\Title("0450385");
$results = $imdb->specialEffects();

Array
(
    [0] => Array
        (
            [imdb] => 0014866
            [name] => Andy Aitken
            [role] => special effects technician: second unit
        )

    [1] => Array
        (
            [imdb] => 0077225
            [name] => Mark Bero
            [role] => special effects coordinator: New York
        )

    [2] => Array
        (
            [imdb] => 0100057
            [name] => Caimin Bourne
            [role] => special effects technician
        )

    [3] => Array
        (
            [imdb] => 2615814
            [name] => Gordon Cave
            [role] => special effects engineer
        )

    [4] => Array
        (
            [imdb] => 7176422
            [name] => Lisa Chadwick
            [role] => special effects modeler
        )

    [5] => Array
        (
            [imdb] => 0935078
            [name] => Paige Chaytor
            [role] => special effects buyer
        )
)
duck7000 commented 7 months ago

any examples where special or visual effects not working?

GeorgeFive commented 7 months ago

Uh oh... I hope this isn't another one of those rabbit holes, haha.

I tried a handful of titles, and they all simply return array().

https://www.imdb.com/title/tt14539740/ https://www.imdb.com/title/tt21235248/

duck7000 commented 7 months ago

First title:

$imdb = new \Imdb\Title("14539740");
$results = $imdb->specialEffects();

Array
(
    [0] => Array
        (
            [imdb] => 0109130
            [name] => Bruce Bright
            [role] => special effects supervisor
        )

    [1] => Array
        (
            [imdb] => 0109427
            [name] => Mark Brims
            [role] => special effects buyer/technician
        )

    [2] => Array
        (
            [imdb] => 7561338
            [name] => Brooklyn Dineen
            [role] => Production Manager: Design Studio - Weta Workshop
        )

    [3] => Array
        (
            [imdb] => 2713047
            [name] => Mark Harman
            [role] => special effects technician
        )

    [4] => Array
        (
            [imdb] => 13609182
            [name] => Jayden O’Brien
            [role] => special effects assistant technician / special effects
        )

    [5] => Array
        (
            [imdb] => 0532285
            [name] => Lindsay MacGowan
            [role] => supervisor: Legacy Effects
        )

    [6] => Array
        (
            [imdb] => 0536752
            [name] => Shane Mahan
            [role] => co-supervisor: Legacy Effects
        )

    [7] => Array
        (
            [imdb] => 0576870
            [name] => Michael Meinardus
            [role] => special effects supervisor
        )
)
second title:
$imdb = new \Imdb\Title("21235248");
$results = $imdb->specialEffects();

Array
(
    [0] => Array
        (
            [imdb] => 9754064
            [name] => Shakeelah Archibald
            [role] => special effects trainee
        )

    [1] => Array
        (
            [imdb] => 1405898
            [name] => Matthew G. Armstrong
            [role] => senior special effects technician
        )

    [2] => Array
        (
            [imdb] => 14517306
            [name] => Nordahl Bouillon
            [role] => special effects engineer/draughtsman
        )

    [3] => Array
        (
            [imdb] => 0109534
            [name] => Conrad V. Brink Jr.
            [role] => special effects supervisor: ny unit
        )

    [4] => Array
        (
            [imdb] => 2974207
            [name] => Nathanael Brotherhood
            [role] => special effects coordinator: New York
        )

    [5] => Array
        (
            [imdb] => 2032162
            [name] => Anthony S. Ciccarelli
            [role] => senior special effects technician
        )
)

So.. i don't know what to say as it works fine on my end? $query is about 350 characters so that can't be the problem.

Some users at imdbphp complain about imdb api not reachable? https://github.com/tboothman/imdbphp/issues/329 I have no troubles here in the Netherlands

GeorgeFive commented 7 months ago

This is definitely weird then.... I'm getting all normal data fine (directors, cast, locations, etc), and even two of the new ones (stunts and thanks)... but the two effects methods do not return any data for any titles...?

duck7000 commented 7 months ago

The weird part is that all methods i added use the same helper function so it works for all or none i would say. So that is not the problem, i guess the data is not collected somehow, it might be outside this library i guess

GeorgeFive commented 7 months ago

If it helps at all, when I use effects methods, I get an invalid foreach php error in my php error log on line 2852 in title.php (but only when I use those classes).

duck7000 commented 7 months ago

That error comes from another helper method as it does not output any data. There is no data collected from imdb api, why is good question as it works at my end

duck7000 commented 7 months ago

you can check if the query is complete and not cut off (just to be sure it is not a character limit)

GeorgeFive commented 7 months ago

Will do this tonight when I get home from work!

GeorgeFive commented 7 months ago

I am completely lost, everything I try with effects returns an empty array.

I wouldn't think it would be a character limit, Ghostbusters has a lot more stunt credits than special fx credits, and stunts works fine.

GeorgeFive commented 7 months ago

$data inside creditsQuery returns...

stdClass Object ( ) stdClass Object ( )

$query is....

query CreditCrew($id: ID!) { title(id: $id) { credits(first: 9999, filter: { categories: ["visual_effects"] }) { edges { node { name { nameText { text } id } ... on Crew { jobs { text } attributes { text } episodeCredits(first: 9999) { edges { node { title { series { displayableEpisodeNumber { episodeNumber { text } } } } } } yearRange { year endYear } } } } } } } }

query CreditCrew($id: ID!) { title(id: $id) { credits(first: 9999, filter: { categories: ["special_effects"] }) { edges { node { name { nameText { text } id } ... on Crew { jobs { text } attributes { text } episodeCredits(first: 9999) { edges { node { title { series { displayableEpisodeNumber { episodeNumber { text } } } } } } yearRange { year endYear } } } } } } } }

GeorgeFive commented 7 months ago

I've tried a number of things to get this working, to no avail. I even copied the old producer code to visual effects to try to make it a standalone function to see if it would help anything.... and nope. I found a movie with no stunt credits and just 5-10 special effects credits to check if it was a character limit.... nope. At this point, I'm stumped....?

With that said... I'm not sure how much debugging you want to try with this, it looks like it might be another ordeal like with advanced search. It wouldn't break my heart to remove it on my end and not use it, unless you want to figure it out?

duck7000 commented 7 months ago

I would but i can't figure out what the problem is, somehow the data isn't collected at your end. There is nothing i can do as my code is proven working. So i leave it like it is, you can choose what is working and useful for you i guess.

GeorgeFive commented 7 months ago

Gotcha. Do you have any final ideas before I remove the code from my side? I'm completely at a loss.

duck7000 commented 7 months ago

It may be a temporary problem at imdb api? Other than that i have no clue either

GeorgeFive commented 7 months ago

Just to check, I switched to PHP version 8.2 to see if it was a compatibility issue.... and nope.

duck7000 commented 7 months ago

Or your hoster has even more limits somehow? I really don't know, weird it is though

GeorgeFive commented 7 months ago

So this is what I get from the logger.... seems like I'm getting some data, but I'm not sure what the issue is?

[debug] [GraphQL] Requesting CreditCrew [debug] [GraphQL] Requesting CreditCrew [error] [GraphQL] Failed to retrieve query [ CreditCrew ]. Response headers: Array ( [0] => HTTP/1.1 100 Continue

[1] => 

[2] => HTTP/1.1 200 OK

[3] => Content-Type: application/json

[4] => Content-Length: 1714

[5] => Connection: keep-alive

[6] => Server: awselb/2.0

[7] => Date: Wed, 17 Apr 2024 14:43:19 GMT

[8] => Permissions-Policy: interest-cohort=()

[9] => Content-Encoding: br

[10] => x-imdb-graphql-request-id: ca46448b-0f09-49de-beb0-60d554468a40

[11] => x-imdb-graphql-region: us-east-1

[12] => cache-control: max-age=900, public

[13] => X-Cache: Miss from cloudfront

[14] => Via: 1.1 b104530dec7cead9ff08ae3a4fe9c6de.cloudfront.net (CloudFront)

[15] => X-Amz-Cf-Pop: ORD51-C3

[16] => X-Amz-Cf-Id: 8y6RIBE7wJQMchFA8v6xyDu4llyE-nFs6DTEtvKkPxunteWVFwX3vw==

[17] => 

) . Response body: {"data":{"title":{"credits":{"edges":[{"node":{"name":{"nameText":{"text":"Isabella Abrams-Humphries"},"id":"nm10314419"},"jobs":[{"text":"vfx line producer"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Panenero Andrea"},"id":"nm15112188"},"jobs":[{"text":"hard surface modeler: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Austin Aplin"},"id":"nm6475020"},"jobs":[{"text":"visual effects producer: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Rodrigo Armendariz"},"id":"nm2916661"},"jobs":[{"text":"compositor"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Paul Ashall"},"id":"nm5901654"},"jobs":[{"text":"animator: Framestore"},{"text":"layout td: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Iva Atanasova"},"id":"nm14113067"},"jobs":[{"text":"visual effects coordinator"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Joan Azpeitia"},"id":"nm6219186"},"jobs":[{"text":"digital compositor: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Lee Barraclough"},"id":"nm14960496"},"jobs":[{"text":"visual effects artist"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Lee Baskerville"},"id":"nm6645282"},"jobs":[{"text":"lead texture artist"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Chris Berry"},"id":"nm2136494"},"jobs":[{"text":"digital compositor: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Diego Bittencourt"},"id":"nm8722228"},"jobs":[{"text":"compositor: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Emmanuel Brassard"},"id":"nm6524453"},"jobs":[{"text":"digital compositor: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Colin P. Brown"},"id":"nm5724543"},"jobs":[{"text":"vfx colourist: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Alexander Bucknell"},"id":"nm8955408"},"jobs":[{"text":"fx td"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Patrick Michael Burke"},"id":"nm3547362"},"jobs":[{"text":"lead compositor"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Korinne Cammarano"},"id":"nm5651237"},"jobs":[{"text":"digital compositor: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Vishal Chauhan"},"id":"nm4045036"},"jobs":[{"text":"digital compositor: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Christopher Davies"},"id":"nm2424421"},"jobs":[{"text":"animator: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Nikolaos Dimou"},"id":"nm14950710"},"jobs":[{"text":"lighting td: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Marcus Duprat"},"id":"nm5360552"},"jobs":[{"text":"senior effects technical director"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Ermir Fejzullai"},"id":"nm12643285"},"jobs":[{"text":"assistant technical director"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Edward Ferrysienanda"},"id":"nm8026622"},"jobs":[{"text":"effects supervisor"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Carlos Flórez Regaliza"},"id":"nm8954529"},"jobs":[{"text":"digital compositor: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Lucia Garofalo"},"id":"nm9135555"},"jobs":[{"text":"digital compositor: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Ramia Gattupelli"},"id":"nm16029955"},"jobs":[{"text":"digital matte painter"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Milan Grundza"},"id":"nm11245474"},"jobs":[{"text":"compositor: visual effects"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Oliver Hallas"},"id":"nm13588193"},"jobs":[{"text":"environment technical director: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Ady Holt"},"id":"nm5505451"},"jobs":[{"text":"creature fx td"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Owen Jackson"},"id":"nm4311413"},"jobs":[{"text":"visual development"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Mohamed Kamel"},"id":"nm9433160"},"jobs":[{"text":"digital compositor: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Harry Keane"},"id":"nm12212256"},"jobs":[{"text":"visual effects coordinator: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Bishoy Khalifa"},"id":"nm10063232"},"jobs":[{"text":"senior fx td: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Izzy King"},"id":"nm14463333"},"jobs":[{"text":"visual effects assistant editor"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Jai Krishnaswamy"},"id":"nm4293120"},"jobs":[{"text":"senior compositor"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Oliver Lang"},"id":"nm15112155"},"jobs":[{"text":"visual effects artist"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Matthew Lawrence"},"id":"nm0492933"},"jobs":[{"text":"end title animator"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Anthony Lowe"},"id":"nm14967705"},"jobs":[{"text":"visual effects artist"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Stacy Mangan"},"id":"nm7185399"},"jobs":[{"text":"digital compositor: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Steven Mates"},"id":"nm2601145"},"jobs":[{"text":"visual effects editor"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"David Mir"},"id":"nm7537692"},"jobs":[{"text":"digital compositor: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Sian Rhys Morgan"},"id":"nm9384009"},"jobs":[{"text":"visual effects coordinator"}],"attributes":[{"text":"as Siän Rhys Morgan"}],"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Fraser Murdoch"},"id":"nm5080528"},"jobs":[{"text":"visual effects artist"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Marco Nella"},"id":"nm9458240"},"jobs":[{"text":"digital compositor: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Nicolette Newman"},"id":"nm4514600"},"jobs":[{"text":"senior texture artist: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Katherine O'Loingsigh"},"id":"nm11216309"},"jobs":[{"text":"paint & roto artist: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Ciaran O'Neachtain"},"id":"nm9106834"},"jobs":[{"text":"digital compositor: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Sam Osborne"},"id":"nm2364029"},"jobs":[{"text":"lead compositor"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"John Ovuson"},"id":"nm14366370"},"jobs":[{"text":"digital compositor"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Addison Petrie"},"id":"nm8753220"},"jobs":[{"text":"compositor"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Ed Plant"},"id":"nm0686600"},"jobs":[{"text":"compositor"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Dan Pryor"},"id":"nm7443005"},"jobs":[{"text":"digital compositor"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Alex Rabbitt"},"id":"nm15057298"},"jobs":[{"text":"visual effects artist"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Rob Rankin"},"id":"nm6618871"},"jobs":[{"text":"compositor"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Brandon Rhodes"},"id":"nm13173428"},"jobs":[{"text":"visual effects data wrangler"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Michelle Rose"},"id":"nm2126639"},"jobs":[{"text":"visual effects producer"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Kevin Safirstein"},"id":"nm11792008"},"jobs":[{"text":"visual effects artist"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Erica Skye Schaaf"},"id":"nm12212108"},"jobs":[{"text":"departmental support: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Alessio Seminerio"},"id":"nm8801512"},"jobs":[{"text":"fx artist"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"David Simpson"},"id":"nm3271424"},"jobs":[{"text":"visual effects supervisor"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Artem Smirnov"},"id":"nm9168136"},"jobs":[{"text":"visual effects artist"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Max Solomon"},"id":"nm1281289"},"jobs":[{"text":"animation supervisor"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Ashley Stanton"},"id":"nm9100352"},"jobs":[{"text":"lighting td: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Cody Stoof"},"id":"nm8052038"},"jobs":[{"text":"fx lead: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Samuel Swinnerton"},"id":"nm9601421"},"jobs":[{"text":"matchmove lead"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Carlos Tacón"},"id":"nm10715548"},"jobs":[{"text":"environments technical director: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Brandt Tharpe"},"id":"nm12928074"},"jobs":[{"text":"lidar technician"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Sara Tomarchio"},"id":"nm8331919"},"jobs":[{"text":"digital compositor: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Eugenio Troiani"},"id":"nm10573873"},"jobs":[{"text":"lighting & look dev artist: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Rares Veteleanu"},"id":"nm13643992"},"jobs":[{"text":"visual effects editor: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Caspar Vinall"},"id":"nm10575468"},"jobs":[{"text":"lead paint and roto artist: Framestore"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"William G. Wright"},"id":"nm3962597"},"jobs":[{"text":"compositor"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}}]}}},"extensions":{"disclaimer":"Public, commercial, and/or non-private use of the IMDb data provided by this API is not allowed. For limited non-commercial use of IMDb data and the associated requirements see https://help.imdb.com/article/imdb/general-information/can-i-use-imdb-data-in-my-software/G5JTRESSHJBBHTGX#","experimentalFields":{"janet":[]}}}

[debug] [GraphQL] Requesting CreditCrew [error] [GraphQL] Failed to retrieve query [ CreditCrew ]. Response headers: Array ( [0] => HTTP/1.1 100 Continue

[1] => 

[2] => HTTP/1.1 200 OK

[3] => Content-Type: application/json

[4] => Content-Length: 532

[5] => Connection: keep-alive

[6] => Server: awselb/2.0

[7] => Date: Wed, 17 Apr 2024 14:43:19 GMT

[8] => Permissions-Policy: interest-cohort=()

[9] => Content-Encoding: br

[10] => x-imdb-graphql-request-id: 07131781-1136-46c5-bbee-d20e2e43675f

[11] => x-imdb-graphql-region: us-east-1

[12] => cache-control: max-age=900, public

[13] => X-Cache: Miss from cloudfront

[14] => Via: 1.1 b104530dec7cead9ff08ae3a4fe9c6de.cloudfront.net (CloudFront)

[15] => X-Amz-Cf-Pop: ORD51-C3

[16] => X-Amz-Cf-Id: foXu7gxhQgpkE9lSYVA8vARMHP-P-VELmUR9q3b7lNQOva5jDJd1gA==

[17] => 

) . Response body: {"data":{"title":{"credits":{"edges":[{"node":{"name":{"nameText":{"text":"Frederick Mac Browne"},"id":"nm13429560"},"jobs":[{"text":"special effects technician"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Richard Hogue"},"id":"nm6488294"},"jobs":[{"text":"pyro technician"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Chad Holmes"},"id":"nm4823794"},"jobs":[{"text":"special effects foreman"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Lee Alan McConnell"},"id":"nm0549842"},"jobs":[{"text":"special effects coordinator"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Brendan McHale"},"id":"nm2436425"},"jobs":[{"text":"on set foreman"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Mike Prawitz"},"id":"nm2863631"},"jobs":[{"text":"pyro foreman"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"J.D. Schwalm"},"id":"nm0777069"},"jobs":[{"text":"special effects supervisor"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Brian Shevela"},"id":"nm6757696"},"jobs":[{"text":"special effects"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Landon K. Smith"},"id":"nm12337861"},"jobs":[{"text":"special effects technician"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Kyle A. Wasserman"},"id":"nm2897189"},"jobs":[{"text":"pyrotechnic effects"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}},{"node":{"name":{"nameText":{"text":"Jeremy Zamora"},"id":"nm12993857"},"jobs":[{"text":"special effects technician"}],"attributes":null,"episodeCredits":{"edges":[],"yearRange":null}}}]}}},"extensions":{"disclaimer":"Public, commercial, and/or non-private use of the IMDb data provided by this API is not allowed. For limited non-commercial use of IMDb data and the associated requirements see https://help.imdb.com/article/imdb/general-information/can-i-use-imdb-data-in-my-software/G5JTRESSHJBBHTGX#","experimentalFields":{"janet":[]}}}

[debug] [GraphQL] Requesting CreditCrew [debug] [GraphQL] Requesting FilmingLocations [debug] [GraphQL] Requesting Redirect

duck7000 commented 7 months ago

Weird, the data seems to be there but it still errors out The request response is 200 (means that the request is valid as it exists)

The same function is used for thanks and stunts, both working fine as you said, so this error shouldn't occur

I have to investigate this further I check my output with the logger enabled.

It might be because there are no episodeCredits but that shouldn't cause a error

GeorgeFive commented 7 months ago

Yep, that debug info is from calling....

    $stunts = $movie->stunts();
    $visualfx = $movie->visualEffects();
    $specialfx = $movie->specialEffects();
    $thanks = $movie->thanks();
    $location = $movie->location();
    $chkredirect = $movie->checkRedirect();

...everything in there worked properly, except for the effects stuff. Which is what confuses me, because obviously, some works fine, some doesn't,

duck7000 commented 7 months ago

Mmm i enabled debug mode and my output is without any error for specialEffects of this title 14539740

So there is something different on your server, i still get the feeling that this again has something to do with some kind of limit, although it not seems to be a character limit. It is noticeable that you only have problems with those two methods that uses underscores in the category name?

in file GraphQL.php add this line just before the return of the json_decode return var_dump(json_decode($request->getResponseBody())->data); show the output here

And in the same file make a var_dump of $query (i want to see if that underscore is malformed)

what happens if you shorten the method name (for example specialEffects to spec) to see if that makes a difference (the methods that do work have short names)

php does have a nesting level limit, may be the problem is in that (i'm guessing)

duck7000 commented 7 months ago

What happens when you add this line between line 2736 and 2737 in Title.php

// this strip spaces from $query to lower character count due hosters limit
$query = implode("\n", array_map('trim', explode("\n", $query)));

It will strip all spaces from query just like we did in Advanced title search If this works it is again that Fucking character limit i think due to the nested methods been to long (guessing)

GeorgeFive commented 7 months ago

// this strip spaces from $query to lower character count due hosters limit $query = implode("\n", array_map('trim', explode("\n", $query)));

That did indeed do the trick! I don't know where this stupid limit comes from. I have full root access to my machine, so if you have any clue what needs to be changed, I can definitely do it.

duck7000 commented 7 months ago

Due to security your hoster has on their servers this character limit to limit the max query length. It is outside of your server. It is the same limit where we had problems with advanced search been too long. There is nothing you can do about that other than asking to remove or make that limit higher, which your hoster is not willing to do i suspect.

So we have two options

Limit the total query length under 1000 characters (this includes the method nesting i guess) I'm not sure how we are going to that.

Or i have to make a separate helper method for specialEffects and visualEffects with a limited query (that is not a problem as the episode and attribute fields are not populated/used any way

GeorgeFive commented 7 months ago

Let me get up with them and see what they say about this. They're usually pretty good about handling tech questions, so what's the worst that could happen....

What I wonder is.... you don't have this issue, but I do. Will the majority of users be like me (issues) or you (works fine)? Will most people run into this issue, or am I the exception?

duck7000 commented 7 months ago

Honestly i have no clue, maybe i'm lucky not to have this limit? Is it due to i run my own server at home?

I think that other users that has the same kind of hosting you have will hit the same problems so it is best to keep the query below that limit, how we do that is the question as i have no insight in how long the actual request is going to be.

Like i said it may be as simple as shorten the method names in question (it might be just under that limit)

GeorgeFive commented 7 months ago

I did try shortening the method names to sfx and vfx, but that did nothing to solve the issue.

This and the advanced search queries seem to be the two longest ones, so maybe we could leave the trim on them and call it a day? Most other queries do not come anywhere close to those limits.

duck7000 commented 7 months ago

That is certainly a solution that we already use and is known to be working.

I'll include this fix soon

GeorgeFive commented 7 months ago

advancedSearch is 953 characters... CreditCrew is 842.... those seem to be the two highest, and the two we have problems with.

Spouses is 527 (third highest), but that works as is.

Maybe that will help narrow the limit number down a little?

duck7000 commented 7 months ago

The character count of $query is not the only problem.

The whole request (that includes, method calls and $query, basically the string that is feed to curl) can not be larger than around 1000 characters. Those two methods apparently come above this total

I have added the strip spaces part so for now it should work

GeorgeFive commented 7 months ago

Sounds good.... at least we got this figured out!

duck7000 commented 7 months ago

Always glad to help!

duck7000 commented 7 months ago

closing this one as there are no more methods that you want/think of?

GeorgeFive commented 7 months ago

That's pretty much all I could think of, personally. I know there's tons of categories, but these are the only ones I would actually use.