diff --git a/social.py b/social.py index 2ee17ea..0c248b7 100644 --- a/social.py +++ b/social.py @@ -87,11 +87,11 @@ class Posts(Base): comment = sqlalchemy.Column(sqlalchemy.String(length=4096, collation="utf8")) rating = sqlalchemy.Column(sqlalchemy.String(length=128, collation="utf8")) picsURL = sqlalchemy.Column(sqlalchemy.String(length=4096, collation="utf8")) - pics_local_path = sqlalchemy.Column(sqlalchemy.String(length=4096, collation="utf8")) + picsLocalpath = sqlalchemy.Column(sqlalchemy.String(length=4096, collation="utf8")) source = sqlalchemy.Column(sqlalchemy.String(length=64, collation="utf8")) date = sqlalchemy.Column(sqlalchemy.String(length=64, collation="utf8")) address = sqlalchemy.Column(sqlalchemy.String(length=256, collation="utf8")) - dict_post_complete = sqlalchemy.Column(sqlalchemy.String(length=128, collation="utf8")) + dictPostComplete = sqlalchemy.Column(sqlalchemy.String(length=128, collation="utf8")) #googleurl = sqlalchemy.Column(sqlalchemy.String(length=128, collation="utf8")) wpurl = sqlalchemy.Column(sqlalchemy.String(length=512, collation="utf8")) businessurl = sqlalchemy.Column(sqlalchemy.String(length=2048, collation="utf8")) @@ -215,13 +215,12 @@ def get_auth_connect(): print(' Connecting to joeeatswhat.com ...') data_string = f"{env.user}:{env.password}" token = base64.b64encode(data_string.encode()).decode("utf-8") - headers = {"Authorization": f"Basic {token}"} - connections['web'] = headers + connections['web'] = {"Authorization": f"Basic {token}"} else: - headers = "" + connections['web'] = "" if env.tiktok : print(' Connecting to Instagram ...') - return connections,headers + return connections ################################################################################################## @@ -350,7 +349,8 @@ def is_docker(): """ cgroup = Path('/proc/self/cgroup') #print (cgroup.read_text()) - return Path('/.dockerenv').is_file() or cgroup.is_file() and 'docker' in cgroup.read_text() + return Path('/.dockerenv').is_file() or cgroup.is_file() and 'docker' in \ + cgroup.read_text(encoding="utf-8") ################################################################################################## @@ -559,7 +559,7 @@ def google_scroll(counter_google_scroll,driver): # '//*[@id="QA0Szd"]/div/div/div[1]/div[2]/div/div[1]/div/div/div[2]/div[10]/div') for _i in range(counter_google_scroll): try: - google_scroll = driver.execute_script( + google_scroller = driver.execute_script( 'document.getElementsByClassName("dS8AEf")[0].\ scrollTop=document.getElementsByClassName("dS8AEf")[0].scrollHeight', scrollable_div @@ -568,7 +568,7 @@ def google_scroll(counter_google_scroll,driver): except AttributeError as e: print(f"Error while google_scroll: {e}") break - return google_scroll + return google_scroller ################################################################################################## @@ -586,10 +586,10 @@ def write_to_xlsx2(data, local_outputs): print('write to excel...') sqlalchemy.null() - cols = ["name", "comment", 'rating','picsURL','pics_local_path','source','date','address', - 'dict_post_complete'] - cols2 = ["num","name", "comment", 'rating','picsURL','pics_local_path','source','date', - 'address','dict_post_complete'] + cols = ["name", "comment", 'rating','picsURL','picsLocalpath','source','date','address', + 'dictPostComplete'] + cols2 = ["num","name", "comment", 'rating','picsURL','picsLocalpath','source','date', + 'address','dictPostComplete'] df = pd.DataFrame(data, columns=cols) df2 = pd.DataFrame(local_outputs['xlsdf'].values, columns=cols2) #df2 = df1.where((pd.notnull(df)), None) # take out NAN problems @@ -606,18 +606,18 @@ def write_to_xlsx2(data, local_outputs): print (' Row ',processrow.id,' ', processrow.name ,' already in XLS sheet') d2_row = Posts(name=processrow.name ,comment=processrow.comment,rating=\ processrow.rating,picsURL=processrow.picsURL,pics_local_path=processrow.\ - pics_local_path,source=processrow.source,date=processrow.date,address=processrow.\ - address,dict_post_complete=processrow.dict_post_complete) + picsLocalpath,source=processrow.source,date=processrow.date,address=processrow.\ + address,dict_post_complete=processrow.dictPostComplete) elif processrow.name is not None: # Create a Python dictionary object with all the column values # d_row = {'name':processrow.name ,'comment':processrow.comment,'rating':processrow.rating, -# 'picsURL':processrow.picsURL,'pics_local_path':processrow.pics_local_path, 'source':\ +# 'picsURL':processrow.picsURL,'pics_local_path':processrow.picsLocalpath, 'source':\ # processrow.source,'date':processrow.date,'address':processrow.address,'dict_post_complete'\ -# :processrow.dict_post_complete} +# :processrow.dictPostComplete} d2_row = Posts(name=processrow.name ,comment=processrow.comment,rating=processrow.\ - rating,picsURL=processrow.picsURL,pics_local_path=processrow.pics_local_path,\ + rating,picsURL=processrow.picsURL,pics_local_path=processrow.picsLocalpath,\ source=processrow.source,date=processrow.date,address=processrow.address,\ - dict_post_complete=processrow.dict_post_complete) + dict_post_complete=processrow.dictPostComplete) print (' Row ',processrow[0],' ', processrow.name ,' added to XLS sheet') # Append the above Python dictionary object as a row to the existing pandas DataFrame # Using the DataFrame.append() function @@ -650,10 +650,10 @@ def write_to_database(data, local_outputs): """ print('write to database ...') - cols = ["name", "comment", 'rating','picsURL','pics_local_path','source','date','address', - 'dict_post_complete'] - # cols2 = ["num","name", "comment", 'rating','picsURL','pics_local_path','source','date', - # 'address','dict_post_complete'] + cols = ["name", "comment", 'rating','picsURL','picsLocalpath','source','date','address', + 'dictPostComplete'] + # cols2 = ["num","name", "comment", 'rating','picsURL','picsLocalpath','source','date', + # 'address','dictPostComplete'] df = pd.DataFrame(data, columns=cols) # df2 = pd.DataFrame(local_outputs['xlsdf'].values, columns=cols2) # print ('Dropped items not included in sync to database: ',df2.dropna(inplace=True)) @@ -664,22 +664,22 @@ def write_to_database(data, local_outputs): print("Encode Object into JSON formatted Data using jsonpickle") jsonposts = jsonpickle.encode(local_outputs['posts'], unpicklable=False) for processrow in data: - if (processrow.name in df.values): + if processrow.name in df.values: print (' Row ',processrow.id,' ', processrow.name ,' already in database') d2_row = Posts(name=processrow.name ,comment=processrow.comment,rating=processrow.\ - rating,picsURL=processrow.picsURL,pics_local_path=processrow.pics_local_path,\ + rating,picsURL=processrow.picsURL,pics_local_path=processrow.picsLocalpath,\ source=processrow.source,date=processrow.date,address=processrow.address,\ - dict_post_complete=processrow.dict_post_complete) + dict_post_complete=processrow.dictPostComplete) elif processrow.name is not None: # Create a Python dictionary object with all the column values # d_row = {'name':processrow.name ,'comment':processrow.comment,'rating':processrow.rating, -# 'picsURL':processrow.picsURL,'pics_local_path':processrow.pics_local_path, 'source': +# 'picsURL':processrow.picsURL,'pics_local_path':processrow.picsLocalpath, 'source': # processrow.source,'date':processrow.date,'address':processrow.address,'dict_post_complete' -# :processrow.dict_post_complete} +# :processrow.dictPostComplete} d2_row = Posts(name=processrow.name ,comment=processrow.comment,rating=processrow.\ - rating,picsURL=processrow.picsURL,pics_local_path=processrow.pics_local_path,\ + rating,picsURL=processrow.picsURL,pics_local_path=processrow.picsLocalpath,\ source=processrow.source,date=processrow.date,address=processrow.address,\ - dict_post_complete=processrow.dict_post_complete) + dict_post_complete=processrow.dictPostComplete) print (' Row ',processrow[0],' ', processrow.name ,' added to XLS sheet') # Append the above Python dictionary object as a row to the existing pandas DataFrame # Using the DataFrame.append() function @@ -716,11 +716,11 @@ def database_update_row(review_name, column_name, column_value, update_style, lo """ try: - if update_style == "forceall" and column_value != False: + if update_style == "forceall" and column_value is not False: local_outputs['postssession'].query(Posts).filter(Posts.name == review_name).update\ ({column_name : column_value}) print (' Force Updated ',column_name, ' to: ',column_value) - elif update_style == "onlyempty" and column_value != False: + elif update_style == "onlyempty" and column_value is not False: postval = local_outputs['postssession'].query(Posts).filter(Posts.name == review_name,\ getattr(Posts,column_name).is_not(null())).all() if len(postval) == 0 : @@ -1034,12 +1034,11 @@ def post_to_threads2(title, content, headers, date, rating, address, picslist, l "\n\nhttps://www.joeeatswhat.com "+"\n\n" local_outputs['instasession'].video_upload(outputmontage, data) except AttributeError as error: - print(" An error occurred uploading video to Threads:", type(error).__name__) + print(" An error occurred uploading video to Threads:", type(error).__name__) return False return True else: return False - ################################################################################################### @@ -1101,7 +1100,23 @@ def post_to_tiktok(title, content, headers, date, rating, address, picslist, loc ################################################################################################### -def post_to_instagram2(title, content, headers,date, rating, address, picslist,local_outputs): +def post_to_instagram2(title, content, headers, date, rating, address, picslist, local_outputs): + """ + Posts content to Instagram with relevant information and media. + + Args: + title (str): The title of the post. + content (str): The content of the post. + headers: Headers for the post. + date: Date of the post. + rating: Rating of the post. + address: Address related to the post. + picslist: List of pictures for the post. + local_outputs: Local outputs for the post. + + Returns: + bool: True if the post was successfully uploaded, False otherwise. + """ outputmontage = '' addresshtml = re.sub(" ", ".",address) attrib_list = local_outputs['postssession'].query(Posts).filter(Posts.name == title).all() @@ -1124,6 +1139,7 @@ def post_to_instagram2(title, content, headers,date, rating, address, picslist,l if picslist != '[]' and "montage.mp4" in picslist: #content = content + get_hastags(address, title) pics = ((picslist[1:-1].replace(",","")).replace("'","")).split(" ") + video, outputmontage = make_montage_video_from_google(pics) try: instasession.video_upload(outputmontage, data) except AttributeError as error: @@ -1156,7 +1172,7 @@ def post_to_wordpress(title,content,headers,date,rating,address,picslist,local_o None """ # post - new_post = False + #new_post = False #countreview = False addresshtml = re.sub(" ", ".",address) googleadress = r"