<commit_before># ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
from __future__ import absolute_import
import re
import copy
import json

from svtplay_dl.service import Service
from svtplay_dl.log import log
from svtplay_dl.utils import get_http_data
from svtplay_dl.fetcher.hls import HLS, hlsparse

class Ruv(Service):
    supported_domains = ['ruv.is']

    def get(self, options):
        match = re.search(r'"([^"]+geo.php)"', self.get_urldata())
        if match:
            data = get_http_data(match.group(1))
            match = re.search(r'punktur=\(([^ ]+)\)', data)
            if match:
                janson = json.loads(match.group(1))
                options.live = checklive(janson["result"][1])
                streams = hlsparse(janson["result"][1])
                for n in list(streams.keys()):
                    yield HLS(copy.copy(options), streams[n], n)
        else:
            match = re.search(r'<source [^ ]*[ ]*src="([^"]+)" ', self.get_urldata())
            if not match:
                log.error("Can't find video info for: %s", self.url)
                return
            m3u8_url = match.group(1)
            options.live = checklive(m3u8_url)
            yield HLS(copy.copy(options), m3u8_url, 800)

def checklive(url):
    return True if re.search("live", url) else False<commit_msg>ruv: http-rewrite<commit_after># ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
from __future__ import absolute_import
import re
import copy
import json

from svtplay_dl.service import Service
from svtplay_dl.log import log
from svtplay_dl.utils import get_http_data, HTTPError
from svtplay_dl.fetcher.hls import HLS, hlsparse

class Ruv(Service):
    supported_domains = ['ruv.is']

    def get(self, options):
        try:
            match = re.search(r'"([^"]+geo.php)"', self.get_urldata())
        except HTTPError:
            log.error("Can't get the page")
            return
        if match:
            data = get_http_data(match.group(1))
            match = re.search(r'punktur=\(([^ ]+)\)', data)
            if match:
                janson = json.loads(match.group(1))
                options.live = checklive(janson["result"][1])
                streams = hlsparse(janson["result"][1])
                for n in list(streams.keys()):
                    yield HLS(copy.copy(options), streams[n], n)
        else:
            match = re.search(r'<source [^ ]*[ ]*src="([^"]+)" ', self.get_urldata())
            if not match:
                log.error("Can't find video info for: %s", self.url)
                return
            m3u8_url = match.group(1)
            options.live = checklive(m3u8_url)
            yield HLS(copy.copy(options), m3u8_url, 800)

def checklive(url):
    return True if re.search("live", url) else False
{'fraction_non_alphanumeric': 0.14245712285614281, 'fraction_numerical': 0.013300665033251663, 'mean_word_length': 2.3040462427745663, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3601570', 'n_tokens_mistral': 974, 'n_tokens_neox': 944, 'n_words': 211}