OP you are not a weak idiot. So stop telling yourself that.
You simply fell in love with a man who sold you the world and you believed him. That doesn't make you an idiot. It makes you totally bloody normal.
But what you have found out is he sold you a lie. He isn't the perfect lovely caring illusion you fell in love with, He is a man who does not and will not ever have your back, is capable of hurting you in ways that crushes you and your self esteem and does so simply because he wants to.
He wants to buy shit from only fans and look at porn or whatever and he gives not one iota of a crap what that does to you, his fiancee, the woman he should be over the fucking moon to be marrying and should walk over hot coals before he upsets.
He is pissed off because you found out. He is angry AT YOU for finding out. I bet he isn't angry at himself because in his head he thinks its his god given right to do what the hell he wants, and therefore that is the marriage you will be entering into. of course he will try and hide it from you (under the guise of 'protecting you', no less - but all that means is he is actually just protecting himself - so he can do what he wants, when he wants and not get stick from you over it).
He doesn't give a shit if it hurts you or makes you feel bad/angry/upset, he is absolutely willing to risk YOUR feelings to do what HE wants.
OK so the wedding is 2 weeks away. Ask yourself, do you want to marry him? I don't mean the man you fell in love with, I mean the man now standing before you.
Yes it is going to be hard to cancel the wedding, but do not marry someone you have doubts over simply because you don't want to let other people down, or lose money, or feel like you've put too much into it already.
Marry someone who, when you walk down that aisle, you look at knowing they will love you and protect you and do anything not to hurt you. Knowing this will be the happiest day of your life because you are walking towards that person. Marry someone who if people say 'you are just like your partner' it would be the biggest compliment and make you so proud.
Never listen to a mans words. Listen to his actions. Words are easy. Actions are the truth. If his words say he loves you but his actions hurt you......... he isn't the real deal.