from __future__ import unicode_literals

import re

from .common import InfoExtractor
from ..utils import (
    ExtractorError,
    compat_urllib_parse,
    get_element_by_attribute,
    unescapeHTML
)


class GoGoAnimeIE(InfoExtractor):
    IE_NAME = 'gogoanime'
    IE_DESC = 'GoGoAnime'
    _VALID_URL = r'http://www.gogoanime.com/(?P<id>[A-Za-z0-9-]+)'

    _TEST = {
        'url': 'http://www.gogoanime.com/mahou-shoujo-madoka-magica-movie-1',
        'info_dict': {
            'id': 'mahou-shoujo-madoka-magica-movie-1'
        },
        'playlist_count': 3
    }

    def _real_extract(self, url):
        video_id = self._match_id(url)
        page = self._download_webpage(url, video_id)

        if 'Oops! Page Not Found</font>' in page:
            raise ExtractorError('Video does not exist', expected=True)

        content = get_element_by_attribute("class", "postcontent", page)
        vids = re.findall(r'<iframe[^>]*?src=[\'"](h[^\'"]+)[\'"]', content)
        vids = [
            unescapeHTML(compat_urllib_parse.unquote(x))
            for x in vids if not re.search(r".*videofun.*", x)]

        if re.search(r'<div class="postcontent">[^<]*<p><iframe src=[\'"][^>]+></iframe><br />', page):
            return self.playlist_result([self.url_result(vid) for vid in vids], video_id)

        title = self._html_search_regex(
            r'<div class="postdesc">[^<]*<h1>([^<]+)</h1>', page, 'title')

        return {
            '_type': 'url',
            'id': video_id,
            'url': vids[0],
            'title': title,
        }


class GoGoAnimeSearchIE(InfoExtractor):
    IE_NAME = 'gogoanime:search'
    IE_DESC = 'GoGoAnime Search'

    _VALID_URL = r'http://www\.gogoanime\.com/.*\?s=(?P<id>[^&]*)'
    _TEST = {
        'url': 'http://www.gogoanime.com/?s=bokusatsu',
        'info_dict': {
            'id': 'bokusatsu'
        },
        'playlist_count': 6
    }

    def _real_extract(self, url):
        playlist_id = self._match_id(url)
        webpage = self._download_webpage(url, playlist_id)

        posts = re.findall(
            r'<div class="postlist">[^<]*<p[^>]*>[^<]*<a href="(?P<url>[^"]+)"',
            webpage)

        return self.playlist_result(
            [self.url_result(p) for p in posts], playlist_id)

1dab9bce67c234a1078d193bc33cd7413a046aee
<mask token>


class GoGoAnimeIE(InfoExtractor):
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>


class GoGoAnimeSearchIE(InfoExtractor):
    IE_NAME = 'gogoanime:search'
    IE_DESC = 'GoGoAnime Search'
    _VALID_URL = 'http://www\\.gogoanime\\.com/.*\\?s=(?P<id>[^&]*)'
    _TEST = {'url': 'http://www.gogoanime.com/?s=bokusatsu', 'info_dict': {
        'id': 'bokusatsu'}, 'playlist_count': 6}

    def _real_extract(self, url):
        playlist_id = self._match_id(url)
        webpage = self._download_webpage(url, playlist_id)
        posts = re.findall(
            '<div class="postlist">[^<]*<p[^>]*>[^<]*<a href="(?P<url>[^"]+)"',
            webpage)
        return self.playlist_result([self.url_result(p) for p in posts],
            playlist_id)

<mask token>


class GoGoAnimeIE(InfoExtractor):
    <mask token>
    <mask token>
    <mask token>
    <mask token>

    def _real_extract(self, url):
        video_id = self._match_id(url)
        page = self._download_webpage(url, video_id)
        if 'Oops! Page Not Found</font>' in page:
            raise ExtractorError('Video does not exist', expected=True)
        content = get_element_by_attribute('class', 'postcontent', page)
        vids = re.findall('<iframe[^>]*?src=[\\\'"](h[^\\\'"]+)[\\\'"]',
            content)
        vids = [unescapeHTML(compat_urllib_parse.unquote(x)) for x in vids if
            not re.search('.*videofun.*', x)]
        if re.search(
            '<div class="postcontent">[^<]*<p><iframe src=[\\\'"][^>]+></iframe><br />'
            , page):
            return self.playlist_result([self.url_result(vid) for vid in
                vids], video_id)
        title = self._html_search_regex(
            '<div class="postdesc">[^<]*<h1>([^<]+)</h1>', page, 'title')
        return {'_type': 'url', 'id': video_id, 'url': vids[0], 'title': title}


class GoGoAnimeSearchIE(InfoExtractor):
    IE_NAME = 'gogoanime:search'
    IE_DESC = 'GoGoAnime Search'
    _VALID_URL = 'http://www\\.gogoanime\\.com/.*\\?s=(?P<id>[^&]*)'
    _TEST = {'url': 'http://www.gogoanime.com/?s=bokusatsu', 'info_dict': {
        'id': 'bokusatsu'}, 'playlist_count': 6}

    def _real_extract(self, url):
        playlist_id = self._match_id(url)
        webpage = self._download_webpage(url, playlist_id)
        posts = re.findall(
            '<div class="postlist">[^<]*<p[^>]*>[^<]*<a href="(?P<url>[^"]+)"',
            webpage)
        return self.playlist_result([self.url_result(p) for p in posts],
            playlist_id)

<mask token>


class GoGoAnimeIE(InfoExtractor):
    IE_NAME = 'gogoanime'
    IE_DESC = 'GoGoAnime'
    _VALID_URL = 'http://www.gogoanime.com/(?P<id>[A-Za-z0-9-]+)'
    _TEST = {'url':
        'http://www.gogoanime.com/mahou-shoujo-madoka-magica-movie-1',
        'info_dict': {'id': 'mahou-shoujo-madoka-magica-movie-1'},
        'playlist_count': 3}

    def _real_extract(self, url):
        video_id = self._match_id(url)
        page = self._download_webpage(url, video_id)
        if 'Oops! Page Not Found</font>' in page:
            raise ExtractorError('Video does not exist', expected=True)
        content = get_element_by_attribute('class', 'postcontent', page)
        vids = re.findall('<iframe[^>]*?src=[\\\'"](h[^\\\'"]+)[\\\'"]',
            content)
        vids = [unescapeHTML(compat_urllib_parse.unquote(x)) for x in vids if
            not re.search('.*videofun.*', x)]
        if re.search(
            '<div class="postcontent">[^<]*<p><iframe src=[\\\'"][^>]+></iframe><br />'
            , page):
            return self.playlist_result([self.url_result(vid) for vid in
                vids], video_id)
        title = self._html_search_regex(
            '<div class="postdesc">[^<]*<h1>([^<]+)</h1>', page, 'title')
        return {'_type': 'url', 'id': video_id, 'url': vids[0], 'title': title}


class GoGoAnimeSearchIE(InfoExtractor):
    IE_NAME = 'gogoanime:search'
    IE_DESC = 'GoGoAnime Search'
    _VALID_URL = 'http://www\\.gogoanime\\.com/.*\\?s=(?P<id>[^&]*)'
    _TEST = {'url': 'http://www.gogoanime.com/?s=bokusatsu', 'info_dict': {
        'id': 'bokusatsu'}, 'playlist_count': 6}

    def _real_extract(self, url):
        playlist_id = self._match_id(url)
        webpage = self._download_webpage(url, playlist_id)
        posts = re.findall(
            '<div class="postlist">[^<]*<p[^>]*>[^<]*<a href="(?P<url>[^"]+)"',
            webpage)
        return self.playlist_result([self.url_result(p) for p in posts],
            playlist_id)

from __future__ import unicode_literals
import re
from .common import InfoExtractor
from ..utils import ExtractorError, compat_urllib_parse, get_element_by_attribute, unescapeHTML


class GoGoAnimeIE(InfoExtractor):
    IE_NAME = 'gogoanime'
    IE_DESC = 'GoGoAnime'
    _VALID_URL = 'http://www.gogoanime.com/(?P<id>[A-Za-z0-9-]+)'
    _TEST = {'url':
        'http://www.gogoanime.com/mahou-shoujo-madoka-magica-movie-1',
        'info_dict': {'id': 'mahou-shoujo-madoka-magica-movie-1'},
        'playlist_count': 3}

    def _real_extract(self, url):
        video_id = self._match_id(url)
        page = self._download_webpage(url, video_id)
        if 'Oops! Page Not Found</font>' in page:
            raise ExtractorError('Video does not exist', expected=True)
        content = get_element_by_attribute('class', 'postcontent', page)
        vids = re.findall('<iframe[^>]*?src=[\\\'"](h[^\\\'"]+)[\\\'"]',
            content)
        vids = [unescapeHTML(compat_urllib_parse.unquote(x)) for x in vids if
            not re.search('.*videofun.*', x)]
        if re.search(
            '<div class="postcontent">[^<]*<p><iframe src=[\\\'"][^>]+></iframe><br />'
            , page):
            return self.playlist_result([self.url_result(vid) for vid in
                vids], video_id)
        title = self._html_search_regex(
            '<div class="postdesc">[^<]*<h1>([^<]+)</h1>', page, 'title')
        return {'_type': 'url', 'id': video_id, 'url': vids[0], 'title': title}


class GoGoAnimeSearchIE(InfoExtractor):
    IE_NAME = 'gogoanime:search'
    IE_DESC = 'GoGoAnime Search'
    _VALID_URL = 'http://www\\.gogoanime\\.com/.*\\?s=(?P<id>[^&]*)'
    _TEST = {'url': 'http://www.gogoanime.com/?s=bokusatsu', 'info_dict': {
        'id': 'bokusatsu'}, 'playlist_count': 6}

    def _real_extract(self, url):
        playlist_id = self._match_id(url)
        webpage = self._download_webpage(url, playlist_id)
        posts = re.findall(
            '<div class="postlist">[^<]*<p[^>]*>[^<]*<a href="(?P<url>[^"]+)"',
            webpage)
        return self.playlist_result([self.url_result(p) for p in posts],
            playlist_id)

from __future__ import unicode_literals

import re

from .common import InfoExtractor
from ..utils import (
    ExtractorError,
    compat_urllib_parse,
    get_element_by_attribute,
    unescapeHTML
)


class GoGoAnimeIE(InfoExtractor):
    IE_NAME = 'gogoanime'
    IE_DESC = 'GoGoAnime'
    _VALID_URL = r'http://www.gogoanime.com/(?P<id>[A-Za-z0-9-]+)'

    _TEST = {
        'url': 'http://www.gogoanime.com/mahou-shoujo-madoka-magica-movie-1',
        'info_dict': {
            'id': 'mahou-shoujo-madoka-magica-movie-1'
        },
        'playlist_count': 3
    }

    def _real_extract(self, url):
        video_id = self._match_id(url)
        page = self._download_webpage(url, video_id)

        if 'Oops! Page Not Found</font>' in page:
            raise ExtractorError('Video does not exist', expected=True)

        content = get_element_by_attribute("class", "postcontent", page)
        vids = re.findall(r'<iframe[^>]*?src=[\'"](h[^\'"]+)[\'"]', content)
        vids = [
            unescapeHTML(compat_urllib_parse.unquote(x))
            for x in vids if not re.search(r".*videofun.*", x)]

        if re.search(r'<div class="postcontent">[^<]*<p><iframe src=[\'"][^>]+></iframe><br />', page):
            return self.playlist_result([self.url_result(vid) for vid in vids], video_id)

        title = self._html_search_regex(
            r'<div class="postdesc">[^<]*<h1>([^<]+)</h1>', page, 'title')

        return {
            '_type': 'url',
            'id': video_id,
            'url': vids[0],
            'title': title,
        }


class GoGoAnimeSearchIE(InfoExtractor):
    IE_NAME = 'gogoanime:search'
    IE_DESC = 'GoGoAnime Search'

    _VALID_URL = r'http://www\.gogoanime\.com/.*\?s=(?P<id>[^&]*)'
    _TEST = {
        'url': 'http://www.gogoanime.com/?s=bokusatsu',
        'info_dict': {
            'id': 'bokusatsu'
        },
        'playlist_count': 6
    }

    def _real_extract(self, url):
        playlist_id = self._match_id(url)
        webpage = self._download_webpage(url, playlist_id)

        posts = re.findall(
            r'<div class="postlist">[^<]*<p[^>]*>[^<]*<a href="(?P<url>[^"]+)"',
            webpage)

        return self.playlist_result(
            [self.url_result(p) for p in posts], playlist_id)
