Example #1
0
    def get_transcript_language_parameters(lang_code):
        """
        Get parameters of a transcript's language, having checked on consistency with settings.

        Arguments:
            lang_code (str): Raw language code of a transcript, fetched from the video platform.
        Returns:
            lang_code (str): Pre-configured language code, e.g. 'br'
            lang_label (str): Pre-configured language label, e.g. 'Breton'
        """
        # Delete region subtags
        # Reference: https://github.com/edx/edx-platform/blob/release-2017-02-16-12.24/lms/envs/common.py#L861
        lang_code = lang_code[0:2]
        # Check on consistency with the pre-configured ALL_LANGUAGES
        if lang_code not in [
                language[0] for language in settings.ALL_LANGUAGES
        ]:
            raise VideoXBlockException(
                _('Not all the languages of transcripts fetched from video platform are consistent '
                  'with the pre-configured ALL_LANGUAGES'))
        lang_label = [
            language[1] for language in settings.ALL_LANGUAGES
            if language[0] == lang_code
        ][0]
        return lang_code, lang_label
 def create_credentials(self):
     """
     Mock `get_client_credentials` returned value.
     """
     if self.event == 'auth_failed':
         self.side_effect = VideoXBlockException(
             self.ordered_results[self.event]['error_message'])
     self.return_value = (self.ordered_results[self.event]['client_secret'],
                          self.ordered_results[self.event]['client_id'],
                          self.ordered_results[self.event]['error_message'])
     return self
Example #3
0
    def download_default_transcript(self, url=None, language_code=None):  # pylint: disable=unused-argument
        """
        Download default transcript from a video platform API in WebVVT format.

        Arguments:
            url (str): Transcript download url.
        Returns:
            sub (unicode): Transcripts formatted per WebVTT format https://w3c.github.io/webvtt/
        """
        log.debug("BC: downloading default transcript from url:{}".format(url))
        if url is None:
            raise VideoXBlockException(_('`url` parameter is required.'))
        data = requests.get(url)

        return remove_escaping(data.content)
Example #4
0
    def download_default_transcript(self, url=None, language_code=None):  # pylint: disable=unused-argument
        """
        Download default transcript from Youtube API and format it to WebVTT-like unicode.

        Reference to `get_transcripts_from_youtube()`:
            https://github.com/edx/edx-platform/blob/ecc3473d36b3c7a360e260f8962e21cb01eb1c39/common/lib/xmodule/xmodule/video_module/transcripts_utils.py#L122
        """
        if url is None:
            raise VideoXBlockException(_('`url` parameter is required.'))
        utf8_parser = etree.XMLParser(encoding='utf-8')
        data = requests.get(url)
        xmltree = etree.fromstring(data.content, parser=utf8_parser)
        sub = [
            self.format_transcript_element(element, i)
            for i, element in enumerate(xmltree, 1)
        ]
        sub = "".join(sub)
        sub = "WEBVTT\n\n" + str(sub) if "WEBVTT" not in sub else str(sub)
        return sub