Code Duplication    Length = 21-23 lines in 4 locations

comics.py 4 locations

@@ 648-670 (lines=23) @@
645
        }
646
647
648
class OneOneOneOneComic(GenericNavigableComic):
649
    """Class to retrieve 1111 Comics."""
650
    # Also on http://comics1111.tumblr.com
651
    # Also on https://tapastic.com/series/1111-Comics
652
    name = '1111'
653
    long_name = '1111 Comics'
654
    url = 'http://www.1111comics.me'
655
    get_first_comic_link = get_div_navfirst_a
656
    get_navi_link = get_link_rel_next
657
658
    @classmethod
659
    def get_comic_info(cls, soup, link):
660
        """Get information about a particular comics."""
661
        title = soup.find('h1', class_='comic-title').find('a').string
662
        date_str = soup.find('header', class_='comic-meta entry-meta').find('a').string
663
        day = string_to_date(date_str, "%B %d, %Y")
664
        imgs = soup.find_all('meta', property='og:image')
665
        return {
666
            'title': title,
667
            'month': day.month,
668
            'year': day.year,
669
            'day': day.day,
670
            'img': [i['content'] for i in imgs],
671
        }
672
673
@@ 674-695 (lines=22) @@
671
        }
672
673
674
class AngryAtNothing(GenericNavigableComic):
675
    """Class to retrieve Angry at Nothing comics."""
676
    # Also on http://tapastic.com/series/Comics-yeah-definitely-comics-
677
    name = 'angry'
678
    long_name = 'Angry At Nothing'
679
    url = 'http://www.angryatnothing.net'
680
    get_first_comic_link = get_div_navfirst_a
681
    get_navi_link = get_a_rel_next
682
683
    @classmethod
684
    def get_comic_info(cls, soup, link):
685
        """Get information about a particular comics."""
686
        title = soup.find('h1', class_='comic-title').find('a').string
687
        date_str = soup.find('header', class_='comic-meta entry-meta').find('a').string
688
        day = string_to_date(date_str, "%B %d, %Y")
689
        imgs = soup.find_all('meta', property='og:image')
690
        return {
691
            'title': title,
692
            'month': day.month,
693
            'year': day.year,
694
            'day': day.day,
695
            'img': [i['content'] for i in imgs],
696
        }
697
698
@@ 2592-2612 (lines=21) @@
2589
        }
2590
2591
2592
class PlanC(GenericNavigableComic):
2593
    """Class to retrieve Plan C comics."""
2594
    name = 'planc'
2595
    long_name = 'Plan C'
2596
    url = 'http://www.plancomic.com'
2597
    get_first_comic_link = get_a_navi_navifirst
2598
    get_navi_link = get_a_navi_comicnavnext_navinext
2599
2600
    @classmethod
2601
    def get_comic_info(cls, soup, link):
2602
        """Get information about a particular comics."""
2603
        title = soup.find('h2', class_='post-title').string
2604
        date_str = soup.find("span", class_="post-date").string
2605
        day = string_to_date(date_str, "%B %d, %Y")
2606
        imgs = soup.find('div', id='comic').find_all('img')
2607
        return {
2608
            'title': title,
2609
            'img': [i['src'] for i in imgs],
2610
            'month': day.month,
2611
            'year': day.year,
2612
            'day': day.day,
2613
        }
2614
2615
@@ 1657-1677 (lines=21) @@
1654
        }
1655
1656
1657
class WarehouseComic(GenericNavigableComic):
1658
    """Class to retrieve Warehouse Comic comics."""
1659
    name = 'warehouse'
1660
    long_name = 'Warehouse Comic'
1661
    url = 'http://warehousecomic.com'
1662
    get_first_comic_link = get_a_navi_navifirst
1663
    get_navi_link = get_link_rel_next
1664
1665
    @classmethod
1666
    def get_comic_info(cls, soup, link):
1667
        """Get information about a particular comics."""
1668
        title = soup.find('h2', class_='post-title').string
1669
        date_str = soup.find('span', class_='post-date').string
1670
        day = string_to_date(date_str, "%B %d, %Y")
1671
        imgs = soup.find('div', id='comic').find_all('img')
1672
        return {
1673
            'img': [i['src'] for i in imgs],
1674
            'title': title,
1675
            'day': day.day,
1676
            'month': day.month,
1677
            'year': day.year,
1678
        }
1679
1680