def test_tmpTest(self): resOper = ResourceOperator('/dev.sqlite3.db') for feedRes in resOper.getFeedResource(): feedReader = FeedReader(feedRes) self.assertTrue(feedReader.fillFeedResPubDate())
def setUp(self): self.resOper = ResourceOperator('/dev.sqlite3.db') feedRes = FeedRes('popgo.xml', 'tag', 'description', 0, 'Tue, 12 Jul 2011 22:23:26 +0800') self.reader = FeedReader(feedRes)
def __init__(self): self.resOper = ResourceOperator() self.feedFilter = FeedFilter() self._initCache() self.results = None self.linkSender = None
class TestResourceOperator(unittest.TestCase): def setUp(self): self.resOper = ResourceOperator('/dev.sqlite3.db') feedRes = FeedRes('popgo.xml', 'tag', 'description', 0, 'Tue, 12 Jul 2011 22:23:26 +0800') self.reader = FeedReader(feedRes) def tearDown(self): self.resOper = None @unittest.skip("insert skipping") def test_addFilterPattern(self): reason = '异域字幕组' tag = 1 self.resOper.addFilterPattern(reason, tag) def test_getFilterPattern(self): patterns = [ '480', '1024' ] tmpList = self.resOper.getFilterPattern() realList = [] realList.append(tmpList[0].content) realList.append(tmpList[1].content) self.assertListEqual(patterns, realList) def test_getFeedResource(self): real = self.resOper.getFeedResource() # print(listPrint(real)) self.assertEqual(2, real[1].id) self.assertEqual(7, len(real)) @unittest.skip("insert skipping") def test_addAndGetFeedResUpdateTime(self): feedRes = self.reader.feedRes self.resOper.addFeedResUpdateTime(feedRes) self.resOper.getFeedResUpdateTime()# add data in FeedReaUpdateTime.Cache self.assertLessEqual(feedRes.pubDate, FeedResUpdateTime.get(feedRes.id)) def test_getFeeds(self): feeds = self.resOper.getFeeds() self.assertLessEqual(0, len(feeds)) def test_fillCache(self): self.resOper.fillCache() self.assertLessEqual(0, Cache.size())
class Application: __version__ = (0, 1, 3) def __init__(self): self.resOper = ResourceOperator() self.feedFilter = FeedFilter() self._initCache() self.results = None self.linkSender = None def _initCache(self): self.resOper.getFeedResUpdateTime() self.resOper.fillCache() def openLink(self, index): openCmd = 'open' platform = sys.platform if platform == 'linux2': openCmd = 'xdg-open' elif platform == 'win32': openCmd = 'start' try: for i in [int(e) for e in index.strip().split(' ')]: if self.results[0][i].link.startswith('http'): os.system('{} {!r}'.format(openCmd, self.results[0][i].link)) else: print(self.results[0][i].link) except IndexError: print("Index Error") except ValueError: print("Value Error") def magnetLink(self, index): for i in [int(e) for e in index.strip().split(' ')]: print(getMagnetLinkFromURL(self.results[0][i].link)) def sendMagnetLink(self, index): if self.linkSender is None: self.linkSender = send2Trans() for i in [int(e) for e in index.strip().split(' ')]: link = getMagnetLinkFromURL(self.results[0][i].link) self.linkSender.sendlink(link) def showDescription(self, index): i = int(index) print(self.results[0][i].description) def readCommand(self, results): def getArg(x): return int(x.split(' ')[-1]) try: cmd = input() while (cmd != 'exit'): if cmd.startswith('c'): # open url self.openLink(cmd[2:]) elif cmd.startswith('d'): # show description print('Feed Description:') self.showDescription(cmd[2:]) elif cmd.startswith('m'): # get magnet link self.magnetLink(cmd[2:]) elif cmd.startswith('s'): # send magnet link self.sendMagnetLink(cmd[2:]) elif cmd == 'add filter': # add fileter self.addNewFilter() elif cmd == 'filtered': # list fileterd feeds self._showResult(results[1]) elif cmd == 'show': # show feeds self._showResult(results[0]) elif cmd == 'fetch': # fetch from feedRes self.fetchAndPrint() else: print('unrecognized') cmd = input() except EOFError: print('Bye~') def addNewFilter(self): print('Input reason tag.{tag 1 and 4 is must filter}') cmd = input().split(' ') reason = cmd[0] tag = cmd[1] print('Reason: {}\tTag: {}\nconfirm?'.format(reason,int(tag))) if input() != 'no': self.resOper.addFilterPattern(reason, tag) else: print('cancled') def fetchingRes(self): #TODO: tmep solution # try: nodes = [] for feedRes in self.resOper.getFeedResource(): reader = FeedReader(feedRes) newNodes = reader.getFeedItems(FeedReader.noDuplicate) if len(newNodes) == 0: print('[Info] skip feeds {}'.format(feedRes.id), end='\t') continue nodes += newNodes #nodes = listUnique(nodes, lambda x:x.title) validFeeds = self.feedFilter.filterFeeds(nodes) filtered = listSub(nodes, validFeeds) self._writeToDB(validFeeds, filtered) self.results = (validFeeds, filtered) # except: # print("Fetching error") def _showResult(self, xs): print('\n{} feed(s) updated'.format(len(xs))) print(listPrint(xs, 'seq', fetchF=lambda x:x.title)) def _writeToDB(self, valid, filtered): self.resOper.writeValid(valid) self.resOper.writeFiltered(filtered) def run(self, mode='normal'): if mode == 'init': self.fetchingRes() elif mode != 'normal': print('Welcom to Charllote Rss Reader. ') self.readCommand([]) else: self.fetchAndPrint() self.readCommand(self.results) def fetchAndPrint(self): print('Now fetching resources') self.fetchingRes() if self.results == None: print("Fetch Error") return self._showResult(self.results[0]) print('Instruction:\nc x:Open browser to check no x\nd x:Direct download specified feed with defualt dowloader\n')