diyanet 0.0.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.
Files changed (2) hide show
  1. data/lib/diyanet.rb +153 -0
  2. metadata +45 -0
data/lib/diyanet.rb ADDED
@@ -0,0 +1,153 @@
1
+ #!/usr/bin/env ruby
2
+ require 'date'
3
+ require 'net/http'
4
+ require 'nokogiri'
5
+
6
+ module Namaz < Array
7
+ def initialize *args
8
+ if args.length == 1
9
+ fname = args[0]
10
+ if (File.size? fname).nil?
11
+ "File not found or empty!"
12
+ else
13
+ oku(fname)
14
+ end
15
+ elsif args.length == 2
16
+ ulke = args[0]
17
+ sehir = args[1]
18
+ @fname = File.dirname(__FILE__) + "/" + ulke + "-" + sehir + ".dat"
19
+ baglan(ulke, sehir)
20
+ end
21
+ end
22
+
23
+ def self.oku(fname)
24
+ return self.new.oku(fname)
25
+ end
26
+
27
+ def oku(fname=@fname)
28
+ @fname=fname
29
+ raise "File not found" unless File.exists? fname
30
+ File.open(fname).each_line do |line|
31
+ vakit = line.split
32
+ if current_time < vakit[5].to_i # + 86400
33
+ self << vakit.map{|v| DateTime.strptime(v, '%s').to_time.utc}
34
+ end
35
+ end
36
+ return finalize
37
+ end
38
+
39
+ def yaz(fname=@fname)
40
+ begin
41
+ File.open(fname, 'w') do |f|
42
+ self.each do |vakitler|
43
+ f.puts vakitler.map{|v| v.strftime('%s')}.join(" ")
44
+ end
45
+ end
46
+ return true
47
+ rescue
48
+ return false
49
+ end
50
+ end
51
+
52
+ def baglan(ulke, sehir)
53
+ ulke.upcase!
54
+ sehir.upcase!
55
+ uri = URI.parse('http://www.diyanet.gov.tr/turkish/namazvakti/vakithes_namazsonuc.asp')
56
+ req = Net::HTTP::Post.new(uri.path)
57
+ req.body = "sehirler=#{sehir}&R1=AYLIK&buton=Hesapla&ulk=#{ulke}"
58
+
59
+ res = Net::HTTP.new(uri.host, uri.port).start do |http|
60
+ http.request(req)
61
+ end
62
+ date = DateTime.now
63
+ rows = Nokogiri::HTML(res.body).xpath('//table[@border="1"]/tr')
64
+ rows.each do |row|
65
+ vakit = []
66
+ i = true
67
+ row.xpath('./td').each do |cell|
68
+ if i
69
+ date = DateTime.parse(cell.text)
70
+ i = false
71
+ else
72
+ time = cell.text.split
73
+ vakit.push((date + time[0].to_i/24.0 + time[1].to_i/1440.0).to_time.utc)
74
+ end
75
+ end
76
+ self << vakit unless vakit.empty? #and vakit[5] > @current_time
77
+ end
78
+ # return self
79
+ return finalize
80
+ end
81
+
82
+ def vakit
83
+ isim = %w(Yatsi Sabah Kusluk Ogle Ikindi Aksam)
84
+ i, j = index
85
+ return isim[j]
86
+ end
87
+
88
+ def kalan(fmt=true)
89
+ j, i = index
90
+ ret = self[j][i].strftime('%s').to_i-current_time
91
+ if fmt
92
+ sa = ret/3600
93
+ dk = (ret%3600)/60
94
+ sa > 0 ? txt = "#{sa}sa" : txt=""
95
+ txt += "#{dk}dk"if dk > 0
96
+ return txt
97
+ else
98
+ return ret
99
+ end
100
+ end
101
+
102
+ def to_hash
103
+ isim = [:imsak, :gunes, :ogle, :ikindi, :aksam, :yatsi]
104
+ hash = {}
105
+ self.each do |s|
106
+ hash[s[0].strftime('%Y%m%d').to_i] = Hash[isim.zip(s)]
107
+ end
108
+ return hash
109
+ end
110
+
111
+ def to_s(n=self.length)
112
+ puts " Tarih Sabah Imsak Ogle Ikindi Aksam Yatsi Kible"
113
+ # 08-12-2012 05:36 07:09 12:03 14:22 16:44 18:11 10:01
114
+ n.to_i.times do |i|
115
+ print self[i][0].strftime('%d-%m-%Y') + " "
116
+ puts self[i].map{|v| v.strftime('%H:%M')}.join(' ')
117
+ end
118
+ return true
119
+ end
120
+
121
+ def index
122
+ j = 0
123
+ self.each do |gun|
124
+ i = 0
125
+ gun.each do |vakit|
126
+ next if i == 6
127
+ return j, i if current_time < vakit.strftime('%s').to_i
128
+ i+=1
129
+ end
130
+ j+=1
131
+ end
132
+ return false, false
133
+ end
134
+
135
+
136
+ private
137
+
138
+ def finalize
139
+ if self.empty?
140
+ return false
141
+ else
142
+ return true
143
+ end
144
+ end
145
+ def current_time
146
+ return Time.utc(*(Time.now.to_a)).strftime('%s').to_i
147
+ end
148
+
149
+ end
150
+
151
+ def Namaz *args
152
+ return Namaz.new(*args)
153
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: diyanet
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Sencer Selcuk
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-11-16 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Diyanetten namaz vakitlerini array/hash olarak almak icin
15
+ email: sencer@selc.uk
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/diyanet.rb
21
+ homepage: http://www.github.com/sencer/diyanet/
22
+ licenses: []
23
+ post_install_message:
24
+ rdoc_options: []
25
+ require_paths:
26
+ - lib
27
+ required_ruby_version: !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 1.8.23
42
+ signing_key:
43
+ specification_version: 3
44
+ summary: Diyanet Namaz Vakitleri
45
+ test_files: []