tweet_sanitizer 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -1
- data/README.md +34 -0
- data/lib/tweet_sanitizer.rb +15 -7
- data/lib/tweet_sanitizer/twitter_extension.rb +13 -2
- data/lib/tweet_sanitizer/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f81ed3decd1defa109db3cb5dcd3ff146b9d2377
|
4
|
+
data.tar.gz: f788cc11a47f4ccbc626846f3977ca6170ea99f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d76f6708fdb977de53aa3f00155d4292203ffaa730a9828ec5af244b5539b4fef23e39e195f945f911383fbe10d0a0825662179be6d71b51dae129e3d6aa4551
|
7
|
+
data.tar.gz: 365728cef1fe75877b00cff14e0a0ebbd0d088fecb1a0b51a3fa5654989ee5ce49867d3454b2c05f5a612754a63f8c2f3c972d85d5dac9e7356f20b9d4322aa1
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
## Unreleased
|
2
|
-
[full changelog](https://github.com/sue445/tweet_sanitizer/compare/v0.
|
2
|
+
[full changelog](https://github.com/sue445/tweet_sanitizer/compare/v0.2.0...master)
|
3
|
+
|
4
|
+
## v0.2.0
|
5
|
+
[full changelog](https://github.com/sue445/tweet_sanitizer/compare/v0.1.1...v0.2.0)
|
6
|
+
|
7
|
+
* Add sanitize options
|
8
|
+
* https://github.com/sue445/tweet_sanitizer/pull/12
|
3
9
|
|
4
10
|
## v0.1.1
|
5
11
|
[full changelog](https://github.com/sue445/tweet_sanitizer/compare/v0.1.0...v0.1.1)
|
data/README.md
CHANGED
@@ -67,6 +67,40 @@ See following.
|
|
67
67
|
|
68
68
|
https://dev.twitter.com/overview/api/upcoming-changes-to-tweets
|
69
69
|
|
70
|
+
### Options
|
71
|
+
Same to `Twitter::Tweet#sanitized_text` and `TweetSanitizer.sanitize`. (By default all are `true`)
|
72
|
+
|
73
|
+
* `use_retweeted_tweet` : Whether use original retweeted tweet if exists
|
74
|
+
* `expand_url` : Whether expand url in tweet (e.g. `t.co` url -> original url)
|
75
|
+
* `remove_media_url` : Whether remove media url in tweet
|
76
|
+
* `unescape` : Whether unescape in tweet (e.g. `(> <)` -> `(> <)`)
|
77
|
+
|
78
|
+
#### Example
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
tweet = @client.status("https://twitter.com/github/status/900456141557080065", tweet_mode: "extended")
|
82
|
+
|
83
|
+
# all are false
|
84
|
+
tweet.sanitized_text(use_retweeted_tweet: false, expand_url: false, remove_media_url: false, unescape: false)
|
85
|
+
#=> "RT @GitHubEducation: Announcing two new GitHub Classroom features: Assignment Deadlines and Class Rosters: https://t.co/bNiJnlps5e https://…"
|
86
|
+
|
87
|
+
# Only use_retweeted_tweet is true
|
88
|
+
tweet.sanitized_text(use_retweeted_tweet: true, expand_url: false, remove_media_url: false, unescape: false)
|
89
|
+
#=> "Announcing two new GitHub Classroom features: Assignment Deadlines and Class Rosters: https://t.co/bNiJnlps5e https://t.co/C02G05tUvu"
|
90
|
+
|
91
|
+
# Only expand_url is true
|
92
|
+
tweet.sanitized_text(use_retweeted_tweet: false, expand_url: true, remove_media_url: false, unescape: false)
|
93
|
+
#=> "RT @GitHubEducation: Announcing two new GitHub Classroom features: Assignment Deadlines and Class Rosters: https://github.com/blog/2418-github-classroom-now-supports-deadlines-and-class-rosters https://…"
|
94
|
+
|
95
|
+
# Only remove_media_url is true
|
96
|
+
tweet.sanitized_text(use_retweeted_tweet: false, expand_url: false, remove_media_url: true, unescape: false)
|
97
|
+
#=> "RT @GitHubEducation: Announcing two new GitHub Classroom features: Assignment Deadlines and Class Rosters: https://t.co/bNiJnlps5e https://…"
|
98
|
+
|
99
|
+
# all are true (default)
|
100
|
+
tweet.sanitized_text
|
101
|
+
#=> "Announcing two new GitHub Classroom features: Assignment Deadlines and Class Rosters: https://github.com/blog/2418-github-classroom-now-supports-deadlines-and-class-rosters"
|
102
|
+
```
|
103
|
+
|
70
104
|
## Development
|
71
105
|
|
72
106
|
```bash
|
data/lib/tweet_sanitizer.rb
CHANGED
@@ -3,22 +3,30 @@ require "tweet_sanitizer/version"
|
|
3
3
|
require "tweet_sanitizer/twitter_extension"
|
4
4
|
|
5
5
|
module TweetSanitizer
|
6
|
+
# Sanitize tweet
|
6
7
|
# @param tweet [Twitter:Tweet]
|
8
|
+
# @param use_retweeted_tweet [Boolean] Whether use original retweeted tweet if exists
|
9
|
+
# @param expand_url [Boolean] Whether expand url in tweet (e.g. `t.co` url -> original url)
|
10
|
+
# @param remove_media_url [Boolean] Whether remove media url in tweet
|
11
|
+
# @param unescape [Boolean] Whether unescape in tweet (e.g. `(> <)` -> `(> <)`)
|
7
12
|
# @return [String]
|
8
|
-
def self.sanitize(tweet)
|
13
|
+
def self.sanitize(tweet, use_retweeted_tweet: true, expand_url: true, remove_media_url: true, unescape: true)
|
9
14
|
# Original RT status is exists in retweeted_status
|
10
|
-
|
15
|
+
if use_retweeted_tweet && tweet.attrs[:retweeted_status]
|
16
|
+
tweet = Twitter::Tweet.new(tweet.attrs[:retweeted_status])
|
17
|
+
end
|
11
18
|
|
12
|
-
text =
|
13
|
-
text =
|
14
|
-
text =
|
19
|
+
text = tweet_full_text(tweet)
|
20
|
+
text = expand_urls_text(tweet, text) if expand_url
|
21
|
+
text = remove_media_urls_in_tweet(tweet, text) if remove_media_url
|
22
|
+
text = CGI.unescapeHTML(text) if unescape
|
15
23
|
text
|
16
24
|
end
|
17
25
|
|
18
26
|
# @param tweet [Twitter:Tweet]
|
27
|
+
# @param text [String]
|
19
28
|
# @return [String]
|
20
|
-
def self.expand_urls_text(tweet)
|
21
|
-
text = tweet_full_text(tweet)
|
29
|
+
def self.expand_urls_text(tweet, text)
|
22
30
|
return text unless tweet.uris?
|
23
31
|
|
24
32
|
tweet.uris.reverse.each_with_object(text.dup) do |uri, expanded|
|
@@ -1,9 +1,20 @@
|
|
1
1
|
module TweetSanitizer
|
2
2
|
module TwitterExtension
|
3
3
|
refine(Twitter::Tweet) do
|
4
|
+
# Sanitize tweet
|
5
|
+
# @param use_retweeted_tweet [Boolean] Whether use original retweeted tweet if exists
|
6
|
+
# @param expand_url [Boolean] Whether expand url in tweet (e.g. `t.co` url -> original url)
|
7
|
+
# @param remove_media_url [Boolean] Whether remove media url in tweet
|
8
|
+
# @param unescape [Boolean] Whether unescape in tweet (e.g. `(> <)` -> `(> <)`)
|
4
9
|
# @return [String]
|
5
|
-
def sanitized_text
|
6
|
-
TweetSanitizer.sanitize(
|
10
|
+
def sanitized_text(use_retweeted_tweet: true, expand_url: true, remove_media_url: true, unescape: true)
|
11
|
+
TweetSanitizer.sanitize(
|
12
|
+
self,
|
13
|
+
use_retweeted_tweet: use_retweeted_tweet,
|
14
|
+
expand_url: expand_url,
|
15
|
+
remove_media_url: remove_media_url,
|
16
|
+
unescape: unescape,
|
17
|
+
)
|
7
18
|
end
|
8
19
|
end
|
9
20
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tweet_sanitizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sue445
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: twitter
|