tweet_sanitizer 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|