Compare commits
7 Commits
timed
...
production
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
19161b872c | ||
|
|
a2d7eb6896 | ||
|
|
118e784e4b | ||
|
|
07981fa5ce | ||
|
|
20358fffed | ||
|
|
0bbc89d9be | ||
|
|
7a38b01406 |
64
DiskUtils.py
64
DiskUtils.py
@@ -3,25 +3,54 @@ import time
|
|||||||
import re
|
import re
|
||||||
import fnmatch
|
import fnmatch
|
||||||
|
|
||||||
def dowork():
|
def check_download_exists_matching_url_version_one(url):
|
||||||
|
|
||||||
################################################################################################
|
print ("enter > downloads > exist check > version 1")
|
||||||
|
|
||||||
url = "https://sullygnome.com/channel/kaicenat/2023january/streams"
|
match = re.search(r"https://sullygnome.com/channel/([^/]+)/(\d+)([a-z]+)/games", url.lower())
|
||||||
|
|
||||||
print("checking disk for the stuff...")
|
if not match:
|
||||||
|
|
||||||
print("url", url)
|
print(f"Invalid URL format. Could not extract channel name, year, or month.")
|
||||||
|
|
||||||
fileExists = check_download_exists_matching_url(url)
|
return
|
||||||
|
|
||||||
print("file already exists / ",fileExists)
|
channel_name, year, month = match.groups()
|
||||||
|
|
||||||
################################################################################################
|
print("channel / ",channel_name)
|
||||||
|
|
||||||
def check_download_exists_matching_url(url):
|
#print("year / ",year)
|
||||||
|
|
||||||
print ("hello?")
|
#print("month / ",month)
|
||||||
|
|
||||||
|
#file_pattern = f"{channel_name}*{month}*{year}*.csv"
|
||||||
|
|
||||||
|
## this is a problem. it works but if there 2 channels.
|
||||||
|
## redbull and redbull2 this is throw false positives. ugh
|
||||||
|
|
||||||
|
file_pattern = f"*{channel_name} - game stats on Twitch in {month} {year} - SullyGnome.csv".lower()
|
||||||
|
|
||||||
|
for filename in os.listdir("/home/yankee/Downloads/"):
|
||||||
|
|
||||||
|
updated = filename.lower()
|
||||||
|
|
||||||
|
#print("file in downloads / ",updated)
|
||||||
|
|
||||||
|
if fnmatch.fnmatch(updated, file_pattern):
|
||||||
|
|
||||||
|
print(f"Found matching file: {updated}")
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
print(f"No matching CSV file found for channel '{channel_name}' in year '{year}' and month '{month}'. (version one)")
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
def check_download_exists_matching_url_version_two(url):
|
||||||
|
|
||||||
|
print ("enter > downloads > exist check > version 2")
|
||||||
|
|
||||||
match = re.search(r"https://sullygnome.com/channel/([^/]+)/(\d+)([a-z]+)/games", url.lower())
|
match = re.search(r"https://sullygnome.com/channel/([^/]+)/(\d+)([a-z]+)/games", url.lower())
|
||||||
|
|
||||||
@@ -39,14 +68,16 @@ def check_download_exists_matching_url(url):
|
|||||||
|
|
||||||
print("month / ",month)
|
print("month / ",month)
|
||||||
|
|
||||||
#file_pattern = f"{channel_name}*{month}*{year}*.csv"
|
|
||||||
|
|
||||||
## this is a problem. it works but if there 2 channels.
|
## this is a problem. it works but if there 2 channels.
|
||||||
## redbull and redbull2 this is throw false positives. ugh
|
## redbull and redbull2 this is throw false positives. ugh
|
||||||
|
|
||||||
file_pattern = f"*{channel_name} - game stats on Twitch in {month} {year} - SullyGnome.csv".lower()
|
unicode_part = r"[\u3040-\u309F\u30A0-\u30FF_]*" # Matches any hiragana, katakana, and underscore
|
||||||
|
|
||||||
for filename in os.listdir("/root/Downloads/"):
|
file_pattern = f"{unicode_part} \({channel_name}\) - game stats on Twitch in {month} {year} - SullyGnome.csv".lower()
|
||||||
|
|
||||||
|
print("regex :",file_pattern)
|
||||||
|
|
||||||
|
for filename in os.listdir("/home/yankee/Downloads/"):
|
||||||
|
|
||||||
updated = filename.lower()
|
updated = filename.lower()
|
||||||
|
|
||||||
@@ -60,10 +91,7 @@ def check_download_exists_matching_url(url):
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
print(f"No matching CSV file found for channel '{channel_name}' in year '{year}' and month '{month}'.")
|
print(f"No matching CSV file found for channel '{channel_name}' in year '{year}' and month '{month}'. (version t55555wo)")
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def shutDownRobot():
|
|
||||||
|
|
||||||
print("shutting down the robot now")
|
|
||||||
|
|||||||
@@ -10,8 +10,6 @@ import RestAPIClient
|
|||||||
import DiskUtils
|
import DiskUtils
|
||||||
from selenium.webdriver import FirefoxOptions
|
from selenium.webdriver import FirefoxOptions
|
||||||
|
|
||||||
## https://sullygnome.com/channel/kaicenat/365/games"
|
|
||||||
|
|
||||||
def download(url):
|
def download(url):
|
||||||
|
|
||||||
print(f"launch -> SullyGnomeRobot -> download() -> {url}")
|
print(f"launch -> SullyGnomeRobot -> download() -> {url}")
|
||||||
@@ -28,7 +26,6 @@ def download(url):
|
|||||||
|
|
||||||
print("url / ", driver.current_url)
|
print("url / ", driver.current_url)
|
||||||
|
|
||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
|
|
||||||
print("stage / start / tblControl_length check")
|
print("stage / start / tblControl_length check")
|
||||||
@@ -87,17 +84,41 @@ def download(url):
|
|||||||
|
|
||||||
print("file download started. now checking if exist before closing")
|
print("file download started. now checking if exist before closing")
|
||||||
|
|
||||||
|
counter = 0
|
||||||
|
|
||||||
|
max_iterations = 5
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
|
||||||
|
print(f"Loop iteration: {counter}")
|
||||||
|
|
||||||
|
counter += 1
|
||||||
|
|
||||||
|
if counter == max_iterations:
|
||||||
|
|
||||||
|
print(f"Loop exited after {max_iterations} iterations.")
|
||||||
|
|
||||||
|
print("shutting down the robot")
|
||||||
|
|
||||||
|
driver.quit()
|
||||||
|
|
||||||
|
print("robot shut down. breaking. and dying.")
|
||||||
|
|
||||||
|
RestAPIClient.addDownloadFailure(url,"file not found on disk")
|
||||||
|
|
||||||
|
print("stage / complete / database updated w/ FAILURE")
|
||||||
|
|
||||||
|
break
|
||||||
|
|
||||||
print("checking is file exists... [loop]")
|
print("checking is file exists... [loop]")
|
||||||
|
|
||||||
existsAlready = DiskUtils.check_download_exists_matching_url(url)
|
existsAlreadyVersionOne = DiskUtils.check_download_exists_matching_url_version_one(url)
|
||||||
|
|
||||||
print("file already exists / ",existsAlready)
|
print("file already exists (v1) / ",existsAlreadyVersionOne)
|
||||||
|
|
||||||
if existsAlready:
|
if existsAlreadyVersionOne:
|
||||||
|
|
||||||
print(f"The file matching the url '{url}' exists.")
|
print(f"The file matching the url '{url}' DOES INDEED exists. (version 1)")
|
||||||
|
|
||||||
print("sleeping for 4 secs before shutting down robot")
|
print("sleeping for 4 secs before shutting down robot")
|
||||||
|
|
||||||
@@ -109,6 +130,10 @@ def download(url):
|
|||||||
|
|
||||||
print("robot shut down. breaking. and dying.")
|
print("robot shut down. breaking. and dying.")
|
||||||
|
|
||||||
|
RestAPIClient.addDownloadSuccess(url)
|
||||||
|
|
||||||
|
print("stage / complete / database updated w/ success")
|
||||||
|
|
||||||
break
|
break
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@@ -123,8 +148,4 @@ def download(url):
|
|||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
|
|
||||||
RestAPIClient.addDownloadSuccess(url)
|
|
||||||
|
|
||||||
print("stage / complete / database updated w/ success")
|
|
||||||
|
|
||||||
print(f"complete -> SullyGnomeRobot -> download() -> {url}")
|
print(f"complete -> SullyGnomeRobot -> download() -> {url}")
|
||||||
|
|||||||
@@ -6,20 +6,10 @@ set -x
|
|||||||
|
|
||||||
##
|
##
|
||||||
|
|
||||||
echo "what up????"
|
##cd /yankee-gnome-fire-consumer
|
||||||
|
|
||||||
####
|
echo "##"
|
||||||
|
echo "## init > yankee > consumer"
|
||||||
cd /yankee-gnome-fire-consumer
|
echo "##"
|
||||||
|
|
||||||
pwd
|
|
||||||
|
|
||||||
ls
|
|
||||||
|
|
||||||
whoami
|
|
||||||
|
|
||||||
pkill -f "python3 consumer.py"
|
|
||||||
|
|
||||||
sleep 4
|
|
||||||
|
|
||||||
python3 consumer.py
|
python3 consumer.py
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ print("## ")
|
|||||||
print("## starting > JMS consumer (yankee-sully-channels-monthly)")
|
print("## starting > JMS consumer (yankee-sully-channels-monthly)")
|
||||||
print("## ")
|
print("## ")
|
||||||
|
|
||||||
|
## https://sullygnome.com/channel/yaritaiji/2024october/games
|
||||||
|
|
||||||
class MyListener(stomp.ConnectionListener):
|
class MyListener(stomp.ConnectionListener):
|
||||||
|
|
||||||
def on_message(headers, message):
|
def on_message(headers, message):
|
||||||
@@ -63,7 +65,7 @@ print("## ")
|
|||||||
print("## starting > JMS consumer (yankee-sully-channels-monthly)")
|
print("## starting > JMS consumer (yankee-sully-channels-monthly)")
|
||||||
print("## ")
|
print("## ")
|
||||||
|
|
||||||
conn = stomp.Connection([('67.220.70.106', 61613)])
|
conn = stomp.Connection([('38.107.226.34', 61613)])
|
||||||
|
|
||||||
conn.set_listener('', MyListener())
|
conn.set_listener('', MyListener())
|
||||||
|
|
||||||
@@ -72,7 +74,7 @@ conn.connect('admin', 'password', wait=True)
|
|||||||
conn.subscribe('/queue/yankee-sully-channels-monthly', id=1, ack='auto', headers={'activemq.prefetchSize': 10})
|
conn.subscribe('/queue/yankee-sully-channels-monthly', id=1, ack='auto', headers={'activemq.prefetchSize': 10})
|
||||||
|
|
||||||
print("## ")
|
print("## ")
|
||||||
print("## notification > connected to JMS server (yankee-sully-channels-monthly) 3333")
|
print("## notification > connected to JMS server (yankee-sully-channels-monthly) 456")
|
||||||
print("## ")
|
print("## ")
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
|||||||
7
recycle/crontabX2
Normal file
7
recycle/crontabX2
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
SHELL=/bin/bash
|
||||||
|
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||||
|
|
||||||
|
48 20 * * * /yankee-gnome-fire-consumer/consumer.bash >> /var/log/yankee.log
|
||||||
|
|
||||||
|
* * * * * /yankee-gnome-fire-consumer/ping.bash >> /var/log/cron.log 2>&1
|
||||||
|
|
||||||
0
ping.bash → recycle/ping.bash
Normal file → Executable file
0
ping.bash → recycle/ping.bash
Normal file → Executable file
@@ -42,11 +42,11 @@ def buildCronExecuteTime():
|
|||||||
|
|
||||||
current_time = datetime.datetime.now()
|
current_time = datetime.datetime.now()
|
||||||
|
|
||||||
new_minute = (current_time.minute + 2) % 60 # The % operator performs the wrap-around
|
new_minute = (current_time.minute + 2) % 60
|
||||||
|
|
||||||
print("new_minute / ",new_minute)
|
print("new_minute / ",new_minute)
|
||||||
|
|
||||||
new_hour = current_time.hour + (current_time.minute + 5) // 60 # Integer division for hour increment
|
new_hour = (current_time.hour + 5) % 24
|
||||||
|
|
||||||
print("new_hour / ",new_hour)
|
print("new_hour / ",new_hour)
|
||||||
|
|
||||||
@@ -56,11 +56,11 @@ def buildCronExecuteTime():
|
|||||||
|
|
||||||
def buildCronSituation():
|
def buildCronSituation():
|
||||||
|
|
||||||
return "* * * * * /yankee-gnome-fire-consumer/consumer.bash >> " + buildLogFileName()
|
##return "* * * * * /yankee-gnome-fire-consumer/consumer.bash >> " + buildLogFileName()
|
||||||
|
|
||||||
##return buildCronExecuteTime() + "/yankee-gnome-fire-consumer/consumer.bash >> " + buildLogFileName()
|
return buildCronExecuteTime() + " /yankee-gnome-fire-consumer/consumer.bash >> " + buildLogFileName()
|
||||||
|
|
||||||
##return buildCronExecuteTime() +"/yankee-gnome-fire-consumer/consumer.bash >> " + buildLogFileName() + " 2>&1"
|
##return buildCronExecuteTime() +" /yankee-gnome-fire-consumer/consumer.bash >> " + buildLogFileName() + " 2>&1"
|
||||||
|
|
||||||
##return buildCronExecuteTime() +" python3 /yankee-gnome-fire-consumer/consumer.py >> " + buildLogFileName() + " 2>&1"
|
##return buildCronExecuteTime() +" python3 /yankee-gnome-fire-consumer/consumer.py >> " + buildLogFileName() + " 2>&1"
|
||||||
|
|
||||||
Reference in New Issue
Block a user