- Notifications
You must be signed in to change notification settings - Fork 49
/
Copy pathclean.rake
98 lines (81 loc) · 3.07 KB
/
clean.rake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
moduleReverseMarkdown
moduleConverters
defself.reset!
@@converters={}
end
end
end
namespace:dbdo
namespace:cleando
#doesnt work yet
task:markdown=>:environmentdo
ReverseMarkdown.configdo |config|
config.unknown_tags=:bypass
config.github_flavored=false
config.tag_border=''
end
ReverseMarkdown::Converters.reset!
ReverseMarkdown::Converters.register:pre,ReverseMarkdown::Converters::Pre.new
# _eefna
protip=Protip.find_by_public_id('_eefna')#sujd_w
putsprotip.public_id
root=Nokogiri::HTML(protip.body).root
converted_down=ReverseMarkdown::Converters.lookup(root.name).convert(root)
protip.update_column(:body,converted_down)
end
task:tags=>:environmentdo
Protip.find_eachdo |protip|
normalized_tags=protip.tags.compact.collect(&:downcase).collect{|t| t.sub(/^#/,'')}.uniq
clean_tags=normalized_tags - [protip.user.username.downcase]
puts"#{protip.public_id}: #{clean_tags.join(', ')}"
protip.update_column(:tags,clean_tags)
end
end
task:spam=>:environmentdo
usernames=%w{akashseo966salokyeAgus_pamungkasS119harshmiss_shadJaychowdhuryrobinburneylaomayiApplecomputinghappygoodmorni4robinburneyjstarunpayalmlhotraGoyllokevintrujillojstarunvatsalyametalJaiLinersbollyshowbizherobayanayataliBrajbihariGprakashhhh1994Guum5sanjeevnitodaysanjeevnitoday}
usernames << "Bastille day "
spammers=User.where(username: usernames).all
spammers=spammers + Protip.spam.collect(&:user)
spammers=spammers + User.where("banned_at IS NOT NULL").all
ifprotip=Protip.find_by_public_id(clash_of_clans_spam='3tzscq')
spammers=spammers + protip.comments.collect(&:user)
protip.update_column(:bad_content,true)
end
spammers.uniq!
puts"Found #{spammers.count} spammers"
spammers.eachdo |spammer|
puts"Destroying: #{spammer.username}"
spammer.destroy
end
end
task:orphans=>:environmentdo
[Comment,Protip,Like].eachdo |klass|
count=klass.where("user_id NOT IN (select id from users)").count
puts"#{klass}: deleting #{count} orphans"
putsklass.where("user_id NOT IN (select id from users)").delete_all
end
end
task:duplicates=>:environmentdo
puts"Badges#count prior cleaning duplicates: #{Badge.count}"
Badge.connection.execute('
DELETE FROM badges a USING (
SELECT MIN(ctid) as ctid, user_id, name, created_at FROM badges
GROUP BY user_id, name, created_at HAVING COUNT(*) > 1
) b
WHERE
a.user_id = b.user_id AND
a.name = b.name AND
a.user_id = b.user_id AND
a.ctid <> b.ctid
')
puts"Badges#count post cleaning duplicates: #{Badge.count}"
end
task:data=>:environmentdo
Like.delete_all
Comment.delete_all
Protip.delete_all
Badge.delete_all
User.delete_all
end
end
end