import numpy.random
import string
import urllib.request
from moviepy.editor import *

def find_between( s, first, last ):
    try:
        start = s.index( first ) + len( first )
        end = s.index( last, start )
        return s[start:end]
    except ValueError:
        return ""
def base36encode(number, alphabet='0123456789abcdefghijklmnopqrstuvwxyz'):
    if not isinstance(number, (int)):
        raise TypeError('number must be an integer')

    base36 = ''
    sign = ''

    if number < 0:
        sign = '-'
        number = -number

    if 0 <= number < len(alphabet):
        return sign + alphabet[number]

    while number != 0:
        number, i = divmod(number, len(alphabet))
        base36 = alphabet[i] + base36

    return sign + base36

def base36decode(number):
    return int(number, 36)


for j in range(1,20):
    videocliplist=[]
    audiocliplist=[]
    durationlist=[]
    i=0
    while i<20:
        randint=numpy.random.randint(10**5,10**7)
        try: urllib.request.urlopen('http://c...content-available-to-author-only...b.com/embed/' + base36encode(randint))
        except urllib.error.HTTPError:
            continue
        with urllib.request.urlopen('http://c...content-available-to-author-only...b.com/embed/'+base36encode(randint)) as response:
            html = response.read().decode("utf-8")

        try:vidDuration = float(find_between(html, 'false,"duration":', ',"promo_winner"'))
        except ValueError:
            continue
        if vidDuration<3:

            continue
        print(vidDuration)
        videourl=find_between(html,'"file":"','","')
        print(videourl)
        videopath='C:\\coub\\'+str(i)+'.mp4'
        try:urllib.request.urlretrieve(videourl,videopath)
        except ValueError:

            continue
        except ConnectionResetError:

            continue
        audiourl=find_between(html,'"audio_url":"','","')
        print(audiourl)
        if audiourl =="":

            continue
        audiopath='C:\\coub\\'+str(i)+'.mp3'
        try:urllib.request.urlretrieve(audiourl, audiopath)
        except ValueError:

            continue
        """
        try:audio = AudioFileClip('C:\\coub\\'+str(i)+'.mp3').set_duration(vidDuration)
        except AttributeError:
            i = i - 1
            continue
        except UnicodeDecodeError:
            i = i - 1
            continue
        except OSError:
            i = i - 1
            continue
        """
        durationlist.append(vidDuration)
        videocliplist.append(videopath)
        audiocliplist.append(audiopath)
        i+=1
        print(videocliplist)
    print(len(videocliplist))
    print(len(audiocliplist))
    print("Nachalo vtoroi fazi")
    for k in range(1,6):
        print(videocliplist)
        try:audioclip=AudioFileClip(audiocliplist[k])
        except OSError:
            continue
        except AttributeError:
            continue

        videoresized=VideoFileClip(videocliplist[k],audio=False).resize((1280,720))
        videoresized.set_audio(audioclip)
        videoresized.set_duration(durationlist[k])
        try: cuter = VideoFileClip('C:\\cut.mp4',)
        except OSError:
            continue
        print(k)
        fclip = concatenate_videoclips((videoresized, cuter), method="compose", transition=None)
        try:fclip.write_videofile('C:\\coub\\file' + str(k) + '.mp4', fps=30,codec='mpeg4')
        except OSError:
            continue
    for k in range(8, len(videocliplist)):
        print(videocliplist)
        try:
            audioclip = AudioFileClip(audiocliplist[k])
        except OSError:
            continue
        except AttributeError:
            continue

        videoresized = VideoFileClip(videocliplist[k], audio=False).resize((1280, 720))
        videoresized.set_audio(audioclip)
        videoresized.set_duration(durationlist[k])
        try:cuter = VideoFileClip('C:\\cut.mp4', )
        except OSError:
            continue
        print(k)
        fclip = concatenate_videoclips((videoresized, cuter), method="compose", transition=None)
        try:
            fclip.write_videofile('C:\\coub\\file' + str(k) + '.mp4', fps=30, codec='mpeg4')
        except OSError:
            continue






