Removing duplicate code
[watersofshiloah] / src / backend.py
index 826cef2..d87054b 100755 (executable)
@@ -29,11 +29,18 @@ class Backend(object):
                channels = tree.find("channels")
                return self._process_list(channels, ["description", "url", "port"])
 
-       def get_radio_channel_programming(self, chanId):
-               tree = self._get_page_with_validation(
-                       action="lds.radio.radiochannels.programming.query",
-                       channelID=chanId,
-               )
+       def get_radio_channel_programming(self, chanId, date=None):
+               if date is not None:
+                       tree = self._get_page_with_validation(
+                               action="lds.radio.radiochannels.programming.query",
+                               channelID=chanId,
+                               date=date,
+                       )
+               else:
+                       tree = self._get_page_with_validation(
+                               action="lds.radio.radiochannels.programming.query",
+                               channelID=chanId,
+                       )
                programs = tree.find("programs")
                return self._process_list(programs, ["date", "time", "title", "shortdescription", "artist"])
 
@@ -109,9 +116,24 @@ class Backend(object):
                items = tree.find("chapters")
                return self._process_list(items, ["title", "url"])
 
+       CONFERENCE_SEARCH = 1
+       MAGAZINE_SEARCH = 2
+       VIDEO_SEARCH = 8
+       SEARCH_ALL = 11
+
+       def search(self, langId, phrase, content):
+               tree = self._get_page_with_validation(
+                       action="lds.search",
+                       languageID=langId,
+                       phrase=phrase,
+                       content=content,
+               )
+               return tree
+
        def _get_page_with_validation(self, **params):
                encodedParams = urllib.urlencode(params)
-               page = self._browser.download("http://tech.lds.org/radio?%s" % encodedParams)
+               url = "http://tech.lds.org/radio?%s" % encodedParams
+               page = self._browser.download(url)
                if not page:
                        raise RuntimeError("Blank page")
                tree = ElementTree.fromstring(page)
@@ -152,6 +174,7 @@ if __name__ == "__main__":
                for confData in confs:
                        sessions = list(b.get_conference_sessions(confData["id"]))
                        for sessionData in sessions:
+                               print sessionData
                                talks = list(b.get_conference_talks(sessionData["id"]))
                                print talks
 
@@ -160,8 +183,8 @@ if __name__ == "__main__":
                print mags
                for magData in mags:
                        issues = list(b.get_magazine_issues(magData["id"]))
-                       issues
                        for issueData in issues:
+                               print issueData
                                articles = list(b.get_magazine_articles(issueData["id"]))
                                print articles
 
@@ -170,7 +193,7 @@ if __name__ == "__main__":
                print mags
                for magData in mags:
                        books = list(b.get_scripture_books(magData["id"]))
-                       print books
                        for bookData in books:
+                               print bookData
                                chapters = list(b.get_scripture_chapters(bookData["id"]))
                                print chapters