WP.org API: Zugriff auf Plugin-Downloads “Today” Wert?

Ich entwickle ein Plugin, um Stats für Downloads anzuzeigen und verschiedene andere Informationen, die Entwickler auf ihren Sites über das, was sie entwickelt haben, anzeigen möchten.

Ich habe Dokumentationen über einige der benötigten Informationen gefunden und habe einige andere undokumentierte Ressourcen ausgegraben, die ich verwenden kann, aber die einzige Sache, die ich noch nicht ausgraben konnte, ist, wo ich heute die Informationen abrufen kann, die auf einem Statistikseite des Plugins.

Alle anderen Statistiken in der Verlaufstabelle können von der unten angegebenen URL analysiert werden, aber dieser Link liefert keine Informationen zu einem gerade laufenden Tag: http://api.wordpress.org/stats/plugin/1.0/downloads.php?slug=[plugin-slug]

Für die Neugierigen sind die anderen bereits verwendeten APIs:

http://api.wordpress.org/stats/plugin/1.0/[plugin-slug] (verwendete Plug-in-Versionen)

und

http://api.wordpress.org/stats/plugin/1.0/ (POST-Anfragen geben eine Menge Daten über das Plugin zurück)

Ich weiß, dass es einige Lösungen gibt, die nur die HTML-Seite für die benötigten Daten scrapen, aber wenn es wirklich keine andere Option gibt (was unwahrscheinlich erscheint), möchte ich diesen Ansatz nicht wählen.

Als Nebenbemerkung ist die Dokumentation im Codex für die WP.org API fast nicht existent. Es wäre erstaunlich, wenn jemand mit etwas Wissen über das System es ausfüllen könnte! Vieles, wie es funktioniert, scheint mir nicht intuitiv zu sein.

HINWEIS: Dies wurde zuvor im wp.org-Forum für eine Woche mit null Antworten veröffentlicht, also dachte ich, ich würde versuchen, hier ein besseres Ergebnis zu erzielen .

Solutions Collecting From Web of "WP.org API: Zugriff auf Plugin-Downloads “Today” Wert?"

Späte Antwort

Ein Mini-Plugin als lokale API

Dieses Plugin gibt Ihnen – nachdem Sie den Slug Ihres Repositorys ausgefüllt haben – die Download-Statistiken als Array. Die Schlüssel sind die Daten, die Werte die Downloads.

 < ?php /** Plugin Name: (#84254) Plugin stats API */ function wpse84254_get_download_stats() { $response = wp_remote_request( add_query_arg( 'slug' ,'YOUR-REPO-PLUGIN-SLUG' ,'http://wordpress.org/extend/stats/plugin-xml.php' ) ,array( 'sslverify' => false ) ); // Check if response is valid if ( is_wp_error( $response ) ) return $response->get_error_message(); if ( empty( $response ) OR 200 !== wp_remote_retrieve_response_code( $response ) OR 'OK' !== wp_remote_retrieve_response_message( $response ) ) return _e( 'No Stats available', 'pluginstats_textdomain' ); $response = wp_remote_retrieve_body( $response ); $response = (array) simplexml_load_string( $response )->children()->chart_data; $response = (array) $response['row']; $dates = (array) array_shift( $response ); $dates = $dates['string']; // Get rid of unnecessary prepended empty object array_shift( $dates ); $downloads = (array) array_pop( $response )->number; if ( count( $dates ) !== count( $downloads ) ) return; $result = array_combine( $dates ,$downloads ); return array_map( 'absint' ,$result ); } 

Verwendung

Um nur den letzten Tag + die Download-Nummer zu bekommen:

 $data = array_unshift( wpse84254_get_download_stats ); echo key( $data ).' had '.$data.' Downloads'; 

Der Endpunkt /stats/plugin/1.0/downloads.php gibt eine JSON-Liste mit der Anzahl der Downloads für jeden Tag zurück:

 http://api.wordpress.org/stats/plugin/1.0/downloads.php?slug={slug}&limit=1&callback=someJsFunction 

Ersetze {slug} durch deinen Plugin-Slug.

Der Parameter &limit=1 bestimmt, wie viele Tage Sie zurückgehen möchten. Der letzte Tag ist vermutlich “heute”.

Der &callback=someJsFunction Teil ist optional.

Beachten Sie außerdem, dass Sie, um die Gesamtzahl der Downloads in einem schönen JSON-Format zu erhalten, Folgendes verwenden können:

 http://api.wordpress.org/plugins/info/1.0/{slug}.json 

Hier ist eine Idee:

Sie haben immer die Möglichkeit, die Download-HTML-Seite des Plugins zu scrappen:

 http://wordpress.org/extend/plugins/some-plugin-slug/stats/ 

während Sie keine json / xml / rss-Quellen mit dem heutigen Download-Zähler haben.

Der HTML-Teil, an dem Sie interessiert sind, hat folgende Form:

 

History

Today 7,390
Yesterday 12,262
Last Week 130,130
All Time 13,639,901

Sie könnten wp_remote_get () verwenden und die Ergebnisse zwischenspeichern.

Hier ist eine function, um die Daten zu holen, sie benötigt einen plugin_slug (wie akismet) als Eingabe:

 function get_todays_downloads($plugin_slug){ $downloads_today="?"; $url="http://wordpress.org/extend/plugins/".$plugin_slug."/stats/"; // fetch the html page: // $response = wp_remote_get( $url ); if( is_wp_error( $response ) ) { $error_message = $response->get_error_message(); //echo "Something went wrong:". $error_message; // let's show "error" if we have problems fetching the page: // $downloads_today="error"; } else { // get the body of the page: // $html=$response['body']; // let's strip out the newlines and tabs: // $html=str_replace("\n","",$html); $html=str_replace("\t","",$html); // let's find this type of html string: // Today12 // preg_match('/Today< \/th>([0-9,]+)< \/td>< \/tr>/i', $html, $matches); // check if we got a match: // if(isset($matches[1])){ $downloads_today=$matches[1]; } } return $downloads_today; } 

Du kannst es so benutzen:

 // let's find out how many times the Akismet plugin has been downloaded today // echo "Downloads today: ".get_todays_downloads('akismet'); 

und es wird Ihnen Ergebnisse geben wie:

  Downloads today: 7,397 

PS: Denk dran, dass sich das HTML der Seite in Zukunft ändern kann 😉

Die API scheint diese Informationen nicht bereitzustellen. Die zwei Datasets, die Sie für Plugins verwenden können, sind:

http://api.wordpress.org/plugins/info/1.0/[plugin name]
Dadurch werden die gesamten Downloads zurückgegeben, nicht pro Tag.

http://api.wordpress.org/stats/plugin/1.0/[plugin name]
Dies wird die Versionen zurückgeben

Sie müssen das HTML scrappen.