Copier fichier image discogs vers répertorie de mon site ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Copier fichier image discogs vers répertorie de mon site ?

Re: Copier fichier image discogs vers répertorie de mon site ?

par Couin » 29 mai 2019, 19:27

Plop !

A l'occasion de tests en local (sur mon serveur linux , certes vieux PHP 5.3) (changement de gestion de comptes admin du site on dira, cf mon autre sujet avec les includes), je teste les diverses fonction du site et je m'aperçois que ma page de récupération de pochettes chez discogs via l'url des images le fonctionne plus .
Je me dis que j'ai fais une erreur dans la modif, je reviens en arrière mais idem, ne fonctionne pas.
J'ai un autre ordi qui a WAMP 2.2 (donc aussi un vieux PHP) et même souci.

En rapport avec un précédent message, je teste avec le lien image https ci dessous et j'ai le même problème
styles/PHPfrance/theme/phpfrance-logo.png

Le problème est l'apparition d'une erreur :

Code : Tout sélectionner

file_get_contents() [function.file-get-contents]: SSL operation failed with code 1. OpenSSL Error messages: error:1407742E:SSL routines:func(119):reason(1070)
L'option openssl est cochée sur l'ordi où j'ai WAMP , je n’ai pas regardé pour le moment sur le linux si c'est activé aussi mais je pense que oui.

Sur le site de prod (chez l'hebergeur quoi), pas de souci cela fonctionne, mais j'aimerais que ce soit ok aussi sur mes pc de dev.
De toute évidence le souci vient certainement de ces derniers, mais je ne sais pas où chercher, tout ce que j'ai trouvé comme sujets en rapport avec des erreur OpenSSL étaient sans rapport avec mon besoin :(

Si quelque a une piste , ça m'arrangerait :)

Merkouiiiin :)

Re: Copier fichier image discogs vers répertorie de mon site ?

par Couin » 29 nov. 2017, 18:17

Hello ,

Merci pour ton aide :)
Entre temps j'ai cherché de mon coté et à priori il faut simuler le client pour que le script php soit vu comme navigateur web.

J'ai trouvé un script, que j'ai adapté à mon besoin et apparemment ça a l'air de fonctionner.

Le voici, pour ceux qui cherchent à faire pareil :

Code : Tout sélectionner

$url = "https://img.discogs.com/6urnEN3uU_l-r51NGkd1I8nbaZA=/fit-in/600x524/filters:strip_icc():format(jpeg):mode_rgb():quality(90)/discogs-images/R-165180-1502983264-3766.jpeg.jpg"; $options = array('http' => array('user_agent' => 'custom user agent string')); $context = stream_context_create($options); $response = file_get_contents($url, false, $context); // $image = file_get_contents($url); file_put_contents('./image/image.jpg', $response); //Where to save the image on your server
Là c'est pour tester la récup du fichier, mais ben sur , dans le cas d'un form il faut adapter du genre $url = $_POST['url'] poru recup la valeur du champ.

A noter qu'openssl doit être actif. A priori il l’est chez 1and1 puisque j'ai pu me passer du fichier php.ini précédement mis dans le répertoire.

Du coup je passe en résolu :)

Merci et bonne soirée :)
Couin

Re: Copier fichier image discogs vers répertorie de mon site ?

par @rthur » 28 nov. 2017, 18:55

1) Ok effectivement, c'est original comme façon de procéder de la part de 1and1, à priori tu as bien fait ce qu'il faut.

2) Fais un test sur une image simple en HTTPS pour vérifier que ça fonctionne, par exemple avec le logo de PHPfrance :
styles/PHPfrance/theme/phpfrance-logo.png
Si ça marche avec le logo de PHPfrance, c'est que ton serveur 1and1 est bien configuré, le problème est peut être lié au fait qu'il y a des caractères spéciaux dans l'url (notamment les parenthèses)
Peut être faudra-t-il que tu utilises urldecode() ou urlencode() avant de la passer à la fonction copy()

Re: Copier fichier image discogs vers répertorie de mon site ?

par Couin » 28 nov. 2017, 16:48

Hello :)

Merci pour tes réponses :)

1) Pour la la conf php dans le répertoire c'est justement quelque chose que j'avais vu sur la FAQ de 1&1
https://assistance.1and1.fr/hebergement ... 03435.html
Donc dans l'hypothèse où leur solution pourrait fonctionner, je ne sais cependant pas ce qu'il faut faire pour modifier les wrappers ?

2) C’est leur serveur qui modifie modifie surement le lien puisque dans le script de test , il est bien correct. J'ai pu voir que les parenthèses étaient transformées en %28 et %29 .

3) Je vais regarder cela, merci :)
Après on ne prend pas forcément tout sur discogs donc l'envoie par lien j'aimerais quand même réussi à le faire marcher :)

Re: Copier fichier image discogs vers répertorie de mon site ?

par @rthur » 28 nov. 2017, 11:16

Bonjour,

Alors dans l'ordre :
:arrow: "Unable to find the wrapper https"
C'est un problème de configuration serveur à voir avec ton hébergeur.
Je ne connais pas la configuration de 1and1 mais je doute fortement que ce soit en plaçant un fichier php.ini dans le répertoire où s'exécute ton script qui permette de modifier la config de PHP. Donc à faire confirmer auprès de ton hébergeur.

:arrow: "failed to open stream: HTTP request failed! HTTP/1.1 503 Service Unavailable"
Ça c'est le serveur distant qui te renvoie cela, soit il a un problème, soit l'url que tu utilises est fausse.
Si on clic sur l'url que tu as fourni dans le message d'erreur, effectivement elle ne fonctionne pas.

:arrow: Et enfin à mon avis le + important :
Si tu veux gagner (beaucoup) de temps, Discogs a des API qui permettent de récupérer automatiquement leurs données (je te laisse vérifier les éventuelles limitations).
C'est à mon sens la meilleure façon de faire surtout vu que tu en as 1600 :
https://www.discogs.com/developers/

Copier fichier image discogs vers répertorie de mon site ?

par Couin » 28 nov. 2017, 03:40

Bonjour à tous :)

Je refais le site d'un ami pour sa webradio et nous sommes convenus à passer d'un module externe pour afficher les pochettes (et le module étant foireux, ca fait donc foireux sur son site actuel), à un hébergement des pochettes sur le serveur du site même.

J'ai fais une interface avec un form pour envoyer les pochettes. Pour ce faire,n on va sur l'image qui nous intéresse, généralement trouvée sur discogs, on copie l'adresse de l'image, puis sur l'interface du site , on clique sur parcourir, on colle l'adresse image et on valide puis on valide le form.
Il y a encore 1600 pochettes à faire lol

De par ce nombre, je souhaiterais :
- Economiser les clics en ne passant pas par Parcourir.
- Gagner du temps en évitant à chaque fois que le navigateur télécharge l'image dans son cache pour suite la mettre dans le form.
- Gagner du temps pris par l'envoi même des fichiers (on est donc limité par l'upload de la notre connexion).

Donc je souhaiterais rajouter un champs input text dans le form, dans lquel on collerait directement l'adresse de l'image.
Le but étant que le script php appelé par la validation du form, se charge de récupérer les images dont on a mis le lien.

Donc pour faire un test , j'ai fais ce petit script :

Code : Tout sélectionner

$origfile = "https://img.discogs.com/B5fIh5R6Xnpkp5WsCqz4SrVbU8g=/fit-in/600x463/filters:strip_icc():format(jpeg):mode_rgb():quality(90)/discogs-images/R-1266400-1204938407.jpeg.jpg"; $dossier = "./"; $newfilename = "1.jpg"; $desti = $dossier.$newfilename; copy($origfile,$desti);
Sur le serveur, chez 1and1, très certainement du mutuilisé, il ne se passe rien et aucun message d'erreur (je pense juste qu'ils ne sont pas affichés car ^même d'autres erreurs quand je me trompe, n'apparaissent pas systématiquement)
En local, avec WAMP, j'obtiens ces messages d'erreur :
Warning: copy() [<a href='function.copy'>function.copy</a>]: Unable to find the wrapper &quot;https&quot; - did you forget to enable it when you configured PHP? in D:\www\e90\copy\index.php on line 6

Warning: copy(https://img.discogs.com/B5fIh5R6Xnpkp5W ... 7.jpeg.jpg) [<a href='function.copy'>function.copy</a>]: failed to open stream: Invalid argument in D:\www\e90\copy\index.php on line 6
Call Stack
J'ai trouvé sur un forum, qu'il fallait rajouter l'extension php_openssl.dll en rajoutant extension=php_openssl.dll dans un fichier php.ini que l'on place là où on exécute le script. Mais cela ne change rien .
Si je mets extension=php_openssl et que j'envoie le fichier php.ini sur le serveur, j'ai cette fois cette erreur :
Warning: copy(https://img.discogs.com/B5fIh5R6Xnpkp5W ... 7.jpeg.jpg): failed to open stream: HTTP request failed! HTTP/1.1 503 Service Unavailable in /homepages/10/d36xxxxx73/htdocs/_e90/copy/index.php on line 6
Je ne sais pas trop quoi faire d'autre, j'ai testé d'autres scripts mais sans succès :(

Si quelqu'un a une idée, je suis preneur :)

Merci
Couin