Skip to main content

download all videos from a channel final working code

# -*- coding: utf-8 -*-
"""
Created on Thu Apr 26 12:26:19 2018

@author: kishlay
"""

import requests  # or urllib
import csv
import sys
reload(sys)
import urllib
from datetime import date, timedelta , datetime , time
import rfc3339
sys.setdefaultencoding('utf-8')


# get Youtube Data API Key
API_KEY = ""  # insert your API key
# youtube channel ID
channel_id = ""  # insert Youtube channel ID
page_token = ""

print('how are u')
videos = []
videosExtendTest = []

test = datetime.now()
delta = timedelta(5*30)
firstDate = test - delta
finalFormat = rfc3339.rfc3339(firstDate)
#print(finalFormat)

#print(test)
formatted = rfc3339.rfc3339(test)
print(rfc3339.rfc3339(test))
next = True

publishedBefore= datetime.now()
period = delta
finaltime = date(2008,1,1)

while True:
    publishedAfter = publishedBefore - delta;
    print("\n*****outerloop**\n startdate = "+str(publishedAfter)+ "\n before = "+str(publishedBefore))
    if publishedAfter.date() < finaltime:
        print('\n\n\n breaking'+ str(publishedAfter))
        break
       
    publishedAfterFormatted = rfc3339.rfc3339(publishedAfter)
    publishedBeforeFormatted = rfc3339.rfc3339(publishedBefore)
    page_token =''
    while True:
        print("inner Loop")
        url = ("https://www.googleapis.com/youtube/v3/search?key="
                "{}&channelId={}&part=snippet,id"
                "&order=date&maxResults=50&pageToken={}&publishedAfter={}&publishedBefore={}"
                ).format(
                    API_KEY,
                    channel_id,
                    page_token,
                    urllib.quote(publishedAfterFormatted),
                    urllib.quote(publishedBeforeFormatted)
                )
        resp = requests.get(url)
        data = resp.json()
       
        #print("data = "+str(data))
        print("legnth is data "+str(len(data['items'])))
       
       
        print("before length" + str(  len(videos)))
       
   
        for i in data['items']:
            videos.append(i)
            #videosExtendTest.extend(i)
        print("length of video array" + str(len(videos)))
     
   
        # iterate through result pagination
        is_next = data.get('nextPageToken')
        if is_next:
            page_token = is_next
        else:
            break
    publishedBefore = publishedAfter;

# structuring the data
rows = []
count =0
for i in videos:
    title = i['snippet'].get('title')
    description = i['snippet'].get('description', "")
    videoId = "https://www.youtube.com/watch?v={}".format(
        i['id'].get('videoId', ""))
    # add special formula [=image("url")], so we can view the thumbnail in google docs spreadsheet
    count = count + 1
    #print(videoId)
    #print(count)
 
    thumb = "=image(\"{}\")".format(i['snippet']['thumbnails'].get('default').get('url', ""))
    #rows.append(";".join([title, description, videoId, thumb]))
    rows.append(";".join([title, videoId]))
    #print("#")
    #print(rows[count-1])
    #print("#")
    # data is now ready to write to csv file



# writing to csv file
path = "videos.csv"
with open(path, "w") as csv_file:
    writer = csv.writer(csv_file, delimiter=";")
    for row in rows:
        #print(row)
        writer.writerow(row.split(";"))
     
print(count)

Comments

Popular posts from this blog

opening multiple ports tunnels ngrok in ubuntu

Location for the config yml file /home/example/.ngrok2/ngrok.yml content of config file authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p tunnels: app-foo: addr: 80 proto: http host_header: app-foo.dev app-bar: addr: 80 proto: http host_header: app-bar.dev how to start ngrok with considering the config file: ngrok start --all

rename field in elastic Search

https://qiita.com/tkprof/items/e50368eb1473497a16d0 How to Rename an Elasticsearch field from columns: - {name: xxx, type: double} to columns: - {name: yyy, type: double} Pipeline API and reindex create a new Pipeline API : Rename Processor PUT _ingest/pipeline/pipeline_rename_xxx { "description" : "rename xxx", "processors" : [ { "rename": { "field": "xxx", "target_field": "yyy" } } ] } { "acknowledged": true } then reindex POST _reindex { "source": { "index": "source" }, "dest": { "index": "dest", "pipeline": "pipeline_rename_xxx" } }

Sumeru enterprise tiger privacy policy

Sumeru Enterprise Tiger Business Solutions Pvt. Ltd. Data Privacy Policy At Sumeru Enterprise Tiger Business Solutions Pvt. Ltd. we are committed to providing you with digitalization software products and services to meet your needs. Our commitment includes protecting personally identifiable information we obtain about you when you register to use one of our websites or become our customer (“Personal Information”). We want to earn your trust by providing strict safeguards to protect your Personal Information. This Policy applies to members, customers, former customers, users, and applicants. In the course of our business activities, Sumeru Enterprise Tiger Business Solutions Pvt. Ltd. collects, processes, and shares Personal Information. Indian law gives individuals the right to limit some but not all sharing. This Policy explains what Personal Information we collect, process, and share. We describe how we do so, and why. The Policy also describes your rights to access a...