8741 sujets

Développement web côté serveur, CMS

Bonjour,

Je cherche désespérément des exemples complets pour utiliser l'API de Discogs avec PHP et impossible de trouver quoique ce soit à part des réponses à des questions spécifiques dans des forums.

Je ne trouve aucun tutoriel step by step, je veux juste initialiser l'API et récupérer des titres pour un album donné.


merci
Modifié par lionel_css3 (20 May 2024 - 14:22)
Modérateur
Salut,

En php, je ne peux pas t'aider. Cependant, tu as une lib pour ce genre de choses :
php-discogs-api


Je viens de faire un test en python (vraiment vite fait). La manipe est un peu délicate.
Je n'ai pas cherché à générer automatiquement le token. J'ai dû faire ça en 2 temps
1. Tu fais en sorte que tu sois authorisé
2. Tu relances une instance de l'objet client Discogs et tu lui donnes un jeton (le jeton généré manuellement (dans ton compte discogs))
3. Tu fais ta requête


import discogs_client as dc

ds = dc.Client('test/0.1')
consumer_key = 'clef'
secret_key = 'clef secrete'
token = 'token généré par l'app'
ds.set_consumer_key(consumer_key, secret_key)

authorize = ds.get_authorize_url()
d = dc.Client('my_user_agent/1.0', user_token=token)
result = d.search(artist='bb king')
print(result.page(1))

tracks = [release.tracklist for release in result.page(1) if release.id == 1470866]
print(tracks)


Le résultat

ps : vendredi j'ai tapé l'api de spotify (pour des raisons pro). J'ai le code en Python si ça t'intéresse. C'est beaucoup plus compliqué.
Modifié par niuxe (20 May 2024 - 18:11)
niuxe a écrit :
Salut,
En php, je ne peux pas t'aider. Cependant, tu as une lib pour ce genre de choses :
php-discogs-api

J'ai vu, mais cette librairie est deprecated et renvoie sur une autre: calliostro mais il n'y a pas d'exemple concret pour mettre en place... et je n'ai pas l'habitude des configurations avec composer.

niuxe a écrit :


Je viens de faire un test en python (vraiment vite fait). La manipe est un peu délicate.


merci c'est hyper sympa, mais j'ai un peu mis de coté Python, malheureusement
Modérateur
Et l'eau Lionel Smiley smile

La pseudo documentation

<?php
    require 'vendor/autoload.php';

    $token = 'xxx';
    $consumer_key = 'xxx';
    $secret_key = 'xxx';
        
    $client = Discogs\ClientFactory::factory([
        'auth' => 'oauth',
        'headers' => [
            'User-Agent' => 'my_user_agent/1.0',
            'Authorization' => "Discogs token={$token}"
        ],
        'defaults' => [
            'query' => [
                'key' => $consumer_key,
                'secret' => $secret_key,
            ],
        ]
    ]);
    $response = $client->search([
        'q' => 'artist=bb king'
    ]);

    echo '<pre>';
    print_r($response);
    echo '</pre>';
?>

le résultat
Modifié par niuxe (23 May 2024 - 12:39)
niuxe a écrit :
Et l'eau Lionel Smiley smile

La pseudo documentation



ah merci, alors je vais mieux regarder...

J'arrivais pas à instancier la classe car je ne savais pas quel fichier inclure, je vais refaire un essai et je te dirai ce que j'arrive à faire.

Au final, je voudrais, en scanant un CVD ou en tapant le code EAN, récupérer la liste des titres d'un album.
J'ai réussi à avancer un peu, avec le code de niuxe, mais là en local (avec Wamp) il me génère une erreur parce que il voudrait faire du SSL, on peut pas régler ça sur http pour faire les essais?


upload/1716475605-40948-discogs.jpg
niuxe a écrit :
Et l'eau Lionel Smiley smile

La pseudo documentation

&lt;?php
    require 'vendor/autoload.php';

    $token = 'xxx';
    $consumer_key = 'xxx';
    $secret_key = 'xxx';
        
    $client = Discogs\ClientFactory::factory([
        'auth' =&gt; 'oauth',
        'headers' =&gt; [
            'User-Agent' =&gt; 'my_user_agent/1.0',
            'Authorization' =&gt; "Discogs token={$token}"
        ],
        'defaults' =&gt; [
            'query' =&gt; [
                'key' =&gt; $consumer_key,
                'secret' =&gt; $secret_key,
            ],
        ]
    ]);
    $response = $client-&gt;search([
        'q' =&gt; 'artist=bb king'
    ]);

    echo '&lt;pre&gt;';
    print_r($response);
    echo '&lt;/pre&gt;';
?&gt;

le résultat



alors j'ai repris ton code, j'ai tout copié sur un de mes sites et j'ai fait une requête avec 'the beatles', j'obtiens des trucs mais ça ne marche pas en local pour les histoire de certificats SSL....




                    [id] => 448642
                    [barcode] => Array
                        (
                            [0] => 0
                            [1] => BMI
                            [2] => SO-1-385 Z12 #1 SF Bell Sound 0
                            [3] => SO-2-385 Z20 #2 SF Bell Sound 0
                            [4] => SO-1-385 Z13 #1 SF Bell Sound 0
                            [5] => SO-2-385 Z15 #2 SF Bell Sound 0
                            [6] => SO-1-385 Z15 #2 SF Bell Sound 0
                            [7] => SO-2-385 Z13 #2 SF Bell Sound 0
                        )

                    [user_data] => Array
                        (
                            [in_wantlist] => 
                            [in_collection] => 
                        )

                    [master_id] => 46382
                    [master_url] =>  https://api.discogs.com/masters/46382
 
                    [uri] => /release/448642-The-Beatles-Hey-Jude-The-Beatles-Again
                    [catno] => SO-385
                    [title] => The Beatles - Hey Jude (The Beatles Again)
                    [thumb] =>  https://i.discogs.com/EsmnCEhBvhaOCRqWIFLfqln7PTG7f-sTFezjYXbzAHQ/rs:fit/g:sm/q:40/h:150/w:150/czM6Ly9kaXNjb2dz/LWRhdGFiYXNlLWlt/YWdlcy9SLTQ0ODY0/Mi0xMjk3MDQzMjYy/LmpwZWc.jpeg
 
                    [cover_image] =>  https://i.discogs.com/H0ipYIx4LpHx-uvyXHF9CLnWQ9cvRJ6-yDKJRQnWMx0/rs:fit/g:sm/q:90/h:330/w:330/czM6Ly9kaXNjb2dz/LWRhdGFiYXNlLWlt/YWdlcy9SLTQ0ODY0/Mi0xMjk3MDQzMjYy/LmpwZWc.jpeg
 
                    [resource_url] =>  https://api.discogs.com/releases/448642
 
                    [community] => Array
                        (
                            [want] => 283
                            [have] => 1789
                        )

                    [format_quantity] => 1
                    [formats] => Array
                        (
                            [0] => Array
                                (
                                    [name] => Vinyl
                                    [qty] => 1
                                    [text] => Jacksonville Pressing
                                    [descriptions] => Array
                                        (
                                            [0] => LP
                                            [1] => Compilation
                                        )

                                )

Modérateur
Pour Wamp, je ne peux pas t'aider. Habituellement, je travaille sous Linux. J'ai fait ton code avec la machine du boulot. Avec cette machine, j'utilise WSL. Passe sous Linux, tu verras la vie informatique bien meilleur
Modérateur
lionel_css3 a écrit :
J'ai réussi à avancer un peu, avec le code de niuxe, mais là en local (avec Wamp) il me génère une erreur parce que il voudrait faire du SSL, on peut pas régler ça sur http pour faire les essais?


Bonjour Lionel,

En 2021, je me suis remis un peu au php et ai du réinstaller un serveur en local, en cherchant quelque chose de simple sous windows , j'ai tester et adopter laragon.

Il permet facilement de se connecter en https sur ton serveur local et te permet aussi d'utiliser des NDDs avec une extension de ton choix (ex : .lio) pour que chaque répertoire ai une adresse du type : https://repertoire1.lio , https://unautrerepertoire.lio , ... pour moi , c'est .gc
Autre facilité, tu peut switcher de version de PHP et de serveur apache ou nginx. Cela élargi pas mal les environnement de tests .

Après ce n'est qu'un avis d'amateur.
Modifié par gcyrillus (24 May 2024 - 15:31)
Modérateur
@gcyrillus : Smiley smile

J'ai pensé à Laragon. Mais en fait, il est plus intéressant de passer sous GNU/Linux. L'application ira inévitablement dans un env GNU/Linux
niuxe a écrit :
@gcyrillus : Smiley smile

J'ai pensé à Laragon. Mais en fait, il est plus intéressant de passer sous GNU/Linux. L'application ira inévitablement dans un env GNU/Linux


Ha bon, mais enfin, on peut pas invalider le SSL en local pour faire des tests sous Windows?, c'est fou ça...
Modérateur
Je pense que ça vient d'une config à faire dans ton wamp. Guzzle renvoie une exception. Que ce soit en Python ou en php (serveur lancé via php et non un apache ou nginx ou autres), je n'ai pas eu de souci. Essaie de lancer un serveur en php et teste le code. En tout cas, une chose est sûr, tu as pu avoir un résultat convaincant Smiley smile

php -S localhost:8000

Modifié par niuxe (24 May 2024 - 16:52)
Modérateur
lionel_css3 a écrit :


ah.. cette commande sert à quoi?


Depuis PHP 7, tu peux lancer un serveur de développement (ils ont copié sur Python).
niuxe a écrit :


Depuis PHP 7, tu peux lancer un serveur de développement (ils ont copié sur Python).


J'ai essayé mais j'ai exactement la même erreur...
niuxe a écrit :
Pour Wamp, je ne peux pas t'aider. Habituellement, je travaille sous Linux. J'ai fait ton code avec la machine du boulot. Avec cette machine, j'utilise WSL. Passe sous Linux, tu verras la vie informatique bien meilleur


alors je vais te prendre au mots Smiley biggrin

J'ai une machine Linux qui traine (Ubuntu 22.04)

Alors pour développer en Php sous Linux et ne pas avoir ces problèmes d'accès SSL, il faudrait que j'installe quoi??

j'ai assez peu de recul sous Linux...

merci d'avance
lionel_css3 a écrit :


alors je vais te prendre au mots Smiley biggrin

J'ai une machine Linux qui traine (Ubuntu 22.04)

Alors pour développer en Php sous Linux et ne pas avoir ces problèmes d'accès SSL, il faudrait que j'installe quoi??

j'ai assez peu de recul sous Linux...

merci d'avance


Wow, c'est une super idée Lio ! Je te conseille sous Ubountu 22.04 de faire :
- apt get alpine-linux
- apt get php 8.1+
- apt get docker + une image qui te sieds Smiley murf
- git config -tes-credentials- --ssl
C'est pas simple, mais c'est super, bravo !