-
-
Save liannewriting/cd35e68deee092eeab9c288f414d6bc1 to your computer and use it in GitHub Desktop.
import pandas as pd | |
import numpy as np | |
from datetime import timedelta, datetime | |
# loading the data | |
dat = [] | |
with open('sydney.txt') as f: | |
for line in f: | |
if 'id="video-title"' in line: | |
keyword = 'aria-label="' | |
ind0 = line.find(keyword) + len(keyword) | |
ind1 = line.find('"', ind0) | |
vid_info = line[ind0:ind1] | |
# get the link. | |
keyword = 'href="' | |
ind0 = line.find(keyword, ind1) + len(keyword) | |
ind1 = line.find('"', ind0) | |
vid_link = line[ind0:ind1] | |
keyword = ' by Sydney Cummings ' | |
ind1 = vid_info.find(keyword) | |
vid_title = vid_info[:ind1] | |
ind0 = ind1 + len(keyword) | |
ind1 = vid_info.find(' ago ') | |
vid_ago = vid_info[ind0:ind1] | |
ind0 = ind1 + len(' ago ') | |
ind1 = vid_info.find(' ', ind0) | |
ind1 = vid_info.find(' ', ind1 + 1) | |
vid_length = vid_info[ind0:ind1] | |
if vid_length[-1] == ',': | |
ind1 = vid_info.find(' ', ind1 + 1) | |
ind1 = vid_info.find(' ', ind1 + 1) | |
vid_length = vid_info[ind0:ind1] | |
vid_length_sec = 0 | |
vid_length_arr = vid_length.split(' ') | |
if len(vid_length_arr) == 2: | |
if 'minute' in vid_length_arr[1]: | |
vid_length_sec = int(vid_length_arr[0]) * 60 | |
elif 'hour' in vid_length_arr[1]: | |
vid_length_sec = int(vid_length_arr[0]) * 60 * 60 | |
else: | |
vid_length_sec = int(vid_length_arr[0]) | |
elif len(vid_length_arr) >= 4: | |
if 'minute' in vid_length_arr[1]: | |
vid_length_sec = int(vid_length_arr[0]) * 60 | |
elif 'hour' in vid_length_arr[1]: | |
vid_length_sec = int(vid_length_arr[0]) * 60 * 60 | |
else: | |
vid_length_sec = int(vid_length_arr[0]) | |
if 'minute' in vid_length_arr[3]: | |
vid_length_sec += int(vid_length_arr[2]) * 60 | |
elif 'hour' in vid_length_arr[3]: | |
vid_length_sec += int(vid_length_arr[2]) * 60 * 60 | |
else: | |
vid_length_sec += int(vid_length_arr[2]) | |
if vid_info[ind1-1] == ',': | |
ind1 += 1 | |
ind1 = vid_info.find(' ', ind1) | |
ind1 = vid_info.find(' ', ind1+1) | |
ind0 = ind1 + 1 | |
ind1 = vid_info.find(' ', ind0) | |
vid_views = int(vid_info[ind0:ind1].replace(',', '')) | |
row = [vid_title, vid_ago, vid_length_sec, vid_views, vid_link] | |
dat.append(row) | |
df_videos = pd.DataFrame(data=dat, columns=['title', 'posted_ago', 'length', 'views', 'link']) | |
# getting the calories | |
def get_calories(title): | |
title_lower = title.lower() | |
ind1 = title_lower.find('calories') | |
if ind1 > 0: | |
ind0 = ind1 - 4 | |
cal = title_lower[ind0:ind1].strip() | |
try: | |
cal = int(cal) | |
except: | |
cal = np.nan | |
return cal | |
return np.nan | |
df_videos['calories'] = df_videos['title'].map(get_calories) | |
# assigning the dates, the ones that are irregular are assigned no dates | |
dtes = ['2020-01-13','2020-01-12','2020-01-11','2020-01-10','2020-01-09','2020-01-08','2020-01-07','2020-01-06','2020-01-05','2020-01-04','2020-01-03','2020-01-02','2020-01-01','2019-12-31','2019-12-30','2019-12-29','2019-12-28','2019-12-27','2019-12-26','2019-12-25','2019-12-24','2019-12-23','2019-12-22','2019-12-21','2019-12-20','2019-12-19','2019-12-18','2019-12-17','2019-12-16','2019-12-15','2019-12-14','2019-12-13','2019-12-12','2019-12-11','2019-12-10','2019-12-09','2019-12-08','2019-12-07','2019-12-06','2019-12-05','2019-12-04','2019-12-03','2019-12-02','2019-12-01','2019-11-30','2019-11-29','2019-11-28','2019-11-27','2019-11-26','2019-11-25','2019-11-24','2019-11-23','2019-11-22','2019-11-21','2019-11-20','2019-11-19','2019-11-18','2019-11-17','2019-11-16','2019-11-15','2019-11-14','2019-11-13','2019-11-12','2019-11-11','2019-11-10','2019-11-09','2019-11-08','2019-11-07','2019-11-06','2019-11-05','2019-11-04','2019-11-03','2019-11-02','2019-11-01','2019-10-31','2019-10-30','2019-10-29','2019-10-28','2019-10-27','2019-10-26','2019-10-25','2019-10-24','2019-10-23','2019-10-22','2019-10-21','2019-10-20','2019-10-19','2019-10-18','2019-10-17','2019-10-16','2019-10-15','2019-10-15','2019-10-14','2019-10-13','2019-10-12','2019-10-11','2019-10-10','2019-10-09','2019-10-08','2019-10-07','2019-10-06','2019-10-05','2019-10-04','2019-10-03','2019-10-02','2019-10-01','2019-09-30','2019-09-30','2019-09-29','2019-09-28','2019-09-27','2019-09-26','2019-09-26','2019-09-25','2019-09-24','2019-09-23','2019-09-22','2019-09-21','2019-09-21','2019-09-20','2019-09-19','2019-09-18','2019-09-17','2019-09-16','2019-09-16','2019-09-15','2019-09-14','2019-09-13','2019-09-12','2019-09-11','2019-09-11','2019-09-10','2019-09-09','2019-09-08','2019-09-07','2019-09-07','2019-09-06','2019-09-05','2019-09-04','2019-09-04','2019-09-03','2019-09-02','2019-09-01','2019-08-31','2019-08-30','2019-08-29','2019-08-28','2019-08-27','2019-08-26','2019-08-25','2019-08-24','2019-08-23','2019-08-22','2019-08-21','2019-08-20','2019-08-19','2019-08-18','2019-08-17','2019-08-16','2019-08-16','2019-08-15','2019-08-14','2019-08-13','2019-08-12','2019-08-11','2019-08-10','2019-08-09','2019-08-08','2019-08-07','2019-08-06','2019-08-05','2019-08-04','2019-08-03','2019-08-02','2019-08-01','2019-07-31','2019-07-30','2019-07-29','2019-07-28','2019-07-27','2019-07-26','2019-07-25','2019-07-24','2019-07-23','2019-07-22','2019-07-21','2019-07-20','2019-07-19','2019-07-18','2019-07-17','2019-07-16','2019-07-15','2019-07-14','2019-07-13','2019-07-12','2019-07-11','2019-07-10','2019-07-09','2019-07-08','2019-07-07','2019-07-06','2019-07-05','2019-07-04','2019-07-03','2019-07-02','2019-07-01','2019-06-30','2019-06-29','2019-06-28','2019-06-27','2019-06-26','2019-06-25','2019-06-24','2019-06-23','2019-06-22','2019-06-21','2019-06-20','2019-06-19','2019-06-18','2019-06-17','2019-06-16','2019-06-15','2019-06-14','2019-06-13','2019-06-12','2019-06-11','2019-06-10','2019-06-09','2019-06-08','2019-06-07','2019-06-06','2019-06-05','2019-06-04','2019-06-03','2019-06-02','2019-06-01','2019-05-31','2019-05-30','2019-05-29','2019-05-28','2019-05-27','2019-05-26','2019-05-25','2019-05-24','2019-05-23','2019-05-22','2019-05-21','2019-05-20','2019-05-19','2019-05-18','2019-05-17','2019-05-16','2019-05-15','2019-05-14','2019-05-13','2019-05-12','2019-05-11','2019-05-10','2019-05-09','2019-05-08','2019-05-07','2019-05-06','2019-05-05','2019-05-04','2019-05-03','2019-05-02','2019-05-01','2019-04-30','2019-04-29','2019-04-28','2019-04-27','2019-04-26','2019-04-25','2019-04-24','2019-04-23','2019-04-22','2019-04-21','2019-04-20','2019-04-19','2019-04-18','2019-04-17','2019-04-16','2019-04-15','2019-04-14','2019-04-13','2019-04-12','2019-04-11','2019-04-10','2019-04-09','2019-04-08','2019-04-07','2019-04-06','2019-04-05','2019-04-04','2019-04-03','2019-04-02','2019-04-01','2019-03-31','2019-03-30','2019-03-29','2019-03-28','2019-03-27','2019-03-26','2019-03-25','2019-03-24','2019-03-23','2019-03-22','2019-03-21','2019-03-20','2019-03-19','2019-03-18','2019-03-17','2019-03-16','2019-03-15','2019-03-14','2019-03-13','2019-03-12','2019-03-11','2019-03-10','2019-03-09','2019-03-08','2019-03-07','2019-03-06','2019-03-05','2019-03-04','2019-03-03','2019-03-02','2019-03-01','2019-02-28','2019-02-27','2019-02-27','2019-02-26','2019-02-25','2019-02-24','2019-02-23','2019-02-22','2019-02-21','2019-02-20','2019-02-19','2019-02-18','2019-02-18','2019-02-18','2019-02-17','2019-02-16','2019-02-15','2019-02-15','2019-02-14','2019-02-13','2019-02-12','2019-02-11','2019-02-10','2019-02-09','2019-02-08','2019-02-07','2019-02-06','2019-02-05','2019-02-04','2019-02-04','2019-02-03','2019-02-03','2019-02-02','2019-02-01','2019-01-31','2019-01-31','2019-01-30','2019-01-29','2019-01-28','2019-01-28','2019-01-27','2019-01-26','2019-01-25','2019-01-25','2019-01-24','2019-01-23','2019-01-22','2019-01-22','2019-01-21','2019-01-21','2019-01-20','2019-01-19','2019-01-18','2019-01-17','2019-01-17','2019-01-16','2019-01-15','2019-01-14','2019-01-13','2019-01-12','2019-01-11','2019-01-11','2019-01-10','2019-01-09','2019-01-08','2019-01-07','2019-01-07','2019-01-06','2019-01-05','2019-01-04','2019-01-04','2019-01-03','2019-01-02','2019-01-01','2018-12-31','2018-12-30','2018-12-29','2018-12-28','2018-12-27','2018-12-26','2018-12-25','2018-12-24','2018-12-23','2018-12-22','2018-12-21','2018-12-20','2018-12-19','2018-12-18','2018-12-17','2018-12-16','2018-12-15','2018-12-14','2018-12-13','2018-12-12','2018-12-11','2018-12-10','2018-12-09','2018-12-08','2018-12-07','2018-12-06','2018-12-05','2018-12-04','2018-12-03','2018-12-02','2018-12-01','2018-11-30','2018-11-29','2018-11-28','2018-11-27','2018-11-26','2018-11-25','2018-11-24','2018-11-23','2018-11-22','2018-11-21','2018-11-20','2018-11-19','2018-11-18','2018-11-17','2018-11-16','2018-11-15','2018-11-14','2018-11-13','2018-11-12','2018-11-11','2018-11-10','2018-11-09','2018-11-08','2018-11-07','2018-11-06','2018-11-05','2018-11-04','2018-11-03','2018-11-02','2018-11-01','2018-10-31','2018-10-30','2018-10-29','2018-10-28','2018-10-27','2018-10-26','2018-10-25','2018-10-24','2018-10-23','2018-10-22','2018-10-21','2018-10-20','2018-10-19','2018-10-18','2018-10-17','2018-10-16','2018-10-15','2018-10-14','2018-10-13','2018-10-12','2018-10-11','2018-10-10','2018-10-09','2018-10-08','2018-10-07','2018-10-06','2018-10-05','2018-10-04','2018-10-03','2018-10-03','2018-10-02','2018-10-01','2018-09-30','2018-09-29','2018-09-28','2018-09-27','2018-09-26','2018-09-25','2018-09-24','2018-09-23','2018-09-22','2018-09-21','2018-09-20','2018-09-19','2018-09-18','2018-09-17','2018-09-16','2018-09-15','2018-09-14','2018-09-13','2018-09-13','2018-09-12','2018-09-11','2018-09-10','2018-09-09','2018-09-08','2018-09-07','2018-09-07','2018-09-06','2018-09-05','2018-09-04','2018-09-03','2018-09-02','2018-09-01','2018-08-31','2018-08-30','2018-08-29','2018-08-28','2018-08-27','2018-08-26','2018-08-25','2018-08-24','2018-08-23','2018-08-22','2018-08-21','2018-08-20','2018-08-19','2018-08-18','2018-08-17','2018-08-16','2018-08-15','2018-08-14','2018-08-13','2018-08-12','2018-08-11','2018-08-10','2018-08-09','2018-08-08','2018-08-07','2018-08-06','2018-08-05','2018-08-04','2018-08-03','2018-08-02','2018-08-01','2018-07-31','2018-07-30','2018-07-29','2018-07-28','2018-07-27','2018-07-26','2018-07-25','2018-07-24','2018-07-23','2018-07-22','2018-07-21','2018-07-20','2018-07-19','2018-07-19','2018-07-18','2018-07-17','2018-07-16','2018-07-15','2018-07-14','2018-07-13','2018-07-12','2018-07-11','2018-07-10','2018-07-09','2018-07-08','2018-07-07','2018-07-06','2018-07-05','2018-07-04','2018-07-03','2018-07-02','2018-07-01','2018-07-01','2018-06-30','2018-06-29','2018-06-28','2018-06-27','2018-06-25','2018-06-24','2018-06-23','2018-06-22','2018-06-21','2018-06-20','2018-06-19','2018-06-18','2018-06-17','2018-06-16','2018-06-15','2018-06-14','2018-06-13','2018-06-12','2018-06-11','2018-06-10','2018-06-09','2018-06-08','2018-06-07','2018-06-06','2018-06-05','2018-06-04','2018-06-03','2018-06-02','2018-06-01','2018-05-31','2018-05-30','2018-05-29','2018-05-28','2018-05-27','2018-05-26','2018-05-25','2018-05-24','2018-05-23','2018-05-23','2018-05-22','2018-05-21','2018-05-20','2018-05-19','2018-05-18','2018-05-17','2018-05-16','2018-05-15','2018-05-15','2018-05-14','2018-05-13','2018-05-11','2018-05-10','2018-05-10','2018-05-09','2018-05-08','2018-05-07','2018-05-06','2018-05-05','2018-05-04','2018-05-03','2018-05-02','2018-04-30','2018-04-29','2018-04-28','2018-04-27','2018-04-26','2018-04-25','2018-04-24','2018-04-23','2018-04-22','2018-04-21','2018-04-20','2018-04-19','2018-04-17','2018-04-16','2018-04-15','2018-04-14','2018-04-13','2018-04-12','2018-04-11','2018-04-10','2018-04-08','2018-04-07','2018-04-06','2018-04-05','2018-04-04','2018-04-02','2018-04-01','2018-03-31','2018-03-30','2018-03-29','2018-03-28','2018-03-27','2018-03-26','2018-03-25','2018-03-24','2018-03-23','2018-03-22','2018-03-21','2018-03-20','2018-03-19','2018-03-18','2018-03-17','2018-03-16','2018-03-15','2018-03-14','2018-03-13','2018-03-12','2018-03-11','2018-03-10','2018-03-09','2018-03-08','2018-03-07','2018-03-06','2018-03-05','2018-03-04','2018-03-03','2018-03-02','2018-03-01','2018-02-28','2018-02-27','2018-02-26','2018-02-25','2018-02-24','2018-02-23','2018-02-22','2018-02-21','2018-02-20','2018-02-20','2018-02-19','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','2018-02-16','2018-02-14','2018-02-13','','','','2018-02-12','2018-02-11','2018-02-08','2018-02-06','2018-02-01','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''] | |
df_videos['date'] = pd.to_datetime(dtes) | |
df_videos['length'] /= 60 | |
df_videos['days_since_posted'] = (pd.to_datetime('2020-01-13') - df_videos['date'])/timedelta(days=1) |
line 36,remove [ind0:ind1]
line 64,after + is a string,will throw exception
please write some commentHey, not sure if you came here after reading the article (https://www.justintodata.com/get-more-youtube-views-with-machine-learning/)
this was written for a one-time project only. so we didn't make it too robust. perhaps only works for the youtube channel we scraped.sorry ,i knew why they code can‘t run.the YouTube's UI include some Chinese because I'm in China .so many split and string cut can't run.thanks
that's good to know. Glad it works!
Just a comment. I had a problem with lines 102 and 103 since I am doing this way after the code was posted and I get an error with the dates since the list is shorter than the array, which will be worse as time goes on.
instead of using line 102, I created a function to parse the date of the video based on the 'posted_ago' context:
def timer(x):
getDate = ''
if 'year' in x:
getDate = pd.to_datetime('today') - pd.DateOffset(years=int(x.split()[0]))
elif 'month' in x:
getDate = pd.to_datetime('today') - pd.DateOffset(months=int(x.split()[0]))
elif 'week' in x:
getDate = pd.to_datetime('today') - pd.DateOffset(weeks=int(x.split()[0]))
elif 'day' in x:
getDate = pd.to_datetime('today') - pd.DateOffset(days=int(x.split()[0]))
elif 'hour' in x:
getDate = pd.to_datetime('today')
return getDate
line 103 would change to this to adjust:
df_videos['date'] = df_videos['posted_ago'].apply(lambda x: timer(x))
and instead of using line 106 I changed the code to adjust for "today's date."
df_videos['days_since_posted'] = (pd.to_datetime('today') - df_videos['date'])/timedelta(days=1)
sorry ,i knew why they code can‘t run.the YouTube's UI include some Chinese because I'm in China .so many split and string cut can't run.thanks