[PYTHON] Rufen Sie die Paketliste des angegebenen Benutzers aus den in PyPI registrierten Paketen ab

Plötzlich wollte ich eine Liste der Pakete erhalten, die ich in PyPI registriert hatte. Wenn Sie sich bei PyPI anmelden, wird Ihre Paketliste im Menü angezeigt.

Wenn Sie sich jedoch anmelden müssen, können Sie die Paketliste anderer Benutzer nicht abrufen. Wenn Sie in einer PyPI-Suche einen Benutzernamen eingeben, wird die Suche bis zu einem gewissen Grad getroffen, aber auch Pakete, die zufällig den Benutzernamen enthalten, werden eingegrenzt.

Laut https://wiki.python.org/moin/PyPIXmlRpc können Sie anscheinend xmlrpc verwenden.

>>> 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']]

Ich verstehe, es ist geschafft.

Aber es ist mühsam, eine interaktive Shell zu starten, um eine Liste von Paketen zu erhalten, nicht wahr? Es wäre etwas einfacher, wenn Sie xmlrpc direkt über die Befehlszeile drücken würden. Versuchen wir es mit 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>
            ...

Ich verstehe, es ist geschafft.

Die Anzeige der Antwort von xmlrpc in der aktuellen Form ist jedoch redundant, und der Zeilenvorschubcode ist hier und da enthalten, sodass er überhaupt nicht leicht zu erkennen ist.

Ich frage mich, ob es keine andere Wahl gibt, als die Antwort von xmlrpc zu analysieren und anzuzeigen. Versuchen wir es mit 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)

Ich verstehe, es ist geschafft.

・ ・ ・

Ich weiß ehrlich gesagt nicht, was ich tun soll: Schweiß:

Recommended Posts

Rufen Sie die Paketliste des angegebenen Benutzers aus den in PyPI registrierten Paketen ab
Ermitteln Sie die Anzahl der Vorkommen für jedes Element in der Liste
Holen Sie sich die Spaltenliste und Datenliste von CASTable
Holen Sie sich den letzten Tag des angegebenen Monats
Erzeugt halbautomatisch eine Beschreibung des Pakets, das in PyPI registriert werden soll
Holen Sie sich das durchschnittliche Gehalt eines Jobs mit bestimmten Bedingungen von Indeed.com
Rufen Sie nur den Quellcode des PyPI-Pakets mit pip über die Befehlszeile ab
Python-Skript zum Abrufen einer Liste von Eingabebeispielen für den AtCoder-Wettbewerb
Lassen Sie uns über das Wetter in Ihrer Lieblingsgegend von Yahoo Wetter auf LINE informiert werden!
[Python] Ruft den Gesetzestext aus der e-GOV-Gesetz-API ab
[Python] Ruft die Liste der im Modul definierten Klassen ab
Holen Sie sich den Rückkehrcode eines Python-Skripts von bat
[Python] Ruft die Liste der ExifTags-Namen der Pillow-Bibliothek ab
Python: Ruft eine Liste der Methoden für ein Objekt ab
Studie aus Python Hour8: Verwenden von Paketen
Ruft den Wert eines bestimmten Schlüssels bis zum angegebenen Index der Wörterbuchliste in Python ab
Lassen Sie uns über das Wetter in Ihrer Lieblingsgegend von Yahoo Wetter auf LINE informiert werden! ~ TEIL2 ~
Versuchen Sie, die Funktionsliste des Python> os-Pakets abzurufen
Suchen Sie unter Linux über die Befehlszeile nach großen Dateien
Holen Sie sich die Paketversion, um sich bei PyPI von Git zu registrieren
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
Zusammenfassung der für die Pip-Installation mit EC2 erforderlichen Yum-Pakete
So erhalten Sie eine Liste mit Links von einer Seite aus Wikipedia
Rufen Sie den Hostnamen des Host-PCs mit Docker unter Linux ab
python Hinweis: enumerate () - Index und Element der Liste gleichzeitig abrufen und zur Anweisung wenden
Holen Sie sich die Anzahl der Ziffern
Ich habe versucht, den Index der Liste mithilfe der Aufzählungsfunktion abzurufen
Überprüfen Sie die Zunahme / Abnahme der Bitmünzen für jede Adresse aus der Blockchain
Studieren von Web Scraping zum Extrahieren von Daten aus Filmarks # 2
[Hikari-Python] Kapitel 05-03 Steuerungssyntax (zum Abrufen von Elementen aus der Liste-)
[Python] Ruft das Aktualisierungsdatum eines Nachrichtenartikels aus HTML ab
[Python] Ermittelt den Rang der Werte in der Liste in aufsteigender / absteigender Reihenfolge
Python Hinweis: Map - Machen Sie dasselbe für jedes Element der Liste
Ich werde jede einzelne Yard-Pfund-Methode von dieser Welt loswerden!
Liste der Katastrophenfälle der Feuerwehr von Sapporo City [Python]
Holen Sie sich die Anzahl der Leser von Artikeln über Mendeley in Python
(Für Anwälte) Extrahieren Sie das Verhalten von Office-Software aus .evtx-Dateien