textme-jtj 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/textme-jtj.rb +308 -0
- metadata +72 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: efd3fad619042756034c858c54525da5cb78c31d
|
4
|
+
data.tar.gz: 7902a3c58b792831d24f7dddef9d5f8ab772833d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 69ce99cff5ba49a80a6dc290894307b3adaa71c98f19c3f609222abc3ccabaeed90a092f7dd4576843db2cface2d66a3e73098e2ee71a42a2050288d8d1223ce
|
7
|
+
data.tar.gz: 6b42f2c21262ce06995c7f9e596dec7f40cc3591e6ee946ffaba9af90366e34e8b620f1b1bd0439e43ef97d85a9cf0d5b77b1de1f0c20e08d60f9fcc07c4631b
|
data/lib/textme-jtj.rb
ADDED
@@ -0,0 +1,308 @@
|
|
1
|
+
#
|
2
|
+
#Initialize once with the credentials
|
3
|
+
#Keep texting 'send_message' method to the number entered in the argument
|
4
|
+
#
|
5
|
+
#Dependencies -> 'twilio-ruby', 'metainspector'
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'twilio-ruby' #The Twilio gem
|
9
|
+
require 'metainspector' #Gem to help extract the open graph data
|
10
|
+
|
11
|
+
module TextMe
|
12
|
+
class Core
|
13
|
+
#Constructor
|
14
|
+
#What: Initialize Twilio with credentials and save the from number
|
15
|
+
#Input: account_sid, auth_token => From twilio dashbaord
|
16
|
+
# 'from' number, 'to' number => from your twilio settings
|
17
|
+
#Output: No output
|
18
|
+
def initialize(account_sid, auth_token, sender_number, reciever_number)
|
19
|
+
#Initialize the twilio client
|
20
|
+
@client = Twilio::REST::Client.new account_sid, auth_token
|
21
|
+
|
22
|
+
#Save the 'from' and 'to' number as private variable
|
23
|
+
@sender_number = sender_number
|
24
|
+
@reciever_number = reciever_number
|
25
|
+
end
|
26
|
+
|
27
|
+
#Helper Method
|
28
|
+
#What: Take a youversion url and return the verse and the verse image from the open graph data
|
29
|
+
#Input: You version url of the verse
|
30
|
+
#Output: A hash with the (always) 'verse' => (verse name + verse text),
|
31
|
+
# (optional) 'image_url' => image verse
|
32
|
+
def meta_extractor(verse_id)
|
33
|
+
jtj = TextMe::JTJVerseExtractor.new
|
34
|
+
raw_data = jtj.extract_data(verse_id)
|
35
|
+
|
36
|
+
bible_extractor = TextMe::BibleExtractor.new
|
37
|
+
url = bible_extractor.verse_url_generator(raw_data["verse"])
|
38
|
+
#Use a Hash to store the verse and image url
|
39
|
+
metadata = Hash.new
|
40
|
+
|
41
|
+
page = MetaInspector.new(url)
|
42
|
+
|
43
|
+
#Get the verse name and the verse
|
44
|
+
metadata['verse'] = page.meta['og:title']
|
45
|
+
|
46
|
+
#If the page contains an opengraph image
|
47
|
+
if not raw_data['image']
|
48
|
+
if page.meta['og:image']
|
49
|
+
if page.meta['og:image'].include? 'http'
|
50
|
+
metadata['image_url'] = page.meta['og:image']
|
51
|
+
end
|
52
|
+
end
|
53
|
+
else
|
54
|
+
metadata['image_url'] = raw_data["image"]
|
55
|
+
end
|
56
|
+
|
57
|
+
return metadata
|
58
|
+
end
|
59
|
+
|
60
|
+
#What: Take the recievers number and the verse url. Calls the meta_extractor helper method
|
61
|
+
#Input: 'To' number, You version url of the verse
|
62
|
+
#Output: No actual output. Send's a text containing verse name(always), verse text(always) and verse image(optional) to the 'To' number
|
63
|
+
def send_message(verse_id)
|
64
|
+
#A call to the meta_extractor to get the verse name, verse text and verse image(optional)
|
65
|
+
verse_data = meta_extractor(verse_id)
|
66
|
+
|
67
|
+
#If: There is a verse image for the verse
|
68
|
+
#Else: There is no image
|
69
|
+
if verse_data['image_url']
|
70
|
+
#Sending a text with the twilio client
|
71
|
+
@client.api.account.messages.create(
|
72
|
+
from: @sender_number,
|
73
|
+
to: @reciever_number,
|
74
|
+
body: verse_data['verse'],
|
75
|
+
media_url: verse_data['image_url']
|
76
|
+
)
|
77
|
+
else
|
78
|
+
#Sending a text with the twilio client
|
79
|
+
@client.api.account.messages.create(
|
80
|
+
from: @sender_number,
|
81
|
+
to: @reciever_number,
|
82
|
+
body: verse_data['verse']
|
83
|
+
)
|
84
|
+
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
#Helper Class to generate the url from a verse name
|
90
|
+
class BibleExtractor
|
91
|
+
#Helper Method
|
92
|
+
#What: Take in the verse name and return the metadata as a Hash.
|
93
|
+
#Input: Verse name, for example 'Proverbs 3:5-6'.
|
94
|
+
# Can also accept chapter names eg. 'Romans 3' (not recommended due to the length of the chapters)
|
95
|
+
#Output: Returns the book, chapter number and the specfic verse (optional) rfom the verse name
|
96
|
+
def verse_meta_extractor(verse_name)
|
97
|
+
book_list =["Genesis", "Exodus", "Leviticus", "Numbers", "Deuteronomy", "Joshua", "Judges", "Ruth", "1 Samuel", "2 Samuel", "1 Kings", "2 Kings", "1 Chronicles", "2 Chronicles", "Ezra", "Nehemiah", "Esther", "Job", "Psalms", "Proverbs", "Ecclesiastes", "Song of Songs", "Isaiah", "Jeremiah", "Lamentations", "Ezekiel", "Daniel", "Hosea", "Joel", "Amos", "Obadiah", "Jonah", "Micah", "Nahum", "Habakkuk", "Zephaniah", "Haggai", "Zechariah", "Malachi", "Matthew", "Mark", "Luke", "John", "Acts", "Romans", "1 Corinthians", "2 Corinthians", "Galatians", "Ephesians", "Philippians", "Colossians", "1 Thessalonians", "2 Thessalonians", "1 Timothy", "2 Timothy", "Titus", "Philemon", "Hebrews", "James", "1 Peter", "2 Peter", "1 John", "2 John", "3 John", "Jude", "Revelation"]
|
98
|
+
verse_meta = {}
|
99
|
+
|
100
|
+
#Loop through the book_list to see which book verse name contains
|
101
|
+
for book in book_list
|
102
|
+
if verse_name.downcase.include? book.downcase
|
103
|
+
verse_meta["book"] = book
|
104
|
+
|
105
|
+
#Split the rest of the verse name into list (chapter number + verse number)
|
106
|
+
verse_number = verse_name.split(book)[1].strip
|
107
|
+
|
108
|
+
#To check if the whole chapter is requested or specific verses
|
109
|
+
if verse_number.include? ':'
|
110
|
+
verse_meta['chapter_number'] = verse_number.split(':')[0].strip
|
111
|
+
verse_meta['specific_verse'] = verse_number.split(':')[1].strip
|
112
|
+
else
|
113
|
+
verse_meta['chapter_number'] = verse_number
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
return verse_meta
|
118
|
+
end
|
119
|
+
|
120
|
+
#What: Is called from the Core class. Gets the verse name and calls verse_meta_extractor.
|
121
|
+
# Uses the meta data and book_name_formatter to generate th You Version url
|
122
|
+
#Input: Verse name, for example 'Proverbs 3:5-6'.
|
123
|
+
# Can also accept chapter names eg. 'Romans 3' (not recommended due to the length of the chapters)
|
124
|
+
#Output: You version url of the verse
|
125
|
+
def verse_url_generator(verse_name)
|
126
|
+
verse_meta = verse_meta_extractor(verse_name)
|
127
|
+
url = 'https://bible.com/bible/59/' #base url
|
128
|
+
url = url + book_name_formatter(verse_meta['book']) + '/' #book name
|
129
|
+
url = url + verse_meta["chapter_number"] + '/' #chapter number
|
130
|
+
#add verse number only if not just book name
|
131
|
+
if verse_meta['specific_verse']
|
132
|
+
url = url + verse_meta['specific_verse']
|
133
|
+
end
|
134
|
+
return url
|
135
|
+
end
|
136
|
+
|
137
|
+
#Helper Method
|
138
|
+
#What: It is a very long switch statement (order maintained) that transform the bible book name
|
139
|
+
#Input: Name of the specific book of the bible - eg. 'Psalms'
|
140
|
+
#Output: The You Version url specific book name
|
141
|
+
def book_name_formatter(book_name)
|
142
|
+
transformed_name = nil
|
143
|
+
|
144
|
+
case book_name
|
145
|
+
when"Genesis"
|
146
|
+
transformed_name = "gen"
|
147
|
+
when"Exodus"
|
148
|
+
transformed_name = "exo"
|
149
|
+
when"Leviticus"
|
150
|
+
transformed_name = "lev"
|
151
|
+
when"Numbers"
|
152
|
+
transformed_name = "num"
|
153
|
+
when"Deuteronomy"
|
154
|
+
transformed_name = "deu"
|
155
|
+
when"Joshua"
|
156
|
+
transformed_name = "jos"
|
157
|
+
when"Judges"
|
158
|
+
transformed_name = "jdg"
|
159
|
+
when"Ruth"
|
160
|
+
transformed_name = "rut"
|
161
|
+
when"1 Samuel"
|
162
|
+
transformed_name = "1sa"
|
163
|
+
when"2 Samuel"
|
164
|
+
transformed_name = "2sa"
|
165
|
+
when"1 Kings"
|
166
|
+
transformed_name = "1ki"
|
167
|
+
when"2 Kings"
|
168
|
+
transformed_name = "2ki"
|
169
|
+
when"1 Chronicles"
|
170
|
+
transformed_name = "1ch"
|
171
|
+
when"2 Chronicles"
|
172
|
+
transformed_name = "2ch"
|
173
|
+
when"Ezra"
|
174
|
+
transformed_name = "ezr"
|
175
|
+
when"Nehemiah"
|
176
|
+
transformed_name = "neh"
|
177
|
+
when"Esther"
|
178
|
+
transformed_name = "est"
|
179
|
+
when "Job"
|
180
|
+
transformed_name = "job"
|
181
|
+
when "Psalms"
|
182
|
+
transformed_name = "psa"
|
183
|
+
when "Proverbs"
|
184
|
+
transformed_name = "pro"
|
185
|
+
when "Ecclesiastes"
|
186
|
+
transformed_name = "ecc"
|
187
|
+
when "Song of Songs"
|
188
|
+
transformed_name = "sng"
|
189
|
+
when "Isaiah"
|
190
|
+
transformed_name = "isa"
|
191
|
+
when "Jeremiah"
|
192
|
+
transformed_name = "jer"
|
193
|
+
when "Lamentations"
|
194
|
+
transformed_name = "lam"
|
195
|
+
when "Ezekiel"
|
196
|
+
transformed_name = "ezk"
|
197
|
+
when "Daniel"
|
198
|
+
transformed_name = "dan"
|
199
|
+
when "Hosea"
|
200
|
+
transformed_name = "hos"
|
201
|
+
when "Joel"
|
202
|
+
transformed_name = "jol"
|
203
|
+
when "Amos"
|
204
|
+
transformed_name = "amo"
|
205
|
+
when "Obadiah"
|
206
|
+
transformed_name = "oba"
|
207
|
+
when "Jonah"
|
208
|
+
transformed_name = "jon"
|
209
|
+
when "Micah"
|
210
|
+
transformed_name = "mic"
|
211
|
+
when "Nahum"
|
212
|
+
transformed_name = "nam"
|
213
|
+
when "Habakkuk"
|
214
|
+
transformed_name = "hab"
|
215
|
+
when "Zephaniah"
|
216
|
+
transformed_name = "zep"
|
217
|
+
when "Haggai"
|
218
|
+
transformed_name = "hag"
|
219
|
+
when "Zechariah"
|
220
|
+
transformed_name = "zec"
|
221
|
+
when "Malachi"
|
222
|
+
transformed_name = "mal"
|
223
|
+
when "Matthew"
|
224
|
+
transformed_name = "mat"
|
225
|
+
when "Mark"
|
226
|
+
transformed_name = "mek"
|
227
|
+
when "Luke"
|
228
|
+
transformed_name = "luk"
|
229
|
+
when "John"
|
230
|
+
transformed_name = "jhn"
|
231
|
+
when "Acts"
|
232
|
+
transformed_name = "act"
|
233
|
+
when "Romans"
|
234
|
+
transformed_name = "rom"
|
235
|
+
when "1 Corinthians"
|
236
|
+
transformed_name = "1co"
|
237
|
+
when "2 Corinthians"
|
238
|
+
transformed_name = "2co"
|
239
|
+
when "Galatians"
|
240
|
+
transformed_name = "gal"
|
241
|
+
when "Ephesians"
|
242
|
+
transformed_name = "eph"
|
243
|
+
when "Philippians"
|
244
|
+
transformed_name = "php"
|
245
|
+
when "Colossians"
|
246
|
+
transformed_name = "col"
|
247
|
+
when "1 Thessalonians"
|
248
|
+
transformed_name = "1th"
|
249
|
+
when "2 Thessalonians"
|
250
|
+
transformed_name = "2th"
|
251
|
+
when "1 Timothy"
|
252
|
+
transformed_name = "1ti"
|
253
|
+
when "2 Timothy"
|
254
|
+
transformed_name = "2ti"
|
255
|
+
when "Titus"
|
256
|
+
transformed_name = "tit"
|
257
|
+
when "Philemon"
|
258
|
+
transformed_name = "phm"
|
259
|
+
when "Hebrews"
|
260
|
+
transformed_name = "heb"
|
261
|
+
when "James"
|
262
|
+
transformed_name = "jas"
|
263
|
+
when "1 Peter"
|
264
|
+
transformed_name = "1pe"
|
265
|
+
when "2 Peter"
|
266
|
+
transformed_name = "2pe"
|
267
|
+
when "1 John"
|
268
|
+
transformed_name = "1jn"
|
269
|
+
when "2 John"
|
270
|
+
transformed_name = "2jn"
|
271
|
+
when "3 John"
|
272
|
+
transformed_name = "3jn"
|
273
|
+
when "Jude"
|
274
|
+
transformed_name = "jud"
|
275
|
+
when "Revelation"
|
276
|
+
transformed_name = "rev"
|
277
|
+
end
|
278
|
+
end
|
279
|
+
end
|
280
|
+
|
281
|
+
class JTJVerseExtractor
|
282
|
+
def get_verse(entry_id)
|
283
|
+
url = 'https://jtj.watermark.org/api/entries/' + entry_id.to_s
|
284
|
+
result = Net::HTTP.get(URI.parse(url))
|
285
|
+
return JSON.parse(result)
|
286
|
+
end
|
287
|
+
|
288
|
+
def extract_data(entry_id)
|
289
|
+
data = get_verse(entry_id)
|
290
|
+
result = Hash.new
|
291
|
+
|
292
|
+
if data["entry"]["links"]["lock_screen"]
|
293
|
+
image_link = data["entry"]["links"]["lock_screen"]
|
294
|
+
result["image"] = image_link
|
295
|
+
end
|
296
|
+
|
297
|
+
if data["entry"]["memory_verse"]["reference"]
|
298
|
+
verse_name = data["entry"]["memory_verse"]["reference"]
|
299
|
+
result["verse"] = verse_name
|
300
|
+
end
|
301
|
+
|
302
|
+
return result
|
303
|
+
end
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
twil = TextMe::Core.new('ACa9011dd6fa6cabf225303edd1bdb71be', 'a426a2ba3deca28af4f6b17a91aacb5f', '+16197730346', '+14696551861')
|
308
|
+
twil.send_message(376)
|
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: textme-jtj
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Harsh Gosar
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-03-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: twilio-ruby
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 5.7.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 5.7.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: metainspector
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 5.4.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 5.4.1
|
41
|
+
description: Text memory verse and image to user
|
42
|
+
email: harsh.g1218@gmail.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- lib/textme-jtj.rb
|
48
|
+
homepage: http://rubygems.org/gems/textme-jtj
|
49
|
+
licenses:
|
50
|
+
- MIT
|
51
|
+
metadata: {}
|
52
|
+
post_install_message:
|
53
|
+
rdoc_options: []
|
54
|
+
require_paths:
|
55
|
+
- lib
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
requirements: []
|
67
|
+
rubyforge_project:
|
68
|
+
rubygems_version: 2.6.13
|
69
|
+
signing_key:
|
70
|
+
specification_version: 4
|
71
|
+
summary: JTJ verse texting
|
72
|
+
test_files: []
|