Search the database
Search forum topics
Search members
Search for trades
diablo2.io is supported by ads
diablo2.io is supported by ads
57 replies   81314 views
2

Description

Get notifications of Dclone progress! Apps & Bots powered by the d2io API:

Twitter Dclone Notifier - Bot that tweets Dclone status updates, by Spaghetti_Master_192
Android App - by ArmlessWunder, an Android phone app which sends you notifications when Dclone's progress increases
Dclone Hunters Discord Bot - by Dizzo, the original Dclone hunters discord now has a bot with role-based notifications for different tracking modes
Dclone Status on request - by Synse, the first Discord bot made with the d2io API. Pull requests welcome!
Discord Tracker Bot - by Klimpton, public Discord bot you can install on your own server, provides progress summary and notifications, channel setting etc.
DIY Discord Bot - by FredericoJordan, a public Discord chat bot providing progress status updates as a summary
Telegram Bot - by zeleboba, a Telegram chat bot providing progress status updates as a summary
Telegram Bot 2 - by FredericoJordan, another Telegram bot providing progress status updates.
Python Beeper - by 4p0, a script written in Python that beeps to notify you of progress updates.
DCTracker- by elmagnificogi, a Chinese language dclone tracker written in C#
Chrome Plugin - Dclone progress tracker statuses as a Google Chrome browser extension
Node JS Beeper - Dclone beeper with status commands written in Node.js

Introduction:

After launching the Diablo Clone Progress Tracker, many asked if I could build a simple API for querying the progress database, so that others can build Discord bots, applications, notifiers etc. and make use of the data contributed by the community here to extend its functionality to further facilitate the hunt for
Diablo Clone
:

So I have made a barebones API for the tracker that lets you query the database with URL parameters and spits out a JSON object accordingly. It is very basic at the moment seeing as I have other pressing matters to attend to IRL and with the site. You can use this JSON output to power your apps and bots as you like - but please take a moment to read the 'fair use' section below.
Base URL:

https://diablo2.io/dclone_api.php
Parameters with examples:

region can be 1 (Americas), 2 (Europe), or 3 (Asia). Example https://diablo2.io/dclone_api.php?region=2 will generate results for only modes in the Europe region.
ladder can be 1 (Ladder), or 2 (Non-Ladder). Example https://diablo2.io/dclone_api.php?region=3&ladder=2 will generate results for only modes in the Asia region that are Non-Ladder.
hc can be 1 (Hardcore), 2 (Softcore). Example https://diablo2.io/dclone_api.php?region=1&ladder=1&hc=2 will generate results for the Americas region, that are Ladder, and are also Hardcore.

You will note that no results are produced for Non-Expansion - decided to remove this mode since it is of so little importance/reward to players and clutters the tracker data needlessly.

To sort or 'order' results, use the sk
Key
with any of the following values: p (Progress) r (Region) l (Ladder) h (Hardcore) t (Timestamp of last report). The additional sd param is used to decide sort direction - d is the value for Descending, a is the value for Ascending. Example https://diablo2.io/dclone_api.php?region=2&sk=t&sd=d will sort the results by most recently updated timestamp in the descending direction.
The default/unassigned pair for sorting is always to sort by Progress, Descending direction. It will of course change if you use the params above ^.
Example output combining some parameters...

Using example URL: https://diablo2.io/dclone_api.php?hc=2&ladder=2, the API will spit out a JSON object with nested objects for each row returned. In this case, we're querying all regions, softcore, non-ladder. Since we didn't provide params for sorting order/direction, it uses the defaults. The result looks like this:

Code: Select all

[
  {"progress":"3","region":"1","ladder":"2","hc":"2","timestamped":"1650826711"},
  {"progress":"5","region":"2","ladder":"2","hc":"2","timestamped":"1650861924"},
  {"progress":"2","region":"3","ladder":"2","hc":"2","timestamped":"1650862741"}
]
The value for the
Key
'progress' represents the progress level out of six. E.g 3/6, 5/6, 2/6.
The value for the
Key
'timestamped' represents the UNIX timestamp of when the last report was made for this mode. You will have to convert this into your desired date/time format on your end.
Fair usage:

I have decided not to gate access to this API, just to make things easier for developers to get on board. I will however still monitor my analytics for this endpoint carefully; some things to bear in mind:
  • You must include the copy 'Data courtesy of diablo2.io', linking the text diablo2.io to the site's home page or the dclone tracker. If you use this data without crediting the source like this, your access will be revoked. Not hidden away, not in the readme, has to be in the app itself and in a reasonably prominent position with relation to the component of your app using the data.
  • The data should be used to extend what the tracker already offers, not to duplicate or copy it. That means if you were to use this data to try and reconstruct the clone tracker I built here, and host it on your own domain etc with the same/or similar functionality, I would revoke access. Ask yourself the question - what am I actually adding in terms of value here that d2io doesn't already serve?
  • Things that extend its functionality are Discord notifier bots, push notification servers, supplementing datasets that are related, mini site widgets etc. Basically, anything that makes D2 player's lives easier and doesn't straight-up plagiarise the tracker page.
  • Timings between API requests from your app should never be less than 60 seconds apart. Obviously whilst developing you'll be making tonnes of requests (no problem), but if your final production code is making automated requests more often than this, you will have your access revoked.
  • I would prefer if you could contact me before you start building using this data, so that I am aware of who the consumers are and what is being done with the data. That way you also have a direct line with me in case you want to ask me to build new stuff into the API :)
  • I am not asking for much in return guys - please respect the community tracking effort that is coordinated here by adhering to the above points if you plan on using the API data.
Commonly requested features for the Dclone tracker that are possible for you to make with this API:
  • Notifications, whether email, webpush, or otherwise. People have asked for configurable notifications, so as to filter out modes/progress levels they are not interested in. This is the one thing people want the most right now.
  • Discord summary bots - People have asked for this on the various Discords, where they can type !uberdiablo or something and get the data from the tracker printed out for them, or for a bot to automatically print progress levels at set time intervals in a channel etc.
Future additions to the API when I have time:

As I said before, this is just a barebones thing for now - it's all I have time for before Ladder. Future development will allow people to also send progress reports via the API urls to enrich data here. In this way, I hope that someone savvy can write a bot that cycles through each tracked mode, enters games, checks /uberdiablo, then submits this through the API totally automated. Be aware of the ToS if you do want to attempt this - I think it might be a bannable offence. A log of all individual reports with the same
Key
/value pairs will be available but later on (the db exists and is populated, just haven't built a way to visualise it yet).
Hope this brings some cool new features/apps etc. to the Dclone hunting world and helps players everywhere.
Your boy, Teebling.
Description by Teebling
5

Can be used to make Runewords:

7
User avatar

TeeblingAdmin

Europe PC

Get notifications of Dclone progress! Apps & Bots powered by the d2io API:

Twitter Dclone Notifier - Bot that tweets Dclone status updates, by Spaghetti_Master_192
Android App - by ArmlessWunder, an Android phone app which sends you notifications when Dclone's progress increases
Dclone Hunters Discord Bot - by Dizzo, the original Dclone hunters discord now has a bot with role-based notifications for different tracking modes
Dclone Status on request - by Synse, the first Discord bot made with the d2io API. Pull requests welcome!
Discord Tracker Bot - by Klimpton, public Discord bot you can install on your own server, provides progress summary and notifications, channel setting etc.
DIY Discord Bot - by FredericoJordan, a public Discord chat bot providing progress status updates as a summary
Telegram Bot - by zeleboba, a Telegram chat bot providing progress status updates as a summary
Telegram Bot 2 - by FredericoJordan, another Telegram bot providing progress status updates.
Python Beeper - by 4p0, a script written in Python that beeps to notify you of progress updates.
DCTracker- by elmagnificogi, a Chinese language dclone tracker written in C#
Chrome Plugin - Dclone progress tracker statuses as a Google Chrome browser extension
Node JS Beeper - Dclone beeper with status commands written in Node.js

Introduction:

After launching the Diablo Clone Progress Tracker, many asked if I could build a simple API for querying the progress database, so that others can build Discord bots, applications, notifiers etc. and make use of the data contributed by the community here to extend its functionality to further facilitate the hunt for
Diablo Clone
:

So I have made a barebones API for the tracker that lets you query the database with URL parameters and spits out a JSON object accordingly. It is very basic at the moment seeing as I have other pressing matters to attend to IRL and with the site. You can use this JSON output to power your apps and bots as you like - but please take a moment to read the 'fair use' section below.
Base URL:

https://diablo2.io/dclone_api.php
Parameters with examples:

region can be 1 (Americas), 2 (Europe), or 3 (Asia). Example https://diablo2.io/dclone_api.php?region=2 will generate results for only modes in the Europe region.
ladder can be 1 (Ladder), or 2 (Non-Ladder). Example https://diablo2.io/dclone_api.php?region=3&ladder=2 will generate results for only modes in the Asia region that are Non-Ladder.
hc can be 1 (Hardcore), 2 (Softcore). Example https://diablo2.io/dclone_api.php?region=1&ladder=1&hc=2 will generate results for the Americas region, that are Ladder, and are also Hardcore.

You will note that no results are produced for Non-Expansion - decided to remove this mode since it is of so little importance/reward to players and clutters the tracker data needlessly.

To sort or 'order' results, use the sk
Key
with any of the following values: p (Progress) r (Region) l (Ladder) h (Hardcore) t (Timestamp of last report). The additional sd param is used to decide sort direction - d is the value for Descending, a is the value for Ascending. Example https://diablo2.io/dclone_api.php?region=2&sk=t&sd=d will sort the results by most recently updated timestamp in the descending direction.
The default/unassigned pair for sorting is always to sort by Progress, Descending direction. It will of course change if you use the params above ^.
Example output combining some parameters...

Using example URL: https://diablo2.io/dclone_api.php?hc=2&ladder=2, the API will spit out a JSON object with nested objects for each row returned. In this case, we're querying all regions, softcore, non-ladder. Since we didn't provide params for sorting order/direction, it uses the defaults. The result looks like this:

Code: Select all

[
  {"progress":"3","region":"1","ladder":"2","hc":"2","timestamped":"1650826711"},
  {"progress":"5","region":"2","ladder":"2","hc":"2","timestamped":"1650861924"},
  {"progress":"2","region":"3","ladder":"2","hc":"2","timestamped":"1650862741"}
]
The value for the
Key
'progress' represents the progress level out of six. E.g 3/6, 5/6, 2/6.
The value for the
Key
'timestamped' represents the UNIX timestamp of when the last report was made for this mode. You will have to convert this into your desired date/time format on your end.
Fair usage:

I have decided not to gate access to this API, just to make things easier for developers to get on board. I will however still monitor my analytics for this endpoint carefully; some things to bear in mind:
  • You must include the copy 'Data courtesy of diablo2.io', linking the text diablo2.io to the site's home page or the dclone tracker. If you use this data without crediting the source like this, your access will be revoked. Not hidden away, not in the readme, has to be in the app itself and in a reasonably prominent position with relation to the component of your app using the data.
  • The data should be used to extend what the tracker already offers, not to duplicate or copy it. That means if you were to use this data to try and reconstruct the clone tracker I built here, and host it on your own domain etc with the same/or similar functionality, I would revoke access. Ask yourself the question - what am I actually adding in terms of value here that d2io doesn't already serve?
  • Things that extend its functionality are Discord notifier bots, push notification servers, supplementing datasets that are related, mini site widgets etc. Basically, anything that makes D2 player's lives easier and doesn't straight-up plagiarise the tracker page.
  • Timings between API requests from your app should never be less than 60 seconds apart. Obviously whilst developing you'll be making tonnes of requests (no problem), but if your final production code is making automated requests more often than this, you will have your access revoked.
  • I would prefer if you could contact me before you start building using this data, so that I am aware of who the consumers are and what is being done with the data. That way you also have a direct line with me in case you want to ask me to build new stuff into the API :)
  • I am not asking for much in return guys - please respect the community tracking effort that is coordinated here by adhering to the above points if you plan on using the API data.
Commonly requested features for the Dclone tracker that are possible for you to make with this API:
  • Notifications, whether email, webpush, or otherwise. People have asked for configurable notifications, so as to filter out modes/progress levels they are not interested in. This is the one thing people want the most right now.
  • Discord summary bots - People have asked for this on the various Discords, where they can type !uberdiablo or something and get the data from the tracker printed out for them, or for a bot to automatically print progress levels at set time intervals in a channel etc.
Future additions to the API when I have time:

As I said before, this is just a barebones thing for now - it's all I have time for before Ladder. Future development will allow people to also send progress reports via the API urls to enrich data here. In this way, I hope that someone savvy can write a bot that cycles through each tracked mode, enters games, checks /uberdiablo, then submits this through the API totally automated. Be aware of the ToS if you do want to attempt this - I think it might be a bannable offence. A log of all individual reports with the same
Key
/value pairs will be available but later on (the db exists and is populated, just haven't built a way to visualise it yet).
Hope this brings some cool new features/apps etc. to the Dclone hunting world and helps players everywhere.
Your boy, Teebling.

7
That was quick! :)
Nicely done, chief.
7
Teebling, god among men.
7
Schnorki wrote: 5 months ago
That was quick! :)
Nicely done, chief.
Feels like we just spoke about this the other day - first to market is king. This is the hot ticket right now being discussed within all major discords - curating the first auto/push hook bot and this will now make dabbling much easier. Way to go Teebs!

Image
Image
7
This is great. Time to fire up my test server and see what I can come up with.
7
How to skip Cloudflare with request?

curl get 403
7
OP
User avatar

TeeblingAdmin

Europe PC
Xezis wrote: 5 months ago
How to skip Cloudflare with request?
Ah sugar, one sec, I forgot to disable it for this URL :lol:

Edit: Just configured it in Cloudflare, can you please try again and let me know if you make it through this time?

7
Still get cloudflare page

I checked with 3 servers and this site: https://helloacm.com/curl/
7

Code: Select all

> curl -I https://diablo2.io/dclone_api.php
HTTP/1.1 403 Forbidden
Date: Mon, 25 Apr 2022 18:51:42 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
CF-Chl-Bypass: 1
Permissions-Policy: accelerometer=(),autoplay=(),camera=(),clipboard-read=(),clipboard-write=(),fullscreen=(),geolocation=(),gyroscope=(),hid=(),interest-cohort=(),magnetometer=(),microphone=(),payment=(),publickey-credentials-get=(),screen-wake-lock=(),serial=(),sync-xhr=(),usb=()
Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Thu, 01 Jan 1970 00:00:01 GMT
X-Frame-Options: SAMEORIGIN
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=JRIe8lPXkN%2Fc2R4fa%2BViLPGWS%2BKnhTWpqtoCSLJvq1fqFoUjxTqirA3titFptXLPbVDRqdkVlKmVk3pzd%2FX0E1a7iQfDbgJ6aTyA34lR0l1MbZPwBWDlj8Uqgkg%3D"}],"group":"cf-nel","max_age":604800}
NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
Server: cloudflare
CF-RAY: 70194588ff6e0028-WAW
7
Now working
7
OP
User avatar

TeeblingAdmin

Europe PC
This is what your header should look like (I'm getting a successful 200 when testing with the site you linked):

Code: Select all

HTTP/2 200 
date: Mon, 25 Apr 2022 19:00:45 GMT
content-type: text/html; charset=UTF-8
cache-control: private, no-cache="set-cookie"
expires: Mon, 25 Apr 2022 19:00:45 GMT
referrer-policy: strict-origin-when-cross-origin
x-phpbb-is-bot: yes
set-cookie: diablo2io_ct_cookies_test=%7B%22cookies_names%22%3A%5B%5D%2C%22check_value%22%3A%22a564e352cebd4b5e5f0c2cd96f4f16f6%22%7D; path=/; secure; HttpOnly
content-security-policy: upgrade-insecure-requests;
vary: User-Agent
cf-cache-status: DYNAMIC
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=%2FqHQkXEn%2Fov4lcHMuBD9h8LGSgy%2BAuwYAQCBbxxFG7Zf59IeWvDvpCiuW77HL3IwCe6AHFfqXq6DndyhvWNUCZVD5oyeEpy5ECKDunF2rOBv6ZZ14dIe9wRAlVw%3D"}],"group":"cf-nel","max_age":604800}
nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
server: cloudflare
cf-ray: 701952c93c9d02c0-SEA
content-encoding: gzip

7
Thanks fir the API!
7
Image

Written in C# - Private use only
7
I built a simple Discord bot that uses this API, source is available here: https://github.com/Synse/dclone-discord

It's very basic but does everything I need for now. Pull requests welcome.

Image
7
synse wrote: 5 months ago
I built a simple Discord bot that uses this API, source is available here: https://github.com/Synse/dclone-discord

It's very basic but does everything I need for now. Pull requests welcome.

Image
Will I be able to install this without having any knowledge of installing bots in the discord?
7
Just for the record (and to provide an example implementation for those merely curious):
Thank you Teebling, for making this all possible (and in record time)!
No more need to constantly alt tab (if not to actively report). No need to refresh the tracker on my phone browser in the other room. Not even a need to read the app itself actually because the variable audio alert tells me everything I need to know about current progress. Got different alerts playing in different rooms at different volumes for different events now. :)
A day well wasted!


Side note:
Sadly, I have for now custom-built this in a way that has it very much tied directly into my rig setup and different audio output options and the like and have it very much tailored specifically to my personal needs. As a result, this is not something that can realistically be shared in any meaningful way. To do that would also require me to further dust off my coding skills again to bring it up to my personal "public release quality standards". So...maybe, at some point, if noone else takes care of a solid stand-alone solution. But for now, 'tis a matter of lacking time I'm afraid.


Edit:
Updated screenshot to current version. Now comes with progression and correction differentiation as well as built-in report validation to avoid trolls triggering alerts. :)
7
I've made a working android app that notifies you when the status goes up. Needs some polish but its working well. I'll post here when I release it.

https://armlesswunder.github.io/

I don't do trades for less than
Pul
value. Also accept any
Key
or 9 Pgems in place of a
Pul
. NON-LADDER ONLY!!
7
Hello everyone!

I also had my try at a Discord bot: https://github.com/fredericojordan/d2clonebot

It implements a !uberdiablo command and gives out proactive status updates.

I'm hosting a version of the bot (for now), so you can easily add it by adding it through this link (no proactive reports this way though).

I took some ideas from synse's implementation (thanks for that!).
It now fits my needs, so I don't know how much more time I'm willing to invest on it, but I'm sharing it here since some of you might extend it and use it any way you'd like.
7
For those who enjoy Telegram :)

Just enable notifications on your phone :)

Image

https://t.me/dclonetracker

Checks local API every minute and sends notifications to the channel in case anything changes. No changes = Silence.

Works for all regions, non ladder, softcore. Other notifications variants are coming a bit later.
9

Advertisment

Hide ads
999

Greetings stranger!

You don't appear to be logged in...

No matches
diablo2.io is supported by ads
 

 

 

 

Value:
Hide ads forever by supporting the site with a donation.

Greetings adblocker...

Warriv asks that you consider disabling your adblocker when using diablo2.io

Ad revenue helps keep the servers going and supports me, the site's creator :)

A one-time donation hides all ads, forever:
Make a donation