[PYTHON] Obtenir la liste des packages de l'utilisateur spécifié à partir des packages enregistrés dans PyPI

Soudain, j'ai voulu obtenir une liste des paquets que j'avais enregistrés dans PyPI. Lorsque vous vous connectez à PyPI, votre liste de paquets apparaîtra dans le menu.

Mais si vous devez vous connecter, vous ne pouvez pas obtenir la liste des packages des autres utilisateurs. Si vous entrez un nom d'utilisateur dans une recherche PyPI, la recherche sera effectuée dans une certaine mesure, mais les packages qui incluent le nom d'utilisateur seront également limités.

Selon https://wiki.python.org/moin/PyPIXmlRpc, il semble que vous puissiez utiliser xmlrpc.

>>> import xmlrpc.client as xmlrpclib
>>> client = xmlrpclib.ServerProxy('https://pypi.python.org/pypi')
>>> client.user_packages('t2y')
[['Owner', 'ikazuchi'],
 ['Owner', 'ikazuchi.plugins.pofile'],
 ['Owner', 'ikazuchi.plugins.speech'],
 ['Owner', 'ikazuchi.plugins.blockdiag'],
 ['Owner', 'pyrtm'],
 ['Owner', 'TracTicketReferencePlugin'],
 ['Owner', 'LittleHTTPServer'],
 ['Owner', 'pytest-quickcheck'],
 ['Owner', 'kotti_mapreduce'],
 ['Maintainer', 'TracCronPlugin'],
 ['Owner', 'TracCronPlugin'],
 ['Owner', 'TracMultiSelectBoxPlugin'],
 ['Owner', 'TracChangeFileBiffPlugin'],
 ['Owner', 'unotools'],
 ['Owner', 'TracAutocompleteUsersPlugin'],
 ['Owner', 'TracMovieMacro']]

Je vois, c'est fait.

Mais c'est compliqué de lancer un shell interactif pour obtenir une liste de paquets, n'est-ce pas? Ce serait un peu plus facile si vous appuyez sur xmlrpc directement à partir de la ligne de commande. Essayons d'utiliser curl.

$ user="t2y"; curl -s -X POST -H "Content-Type: text/xml" https://pypi.python.org/pypi -d "<?xml version='1.0'?><methodCall><methodName>user_packages</methodName><params><name>$user</name></params></methodCall>" | python -c "import sys; import xml.dom.minidom; print(xml.dom.minidom.parseString(sys.stdin.read()).toprettyxml(indent='  '))"
<?xml version="1.0" ?>
<methodResponse>
  

  <params>
    

    <param>
      

      <value>
        <array>
          <data>
            

            <value>
              <array>
                <data>
                  

                  <value>
                    <string>Owner</string>
                  </value>
                  

                  <value>
                    <string>ikazuchi</string>
                  </value>
                  

                </data>
              </array>
            </value>
            ...

Je vois, c'est fait.

Cependant, afficher la réponse de xmlrpc telle quelle est redondant, et le code de saut de ligne est inclus ici et là, donc ce n'est pas facile à voir du tout.

Je me demande s'il n'y a pas d'autre choix que d'analyser et d'afficher la réponse de xmlrpc. Essayons d'utiliser ElementTree.

$ user="t2y"; curl -s -X POST -H "Content-Type: text/xml" https://pypi.python.org/pypi -d "<?xml version='1.0'?><methodCall><methodName>user_packages</methodName><params><name>$user</name></params></methodCall>" | python -c "import sys; from xml.etree import ElementTree; print('\n'.join(j for j in sorted(['{} ({})'.format(i[1][0].text, i[0][0].text) for i in ElementTree.parse(sys.stdin).iter('data') if i[1][0].text])))"
LittleHTTPServer (Owner)
TracAutocompleteUsersPlugin (Owner)
TracChangeFileBiffPlugin (Owner)
TracCronPlugin (Maintainer)
TracCronPlugin (Owner)
TracMovieMacro (Owner)
TracMultiSelectBoxPlugin (Owner)
TracTicketReferencePlugin (Owner)
ikazuchi (Owner)
ikazuchi.plugins.blockdiag (Owner)
ikazuchi.plugins.pofile (Owner)
ikazuchi.plugins.speech (Owner)
kotti_mapreduce (Owner)
pyrtm (Owner)
pytest-quickcheck (Owner)
unotools (Owner)

Je vois, c'est fait.

・ ・ ・

Honnêtement, je ne sais pas quoi faire: transpirer:

Recommended Posts

Obtenir la liste des packages de l'utilisateur spécifié à partir des packages enregistrés dans PyPI
Obtenez le nombre d'occurrences pour chaque élément de la liste
Obtenez la liste des colonnes et la liste des données de CASTable
Obtenez le dernier jour du mois spécifié
Générer semi-automatiquement une description du package à enregistrer dans PyPI
Obtenez le salaire moyen d'un emploi avec des conditions spécifiées sur Indeed.com
Obtenez uniquement le code source du package PyPI avec pip à partir de la ligne de commande
Script Python pour obtenir une liste d'exemples d'entrée pour le concours AtCoder
Soyons avertis de la météo dans votre région préférée de Yahoo Weather sur LINE!
[Python] Récupérez le texte de la loi à partir de l'API e-GOV law
[python] Récupère la liste des classes définies dans le module
Récupérer le code retour d'un script Python depuis bat
[Python] Obtenir la liste des noms ExifTags de la bibliothèque Pillow
Python: obtenir une liste de méthodes pour un objet
Étude de Python Hour8: Utilisation de packages
Obtenir la valeur d'une clé spécifique jusqu'à l'index spécifié de la liste de dictionnaires en Python
Soyons avertis de la météo dans votre région préférée de Yahoo Weather sur LINE! ~ PART2 ~
Essayez d'obtenir la liste des fonctions du paquet Python> os
Rechercher des fichiers volumineux sous Linux à partir de la ligne de commande
Obtenez la version du package pour vous inscrire à PyPI à partir de Git
Obtenez le nombre d'éléments spécifiques dans la liste python
Récapitulatif des packages yum requis pour l'installation de pip avec EC2
Comment obtenir une liste de liens à partir d'une page de wikipedia
Obtenez le nom d'hôte du PC hôte avec Docker sous Linux
python Remarque: enumerate () -Obtenir l'index et l'élément de la liste en même temps et tourner pour l'instruction
Obtenez des images de sites intéressants / 47 à l'aide de Python (Partie 2/2: liste des cibles publiées par github)
Obtenez le nombre de chiffres
J'ai essayé d'obtenir l'index de la liste en utilisant la fonction énumérer
Vérifiez l'augmentation / la diminution des pièces de monnaie pour chaque adresse de la blockchain
Etudier le web scraping dans le but d'extraire des données de Filmarks # 2
[Python of Hikari-] Chapitre 05-03 Syntaxe de contrôle (pour les éléments d'extraction d'instructions de la liste-)
[Python] Obtenir la date de mise à jour d'un article d'actualité à partir de HTML
[python] Obtenez le rang des valeurs dans la liste par ordre croissant / décroissant
python Remarque: map -faire la même chose pour chaque élément de la liste
Je vais me débarrasser de toutes les méthodes de livre de mètre de ce monde!
Liste des dépêches en cas de catastrophe du service d'incendie de la ville de Sapporo [Python]
Obtenez le nombre de lecteurs d'articles sur Mendeley en Python
(Pour les avocats) Extraire le comportement du logiciel Office à partir de fichiers .evtx