コード例 #1
0
def get(
    url=None, headers=False,
    streaming=False, chunk_size=8 * 1024,conRangefp = None
):
    """Send an http GET request.

    :param str url:
        The URL to perform the GET request for.
    :param bool headers:
        Only return the http headers.
    :param bool streaming:
        Returns the response body in chunks via a generator.
    :param int chunk_size:
        The size in bytes of each chunk.
    """
    response = None
    if streaming:
        import urllib2
        req = urllib2.Request(url) 
        if conRangefp:
            nfize = os.path.getsize(conRangefp)
            print conRangefp,nfize
            conRange = 'bytes=%d-'%(nfize)
            print conRange
            req.add_header('Range', conRange)

        while True:
            try:
                response = urlopen(req)
                break
            except Exception as e:
                print 'time out ...5s after retry...'
                time.sleep(5)
    else:
        while True:
            try:
                response = urlopen(url)
                break
            except Exception as e:
                print 'time out ...5s after retry...'
                time.sleep(5)
            
    if streaming:
        return stream_response(response, chunk_size)
    elif headers:
        # https://github.com/nficano/pytube/issues/160
        return {k.lower(): v for k, v in response.info().items()}
    return (
        response
        .read()
        .decode('utf-8')
    )
コード例 #2
0
def get(
    url=None,
    headers=False,
    streaming=False,
    chunk_size=8 * 1024,
):
    """Send an http GET request.

    :param str url:
        The URL to perform the GET request for.
    :param bool headers:
        Only return the http headers.
    :param bool streaming:
        Returns the response body in chunks via a generator.
    :param int chunk_size:
        The size in bytes of each chunk.
    """

    # https://github.com/nficano/pytube/pull/465
    req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
    response = urlopen(req)

    if streaming:
        return stream_response(response, chunk_size)
    elif headers:
        # https://github.com/nficano/pytube/issues/160
        return {k.lower(): v for k, v in response.info().items()}
    return response.read().decode("utf-8")
コード例 #3
0
ファイル: request.py プロジェクト: nayekabhishek1/pytube
def get(
    url=None, headers=False,
    streaming=False, chunk_size=8 * 1024,
):
    """Send an http GET request.

    :param str url:
        The URL to perform the GET request for.
    :param bool headers:
        Only return the http headers.
    :param bool streaming:
        Returns the response body in chunks via a generator.
    :param int chunk_size:
        The size in bytes of each chunk.
    """
    response = urlopen(url)
    if streaming:
        return stream_response(response, chunk_size)
    elif headers:
        # https://github.com/nficano/pytube/issues/160
        return {k.lower(): v for k, v in response.info().items()}
    return (
        response
        .read()
        .decode('utf-8')
    )
コード例 #4
0
def get(
    url=None,
    headers=False,
    streaming=False,
    chunk_size=8 * 1024,
):
    """Send an http GET request.

    :param str url:
        The URL to perform the GET request for.
    :param bool headers:
        Only return the http headers.
    :param bool streaming:
        Returns the response body in chunks via a generator.
    :param int chunk_size:
        The size in bytes of each chunk.
    """

    req = Request(url)
    req.add_header(
        'User-Agent',
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36'
    )

    response = urlopen(req)
    if streaming:
        return stream_response(response, chunk_size)
    elif headers:
        # https://github.com/nficano/pytube/issues/160
        return {k.lower(): v for k, v in response.info().items()}
    return (response.read().decode('utf-8'))
コード例 #5
0
def get(
    url=None,
    headers=False,
    streaming=False,
    chunk_size=8 * 1024,
):
    """Send an http GET request.

    :param str url:
        The URL to perform the GET request for.
    :param bool headers:
        Only return the http headers.
    :param bool streaming:
        Returns the response body in chunks via a generator.
    :param int chunk_size:
        The size in bytes of each chunk.
    """
    gcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
    response = urlopen(url, context=gcontext)
    if streaming:
        return stream_response(response, chunk_size)
    elif headers:
        # https://github.com/nficano/pytube/issues/160
        return {k.lower(): v for k, v in response.info().items()}
    return (response.read().decode('utf-8'))
コード例 #6
0
def chunk_generator_from_playlist(file_path=None, buffer_size=3):
    try:
        offset = 0
        last_processed = -1
        endlist = False
        # for playlists with m3u8 extensions
        m3u8_obj_outer = m3u8.load(file_path)
        base_uri = m3u8_obj_outer.base_uri
        base_audio = m3u8_obj_outer.data['playlists'][0]['uri']
        audio_stream_url = base_uri + base_audio
        chunk = None
        chunk_index = 1
        index = 0

        while endlist is not True:
            m3u8_obj = m3u8.load(audio_stream_url)
            if last_processed < m3u8_obj.media_sequence:
                for i, segment in enumerate(m3u8_obj.data['segments']):
                    response = urlopen(base_uri + segment['uri'])
                    buff = response.read()
                    if chunk_index == 1:
                        chunk = AudioSegment.from_file(io.BytesIO(buff), "aac")
                        chunk_index = chunk_index + 1
                    elif chunk_index < buffer_size:
                        chunk = chunk + AudioSegment.from_file(
                            io.BytesIO(buff), "aac")
                        chunk_index = chunk_index + 1
                    elif chunk_index == buffer_size:
                        chunk = chunk + AudioSegment.from_file(
                            io.BytesIO(buff), "aac")
                        audio_segment, offset = get_segment_chunk_from_pydub_chunk(
                            chunk, offset, index)
                        index = index + 1
                        yield audio_segment
                        chunk_index = 1
                last_processed = m3u8_obj.media_sequence
            if m3u8_obj.data['is_endlist']:
                endlist = True
            else:
                time.sleep(2)

    except KeyboardInterrupt:
        print('Interrupted Stopping Stream')
        os._exit(0)
コード例 #7
0
ファイル: utils.py プロジェクト: ZackKingS/YouTubeDownload-1
def get_thumbnail(url):
    response = urlopen(url)
    return response
コード例 #8
0
ファイル: request.py プロジェクト: Schwortz/video_downloader
def get_parallel(url, on_progress):
    response = urlopen(url)
    return parallel_response(response, on_progress)
コード例 #9
0
def chunk_generator_from_playlist(file_path=None,
                                  out_file_name=None,
                                  buffer_size=30000,
                                  download_audio=True):
    chunk = None
    try:
        offset = 0
        last_processed = -1
        endlist = False
        # for playlists with m3u8 extensions
        m3u8_obj_outer = m3u8.load(file_path)
        base_uri = m3u8_obj_outer.base_uri
        base_audio = m3u8_obj_outer.data['playlists'][0]['uri']
        audio_stream_url = base_uri + base_audio
        chunk_index = 1
        index = 0
        unsent_segment = False
        while endlist is not True:
            try:
                m3u8_obj = m3u8.load(audio_stream_url)
                if last_processed < m3u8_obj.media_sequence:
                    for i, segment in enumerate(m3u8_obj.data['segments']):
                        response = urlopen(base_uri + segment['uri'])
                        buff = response.read()
                        new_chunk = AudioSegment.from_file(
                            io.BytesIO(buff), "aac")

                        if (chunk_index == 1) and (last_processed == -1):
                            chunk = new_chunk
                        else:
                            chunk = chunk + new_chunk

                        offset_in_milliseconds = offset * 1000
                        if (len(chunk) -
                            (offset_in_milliseconds)) > buffer_size:
                            segment_chunk = chunk[
                                offset_in_milliseconds:offset_in_milliseconds +
                                buffer_size]
                            audio_segment, offset = get_segment_chunk_from_pydub_chunk(
                                segment_chunk, offset, index)
                            index = index + 1
                            yield audio_segment
                        chunk_index = chunk_index + 1
                    last_processed = m3u8_obj.media_sequence

                if m3u8_obj.data['is_endlist'] == True:
                    endlist = True
                else:
                    time.sleep(2)
            except Exception as e:
                print(e)
                endlist = True

        if (len(chunk) - (offset * 1000)) > 0:
            segment_chunk = chunk[offset * 1000:]
            audio_segment, offset = get_segment_chunk_from_pydub_chunk(
                segment_chunk, offset, index)
            index = index + 1
            yield audio_segment

    except Exception as e:
        print(e)
    finally:
        if download_audio and (out_file_name is not None) and (chunk
                                                               is not None):
            dir_path = "./output"
            if not os.path.exists(dir_path):
                os.makedirs(dir_path)
            chunk.export(dir_path + out_file_name + "-audio-out.wav",
                         format="wav")