#### Repository https://github.com/artolabs/steemax <center> ![steemax_1.5_update.png](https://cdn.steemitimages.com/DQmRpit8PCEvUnhfF8pZvQbKrynpwWuJL5X8Rf1owgKRNeg/steemax_1.5_update.png) </center> ##### [SteemAX](https://steemax.trade) helps minnow content-creators and whale curators by automating an exchange of upvotes between their quality blog posts, allowing both 1 to 1 as well as disproportional exchanges that grant bigger curations, better support than a bid bot, and the long-term support they both deserve. # Batch Processing Although a user must still complete a Captcha in order to create each new invite, they can now accept, send and cancel all their exchanges with one button. This greatly aides the user in speeding up the process, but still ensures that spammers are deterred. Batch processing uses Steem Connect in the same manner as for sending, accepting or canceling a single invite, and simply modifies the memo field to include a delineated list of all the commands to be processed. The user simply clicks the Send All, Accept All or Cancel All button, and when they are redirected to Steem Connect they can see the total SBD needed to be sent in order to process all the transactions ($0.001 per transaction). SteemAX never takes a fee and the amount sent is used to forward messages to the other party via the memo field in an SBD send. This is a much more polite way to send an invitation than posting a comment. <center> ![sendall.png](https://cdn.steemitimages.com/DQmct4YgMtnV3kfGu2k5iMr7ec7xPWQQJ9S3VV71VATVUSH/sendall.png) </center> #### To accomplish this: Batch processing of actions can be done manually or on the website. Separate actions can be bundled into a batch by simply connecting them together with an underscore ( _ ). ``` 95668782990251425900461858022559:start_36294926653274271029985954993428:start_89481516139033791344673789303206:start ``` The `parse_memo` function now parses the memo by splitting it on the underscore delineator, then splitting again on the semicolon delineator, into a list of dictionaries, each dictionary stores the `memoid`, action to be commenced, along with the ratio, percentage and duration if it is a barter. ``` def parse_memo(self, memo=None): """ Parses the memo message in a transaction for the appropriate action. """ memodict = {} memos = [] self.memolist = [] if re.search(r'_', memo): try: memos = memo.split("_") # A broad exception is used because any exception # should return false. except: self.msg.error_message("Unable to parse memo. Error code 1.") return False else: memos.append(memo) for i in range(0, len(memos)): if i == len(memos): break try: memo_parts = memos[i].split(":") # A broad exception is used because any exception # should return false. except: self.msg.error_message("Unable to parse memo. Error code 2.") return False # Everything from the outside world is # filtered for security and added to a dictionary memodict['memoid'] = sec.filter_token(memo_parts[0]) if len(memo_parts) == 2: memodict['action'] = sec.filter_account(memo_parts[1]) elif len(memo_parts) == 5: memodict['action'] = sec.filter_account(memo_parts[1]) memodict['percentage'] = sec.filter_number(memo_parts[2]) memodict['ratio'] = sec.filter_number(memo_parts[3], 1000) memodict['duration'] = sec.filter_number(memo_parts[4], 365) else: self.msg.error_message("Unable to parse memo. Error code 3.") return False # The dictionary is added to a list self.memolist.append(memodict.copy()) return True ``` After the memo has been parsed, transactions are sent to receiving parties based on the content of the list of dictionaries. ``` elif self.memolist[i]['action'] == "start": self.react.start(acct1, acct2, self.memofrom, rstatus, self.memolist[i]['memoid']) elif self.memolist[i]['action'] == "cancel": self.react.cancel(self.memofrom, self.memolist[i]['memoid'], rstatus, acct2) elif self.memolist[i]['action'] == "accept": self.react.accept(acct1, acct2, self.memofrom, rstatus, self.memolist[i]['memoid']) elif self.memolist[i]['action'] == "barter": self.react.barter(acct1, acct2, self.memolist[i]['memoid'], self.memofrom, rstatus, self.memolist[i]['percentage'], self.memolist[i]['ratio'], self.memolist[i]['duration']) ``` On the website javascript code was created to concatenate the command strings into one memo, and to calculate the cost of sending each each action to each receiving party. Along with this is code that determines if the buttons should be seen: no need to display a send-all button if there's nothing to send! ``` function sendAll(command) { regex = new RegExp('[^A-Za-z0-9\\:\\.]', 'g'); var ids; if (command === "accept") { ids = document.getElementById("allacceptids").value.split(","); } else if (command === "start") { ids = document.getElementById("allsendids").value.split(","); } else if (command === "cancel") { ids = document.getElementById("allcancelids").value.split(","); } var memoid = document.getElementById("memoid"+ids[0]).value.replace(regex, ''); memo = memoid+":"+command; for(i=1;i<ids.length;i++) { memoid = document.getElementById("memoid"+ids[i]).value.replace(regex, ''); memo += "_"+memoid+":"+command; } sendamount = ids.length / 1000; var url = "https://steemconnect.com/sign/transfer?from="+myaccountname+"&to=steem-ax&amount="+sendamount+"%20SBD&memo="+memo+"&redirect_uri=https://steemax.info/@"+myaccountname; window.location = (url); } function showAllButtons() { var acceptids = document.getElementById("allacceptids").value.split(","); var sendids = document.getElementById("allsendids").value.split(","); var cancelids = document.getElementById("allcancelids").value.split(","); if (sendids.length > 1) { document.getElementById("sendall-button").style.display = 'block'; } if (acceptids.length > 1) { document.getElementById("acceptall-button").style.display = 'block'; } if (cancelids.length > 1) { document.getElementById("cancelall-button").style.display = 'block'; } } ``` <br> #### [Commit #5dd6723](https://github.com/ArtoLabs/SteemAX/commit/5dd6723df8afe43b7316804fc3431043cd96dd45) #### Technology Stack SteemAX is written to use Python 3.5 and MySQL. The web interface for https://steemax.trade and https://steemax.info has been written in HTML, CSS and Javascript. #### Roadmap In the future more contributors will be brought into the fold via Task Requests to help improve the functionality of the site and most especially the look and feel. After all, projects always benefit from the synergistic action of teamwork. #### Contact Please contact Mike (Mike-A) on Discord https://discord.gg/97GKVFC #### GitHub Account https://github.com/artolabs
post_id | 67,158,803 |
---|---|
author | learnelectronics |
permlink | steemax-1-5-send-all-accept-all-and-cancel-all-auto-exchange-invitations |
category | utopian-io |
json_metadata | {"format":"markdown","app":"steemit\/0.1","image":["https:\/\/cdn.steemitimages.com\/DQmRpit8PCEvUnhfF8pZvQbKrynpwWuJL5X8Rf1owgKRNeg\/steemax_1.5_update.png"],"tags":["utopian-io","development","steemax","steemit","python"],"links":["https:\/\/github.com\/artolabs\/steemax","https:\/\/steemax.trade","https:\/\/github.com\/ArtoLabs\/SteemAX\/commit\/5dd6723df8afe43b7316804fc3431043cd96dd45","https:\/\/steemax.info","https:\/\/discord.gg\/97GKVFC","https:\/\/github.com\/artolabs"]} |
created | 2018-12-08 15:42:09 |
last_update | 2018-12-08 15:42:09 |
depth | 0 |
children | 5 |
net_rshares | 33,767,402,284,339 |
last_payout | 2018-12-15 15:42:09 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 15.661 SBD |
curator_payout_value | 4.861 SBD |
pending_payout_value | 0.000 SBD |
promoted | 0.000 SBD |
body_length | 7,547 |
author_reputation | 15,488,166,189,124 |
root_title | "SteemAX 1.5 ~ Send All, Accept All and Cancel All Auto Exchange Invitations" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 SBD |
percent_steem_dollars | 10,000 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
arcange | 0 | 23,811,804,584 | 3% | ||
raphaelle | 0 | 1,432,736,934 | 3% | ||
dylanhobalart | 0 | 5,748,152,443 | 15% | ||
shawnalchemi | 0 | 660,637,210 | 100% | ||
elviento | 0 | 525,458,842 | 0.91% | ||
grider123 | 0 | 10,695,034,590 | 100% | ||
jga | 0 | 2,019,926,407 | 12.01% | ||
haiyangdeperci | 0 | 6,872,252,402 | 20% | ||
codingdefined | 0 | 7,795,282,159 | 7.5% | ||
bachuslib | 0 | 21,376,153,392 | 100% | ||
leir | 0 | 1,993,478,232 | 50% | ||
accelerator | 0 | 17,517,040,526 | 1.29% | ||
jecminek | 0 | 4,026,198,604 | 100% | ||
jozef230 | 0 | 17,494,233,911 | 33% | ||
mcfarhat | 0 | 17,776,168,836 | 20.81% | ||
birddroppings | 0 | 2,093,029,980 | 10% | ||
martusamak | 0 | 2,195,821,109 | 20% | ||
pataty69 | 0 | 7,511,608,768 | 20% | ||
utopian-io | 0 | 31,768,317,060,102 | 24.03% | ||
jaff8 | 0 | 94,440,890,404 | 52.03% | ||
scipio | 0 | 79,493,624,872 | 33.33% | ||
greenorange | 0 | 548,966,007 | 100% | ||
amosbastian | 0 | 117,354,270,687 | 52.03% | ||
tdre | 0 | 16,790,973,789 | 100% | ||
asaj | 0 | 10,869,872,286 | 52.03% | ||
artopium | 0 | 4,971,932,912 | 94% | ||
jjay | 0 | 419,965,179 | 100% | ||
dnitz50 | 0 | 397,947,691 | 100% | ||
eddiespino | 0 | 4,471,298,393 | 5% | ||
artturtle | 0 | 77,800,276,633 | 80% | ||
micaelacf | 0 | 755,217,105 | 20% | ||
hakancelik | 0 | 32,140,408,443 | 50% | ||
effofex | 0 | 77,559,137 | 0.64% | ||
chichsopurve | 0 | 483,226,287 | 100% | ||
suppdercaga | 0 | 536,161,265 | 100% | ||
pisderscompe | 0 | 536,997,759 | 100% | ||
aleindium | 0 | 510,174,584 | 100% | ||
steem-ax | 0 | 2,177,777,275 | 100% | ||
nieloagranca | 0 | 3,068,948,957 | 4% | ||
jessicaolmuf | 0 | 512,161,016 | 100% | ||
taylory | 0 | 530,057,433 | 100% | ||
nicole5lw | 0 | 518,249,601 | 100% | ||
victoriau7tp | 0 | 532,822,308 | 100% | ||
steemchoose | 0 | 21,180,553,099 | 1.05% | ||
muffintwinning | 0 | 510,392,796 | 100% | ||
grouseunhelpful | 0 | 510,366,671 | 100% | ||
duarte9sousa | 0 | 1,991,375,669 | 2% | ||
munhenhos | 0 | 1,379,731,672 | 20% | ||
photocirclebot | 0 | 136,744,066 | 5% | ||
rachelgimpy | 0 | 529,843,562 | 100% | ||
bhaski | 0 | 1,703,632,381 | 20% | ||
icathadty1989 | 0 | 539,486,601 | 100% | ||
coahochsvisi | 0 | 512,738,099 | 100% | ||
climdislittpres | 0 | 536,293,975 | 100% | ||
trandisptivi | 0 | 515,214,027 | 100% | ||
merlin7 | 0 | 22,959,530,624 | 0.94% | ||
nfc | 0 | 22,459,878,845 | 3% | ||
solocult | 0 | 284,392,736 | 100% | ||
curbot | 0 | 2,240,772,213 | 100% | ||
stmpay | 0 | 3,351,610,724 | 1.21% | ||
observedkey | 0 | 513,944,067 | 100% | ||
sparrowcricket | 0 | 513,924,862 | 100% | ||
bootedchork | 0 | 513,938,655 | 100% | ||
ampereepoch | 0 | 513,944,474 | 100% | ||
tommyknockers | 0 | 1,207,881,549,904 | 100% | ||
bitok.xyz | 0 | 8,869,534,976 | 1% | ||
manicesoteric | 0 | 787,096,818 | 100% | ||
whitebot | 0 | 96,663,933,769 | 5% |
### Thank you learnelectronics! You've just received an upvote of 80% by @ArtTurtle! <a href="https://steemit.com/art/@artopium/artturtle-will-upvote-each-and-every-one-of-your-art-music-posts"> <img src="https://steemitimages.com/0x0/https://cdn.steemitimages.com/DQmT74pZRACxgYK9JcfU3u22qLuJmUgSQsbwoPksykT8YGA/artturtlead.png"></a> ### [Learn how I will upvote each and every one of *your* art and music posts](https://steemit.com/art/@artopium/artturtle-will-upvote-each-and-every-one-of-your-art-music-posts) Please come visit me as I've updated my daily report with more information about my upvote value and how to get the best upvote from me.
post_id | 67,159,397 |
---|---|
author | artturtle |
permlink | re-steemax-1-5-send-all-accept-all-and-cancel-all-auto-exchange-invitations-20181208t160025 |
category | utopian-io |
json_metadata | {} |
created | 2018-12-08 16:00:24 |
last_update | 2018-12-08 16:00:24 |
depth | 1 |
children | 0 |
net_rshares | 0 |
last_payout | 2018-12-15 16:00:24 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 SBD |
curator_payout_value | 0.000 SBD |
pending_payout_value | 0.000 SBD |
promoted | 0.000 SBD |
body_length | 653 |
author_reputation | 18,812,410,398,491 |
root_title | "SteemAX 1.5 ~ Send All, Accept All and Cancel All Auto Exchange Invitations" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 SBD |
percent_steem_dollars | 10,000 |
Thank you for your contribution. It is nice to see continuous development on the project. You said version is 1.5 but in your source code, you change it to 1.4.2 - which seems a bit odd to me. It is also worth separating your changes in a few commits and create a PR and merge which will keep your master branch history a bit clean. Your contribution has been evaluated according to [Utopian policies and guidelines](https://join.utopian.io/guidelines), as well as a predefined set of questions pertaining to the category. To view those questions and the relevant answers related to your post, [click here](https://review.utopian.io/result/3/2-3-2-2-2-2-2-). ---- Need help? Write a ticket on https://support.utopian.io/. Chat with us on [Discord](https://discord.gg/uTyJkNm). [[utopian-moderator]](https://join.utopian.io/)
post_id | 67,166,299 |
---|---|
author | justyy |
permlink | re-learnelectronics-steemax-1-5-send-all-accept-all-and-cancel-all-auto-exchange-invitations-20181208t194508924z |
category | utopian-io |
json_metadata | {"app":"steemit\/0.1","tags":["utopian-io"],"links":["https:\/\/join.utopian.io\/guidelines","https:\/\/review.utopian.io\/result\/3\/2-3-2-2-2-2-2-","https:\/\/support.utopian.io\/","https:\/\/discord.gg\/uTyJkNm","https:\/\/join.utopian.io\/"]} |
created | 2018-12-08 19:45:12 |
last_update | 2018-12-08 19:45:12 |
depth | 1 |
children | 2 |
net_rshares | 16,311,390,259,362 |
last_payout | 2018-12-15 19:45:12 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 7.531 SBD |
curator_payout_value | 2.441 SBD |
pending_payout_value | 0.000 SBD |
promoted | 0.000 SBD |
body_length | 831 |
author_reputation | 2,057,469,156,047,835 |
root_title | "SteemAX 1.5 ~ Send All, Accept All and Cancel All Auto Exchange Invitations" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 SBD |
percent_steem_dollars | 10,000 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
happyukgo | 0 | 507,212,803 | 25% | ||
codingdefined | 0 | 7,891,545,159 | 7.5% | ||
superbing | 0 | 2,106,540,448 | 25% | ||
dailyfortune | 0 | 35,771,659 | 25% | ||
dailystats | 0 | 5,784,235,288 | 25% | ||
utopian-io | 0 | 16,028,281,250,752 | 11.06% | ||
jaff8 | 0 | 88,252,188,620 | 50% | ||
amosbastian | 0 | 52,718,766,894 | 23.31% | ||
interfecto | 0 | 6,797,035,610 | 18% | ||
organicgardener | 0 | 7,626,713,357 | 25% | ||
dailychina | 0 | 5,852,581,862 | 25% | ||
reazuliqbal | 0 | 5,624,019,471 | 5% | ||
mightypanda | 0 | 87,372,889,639 | 60% | ||
turtlegraphics | 0 | 2,508,767,874 | 25% | ||
fastandcurious | 0 | 1,894,134,942 | 60% | ||
witnesstools | 0 | 2,418,766,483 | 25% | ||
mariita52 | 0 | 0 | 100% | ||
ilovecoding | 0 | 2,400,908,363 | 25% | ||
steemfuckeos | 0 | 1,567,228,326 | 25% | ||
linknotfound | 0 | 1,203,323,740 | 100% | ||
monster-inc | 0 | 546,378,072 | 100% |
Yeah, I just forgot to update the version number on github, which has been done now. As for the commit: I did half the work for half the reward. I think it's fair. If either the price of Steem increases or Utopian modifies its upvote strategy to accommodate the price of steem then they might see a match between the actual output of quality and that which seems expected.
post_id | 67,233,475 |
---|---|
author | learnelectronics |
permlink | re-justyy-re-learnelectronics-steemax-1-5-send-all-accept-all-and-cancel-all-auto-exchange-invitations-20181210t113000185z |
category | utopian-io |
json_metadata | {"app":"steemit\/0.1","tags":["utopian-io"]} |
created | 2018-12-10 11:30:00 |
last_update | 2018-12-10 11:30:51 |
depth | 2 |
children | 0 |
net_rshares | 0 |
last_payout | 2018-12-17 11:30:00 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 SBD |
curator_payout_value | 0.000 SBD |
pending_payout_value | 0.000 SBD |
promoted | 0.000 SBD |
body_length | 372 |
author_reputation | 15,488,166,189,124 |
root_title | "SteemAX 1.5 ~ Send All, Accept All and Cancel All Auto Exchange Invitations" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 SBD |
percent_steem_dollars | 10,000 |
Thank you for your review, @justyy! Keep up the good work!
post_id | 67,271,677 |
---|---|
author | utopian-io |
permlink | re-re-learnelectronics-steemax-1-5-send-all-accept-all-and-cancel-all-auto-exchange-invitations-20181208t194508924z-20181211t074511z |
category | utopian-io |
json_metadata | {"app":"beem\/0.20.9"} |
created | 2018-12-11 07:45:12 |
last_update | 2018-12-11 07:45:12 |
depth | 2 |
children | 0 |
net_rshares | 0 |
last_payout | 2018-12-18 07:45:12 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 SBD |
curator_payout_value | 0.000 SBD |
pending_payout_value | 0.000 SBD |
promoted | 0.000 SBD |
body_length | 58 |
author_reputation | 152,913,012,544,965 |
root_title | "SteemAX 1.5 ~ Send All, Accept All and Cancel All Auto Exchange Invitations" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 SBD |
percent_steem_dollars | 10,000 |
Hey, @learnelectronics! **Thanks for contributing on Utopian**. Weβre already looking forward to your next contribution! **Get higher incentives and support Utopian.io!** Simply set @utopian.pay as a 5% (or higher) payout beneficiary on your contribution post (via [SteemPlus](https://chrome.google.com/webstore/detail/steemplus/mjbkjgcplmaneajhcbegoffkedeankaj?hl=en) or [Steeditor](https://steeditor.app)). **Want to chat? Join us on Discord https://discord.gg/h52nFrV.** <a href='https://steemconnect.com/sign/account-witness-vote?witness=utopian-io&approve=1'>Vote for Utopian Witness!</a>
post_id | 67,190,765 |
---|---|
author | utopian-io |
permlink | re-steemax-1-5-send-all-accept-all-and-cancel-all-auto-exchange-invitations-20181209t120435z |
category | utopian-io |
json_metadata | {"app":"beem\/0.20.9"} |
created | 2018-12-09 12:04:36 |
last_update | 2018-12-09 12:04:36 |
depth | 1 |
children | 0 |
net_rshares | 0 |
last_payout | 2018-12-16 12:04:36 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 SBD |
curator_payout_value | 0.000 SBD |
pending_payout_value | 0.000 SBD |
promoted | 0.000 SBD |
body_length | 598 |
author_reputation | 152,913,012,544,965 |
root_title | "SteemAX 1.5 ~ Send All, Accept All and Cancel All Auto Exchange Invitations" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 SBD |
percent_steem_dollars | 10,000 |