Bitcoin Forum
September 24, 2024, 01:27:41 PM *
News: Latest Bitcoin Core release: 27.1 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 2 3 [4] 5 6 »
61  Other / Meta / Users that you should merit on: July 13, 2019, 04:29:22 PM
Credit for inspiration goes to DdmrDdmr. I'm taking a slightly different approach, i.e. instead of re-meriting users that I have already merited, I'm looking for users that earned a lot of merits but I never merited them. And I'm not trying to break any merit sending records, simply looking for users who might deserve merits.

If you would like to get a list of users based on publicly available criteria (without analyzing the contents of posts) - post a request in the thread and I'll do my best. For example:

1) Users who earned more than N merits but you never merited them. N = 100 is ~700 users, N = 30 is ~2000 users.
2) Users who earned more than N merits since date D.
3) Users who earned more than N merits on high-quality boards X, Y, and Z.
4) Users who earned less than N merits, never posted on spam boards X, Y, and Z, made at least K posts since date D.

etc. The list will be limited to 100 users so please choose a sort order as well.

See a sample list below. Note that the "Ban" column is likely inaccurate since I can't reliably track unbanned users nor signature bans. Make sure to check user profile and BPIP.

Thanks to LoyceV and Vod for their sites.
62  Economy / Reputation / Can a DT member (or any member) oppose their own flag? on: June 14, 2019, 07:42:57 PM
I think this question was touched upon in the main flag discussion thread but I lost track of it due to off topic posts and personal squabbles. That, and the fact that all my off topic reports are still unhandled Wink, prompted me to create this thread and make it self-mod.



I'm not aware of any DT members having a real flag. iasenko put one on himself, clearly a mixup of some sort. It did expose one important detail though: the system allows any user to oppose (or support too I guess) a flag that has been put on them.

So let's say that happens for real, and it likely will eventually: someone flags a DT member. Is it ok for that member to oppose such flag?

Keep in mind a few aspects of this:

  • DT member's support or opposition carries more weight. For example, if you flag a non-DT-member with the guest/newbie flag, you would need at least one DT member to support it in order for the flag to reach most of their intended audience (guests and newbies without custom trust lists). But if you flag a DT member with the same guest/newbie flag, you need to get at least two other DT members to support the flag, if we assume that the target will oppose it.
  • Getting other DT members to support a flag against a DT member might be an uphill battle, and getting two supports even more so.
  • Other self-serving actions - such as meriting or sending trust feedback to yourself - are not allowed. Meriting your alts, trusting your alts, etc is heavily frowned upon.
  • Does it matter only for DT members or for everyone? If we prevent only DT members from doing so then it puts them at a slight disadvantage to everyone else.
  • LoyceMobile: Someone on DT1 can also include or exclude a user who left him feedback (positive or negative). Isn't that more or less the same thing?
  • LoyceMobile: If the DT1 is guilty, he'll shouldn't be on DT, and once he's excluded his opposing vote loses it's power.

Anything else that should be considered?



Self-moderated thread. Please stay on topic. There are plenty of drama threads already so if you want to say something unpleasant to another user please use one of those threads or hold your peace.
63  Economy / Reputation / Quickseller is a dangerous person to deal with - avoid on: June 13, 2019, 12:35:15 PM
This a thread to substantiate a warning flag on Quickseller. I believe that if you engage in any kind of deal with Quickseller, or even as much as debate him on a forum topic, you risk being attacked via frivolous accusations with the intent to damage your reputation and your ability to conduct business on the forum. This may happen for any reason, such as the deal not going the way Quickseller expected, or no particular reason at all.

Exhibit A

Quickseller was hired then fired as a participant in a signature campaign managed by Hhampuz. Shortly after being fired he launched an unsubstantiated scam accusation against Hhampuz. Quickseller is not a victim or otherwise affected by the alleged scam, there is no proof, and it is based on the mere fact of coins being moved by Hhampuz. Despite the extremely flimsy basis Quickseller makes bold claims such as "Hhampuz has stolen the excess money from the BestMixer campaign for his own personal use". Note that he didn't use the trust system (old or new) to label Hhampuz and when called out on this he said this:

I did not say that I wanted others to tag him as a scammer. I said I believe him to be a scammer, and the reason he has not been tagged is due to tribalism.

I do think he should be tagged, but due to the trust system being broken, I don't think anyone tagging him will have any affect any anything. In lieu of tagging him, I will leave this thread open and any potential customers of his (and his current customers) can look at the evidence themselves, including the fact that many of those defending him are being paid his advertisers money by him.

Which makes me think he's seeking to damage HH's business and doesn't have an actual concern or proof of a scam, which would necessitate feedback/flag.

Exhibit B

Quickseller took a 20 BTC payment from a known scammer to sue Vod, whose "crime" was to suggest that Quickseller should repay victims of his (Quickseller's) escrow scam. Eventually Quickseller failed to sue and claims to have returned part of the payment.

Quickseller has also repeatedly posted unfounded allegations against Vod that originated from a known shady website specializing in extorting targets of such allegations.

Exhibit C

Quickseller accused Lauda of having a pill addiction. Quickseller's conflicts with Lauda are numerous, proof of addiction is non-existent to the point where Quickseller was claiming that Lauda's lack of denial was proof and that other users trying to dispute the frivolous accusation were Lauda's alts.

Exhibit D

Quockseller accused dooglus of supporting a Ponzi scheme with the alleged reasons being that dooglus fixed a bug in open-source code used by a Ponzi site. The accusation was an attempt to put pressure on dooglus (a DT1 member at the time) to exclude Vod and/or cryptodevil who both had posted negative trust ratings for Quickseller, as well as for dooglus' role in the tspacepilot conflict (see below).

Later Quickseller accused dooglus and other users of condoning violence just because they included a person Quickseller doesn't like (and who in Quickseller's opinion threatened him) in their trust lists. A few years later Quickseller edited the thread to remove the accusation.

Exhibit E

Quickseller used his later-exposed alt Panthers52 to argue in his dispute against tspacepilot pretending he's someone else as can be seen from references to himself in the 3rd person. Later Quickseller faked a ban in an apparent attempt to give himself and/or his alts more credibility.

Exhibits F through Z

More examples of Quickseller's retaliatory destructive actions:

https://bitcointalk.org/index.php?topic=5153872.msg51462407#msg51462407



Flag: https://bitcointalk.org/index.php?action=trust;flag=79
64  Other / Meta / PM from admin demanding to exclude a certain user on: June 12, 2019, 09:00:43 PM
Since the "Lauda PM" is now public knowledge let me just state that this sort of thing - forum owner/admin sending a PM demanding "recommending" to exclude a certain user from my trust network - is deeply unwelcome. Theymos can blacklist anyone he wants, there is no need for him to coerce others into doing this. At the very least this call for action should have been done publicly. I want to put this out in case anyone wants to exclude (or blacklist  Wink) me for this opinion.

If you're not quite familiar with the events, please read cryptodevil's excellent write-up.

Not sure if this is more a Meta topic or a Reputation topic, feel free to move as appropriate.
65  Other / Meta / Let me be the first to start a bitching thread about the flags on: June 12, 2019, 12:33:37 PM
1

I wish the "#" would be more prominent though, and the less-than-3-supporters contract violation flags had some sort of indicator too. Not red and scary, just more visible.

Here is roughly what I had in mind:

Loading...
Edited 2020-11-30 to fix a broken image

Instead of the current:

Loading...
Edited 2020-11-30 to fix a broken image

I think non-guests and non-newbies deserve a better warning than the tiny inconspicuous "#".

The answer is "no".



2

Add a one-click option to convert an old (pre-flag-system) red trust rating to a newbie/guest yellow box flag. There are many of those ratings with proper references that really should be visible to guests. All other rules would still apply, it would be just a shortcut to make it easier for some folks who look out for scams in Marketplace, ANN/ICO dumpster, etc and would likely be adding hundreds of these flags now.



3

Color confusion. The count of red ratings should be red, not orange. The "+" / "-" signs should be the same color. The green should be more green (not sure if it still turns dark green at a certain value like it used to be). For example:

+2 / =1 / -10

instead of

+2 / =1 / -10



4

More color confusion. The newbie flag (the "yellow box") has this wording:

"... This determination is based on concrete red flags which any knowledgeable & reasonable forum user should agree with ..."

The "red flags" part trips my OCD alarm. I know it's figurative but still. Plus there might be some cultural misinterpretations. I think it should be replaced with "warning signals" or "danger signs" or something like that.
66  Economy / Reputation / Quickseller vs cleaning up the forum on: June 08, 2019, 09:19:03 PM
I'm getting tired of Quicksy polluting unrelated threads with personal attacks and frivolous accusations related to my efforts to report plagiarised posts to moderators. I will not engage him on this topic elsewhere except to redirect to this thread.
67  Economy / Reputation / Tomatocage wakes up, posts a ref link... be careful on: June 06, 2019, 10:52:31 PM
Edit June 10: Tomatocage signed a message with an old address from March 2015:

Bare sig (Bitcoin-QT compatible):
Address: 1FLnpvdXL6ooBpFj2LHqZxQsrxn2voj5uv (from https://bitcointalk.org/index.php?topic=996318.msg10820715#msg10820715)
Message: Tomatocage June 10th, 2019
Signature: HAg+ZTakWF8zt6Q8PrdF2x+dVJpmXx2uuDuyMmZbj1zDAj1sAD4mfvPRudH/KgD2fKIKv1NkQO9B0T5lY5nIsx8=

https://bitcointalk.org/index.php?action=trust;u=37522

Loading...
Edited 2020-11-30 to fix a broken image

Loading...
Edited 2020-11-30 to fix a broken image

https://bitcointalk.org/index.php?topic=5151461.msg51376254#msg51376254
http://archive.is/rog7J#selection-3231.0-3231.16

Loading...
Edited 2020-11-30 to fix a broken image

Don't know what to think here.

Or here:

https://bitcointalk.org/index.php?action=merit;u=37522

Loading...
Edited 2020-11-30 to fix a broken image
68  Economy / Services / Stitch is selling out (suchmoon's avatar for rent) - make an offer [sold] on: May 17, 2019, 07:11:57 PM
Update May 20: currently renting out to Foxpup's Merit Cycling Club.



I've had a donkey avatar, "girl power", "snitches get stitches" (the current one) - all based on something someone told me and I decided to embrace it. E.g. cyberpinoy called me a donkey for digging into his pseudo-ponzi scam.

So in that respect nothing is changing, EXCEPT now I want money for telling me what to wear as my avatar. AKA avatar space for rent.

The reason for that is purely financial. I'm involved in what could be considered a service to the community and there are some expenses (details available to serious bidders on request). I've been footing those bills on my own for the last ~year but my SO got a hold of the last one... long story short, that's no longer a viable option Wink

Please make an offer. I have no idea what the avatar is worth. I would prefer a monthly flat rate paid upfront but will entertain any reasonable offers. BTC only. I can't make any commitment for a minimum number of posts but it would likely be in the 100-300 a month range. I'm hanging out mostly in Meta and Rep these days.

No NSFW, scammy, rule-breaking stuff, or anything else that I don't like - at my discretion. I can end the deal for any reason or no reason, same for the counterparty. If I end it I'd refund pro-rated prepayment, if any.
69  Economy / Reputation / Who's your forum bestie? Make a guess and I'll prove you wrong. Probably. on: April 25, 2019, 03:16:50 PM
So who's that forum user you can't live without, the one you just can't stop chatting with, all through the night?

Make a post in this thread with the name of the user who you think is your BFF and I will mathematically show how wrong you are.

To prevent LoyceV from cheating I will not disclose my super-secret Friendship Assessment and Investigation Logic until I get a few lab rats in this experiment.

I'm counting how many times you quoted someone. Only valid (properly closed, pointing to a Bitcointalk post) quotes are counted, and only the first level (if you quote Alice and she quotes Bob - Bob's not your friend). Quotes of deleted posts get counted too but name changes don't, so if you're friends with TradeFortress - no one will ever know.

The person you quoted the most is obviously your best friend as I can't think of any other reason why you would insist on talking to someone so much Grin.

Amendment: when a post is split-quoted it will count only once.

I'll start.



I think my best friend on this forum is WildShark.



FAIL:


   #  Friend                     Quotes       %
   1. korvas128                     474    2.99
   2. WildShark                     421    2.65
   3. Quickseller                   234    1.47
   4. cryptohunter                  204    1.28
   5. suchmoon                      175    1.10
   6. Paul Revere                   152    0.96
   7. Gleb Gamow                    151    0.95
   8. digaran                       149    0.94
   9. o0o0                          124    0.78
  10. TECSHARE                      111    0.70


Close though.



Your turn. Please keep in mind that this takes hours to calculate so for best results make your post and come back tomorrow to check.

Let's keep it clean and on the topic of friendship.



Completed requests
(some posts contain multiple lists - scroll down if you click the link and don't see yours)

LoyceV: https://bitcointalk.org/index.php?topic=5136072.msg50773013#msg50773013
Foxpup: https://bitcointalk.org/index.php?topic=5136072.msg50773686#msg50773686
actmyname: https://bitcointalk.org/index.php?topic=5136072.msg50773686#msg50773686
nutildah: https://bitcointalk.org/index.php?topic=5136072.msg50773990#msg50773990
bones261: https://bitcointalk.org/index.php?topic=5136072.msg50774376#msg50774376
cabalism13: https://bitcointalk.org/index.php?topic=5136072.msg50774608#msg50774608
DireWolfM14: https://bitcointalk.org/index.php?topic=5136072.msg50775821#msg50775821
stompix: https://bitcointalk.org/index.php?topic=5136072.msg50775821#msg50775821
Last of the V8s: https://bitcointalk.org/index.php?topic=5136072.msg50775887#msg50775887
Lauda: https://bitcointalk.org/index.php?topic=5136072.msg50783664#msg50783664
akamit: https://bitcointalk.org/index.php?topic=5136072.msg50783664#msg50783664
DarkStar_: https://bitcointalk.org/index.php?topic=5136072.msg50783664#msg50783664
iasenko: https://bitcointalk.org/index.php?topic=5136072.msg50785749#msg50785749
Mitchell: https://bitcointalk.org/index.php?topic=5136072.msg50785749#msg50785749
Steamtyme: https://bitcointalk.org/index.php?topic=5136072.msg50785749#msg50785749
LFC_Bitcoin: https://bitcointalk.org/index.php?topic=5136072.msg50786579#msg50786579
Hhampuz: https://bitcointalk.org/index.php?topic=5136072.msg50786579#msg50786579
LoyceMobile: https://bitcointalk.org/index.php?topic=5136072.msg50786579#msg50786579
mikeywith: https://bitcointalk.org/index.php?topic=5136072.msg50787624#msg50787624
DdmrDdmr: https://bitcointalk.org/index.php?topic=5136072.msg50787624#msg50787624
morvillz7z: https://bitcointalk.org/index.php?topic=5136072.msg50787624#msg50787624
bill gator: https://bitcointalk.org/index.php?topic=5136072.msg50800990#msg50800990
minifrij: https://bitcointalk.org/index.php?topic=5136072.msg50800990#msg50800990
asche: https://bitcointalk.org/index.php?topic=5136072.msg50801157#msg50801157
yogg: https://bitcointalk.org/index.php?topic=5136072.msg50801157#msg50801157
marlboroza: https://bitcointalk.org/index.php?topic=5136072.msg50802557#msg50802557
Royse777: https://bitcointalk.org/index.php?topic=5136072.msg50812703#msg50812703
TMAN: https://bitcointalk.org/index.php?topic=5136072.msg50824046#msg50824046
Piggy: https://bitcointalk.org/index.php?topic=5136072.msg50824046#msg50824046
Theb: https://bitcointalk.org/index.php?topic=5136072.msg50824046#msg50824046
r1s2g3: https://bitcointalk.org/index.php?topic=5136072.msg50824046#msg50824046
ICOEthics: https://bitcointalk.org/index.php?topic=5136072.msg50841057#msg50841057
70  Economy / Reputation / [Yet another Yobit topic because I'm a hypocrite] Yobit shitposting participants on: April 21, 2019, 06:02:50 PM
I said this in response to another user who started a Yobit topic:

Quote
Definitely no need for more threads. Lock and archive.

So obviously I'm gonna go ahead and create one myself Grin

My excuse is that the list of participants that I was posting in actmyname's thread has grown to 350 438 (!!!) and doesn't fit into one post anymore so to avoid derailing that thread - here it is.

These are users who have "1450 COINS" in their signature (i.e. likely a Yobit signature) and have posted recently. It's not 100% complete because I may have missed some posts or not retrieved some user profiles yet. It may take up to 24 hours for new participants to show up.

"Before" is the average number of posts per day between April 12 - 18 (before the start of the Yobit campaign) and "now" is the number of posts in the last 24 hours. "AvgLen" is the average number of characters per post, excluding quotes, in the last 24 hours. "Merit" is the total amount of earned merit.

Big thanks to Vod and LoyceV for their respective resources.

List removed due to theymos trashcanning the whole campaign.
71  Other / Meta / [SUCH GUIDE] Guaranteed method to earn many merits, statistically proven on: April 01, 2019, 12:17:29 AM
Introduction

Everyone wants merits, including those who pretend to not care. However I keep hearing that earning merits the usual way (by making good posts) is too hard. There must be an easier way.

User Name

Let's start at the beginning - your Bitcointalk account. Does your chance to earn merits depend on your username? Absolutely. First you need the username of an appropriate length. The median length of a merit-earning username is 9 characters.

The username itself matters too. For example, usernames starting with "m" or "s" earned 10 times more merits than those starting with "q" or "u". That's not all. Usernames having "o" or "a" as their second letter earned 50 times more merits than those with "z" or "f" as their second letter. Here are the best letters for all 9 positions of a median-length username:

Code:
m
a
e
a
e
o
a
n
e

Post Length

No matter how good your post is, it won't get merits if the merit-sending person falls asleep halfway through it or the post is so short it just scrolls by in a blink of an eye. The median length of a merit-earning post is 549 characters.

Words

Obviously the content of the post matters too. Here are the top merit-earning words (after removing stop words such as pronouns and conjunctions):

Code:
bitcoin
merit
color
member
post
users
new
btc
thread
people
like
time
yang
wallet
url
forum
get
use
trust
code
see
coin
size
make
link
good
mining
bounty
first
blockchain
address
even
need
account
crypto
think
many
list
know
signature
system
network
full
campaign
want
block
bitcointalk
using
miner
work

Conclusion

So there you have it. To earn thousands upon thousands of merits, all you need to do is:

  • Create a user account named "maeaeoane".
  • Make 549-character-long posts using the word list provided above.

Lifetime money-back no-questions-asked guarantee.



Edit: The original version of the post mistakenly claimed that letter "l" (lowercase "L") sucks bigly as the second letter of a username. It does suck but not as much as I claimed (not 50 times worse than "o" or "a" but only about 3-4 times). My apologies to the "l" but it's her own fault for being too similar to "1" (number one). It's been replaced by "z" in the example.
72  Economy / Reputation / marcotheminer - con[fidence] man on: March 19, 2019, 12:36:21 AM
Not sure how marcotheminer is able to weasel out of these shenanigans and get his reputation threads locked but I've had enough. Here's a new thread for all his bullshit.

https://bitcointalk.org/index.php?topic=5120044.msg50220744#msg50220744

What is the 3rd chance you are talking about? Why should 1 negative remain if I did not default nor scam?

I'm asking you to take a level-headed stance on this, if you speak with Roman you'll find he doesn't ask for any negatives to remain. Thank you.

You convinced me to revise the red rating I posted for you a week or so ago. Fair enough. That was your second chance. You blew it by being late on a loan. Therefore you're not getting a third chance from me.

It doesn't matter what your lender (who got repaid) says. It's about giving a fair warning to another person who might find themselves in this position.

Self-mod rules: serial posting, off topic BS, and other rule-breaking posts will be pulverized on sight to avoid wasting mods' time. Same with the hypertrolls (CH/Thule/et al).
73  Other / Meta / Stop animated images in FireFox / Tor browser / Chrome on: February 25, 2019, 03:16:01 PM
Update: forum no longer allows new animated PNG avatars, existing ones still remain.



Ok, I've had it with the animated avatar ads... so if you're irritated like me and don't mind missing out on an occasional meme here's how you disable them in FireFox / Tor:

Open a new tab and enter about:config in the address field. Confirm the grave warning that shows up. Search for "animation" and change the value of image.animation_mode to "none" to disable all animations, or to "once" to let them play one time (thanks to o_e_l_e_o for the tip).

Loading...
Edited 2020-11-30 to fix a broken image



Solution for Chrome:

For Google Chrome.

Animation Policy.
Author: Google Accessibility.

Quote
Run animations only once, or disable animation completely.
Disable image animation, or make animations run only once.

Works on all animated image formats and animated SVG. Does not affect video.


74  Other / Archival / My thread for Maggie on: February 21, 2019, 09:14:51 PM
Quote
The message body was left empty.
75  Economy / Reputation / What is Quickseller trying to hide? Gruesome stuff I'm sure. Hasn't denied it. on: February 12, 2019, 05:55:22 PM
Quickseller did some cleanup in this thread:

https://bitcointalk.org/index.php?topic=1614573.0

Quote
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic. (28 posts by 13 users with 4 merit deleted.)

Here is the thread before the cleanup: https://archive.fo/yuJyd

Seems like he was attacking multiple users but then decided to focus just on Vod.

And as you can obviously see, whatever accusations I'll come up with as a result of this thread, Quickseller has not denied them so they're all true.



Making this self-moderated due to assholes running around doxing people.
76  Economy / Reputation / Hate a DT1 member? Or two? All of them? Post your grievances here. UNMODERATED on: February 06, 2019, 03:35:09 PM
Just what the title says. Lay it all out. Keep that shit out of Meta.
77  Other / Meta / [HACK] One-click mod report, not for the faint of heart on: January 29, 2019, 12:09:55 AM
This originated here: https://bitcointalk.org/index.php?topic=5103283.msg49470283#msg49470283

And I completely support the idea raised by that thread, i.e. make it easier to report certain types of posts. But until/unless that feature gets implemented perhaps you'll find my approach useful.

Edit 2022-02-27: this extension has been updated, see this post for more details: https://bitcointalk.org/index.php?topic=5103488.msg59370767#msg59370767

Caveats

1. This is a browser extension. Never install browser extensions obtained from random strangers on the internet unless you know exactly what you're doing. I'm not responsible if this extension steals all your money and runs away with your spouse.

2. This is mostly-untested code. It's alpha quality at best. I gutted it out of a larger extension that I'm using for other purposes. Treat it as an example or an idea. Feel free to steal any bits and pieces that you like or do whatever you want with it.

3. It works in Firefox/Tor browser and may work in Chrome. Probably won't work in mobile browsers.

4. You must have some knowledge of how WebExtensions and Promises work in order to make sense of the code. I'll try to explain below but a proper tutorial is out of the scope of this thread.

How this works

This is a browser extension built using WebExtensions API and consists of two main parts:

  • bct-content.js: content script, a copy of which runs on every Bitcointalk page once the extension is installed. Depending on which page it is, the content script will perform different actions:
    • Adds a link to the list of your submitted moderator reports to site's main menu: Loading.... Note that this list will work only after you've submitted 300 successful ("Good") reports.
    • If you open the report list, the extension collects the list of reported posts (see below how it's used).
    • Inside threads, on Patrol page, and in user's post/thread history it either marks posts that have been reported (please note this tracks only posts reported by you and not other users, and it only shows the status as of the last refresh of the report list), or creates one-click buttons to report posts to moderators. Clicking one of the buttons sends a message to the other part of the extension, which handles queuing etc.

                Loading...
                OR
                Loading...

    • On the "Report to moderator" page it expands the comment field for better visibility. If the page was opened automatically by one of the above buttons, it inserts the pre-selected comment, waits a specified amount of time to comply with throttling, and clicks "Submit".
    • In the board view it closes the tab if it came from the automated post report, otherwise it does nothing.
  • bct-background.js: background script, which listens to messages from content scripts and for each message opens the "Report to moderator" in a new tab, which is then handled by the content script as described above. This is done without taking focus away from what you're doing so you can keep browsing and reporting other posts.

The code that runs between when you click your button and when the extension clicks the "Submit" button is wrapped in a Promise so it should succeed or fail as a whole. Please note though that the actual submission of the report is not verified, i.e. if there is a failure after "Submit" was clicked - Bitcointalk down, CF fire hydrant, etc - you'll have to double-check your report history to see if the report was submitted successfully.

If the code succeeds it will add a yellow border on the left side of the post being reported, if it fails - a red one. Styling is configurable in bct-content.css. o_e_l_e_o created a custom stylesheet for a "blend in" look-and-feel.

In case of a failure check console log and please let me know if there is a bug that's causing it.

How to install

Get the files from github (clone the repo, or download as zip and unzip it). In Firefox/Tor go to "about:debugging", click Load Temporary Add-on, and choose any file in the folder. If you're brave enough to use Chrome - enable Developer Mode in extension settings and use "Load unpacked" to install the extension (thanks to HCP for the figuring it out).

The actual clicking of the "Submit" button is commented out - see this line in bct-content.js. I would like to avoid spamming our dear moderators with a bunch of malformed reports if anything goes wrong. If you decide to use the extension you can test it first by manually clicking "Submit" and then uncomment the line once you're comfortable.

REPORT_SUBMIT_DELAY sets the wait time before clicking "Submit". High activity accounts have a 4-seconds-betwen-posts allowance, so the default 4000ms delay works well with that. With a lower activity account you may run into throttling - adjust the delay as needed.

You can change button titles, report comments, add new buttons, in create_all_controls in bct-content.js.

Questions?

I'm sure I missed something or messed something up. Feel free to comment in the thread.

Files (current version)

Current version is available on GitHub. You can clone the repository, or if you don't want to use git you can just download the code as a zip file (you'll need to unzip it for installation). If you're upgrading from the original version and have customized it, you might want to create a branch off the first commit (which matches the original version), apply your custom code, and cherry-pick or merge from the main branch.

Old version

This version lacks latest features such as Chrome support and mod report parsing. I'm leaving the files embedded here as an archive, although the same version is also available on GitHub (see above).

manifest.json

Code:
{

  "manifest_version": 2,
  "name": "BCT Helper",
  "version": "0.1b",

  "description": "Adds some automation for bitcointalk.org.",

  "content_scripts": [
    {
      "matches": [ "*://bitcointalk.org/*" ],
      "js": [ "bct-content.js" ],
      "css": [ "bct-content.css" ],
      "run_at": "document_idle"
    }
  ],

  "background":
  {
    "scripts": ["bct-background.js"]
  },
  
  "permissions": [
    "tabs"
  ]
}

bct-content.css

Code:
div.post {
    border-left: 4px transparent solid;
}

div.post.post-wait {
    opacity: 0.5;
}

div.post.post-error {
    border-left: 4px red solid;
}

div.post.post-success {
    border-left: 4px yellow solid;
}

.bct-report-button-container {
    margin-top: 10px;
    background-color: #bbddbb;
}

.bct-report-input {
    margin-left: 5px;
    height: 12px;
}

.bct-report-button, .bct-report-button:hover {
    display: inline-block;
    border: 1px solid black;
    margin-left: 5px;
    padding: 1px 5px 1px 5px;
    transform: none;
}

.bct-report-button:hover {
    cursor: pointer;
}

bct-content.js

Code:
console.log("BCT-CONTENT initialized");
console.log("Page: " + window.location.href);
console.log("Referrer: " + document.referrer);

function process_background_message(message, sender, send_response) {
    browser.runtime.onMessage.removeListener(process_background_message);
    console.log("Content script received background message: " + JSON.stringify(message));
    if (message.action == "bct-tab-open-report" || message.action == "bct-tab-submit-report") {
        if (message.comment !== undefined) {
            document.getElementsByName("comment")[0].value = message.comment;
        }
        document.getElementsByName("comment")[0].focus();
        message.result = "OK";
    }
    if (message.action == "bct-tab-submit-report") {
        // mod report counts as post/PM for throttling - add a delay
        setTimeout(() => {
            send_response(message);
            // Uncomment the next line to allow reports to be submitted automatically
            //document.querySelector("input[type=submit][value=Submit]").click();
        }, 5000);
    } else {
        send_response(message);
    }
    // this is needed to make the sender wait for a response
    return true;
}

function report_post(post_container, thread_id, post_id, report_comment, auto_submit) {
    post_container.classList.add("post-wait");

    let event_detail = {
        event_id: (Math.random().toString(36) + '000000000000000000').slice(2, 18),
        action_name: "bct-report",
        action_url: "https://bitcointalk.org/index.php?action=reporttm;topic=" + thread_id + ";msg=" + post_id,
        action_payload: { post_id: post_id, comment: report_comment, auto: auto_submit }
    };

    browser.runtime.sendMessage(event_detail)
        .then((message_response) => {
            //console.log("message_response: " + JSON.stringify(message_response));
            console.log("message_response size: " + JSON.stringify(message_response).length);
            post_container.classList.remove("post-wait", "post-error", "post-success");
            post_container.classList.add("post-success");
        })
        .catch((error) => {
            console.log("Data request failed:");
            console.log(error);
            post_container.classList.remove("post-wait", "post-error", "post-success");
            post_container.classList.add("post-error");
        })
    ;
    
}

function extract_ids_from_url(post_url) {
    let url_parts = post_url.split("#msg");
    let post_id = url_parts[1];
    let thread_id = url_parts[0].split(".msg")[0].split("?topic=")[1];
    return [thread_id, post_id];
}

function create_button(post_container, button_title, report_comment, text_field, auto_submit) {
    let button = document.createElement("button");
    button.className = "bct-report-button";
    button.innerText = button_title;
    button.title = report_comment;
    button.addEventListener("click", (e) => {
        e.preventDefault();
        if (text_field) {
            if (text_field.value.trim()) {
                report_comment += " " + text_field.value.trim();
            } else {
                alert("Required value missing");
                return;
            }
        }
        report_post(post_container, post_container.thread_id, post_container.post_id, report_comment, auto_submit);
    });
    return button;
}

function create_span(text) {
    let span = document.createElement("span");
    span.innerText = text;
    return span;
}

function create_text_field(hint) {
    let text_field = document.createElement("input");
    text_field.className = "bct-report-input";
    text_field.type = "text";
    text_field.placeholder = hint;
    return text_field;
}

// inject the buttons into each message
document.querySelectorAll("div.post").forEach(post_container => {
    // Try to determine thread ID and post ID
    let link_object = null;
    if (post_container.parentNode.classList.contains("td_headerandpost")) {
        // Thread view
        // post -> td.td_headerandpost -> table ... -> div#subject_123456
        link_object = post_container.parentNode.firstElementChild.querySelector("div[id^='subject_'] a");
    } else {
        // Other views: patrol, user's post history, user's thread history
        let post_url_start = "https://bitcointalk.org/index.php?topic=";
        // post -> td -> tr -> tbody -> tr ... -> a[href contains #msg123456]
        link_object = post_container.parentNode.parentNode.parentNode.firstElementChild.querySelector("a[href^='" + post_url_start + "'][href*='#msg']");
    }
    if (link_object) {
        [post_container.thread_id, post_container.post_id] = extract_ids_from_url(link_object.getAttribute("href"));
        if (post_container.thread_id && post_container.post_id) {
            let button_container = document.createElement("div");
            button_container.className = "bct-report-button-container";
            post_container.appendChild(button_container);
            button_container.appendChild(create_span("Report as: "));
            button_container.appendChild(create_button(post_container, "zero value", "zero-value shitpost", null, true));
            button_container.appendChild(create_button(post_container, "multi post", "two or more consecutive posts in 24h", null, true));
            button_container.appendChild(create_button(post_container, "cross spam", "spamming their service across multiple threads - please check post history", null, true));
            button_container.appendChild(create_button(post_container, "non-english", "non-English post on English board", null, true));
            let url_field = create_text_field("URL of the original");
            button_container.appendChild(create_button(post_container, "copy from:", "copy-paste from:", url_field, true));
            button_container.appendChild(url_field);
            let board_field = create_text_field("correct board name");
            button_container.appendChild(create_button(post_container, "move to:", "wrong board, should be in", board_field, true));
            button_container.appendChild(board_field);
        } else {
            console.log("Found div.post and post URL but couldn't determine thread/post ID.");
        }
    } else {
        console.log("Found div.post but couldn't find post URL.");        
    }
});

if (window.location.href.startsWith("https://bitcointalk.org/index.php?action=reporttm")) {
    document.getElementsByName("comment")[0].style.width = "80%";
    browser.runtime.onMessage.addListener(process_background_message);
}
if (window.location.href.startsWith("https://bitcointalk.org/index.php?board=")) {
    if (document.referrer &&
        document.referrer.startsWith("https://bitcointalk.org/index.php?action=reporttm") &&
        document.referrer.endsWith(";a") // after automatic submission
    ) {
        console.log("Attempting to close this tab...");
        browser.runtime.sendMessage({ action_name: "close-this-tab" });
    }
}

bct-background.js

Code:
// This is an array of Promise.resolve functions that will be called sequentially with delay
let throttled_resolvers = [];
// Number of milliseconds to wait before resolving the next queued promise
let PROMISE_INTERVAL = 1300;
// Number of milliseconds to wait before rejecting the queued promise
let PROMISE_TIMEOUT = 120000;
// Number of milliseconds to wait for a tab to load
let TAB_TIMEOUT = 60000;

function handle_next_resolver() {
    let p = throttled_resolvers.shift();
    if (p === undefined) {
        setTimeout(handle_next_resolver, PROMISE_INTERVAL);
    }
    else {
        p.resolve();
    }
}

setTimeout(handle_next_resolver, PROMISE_INTERVAL);

function queue_promise() {
    return new Promise((resolve, reject) => {
        throttled_resolvers.push({ resolve: resolve });
        setTimeout(function () { reject(new Error("Queued promise has timed out.")); }, PROMISE_TIMEOUT);
    });
}

function check_if_tab_fully_loaded(tab) {

    function is_tab_complete(tab) {
        return tab.status === "complete" && tab.url !== "about:blank";
    }

    if (is_tab_complete(tab)) {
        return tab;
    } else {
        return new Promise((resolve, reject) => {

            const timer = setTimeout(
                function () {
                    browser.tabs.onUpdated.removeListener(on_updated);
                    if (is_tab_complete(tab)) {
                        resolve(tab);
                    } else {
                        reject(new Error("Tab status " + tab.status + ": " + tab.url));
                    }
                },
                TAB_TIMEOUT
            );
            
            function on_updated(tab_id, change_info, updated_tab) {
                if (tab_id == tab.id && is_tab_complete(updated_tab)) {
                    clearTimeout(timer);
                    browser.tabs.onUpdated.removeListener(on_updated);
                    resolve(updated_tab);
                }
            }

            browser.tabs.onUpdated.addListener(on_updated);

        });
    }
}

browser.runtime.onMessage.addListener(function(message, sender) {
    if (message.action_name === "close-this-tab") {
        //console.log("Background script closing tab:");
        //console.log(sender.tab);
        browser.tabs.remove(sender.tab.id);
    }
    else if (message.action_name === "bct-report") {
        /*
        Expected message format:
        {
            action_name: "bct-auto-report",
            action_url: "https://...",
            action_payload: { post_id: N, comment: "...", auto: true }
        }
        */
        let tab_url = message.action_url;
        let tab_action = "bct-tab-open-report";
        if (message.action_payload.auto) {
            tab_action = "bct-tab-submit-report";
            tab_url += ";a";
        }
        console.log(message);
        return queue_promise()
            .then(() =>
                browser.tabs.create({
                    url: tab_url,
                    windowId: sender.tab.windowId,
                    active: false
                })
            )
            .then((created_tab) => check_if_tab_fully_loaded(created_tab))
            .catch((error) => {
                error_message = "Tab load/check failed: " + error.message;
                console.log(error_message);
                throw new Error(error_message);
            })
            .then((loaded_tab) => browser.tabs.sendMessage(loaded_tab.id, { id: loaded_tab.id, action: tab_action, comment: message.action_payload.comment }))
            .then((tab_response) => {
                //console.log("Tab result: " + tab_response.result);
                message.action_result = tab_response.result;
                return message;
            })
            .catch((error) => {
                console.log("Request failed in the background:");
                console.log(error);
                throw new Error(error.message);
            })
            .finally(() => {
                setTimeout(handle_next_resolver, PROMISE_INTERVAL);
            })
        ;
    }
});
78  Economy / Reputation / The war with Russia: can we end it? Do we want to? on: January 20, 2019, 02:07:35 AM
This thread is a continuation of my post here: https://bitcointalk.org/index.php?topic=5098584.msg49322618#msg49322618

I would like to have a healthy discussion on what we can do to de-escalate the conflict that shouldn't have existed in the first place. As I mentioned in the post linked above we can start by supporting the good guys in the Russian community. Any ideas of how to do that or other constructive suggestions are welcome.

Any personal disputes/insults as well as posts violating forum rules will be deleted at my discretion. Some users are not welcome here - you know who you are.
79  Economy / Reputation / Poll: is it OK to send merits to your own alts? on: January 05, 2019, 12:10:54 AM
Please vote and make a post explaining your vote.

I'm strongly against sending merits between alts. The proper use of the merit system is to award good posts. Users can't objectively judge their own posts. Self-awarded merits are as meaningless as if we allowed users to choose their own ranks, and essentially that's what self-awarded merits do.

But I'm being attacked for that opinion so I'd like to gauge community sentiment on this subject.

This is a self-moderated thread so conspiracy theories and other BS will be terminated with extreme prejudice.
80  Economy / Reputation / cryptohunter's problem with the top 200 merit receivers on: December 18, 2018, 12:20:52 AM
Let's help cryptohunter figure out her problem with the top 200 merit receivers.

The original complaint was that top 200 receivers send to much merit between themselves (in reality it's ~12% or so) and there are many users on other boards who don't get merits for posts as good as or better than the ones made by the top 200. After repeated requests to show such unmerited posts cryptohunter is just now hunting for that information so it couldn't have been the real original reason for this whole debacle.

So what's the real problem here? I hope this can serve as the main collection of all those grievances instead of getting spread out across multiple merit topics as cryptohunter has been doing lately.
Pages: « 1 2 3 [4] 5 6 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!