google / wikiloop-doublecheck Goto Github PK
View Code? Open in Web Editor NEWWikiLoop DoubleCheck: a web tool to help review Wikipedia edits easily and collaboratively.
Home Page: http://doublecheck.wikiloop.org
License: Apache License 2.0
WikiLoop DoubleCheck: a web tool to help review Wikipedia edits easily and collaboratively.
Home Page: http://doublecheck.wikiloop.org
License: Apache License 2.0
It should be possible for us to fetch the full list of revisions reversion and list of Wikipedia authors who used our tool to revert things directly from Wikipedia articles. For example
For example, in the page of [Crime_in_New_York_City](https://en.wikipedia.org/w/index.php?title=Crime_in_New_York_City&action=history Wikipedia article history shows
2019-07-30T09:53:15 PerinPeron21 talk contribs 201,281 bytes -7 Undid revision 908582516 by 69.127.235.116 (talk): Identified as test/vandalism using m:WikiLoop Battlefield(version 1.1.0-alpha-1) at battlefield.wikiloop.org. undothank Tag: Undo
2019-07-30T09:52:41 69.127.235.116 talk 201,288 bytes +7 undo
interaction
const fetchUrl = new URL(`${getUrlBaseByWiki(wiki)}/w/api.php`);
let params = {
"action": "query",
"format": "json",
"prop": "revisions|info",
"indexpageids": 1,
"revids": revIds.join('|'),
"rvprop": "ids|timestamp|flags|user|tags|size|comment",
"rvslots": "main"
};
Object.keys(params).forEach(key => {
fetchUrl.searchParams.set(key, params[key]);
});
let retJson = await rp.get(fetchUrl, {json: true});
With a full list of Revision -> Article Title
mapping, we can get the full list of Articles being reverted by us. We can query the next revision after the revision we have (because our Revert only work for 1 immediate revision so it must be next one).
For these revisions we can filter by comment Text and We can get UserName of them.
In summary this is a hacky-workaround of the following pseudo SQL query
SELECT revId, userName FROM WPRevisions
WHERE comment contains "wikiloop"
We can basically get a list of all our revisions being labeled as vandalism and proceed to make batch query to MediaWiki to get their subsequent revisions to find any comments that has our WikiLoop fingerprint.
Alternatively, we can ask the Wikipedia to allow we provide a tag filtering of WikiLoop Battlefield. Currently under approval https://phabricator.wikimedia.org/T226459
Also alternatively, we can ask the MediaWiki to provide revision querying with given text substring / ideally also RegEx. This can be easily provide through https://phabricator.wikimedia.org/T229361
As suggested in
https://en.wikipedia.org/wiki/User_talk:Xinbenlv#Wikiloop
I wanted to point out that you might get quite a few incorrect results as the user's edit summary is currently hidden in Wikiloop's user interface. Edit summaries often contain an explanation for why an edit was made, so it's not really possible to decide if reverting is the right action.
We need to update the collection Interactions
with an additional field of wikiRevId
= ${recentChange.wiki}:${recentChange.revision.new}
.
Here is a mongodb shell command to do so.
print("Start...");
db.getCollection("Interaction").find({}).forEach(function(doc) {
doc.wikiRevId = doc.recentChange.wiki + ":" + doc.recentChange.revision.new;
db.getCollection("Interaction").save(doc);
})
print("Done!");
If the username of the person who made the edit in question has no user page, it would be nice to display the name in red (See "User:Jkmistry17") because for vandal fighting, it helps to see whether the person editing is very new and a red userpage link helps in determining this.
Related to #26
I love using your tool, one possible improvement could be setting languages as filter, as I can be interested for example in reviewing English and Spanish edits, while ignoring the rest, and other users may have other language preferences.
Great work!
We should number of judgements made on the page for total, last 7 days and last month.
If too long there is no card to review, the editor's time is wasted. We can use their attention to rate some lower risk cards.
Currently only the home page, or the index.vue
supports receiving interaction and update the related RecentChangeeCard
to mark what user have updated. We should also do the same in /mark
or th emarked.vue
to do the same
FR: support batch request and pagination major APIs: /api/interaction
, /api/revision
, /api/ores
.
We will not create batch api for /api/diff
Currently, for a revision, the judgement is a plain array. So when a user click on a button the second time, another judgement will be made to the same revision, from the same user.
We need to remove the previous judgement.
Suggestion from User:Fuzheado:
Trackers for potential frontend performance issue caused by how we store revisions / recentChange in the frontend.
I think I know what "Overriden" means (someone else has acted on it already) though this is a bit confusing. Perhaps a better or more detailed message here?
Great work though. A really useful tool. -- Fuzheado | Talk 10:55, 9 July 2019 (UTC)
From #26
Debug notes:
Not sure if POST will work, due to axios/axios#1661
Originally we use RecentChangeId
because we directly store what we get from EventStream
. But it turns out RecentChangeId
is not very well supported by Action API to be queried. Instead, RevisionId
is. So we want to switch to RevisionId
to identify a revision.
In addition, the MediaWiki Wiki Farm relies on a wiki (such as enwiki
) identifier to identify which wiki instance is. Therefore, a WikiId + RevisionId will uniquely identify a revision.
wikiRevId
wikiRevId
into the databasewikiRevId = `${wiki}:${revId}`
wikiRevId
instead of _id
, dbId
etc._id
to random generated idAs defined in #23. We determine to keep it in mongodb
the collection of Interaction
.
{
userGaId: <userGaId>,
wikiRevId: <wikiRevId>, // New
judgement: <judgement>,
...
}
Credit to west.andrew.g @westand, we are granted readonly access to the MySQL DB of STiki score.
We will implement the feature to include STiki score as one of the input of scores.
So people can start instead of empty page showing "please wait for the first vandalism to come up"
This allows WMF to train their models with the new training data provided by users here.
Currently we only support auto feed. Therefore, we have less control of the speed. Sometimes it also happens when trying to mark a revision with a Judgement, it shows the next revision, and caused the judgement click on a mistaken card.
Here's the Weekly Digest for xinbenlv/learn-vue-nuxt:
Last week, no issues were created.
Last week, no pull requests were created, updated or merged.
Last week there were no commits.
Last week there were no contributors.
Last week there were no stargazers.
Last week there were no releases.
That's all for last week, please 👀 Watch and ⭐ Star the repository xinbenlv/learn-vue-nuxt to receive next weekly updates. 😃
You can also view all Weekly Digests by clicking here.
Your Weekly Digest bot. 📆
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.