Code Duplication    Length = 26-27 lines in 2 locations

comics.py 2 locations

@@ 543-569 (lines=27) @@
540
        }
541
542
543
class SpaceAvalanche(GenericNavigableComic):
544
    """Class to retrieve Space Avalanche comics."""
545
    name = 'avalanche'
546
    long_name = 'Space Avalanche'
547
    url = 'http://www.spaceavalanche.com'
548
    get_navi_link = get_link_rel_next
549
550
    @classmethod
551
    def get_first_comic_link(cls):
552
        """Get link to first comics."""
553
        return {'href': "http://www.spaceavalanche.com/2009/02/02/irish-sea/", 'title': "Irish Sea"}
554
555
    @classmethod
556
    def get_comic_info(cls, soup, link):
557
        """Get information about a particular comics."""
558
        url_date_re = re.compile('.*/([0-9]*)/([0-9]*)/([0-9]*)/.*$')
559
        title = link['title']
560
        url = cls.get_url_from_link(link)
561
        year, month, day = [int(s)
562
                            for s in url_date_re.match(url).groups()]
563
        imgs = soup.find("div", class_="entry").find_all("img")
564
        return {
565
            'title': title,
566
            'day': day,
567
            'month': month,
568
            'year': year,
569
            'img': [i['src'] for i in imgs],
570
        }
571
572
@@ 752-777 (lines=26) @@
749
        }
750
751
752
class Garfield(GenericNavigableComic):
753
    """Class to retrieve Garfield comics."""
754
    # Also on http://www.gocomics.com/garfield
755
    name = 'garfield'
756
    long_name = 'Garfield'
757
    url = 'https://garfield.com'
758
    get_first_comic_link = simulate_first_link
759
    first_url = 'https://garfield.com/comic/1978/06/19'
760
761
    @classmethod
762
    def get_navi_link(cls, last_soup, next_):
763
        """Get link to next or previous comic."""
764
        return last_soup.find('a', class_='comic-arrow-right' if next_ else 'comic-arrow-left')
765
766
    @classmethod
767
    def get_comic_info(cls, soup, link):
768
        """Get information about a particular comics."""
769
        url = cls.get_url_from_link(link)
770
        date_re = re.compile('^%s/comic/([0-9]*)/([0-9]*)/([0-9]*)' % cls.url)
771
        year, month, day = [int(s) for s in date_re.match(url).groups()]
772
        imgs = soup.find('div', class_='comic-display').find_all('img', class_='img-responsive')
773
        return {
774
            'month': month,
775
            'year': year,
776
            'day': day,
777
            'img': [i['src'] for i in imgs],
778
        }
779
780