Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
A lightweight JavaScript client library for the Wikimedia Pageviews API for Wikipedia and various of its sister projects for Node.js and the browser.
A lightweight JavaScript client library for the Wikimedia Pageviews API for Wikipedia and various of its sister projects for Node.js and the browser.
With npm:
$ npm install pageviews
With bower:
$ bower install pageviews
The client library requires native or polyfilled Promises support. Below are some samples of how to use it in practice.
var pageviews = require('pageviews');
// Getting pageviews for a single article
pageviews.getPerArticlePageviews({
article: 'Berlin',
project: 'en.wikipedia',
start: new Date(new Date() - 3 * 24 * 60 * 60 * 1000), // YYYYMMDD string or Date object
end: new Date(new Date() - 2 * 24 * 60 * 60 * 1000) // YYYYMMDD string or Date object
}).then(function(result) {
console.log(JSON.stringify(result, null, 2));
}).catch(function(error) {
console.log(error);
});
// Getting pageviews for multiple articles
pageviews.getPerArticlePageviews({
articles: ['Berlin', 'Hamburg'], // Plural
project: 'en.wikipedia',
start: new Date(new Date() - 3 * 24 * 60 * 60 * 1000), // YYYYMMDD string or Date object
end: new Date(new Date() - 2 * 24 * 60 * 60 * 1000) // YYYYMMDD string or Date object
}).then(function(result) {
console.log(JSON.stringify(result, null, 2));
}).catch(function(error) {
console.log(error);
});
// Getting aggregated pageviews for a single project
pageviews.getAggregatedPageviews({
project: 'en.wikipedia',
start: '2015120101', // YYYYMMDDHH string or Date object
end: '2015120102' // YYYYMMDDHH string or Date object
}).then(function(result) {
console.log(JSON.stringify(result, null, 2));
}).catch(function(error) {
console.log(error);
});
// Getting aggregated pageviews for multiple projects
pageviews.getAggregatedPageviews({
projects: ['en.wikipedia', 'de.wikipedia'], // Plural
start: '2015120101', // YYYYMMDDHH string or Date object
end: '2015120101' // YYYYMMDDHH string or Date object
}).then(function(result) {
console.log(JSON.stringify(result, null, 2));
}).catch(function(error) {
console.log(error);
});
// Getting top-n items ranked by pageviews for a single project
pageviews.getTopPageviews({
project: 'en.wikipedia',
year: '2015',
month: '12',
day: '01',
limit: 2 // Limit to the first n results
}).then(function(result) {
console.log(JSON.stringify(result, null, 2));
}).catch(function(error) {
console.log(error);
});
// Getting top-n items ranked by pageviews for multiple projects
pageviews.getTopPageviews({
projects: ['en.wikipedia', 'de.wikipedia'], // Plural
year: '2015',
month: '12', // Can also use integers like 12
day: '01', // Can also use integers like 1
limit: 2 // Limit to the first n results
}).then(function(result) {
console.log(JSON.stringify(result, null, 2));
}).catch(function(error) {
console.log(error);
});
// Getting top-n items ranked by pageviews for multiple projects
pageviews.getTopPageviews({
projects: ['en.wikipedia', 'de.wikipedia'], // Plural
date: new Date(new Date() - 2 * 24 * 60 * 60 * 1000), // YYYYMMDD string or Date object
limit: 2 // Limit to the first n results
}).then(function(result) {
console.log(JSON.stringify(result, null, 2));
}).catch(function(error) {
console.log(error);
});
You can build a minified version of pageviews.js
by running the build script.
$ npm run build
You can then use the file in the browser as follows.
<script src="pageviews.min.js"></script>
<script>
// Getting pageviews for a single article
pageviews.getPerArticlePageviews({
article: 'Berlin',
project: 'en.wikipedia',
start: new Date(new Date() - 3 * 24 * 60 * 60 * 1000), // YYYYMMDD string or Date object
end: new Date(new Date() - 2 * 24 * 60 * 60 * 1000) // YYYYMMDD string or Date object
}).then(function(result) {
console.log(JSON.stringify(result, null, 2));
}).catch(function(error) {
console.log(error);
});
/* All functions as defined in the Node.js section */
</script>
The API is modeled along the Wikimedia Pageviews API and offers the following methods:
/**
* This is the root of all pageview data endpoints. The list of paths that
* this returns includes ways to query by article, project, top articles,
* etc. If browsing the interactive documentation, see the specifics for
* each endpoint below.
*/
getPageviewsDimensions
/**
* Given a Mediawiki article and a date range, returns a daily timeseries of
* its pageview counts. You can also filter by access method and/or agent
* type.
*/
getPerArticlePageviews
/**
* Given a date range, returns a timeseries of pageview counts. You can
* filter by project, access method and/or agent type. You can choose
* between daily and hourly granularity as well.
*/
getAggregatedPageviews
/**
* Lists the 1000 most viewed articles for a given project and timespan
* (year, month or day). You can filter by access method.
*/
getTopPageviews
Copyright 2016 Thomas Steiner (@tomayac)
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
FAQs
A lightweight JavaScript client library for the Wikimedia Pageviews API for Wikipedia and various of its sister projects for Node.js and the browser.
The npm package pageviews receives a total of 1 weekly downloads. As such, pageviews popularity was classified as not popular.
We found that pageviews demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.