Пример #1
0
    def test_MissingEpisodeLinkElement_RaisesRSSFormatError(
            self, stub_read_rssfeed):
        rssfeed = '<?xml version="1.0" encoding="UTF-8"?>' \
                  '<channel>' \
                    '<title>showRSS feed: Show</title>' \
                    '<item>' \
                        '<title>Show 1x01</title>' \
                    '</item>' \
                  '</channel>'
        stub_read_rssfeed.return_value = rssfeed

        with pytest.raises(RSSFormatError):
            get_last_episodes(None)
Пример #2
0
    def test_MissingChannelElement_RaisesRSSFormatError(
            self, stub_read_rssfeed):
        rssfeed = '<?xml version="1.0" encoding="UTF-8"?>' \
                  '<rss version="2.0" xmlns:tv="http://showrss.info">' \
                    '<title>showRSS feed: Show</title>' \
                    '<item>' \
                        '<title>Show 1x01</title>' \
                        '<link>link1</link>' \
                    '</item>' \
                  '</rss>'
        stub_read_rssfeed.return_value = rssfeed

        with pytest.raises(RSSFormatError):
            get_last_episodes(None)
Пример #3
0
    def test_CompleteFeedWithOneItem_RespectiveEpisode(self, stub_read_rssfeed):
        rssfeed = '<?xml version="1.0" encoding="UTF-8"?>' \
                  '<rss version="2.0" xmlns:tv="http://showrss.info">' \
                    '<channel>' \
                        '<title>showRSS feed: Castle (2009)</title>' \
                        '<link>http://showrss.info</link><ttl>30</ttl>' \
                        '<description>showRSS show feed for Castle (2009)</description>' \
                        '<item>' \
                            '<title>Castle (2009) 8x05</title>' \
                            '<link>magnet:?xt=urn:btih:E3A6707164B53C132E39FE0724DC5FDDFAA8E575&amp;dn=Castle+2009+S08E05+720p+HDTV+X264+DIMENSION&amp;tr=udp://tracker.coppersurfer.tk:6969/announce&amp;tr=udp://tracker.leechers-paradise.org:6969&amp;tr=udp://open.demonii.com:1337</link>' \
                            '<guid isPermaLink="false">a0ce46e33c916756208b92af7392f9aa2a960496</guid>' \
                            '<pubDate>Tue, 20 Oct 2015 02:05:03 +0000</pubDate>' \
                            '<description>New episode: Castle 2009 S08E05 HDTV X264 DIMENSION. Link: &lt;a href=&quot;magnet:?xt=urn:btih:E3A6707164B53C132E39FE0724DC5FDDFAA8E575&amp;dn=Castle+2009+S08E05+720p+HDTV+X264+DIMENSION&amp;tr=udp://tracker.coppersurfer.tk:6969/announce&amp;tr=udp://tracker.leechers-paradise.org:6969&amp;tr=udp://open.demonii.com:1337&quot;&gt;magnet:?xt=urn:btih:E3A6707164B53C132E39FE0724DC5FDDFAA8E575&amp;dn=Castle+2009+S08E05+720p+HDTV+X264+DIMENSION&amp;tr=udp://tracker.coppersurfer.tk:6969/announce&amp;tr=udp://tracker.leechers-paradise.org:6969&amp;tr=udp://open.demonii.com:1337&lt;/a&gt;</description>' \
                            '<tv:show_id>53</tv:show_id>' \
                            '<tv:show_name>Castle (2009)</tv:show_name>' \
                            '<tv:episode_id>927</tv:episode_id>' \
                            '<tv:raw_title>Castle 2009 S08E05 HDTV X264 DIMENSION</tv:raw_title>' \
                            '<tv:info_hash>E3A6707164B53C132E39FE0724DC5FDDFAA8E575</tv:info_hash>' \
                            '<enclosure url="magnet:?xt=urn:btih:E3A6707164B53C132E39FE0724DC5FDDFAA8E575&amp;dn=Castle+2009+S08E05+720p+HDTV+X264+DIMENSION&amp;tr=udp://tracker.coppersurfer.tk:6969/announce&amp;tr=udp://tracker.leechers-paradise.org:6969&amp;tr=udp://open.demonii.com:1337" length="0" type="application/x-bittorrent" />' \
                        '</item>' \
                    '</channel>' \
                  '</rss>'
        stub_read_rssfeed.return_value = rssfeed

        link = 'magnet:?xt=urn:btih:E3A6707164B53C132E39FE0724DC5FDDFAA8E575&dn=Castle+2009+S08E05+720p+HDTV+X264+DIMENSION&tr=udp://tracker.coppersurfer.tk:6969/announce&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://open.demonii.com:1337'
        expected_episodes = [
            Episode('Castle (2009)', 8, 5, False, link)
        ]
        assert get_last_episodes(None) == expected_episodes
Пример #4
0
    def test_FeedWithNoItems_NoEpisodes(self, stub_read_rssfeed):
        rssfeed = '<?xml version="1.0" encoding="UTF-8"?>' \
                  '<rss version="2.0" xmlns:tv="http://showrss.info">' \
                    '<channel>' \
                        '<title>showRSS feed: Show Name</title>' \
                    '</channel>' \
                  '</rss>'
        stub_read_rssfeed.return_value = rssfeed

        assert get_last_episodes(None) == []
Пример #5
0
    def test_FeedWith1Item_1Episode(self, stub_read_rssfeed):
        rssfeed = '<?xml version="1.0" encoding="UTF-8"?>' \
                  '<rss version="2.0" xmlns:tv="http://showrss.info">' \
                    '<channel>' \
                        '<title>showRSS feed: Show</title>' \
                        '<item>' \
                            '<title>Show 1x01</title>' \
                            '<link>link</link>' \
                        '</item>' \
                    '</channel>' \
                  '</rss>'
        stub_read_rssfeed.return_value = rssfeed

        expected_episodes = [Episode('Show', 1, 1, False, 'link')]

        assert get_last_episodes(None) == expected_episodes
Пример #6
0
 def _new_episodes(self, database: Database, tvshow: TVShow) -> list:
     return [
         episode
         for episode in showrss.get_last_episodes(tvshow.id)
         if not database.episode_exists(episode)
     ]