yanapi 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2011 Andrei Beliankou, University of Trier, Germany
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
data/README ADDED
@@ -0,0 +1,12 @@
1
+ YANAPI is a Yahoo! Answers API written in Ruby.
2
+
3
+ Example:
4
+
5
+ require 'rubygems'
6
+ require 'yanapi'
7
+
8
+ params = {:appid => 'YahooDemo', :query => 'car'}
9
+
10
+ query = YANAPI::TermQuery.new(params)
11
+
12
+ query.get
@@ -0,0 +1,23 @@
1
+ = YANAPI
2
+
3
+ * {RubyGems}[http://rubygems.org/gems/yanapi]
4
+ * Developers {Homepage}[http://www.uni-trier.de/index.php?id=24140]
5
+ * {YANAPI Project Page}[http://yanapi.rubyforge.org/]
6
+
7
+ == DESCRIPTION
8
+
9
+ YANAPI is an API for Yahoo! Answers web services.
10
+
11
+ == SYNOPSIS
12
+ $ require 'yanapi'
13
+ $ params = {:query => 'car', :appid => 'YahooDemo'}
14
+ $ api = YANAPI::TermQuery.new(params)
15
+ $ api.get # => default xml structure
16
+
17
+ See RDOC documentation for details on particular methods.
18
+
19
+ == LICENSE
20
+
21
+ YANAPI is a copyrighted software by Andrei Beliankou, 2011.
22
+ You may use, redistribute and change it under the terms
23
+ provided in the LICENSE file.
@@ -0,0 +1,14 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ # we can require 'rake/clean' to add 'clobber' and 'clean' tasks
4
+ require 'rake/clean'
5
+ require 'rake/testtask'
6
+
7
+
8
+ SRC = FileList['**/*.rb']
9
+
10
+ CLOBBER.include('doc', '**/*.html', '**/*.gem')
11
+
12
+ Rake::TestTask.new do |t|
13
+ t.test_files = FileList.new('test/**/test_*.rb')
14
+ end
@@ -0,0 +1,6 @@
1
+ require 'yanapi/query'
2
+ require 'yanapi/term_query'
3
+ require 'yanapi/question_query'
4
+ require 'yanapi/user_query'
5
+ require 'yanapi/category_query'
6
+ require 'yanapi/version'
@@ -0,0 +1,10 @@
1
+ module YANAPI
2
+
3
+ class CategoryQuery < Query
4
+
5
+ def initialize(*)
6
+ raise NotImplementedError, 'CategoryQuery is still not implemented!'
7
+ end
8
+
9
+ end # CategoryQuery
10
+ end # module
@@ -0,0 +1,37 @@
1
+ module YANAPI
2
+ class Error < RuntimeError; end
3
+
4
+ # The result is illformed (as xml|json|php|rss) and cannot be parsed
5
+ # or contains an error message.
6
+ # Human beings should pay attention to it!
7
+ class ContentError < Error
8
+ # it takes a kind of Exception or String as the argument
9
+ def initialize(arg)
10
+ if arg.kind_of? String
11
+ msg = arg
12
+ else
13
+ msg = "You got illformed content:\n" +
14
+ "#{arg.message} (#{arg.class})"
15
+ end
16
+ super(msg)
17
+ end
18
+ end
19
+
20
+ # A technical error accessing the server,
21
+ # may be caught and handled with a new attempt.
22
+ class ExternalError < Error
23
+ def initialize(exception)
24
+ msg = "Some external error occured:\n" +
25
+ "#{exception.class}: #{exception.message}"
26
+ super(msg)
27
+ end
28
+ end
29
+
30
+ # This kind of error is used, if there is no answer to our request.
31
+ # The status code is 200 OK and the xml structure is valid, but
32
+ # there is no useful information in the response.
33
+ # We can check this way if we have just placed a too strict request or
34
+ # we are out of the response range (but we are under the :start limitations).
35
+ class EmptyResponse < Error
36
+ end
37
+ end # YANAPI
@@ -0,0 +1,188 @@
1
+ # This code is based on ideas from "rc_rest" and "yahoo" gems.
2
+ # gem install nokogiri
3
+ require 'nokogiri'
4
+ require 'net/http'
5
+ require 'uri'
6
+
7
+ require 'yanapi/error'
8
+
9
+
10
+ module YANAPI
11
+ class Query
12
+ HOST = 'http://answers.yahooapis.com'
13
+ SERVICE = 'AnswersService'
14
+ SERVICE_VERSION = 'V1'
15
+
16
+ attr_accessor :output, :url
17
+
18
+ def initialize(params)
19
+ # xml|json|php|rss
20
+ @output = params[:output] || 'xml'
21
+
22
+ # it is a bad idea to alter the parameters hash
23
+ # that's why we duplicate the parameters
24
+ checked_params = check_params(params.dup)
25
+ @url = build_url(checked_params)
26
+
27
+ $stderr.puts 'Full url:', @url if $DEBUG
28
+ end
29
+
30
+ # main method
31
+ def get
32
+ http_response = Net::HTTP.get_response(@url)
33
+
34
+ case @output
35
+ when 'xml'
36
+ # Set the value to STRICT (0), otherwise no errors will be raised!
37
+ result = Nokogiri::XML::Document.parse(http_response.body, nil, nil, 0)
38
+ prove_xml(result)
39
+ when 'json'
40
+ raise NotImplementedError, 'We do not handle JSON yet!'
41
+ result = ''
42
+ prove_json(result)
43
+ when 'php'
44
+ raise NotImplementedError, 'We do not handle PHP yet!'
45
+ result = ''
46
+ prove_php(result)
47
+ when 'rss'
48
+ raise NotImplementedError, 'We do not handle RSS yet!'
49
+ result = ''
50
+ prove_rss(result)
51
+ end
52
+
53
+ # TODO: make a fine grained distinction
54
+ case http_response
55
+ when Net::HTTPSuccess
56
+ return result.to_s
57
+ when Net::HTTPMovedPermanently,
58
+ Net::HTTPFound,
59
+ Net::HTTPSeeOther,
60
+ Net::HTTPTemporaryRedirect
61
+ raise ContentError.new("#{http_response}:\n\n#{result}")
62
+ else
63
+ raise ContentError.new("#{http_response}:\n\n#{result}")
64
+ end
65
+
66
+ # are all external errors caught here?
67
+ rescue Net::HTTPError, SocketError, Timeout::Error,
68
+ IOError, SystemCallError => e
69
+ raise ExternalError, e
70
+ # add JSON, PHP, RSS errors here
71
+ rescue Nokogiri::XML::SyntaxError => e
72
+ raise ContentError.new(e)
73
+ end # get
74
+
75
+ protected
76
+
77
+ # Returns an URI::HTTP object containing the complete url for the request.
78
+ def build_url(params)
79
+ search_method = params[:method]
80
+ params.delete(:method)
81
+
82
+ base_url = [HOST, SERVICE, SERVICE_VERSION, search_method].join('/')
83
+
84
+ params = expand_params(params)
85
+ reserved_chars = Regexp.new(/[!*'();:@&=+$,\/?#\]\[]/)
86
+ # Every string is escaped twice.
87
+ # First time to allow only ascii characters.
88
+ # Second time to escape all url reserved chars.
89
+ escaped_params = params.collect do |k, v|
90
+ k = URI.escape((URI.escape(k.to_s)), unsafe = reserved_chars)
91
+ v = URI.escape((URI.escape(v.to_s)), usafe = reserved_chars)
92
+ "#{k}=#{v}"
93
+ end
94
+
95
+ query = escaped_params.join('&')
96
+ if $DEBUG
97
+ $stderr.print 'Joined query parameters: '
98
+ $stderr.puts query
99
+ end
100
+
101
+ url = URI.parse(base_url + '?' + query)
102
+
103
+ return url
104
+ end # build_url
105
+
106
+ # Check params, my sheet
107
+ #--
108
+ # validates presense of :method
109
+ # validates type of :method
110
+ # validates presense of :appid
111
+ # validates uniqueness of all params
112
+ # (category_name|category_id may or region be repeated)
113
+ # default values will be propagated, not deleted (defaults can change)
114
+ def check_params(params)
115
+ unless params.include?(:appid)
116
+ raise Error, 'APPID is missing!'
117
+ end
118
+ unless params.include?(:method)
119
+ raise Error, 'Search Method is missing!'
120
+ end
121
+
122
+ allowed_methods = %w(questionSearch getByUser getByCategory getQuestion)
123
+ unless allowed_methods.include?(params[:method])
124
+ raise Error, "The search method #{params[:method]} is not supported!"
125
+ end
126
+
127
+ allowed_output = [nil, 'xml', 'json', 'rss', 'php']
128
+ unless allowed_output.include?(params[:output])
129
+ raise Error, "The output type #{params[:output]} is not supported!"
130
+ end
131
+
132
+ if params[:output] != 'json' && params[:callback]
133
+ raise Error, "The output type #{@output} is not supported!"
134
+ end
135
+ return params
136
+ end
137
+
138
+ # proves the presense of an error
139
+ # proves it the answer set is empty
140
+ def prove_xml(xml)
141
+ error = xml.at_xpath('/xmlns:Error', xml.root.namespaces)
142
+ if error
143
+ message = 'The following errors were detected:'
144
+ error.xpath('//xmlns:Message', xml.root.namespaces).each do |msg|
145
+ message << "\n" + msg.content
146
+ end
147
+ raise ContentError.new(message)
148
+ end
149
+
150
+ question = xml.at_xpath('//xmlns:Question', xml.root.namespaces)
151
+ unless question
152
+ message = 'The server returned an empty Result Set.'
153
+ raise EmptyResponse.new(message)
154
+ end
155
+ end
156
+
157
+ #
158
+ def prove_json(json)
159
+ raise NotImplementedError, 'We do not handle JSON yet!'
160
+ end
161
+
162
+ #
163
+ def prove_php(php)
164
+ raise NotImplementedError, 'We do not handle PHP yet!'
165
+ end
166
+
167
+ #
168
+ def prove_rss(rss)
169
+ raise NotImplementedError, 'We do not handle RSS yet!'
170
+ end
171
+
172
+ def expand_params(params)
173
+ expanded_params = []
174
+
175
+ params.each do |k,v|
176
+ if v.respond_to? :each and not String === v then
177
+ v.each { |s| expanded_params << [k, s] }
178
+ else
179
+ expanded_params << [k, v]
180
+ end
181
+ end
182
+
183
+ expanded_params.sort_by { |k,v| [k.to_s, v.to_s] }
184
+ end
185
+
186
+ end # Query
187
+
188
+ end # YANAPI
@@ -0,0 +1,10 @@
1
+ module YANAPI
2
+
3
+ class QuestionQuery < Query
4
+
5
+ def initialize(*)
6
+ raise NotImplementedError, 'QuestionQuery still not implemented!!!'
7
+ end
8
+
9
+ end # QuestionQuery
10
+ end # module
@@ -0,0 +1,30 @@
1
+ module YANAPI
2
+
3
+ class TermQuery < Query
4
+
5
+ def initialize(params)
6
+
7
+ params[:method] = 'questionSearch'
8
+ super
9
+ end
10
+
11
+ private
12
+ # specific checks for
13
+ #--
14
+ # validates presense of query
15
+ # validates uniqueness of query
16
+ # validates the range of :start
17
+ # validates the range of :results
18
+ # validates the :region semantics
19
+ # validates the :type uniqueness and semantics
20
+ # validates uniqueness of the :date_range and its semantics
21
+ # validates semantics of all possible parameter names
22
+ def check_params(params)
23
+ unless params[:query]
24
+ raise Error, "Query is missing!"
25
+ end
26
+ super
27
+ end
28
+
29
+ end # TermQuery
30
+ end # YANAPI
@@ -0,0 +1,10 @@
1
+ module YANAPI
2
+
3
+ class UserQuery < Query
4
+
5
+ def initialize(*)
6
+ raise NotImplementedError, 'UserQuery still not implemented!!!'
7
+ end
8
+
9
+ end # UserQuery
10
+ end # module
@@ -0,0 +1,3 @@
1
+ module YANAPI
2
+ VERSION = '0.0.1'
3
+ end
@@ -0,0 +1,236 @@
1
+ HTTP/1.1 200 OK
2
+ Date: Thu, 27 Jan 2011 14:08:59 GMT
3
+ P3P: policyref="http://info.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC GOV"
4
+ Vary: Accept-Encoding
5
+ Connection: close
6
+ Transfer-Encoding: chunked
7
+ Content-Type: text/xml; charset=utf-8
8
+ Cache-Control: private
9
+
10
+ <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
11
+ <ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:answers" xsi:schemaLocation="urn:yahoo:answers http://answers.yahooapis.com/AnswersService/V1/QuestionResponse.xsd">
12
+ tion id="20080307115814AARQDKS" type="Answer
13
+ <Subject>Wo kann ich in RheinlandPfalz Region Donnersberg ein Gemuesekistenabo vom Biobauern bekommen?</Subject>
14
+ <Content>
15
+ </Content>
16
+ <Date>2008-03-07 11:58:14</Date>
17
+ <Timestamp>1204919894</Timestamp>
18
+ <Link>http://de.answers.yahoo.com/question/?qid=20080307115814AARQDKS</Link> <Category id="396545372">Sonstiges - Essen &amp; Trinken</Category>
19
+ <UserId>EBt4evYzaa</UserId>
20
+ <UserNick>Anja</UserNick>
21
+ <UserPhotoURL>http://l.yimg.com/a/i/identity/nopic_48.gif</UserPhotoURL>
22
+ <NumAnswers>2</NumAnswers>
23
+ <NumComments>0</NumComments>
24
+ <ChosenAnswer>http://www.gemuesekiste.de/index.cfm?page=anbieter_bl</ChosenAnswer>
25
+ <ChosenAnswererId>QfhvwrqPaa</ChosenAnswererId>
26
+ <ChosenAnswererNick>feinschmeckerde</ChosenAnswererNick>
27
+ <ChosenAnswerTimestamp>1204929973</ChosenAnswerTimestamp>
28
+ <ChosenAnswerAwardTimestamp>1205435661</ChosenAnswerAwardTimestamp>
29
+ </Question>
30
+ <Question id="20090623132429AAvoGCw" type="Answered">
31
+ <Subject>Freiwilliges ökologisches jahr in Rheinlandpfalz zu spät?</Subject>
32
+ <Content>Bin ich da zu spät oder geht noch was?
33
+
34
+
35
+ Wenn nicht was kann ich machen? Wie könnte ich das Jahr überbrücken.
36
+ Cntent>
37
+ <Date>2009-06-23 13:24:29</Date>
38
+ <Timestamp>1245788669</Timestamp>
39
+ <Link>http://de.answers.yahoo.com/question/?qid=20090623132429AAvoGCw</Link>
40
+ Category id="396545364">Sonstiges - Schule &amp; Bildung</Category>
41
+ <UserId>J6pND01qaa</UserId>
42
+ <UserNick>Schack K</UserNick>
43
+ <UserPhotoURL>http://l.yimg.com/a/i/identity/nopic_48.gif</UserPhotoURL>
44
+ <NumAnswers>1</NumAnswers>
45
+ <NumComments>0</NumComments>
46
+ <ChosenAnswer>Es ist noch nicht zu spät, aber beeil dich. Du solltest bis 30.7. Zeit haben:
47
+ http://www.foej.de/traeger.html
48
+
49
+ bzw. nur für RLP: http://www.foej-rlp.de/, evtl. vorab telefonisch anfragen und dann ggf. die Bewerbung (sollte fertig sein) hinterherschicken, erspart Bewerbungen, die sowieso in der Tonne landen.
50
+
51
+ Viel Glück und viel Spaß!</ChosenAnswer>
52
+ <ChosenAnswererId>LgL6WSoraa</ChosenAnswererId>
53
+ <ChosenAnswererNick>momo</ChosenAnswererNick>
54
+ <ChosenAnswerTimestamp>1245822423</ChosenAnswerTimestamp>
55
+ <ChosenAnswerAwardTimestamp>1246115817</ChosenAnswerAwardTimestamp>
56
+ </Question>
57
+ <Question id="20080506133823AAmd6Xj" type="Answered">
58
+ <Subject>Gibt es noch eine Region in Deutschland wo es so viele verschiedene Dialekte gibt wie in der Pfalz?</Subject>
59
+ <Content>Pfälzisch ist ein Dialekt, der schwierig zu erlernen und nachzuahmen ist, denn in der ländlich geprägten Pfalz spricht noch heute jede Region und Ortschaft ihren spezifischen Dialekt, der alle paar Kilometer seine Färbung ändert. Ein Pirmasenser (Südwestpfalz) unterscheidet sich deutlich von einem Landauer. Ein Landauer (Südpfalz) unterscheidet sich deutlich von einem Ludwigshäfer (Vorderpfalz). Und ein Ludwigshafener unterscheidet sich ebenso deutlich von einem Kaiserslauterer (Westpfalz).
60
+ </Content>
61
+ <Date>2008-05-06 13:38:23</Date>
62
+ <Timestamp>1210106303</Timestamp>
63
+ <Link>http://de.answers.yahoo.com/question/?qid=20080506133823AAmd6Xj</Link>
64
+ <Category id="396546962">Rheinland-Pfalz</Category>
65
+ <UserId>9QeMUvgdaa</UserId>
66
+ <UserNick>Heidi</UserNick>
67
+ <UserPhotoURL>http://l.yimg.com/dg/users/1IzLIImc-AAEBQqFpQBPkArJCGTlbd98x4gI=.medium.png</UserPhotoURL>
68
+ <NumAnswers>5</NumAnswers>
69
+ <NumComments>0</NumComments>
70
+ <ChosenAnswer>mir pälzer sinn ähmolisch :-)
71
+ Wir Pfälzer sind einmalig :-)</ChosenAnswer>
72
+ <ChosenAnswererId>JIpBCUdMaa</ChosenAnswererId>
73
+ <ChosenAnswererNick>ஜ.DARK.ஜ</ChosenAnswererNick>
74
+ <ChosenAnswerTimestamp>1210138558</ChosenAnswerTimestamp>
75
+ <ChosenAnswerAwardTimestamp>1210160631</ChosenAnswerAwardTimestamp>
76
+ </Question>
77
+ <Question id="20090201080835AAS78iS" type="Answered">
78
+ <Subject>Wo kann man sich in Rheinland Pfalz auf Geschlechtskrankheiten untersuchen lassen?</Subject>
79
+ <Content>Ich würde mich gern auf Geschlechtskrankheiten untersuchen lassen, aber ich weiss nicht wie das in Deutschland geht. Gibt es besondere Kliniks oder sollte ich dem Krankenhaus anrufen?
80
+ Ich bin Ausländerin und wohne seit ein paar Monaten hier...
81
+ </Content>
82
+ <Date>2009-02-01 08:08:35</Date>
83
+ <Timestamp>1233504515</Timestamp>
84
+ <Link>http://de.answers.yahoo.com/question/?qid=20090201080835AAS78iS</Link>
85
+ <Category id="396545390">Geschlechtskrankheiten</Category>
86
+ <UserId>75WCghuTaa</UserId>
87
+ <UserNick>Laura C</UserNick>
88
+ <UserPhotoURL>http://l.yimg.com/q/users/14zzdbfYBAAEB4wSDNt3ACw==.medium.jpg</UserPhotoURL>
89
+ <NumAnswers>12</NumAnswers>
90
+ <NumComments>0</NumComments>
91
+ <ChosenAnswer>Du kannst einfach ins Krankenhaus oder zum Frauen artz gehen, und dich dort informeiren.
92
+ Einige Kliniken bieten das auch an.
93
+ Aber du kannst dort einfach Nachfragen, dei wissen es am besten</ChosenAnswer>
94
+ <ChosenAnswererId>lb5u6wNkaa</ChosenAnswererId>
95
+ <ChosenAnswererNick>Nisi</ChosenAnswererNick>
96
+ <ChosenAnswerTimestamp>1233504759</ChosenAnswerTimestamp>
97
+ <ChosenAnswerAwardTimestamp>1233648510</ChosenAnswerAwardTimestamp>
98
+ </Question>
99
+ <Question id="20090118023353AAXzf4k" type="Answered">
100
+ <Subject>Was kann ich machen bei regenwetter in Landau in der Pfalz und umgebung?</Subject>
101
+ <Content>
102
+ </Content>
103
+ <Date>2009-01-18 02:33:53</Date>
104
+ <Timestamp>1232274833</Timestamp>
105
+ <Link>http://de.answers.yahoo.com/question/?qid=20090118023353AAXzf4k</Link>
106
+ <Category id="396547136">Sonstige Städte - Deutschland</Category>
107
+ <UserId>rx6f8RhZaa</UserId>
108
+ <UserNick>Seppo29</UserNick>
109
+ <UserPhotoURL>http://l.yimg.com/a/i/identity/nopic_48.gif</UserPhotoURL>
110
+ <NumAnswers>6</NumAnswers>
111
+ <NumComments>0</NumComments>
112
+ <ChosenAnswer>Im Cart-Center Indoor Cart fahren oder auch ins schöne Kino ( es gibt ein älteres billigeres Kino ich bevorzuge jedoch das Kino FilmWelt ) Auch shoppen kann sehr schön sein.
113
+
114
+
115
+ Abends würde ich mich jedoch nicht in Landau aufhalten ( in den straßen herum laufen , in kinos oder cafes sind O.K. ) dar die jungendlichen sehr gerne ärger ( also schlägereien oder leute zum beleidigen) suchen .
116
+
117
+ ICH WÜNSCHE DIR VIEL SPASS IN LANDAU
118
+ MFG Trashy xD</ChosenAnswer>
119
+ <ChosenAnswererId>cgrzC1HRaa</ChosenAnswererId>
120
+ <ChosenAnswererNick>trashkill</ChosenAnswererNick>
121
+ <ChosenAnswerTimestamp>1232275350</ChosenAnswerTimestamp>
122
+ <ChosenAnswerAwardTimestamp>1232495758</ChosenAnswerAwardTimestamp>
123
+ </Question>
124
+ <Question id="20090331072343AAGU6ZL" type="Answered">
125
+ <Subject>Parcour Verein in der Oberpfalz Raum Weiden oder Umgebung?</Subject>
126
+ <Content>Hi kennt ihr einen Verein der Parcour anbietet oder sowas in der Richtung??
127
+ Also ich wohn in Weiden i.d.Opf und der Verein sollt halt ned zuweit entfernt sein...
128
+ </Content>
129
+ <Date>2009-03-31 07:23:43</Date>
130
+ <Timestamp>1238509423</Timestamp>
131
+ <Link>http://de.answers.yahoo.com/question/?qid=20090331072343AAGU6ZL</Link>
132
+ <Category id="396545468">Sonstige Sportarten</Category>
133
+ <UserId>oIW6fEB8aa</UserId>
134
+ <UserNick>Philip</UserNick>
135
+ <UserPhotoURL>http://l.yimg.com/a/i/identity/nopic_48.gif</UserPhotoURL>
136
+ <NumAnswers>2</NumAnswers>
137
+ <NumComments>0</NumComments>
138
+ <ChosenAnswer>Am besten fragst du mal die Reitvereine in dieser Umgebung an, ob die welche Parcours kennen. Die werden dir sicherlich sagen, wo es welche gibt.
139
+
140
+
141
+ Z.B.: http://www.bayerntours.com/opw/freizeit/reiten.htm
142
+
143
+ Reiten in der Oberpfalz, - ein unvergessliches Erlebnis für Sie und Ihr Pferd. Genießen Sie die einzigartige Landschaft zwischen dem Urgebirge des Bayerischen und des Oberpfälzer Waldes mit seinen weiten schwingenden Höhen (300-800m ü. N.N.) und dem Kalkgebirge des Jura mit seinen bizarren Felsen und tiefen Höhlen im Westen, - ein herbes, dünn besiedeltes land mit vielen Teichen, klaren Bächen und unergründlichen Flüssen, die aus den tiefen Wälder kommen, überragt von den alten Burgen und mächtigen Ruinen, die einen weiten Blick über die stille Landschaft gewähren und stumme Zeugen unserer Geschichte sind. Hier mit dem Pferd unterwegs zu sein, heißt auch auf fast 10.000 km2 alle Möglichkeiten zu finden: von leichten Tagesetappen bis hin zu anspruchsvollen Berg- und Distanzritten, von der kleinen gemütlichen Wanderreitstation bis hin zur professionellen Reitsportanlage.</ChosenAnswer>
144
+ <ChosenAnswererId>E1Q70EQvaa</ChosenAnswererId>
145
+ <ChosenAnswererNick>paratrooper</ChosenAnswererNick>
146
+ <ChosenAnswerTimestamp>1238883853</ChosenAnswerTimestamp>
147
+ <ChosenAnswerAwardTimestamp>1239374636</ChosenAnswerAwardTimestamp>
148
+ </Question>
149
+ <Question id="20110123171356AAX0nSj" type="Answered">
150
+ <Subject>Warum räumt man einem Irren in der Pfalz sein Waffenarsenal aus, und Iran die Atombombe bauen?</Subject>
151
+ <Content>
152
+ @?: Erkläre mir bitte den Inhalt Deiner Antwort. Danke
153
+ @Engin: Und läßt Iran die Atombombe bauen.
154
+
155
+ So mancher Superarsch hier sollte sich einmal seine Rechtschreibung und Satzstellung betrachten, bevor er andere maß regelt.
156
+ </Content>
157
+ <Date>2011-01-23 17:13:56</Date>
158
+ <Timestamp>1295831636</Timestamp>
159
+ <Link>http://de.answers.yahoo.com/question/?qid=20110123171356AAX0nSj</Link>
160
+ <Category id="396545442">Sonstiges - Nachrichten &amp; Medien</Category>
161
+ <UserId>7i0Zjl6Faa</UserId>
162
+ <UserNick>Manamana</UserNick>
163
+ <UserPhotoURL>http://l.yimg.com/a/i/identity/profile_48a.png</UserPhotoURL>
164
+ <NumAnswers>14</NumAnswers>
165
+ <NumComments>0</NumComments>
166
+ <ChosenAnswer>Weil im Iran nicht das deutsche Waffengesetz gilt.</ChosenAnswer>
167
+ <ChosenAnswererId>J9STtpUnaa</ChosenAnswererId>
168
+ <ChosenAnswererNick>Desperadox</ChosenAnswererNick>
169
+ <ChosenAnswerTimestamp>1295834232</ChosenAnswerTimestamp>
170
+ <ChosenAnswerAwardTimestamp>1295917544</ChosenAnswerAwardTimestamp>
171
+ </Question>
172
+ <Question id="20071231002838AAV6P8g" type="Answered">
173
+ <Subject>Wie lange hat der Aldi Süd in Rheinland-Pfalz heute geöffnet!?..:-D?</Subject>
174
+ <Content>
175
+ </Content>
176
+ <Date>2007-12-31 00:28:38</Date>
177
+ <Timestamp>1199089718</Timestamp>
178
+ <Link>http://de.answers.yahoo.com/question/?qid=20071231002838AAV6P8g</Link>
179
+ <Category id="396545372">Sonstiges - Essen &amp; Trinken</Category>
180
+ <UserId>d913b2c41d1223e16b35ef2127cae18caa</UserId>
181
+ <UserNick>Sweety</UserNick>
182
+ <UserPhotoURL>http://l.yimg.com/q/users/1XNi2YcGMAAED-GF6PBPpwpmkFgHjYaEM.medium.jpg</UserPhotoURL>
183
+ <NumAnswers>7</NumAnswers>
184
+ <NumComments>0</NumComments>
185
+ <ChosenAnswer>Jo, der erste hat recht. es haben heute deutschlandweit alle Lebensmittelgeschäfte bis max. 14 Uhr geöffnet. RLP erst recht.</ChosenAnswer>
186
+ <ChosenAnswererId>bPCz7JOCaa</ChosenAnswererId>
187
+ <ChosenAnswererNick>Tolula</ChosenAnswererNick>
188
+ <ChosenAnswerTimestamp>1199090785</ChosenAnswerTimestamp>
189
+ <ChosenAnswerAwardTimestamp>1199299531</ChosenAnswerAwardTimestamp>
190
+ </Question>
191
+ <Question id="20090621063405AAZ4Q67" type="Answered">
192
+ <Subject>Wer kennt einen Badesee für Menschen und Hunde im Umkreis von 100 km von Frankenthal in der Pfalz?</Subject>
193
+ <Content>Unser Hund ist total verrückt nach Wasser und wir schwimmen selber gerne. Vielleicht weiß ja jemand einen See in unserer Nähe.
194
+ Danke im Vorraus
195
+ </Content>
196
+ <Date>2009-06-21 06:34:05</Date>
197
+ <Timestamp>1245591245</Timestamp>
198
+ <Link>http://de.answers.yahoo.com/question/?qid=20090621063405AAZ4Q67</Link>
199
+ <Category id="396546021">Hunde</Category>
200
+ <UserId>dwmZQQz2aa</UserId>
201
+ <UserNick>xyz</UserNick>
202
+ <UserPhotoURL>http://l.yimg.com/a/i/identity/nopic_48.gif</UserPhotoURL>
203
+ <NumAnswers>2</NumAnswers>
204
+ <NumComments>0</NumComments>
205
+ <ChosenAnswer>Leider wohne ich nicht in deinem BL.
206
+ Ich kann dir aber den Tipp geben, mal beim Ordnungsamt nachzufragen. Die kennen alle für Hunde freigegebenen Flächen und auch Badeseen in deiner Umgebung. Wenn es da etwas gibt, können die dir das ganz sicher sagen. Und du hast die Gewissheit, dass es stimmt; das es nicht auf einmal ein böses Erwachen gibt, wenn der eine oder andere Tipp nicht korrekt sein sollte und du dir ein saftiges Bußgeld einhandelst...</ChosenAnswer>
207
+ <ChosenAnswererId>98cbabfe27423bbb32604382c4c71f1eaa</ChosenAnswererId>
208
+ <ChosenAnswererNick>Conny N</ChosenAnswererNick>
209
+ <ChosenAnswerTimestamp>1245591911</ChosenAnswerTimestamp>
210
+ <ChosenAnswerAwardTimestamp>1246307055</ChosenAnswerAwardTimestamp>
211
+ </Question>
212
+ <Question id=20090310111213AAs0Rtp" type="Answered>
213
+ <Subject>Dieser Vera Test in Mathe in Rheinlandpfalz ist der Wichtig?</Subject>
214
+ <Content>Dieser Vera Test in Mathe in Rheinlandpfalz ist der Wichtig
215
+ </Content>
216
+ <Date>2009-03-10 11:12:13</Date>
217
+ <Timestamp>1236708733</Timestamp>
218
+ <Link>http://de.answers.yahoo.com/question/?qid=20090310111213AAs0Rtp</Link>
219
+ <Category id="396547121">Prüfungen &amp; Tests</Category>
220
+ <UserId>iTqmmCfgaa</UserId>
221
+ <UserNick>alexanderpeskov</UserNick>
222
+ <UserPhotoURL>http://l.yimg.com/a/i/identity/nopic_48.gif</UserPhotoURL>
223
+ <NumAnswers>3</NumAnswers>
224
+ <NumComments>0</NumComments>
225
+ <ChosenAnswer>Also ich komme aus NRW. Man hat uns das so erklärt wenn man zwischen zwei Noten steht wird dann der Vera Test mitgezählt .
226
+ Erste Arbeit schreibst du zum Beispiel eine 3 und die zweite eine 4. Du stehst dann wahrscheinlich zwischen 3 und 4.
227
+ Aber wenn du im Vera Test eine 3 hast. Bekommst du die 3. Im Vera Test gibt es nur die Bewertung 1,2,3,4. 4 ist das Beste und 1 das schlechteste. Wenn du Ende des Schuljahres nicht zwischen zwei Noten stehst ,kannst du die so schlecht schreiben wie du willst, ich würde es aber nicht drauf ankommen lassen.
228
+ Hier ist noch ein guter Link mit guten Übungen!
229
+ Lg Jasmin</ChosenAnswer>
230
+ <ChosenAnswererId>txY2KnKvaa</ChosenAnswererId>
231
+ <ChosenAnswererNick>Minnie.</ChosenAnswererNick>
232
+ <ChosenAnswerTimestamp>1236709511</ChosenAnswerTimestamp>
233
+ <ChosenAnswerAwardTimestamp>1237228410</ChosenAnswerAwardTimestamp>
234
+ </Question>
235
+ <ResultSet>
236
+ <-- ws15.ydn.ac4.yahoo.com uncompressed/chunked Thu Jan 27 06:08:59 PST 2011 -->