diyanet 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: []