lots of updates ... eeks
This commit is contained in:
@@ -17,19 +17,40 @@ from events.models import Event as DSEvent, Organization, Promo, Scraper, Calend
|
||||
plus_one_month = relativedelta.relativedelta(months=1)
|
||||
odt_next_month = datetime.now() + plus_one_month
|
||||
|
||||
def translateMonth(month):
|
||||
MONTHS = [
|
||||
('Januar', 'JÄN', 'January'),
|
||||
('Februar', 'FEBR', 'February'),
|
||||
('März', 'MRZ', 'March'),
|
||||
('April', 'APR', 'April'),
|
||||
('Mai', 'MAI', 'May'),
|
||||
('Juni', 'JUN', 'June'),
|
||||
('Juli', 'JUL', 'July'),
|
||||
('August', 'AUG', 'August'),
|
||||
('September', 'SEP', 'September'),
|
||||
('Oktober', 'OKT', 'October'),
|
||||
('November', 'NOV', 'November'),
|
||||
('Dezember', 'DEZ', 'December'),
|
||||
]
|
||||
for mon in MONTHS:
|
||||
if month == mon[1]:
|
||||
return mon[2]
|
||||
|
||||
# Get Scraper name, item count and online_calendar (virtcal)
|
||||
def getScraper(venue, website, cal):
|
||||
virtcal = Calendar.objects.get(shortcode='000')
|
||||
ncal = Calendar.objects.get(shortcode=cal)
|
||||
try:
|
||||
scraper, created = Scraper.objects.get_or_create(
|
||||
name=venue.name,
|
||||
website=website,
|
||||
calendar = Calendar.objects.get(shortcode=cal),
|
||||
calendar = ncal,
|
||||
items = 0,
|
||||
new_items = 0,
|
||||
last_ran = datetime.now(),
|
||||
)
|
||||
venue.cal = ncal
|
||||
venue.save()
|
||||
except Exception as e:
|
||||
print(e)
|
||||
scraper = Scraper.objects.get(name=venue.name)
|
||||
@@ -51,11 +72,11 @@ def updateScraper(scraper, item_count_start):
|
||||
# Get site HTML content for XPATH travel
|
||||
def getSource(browser, link):
|
||||
browser.get(link)
|
||||
sleep(5)
|
||||
sleep(6)
|
||||
ps = html.fromstring(browser.page_source)
|
||||
return ps
|
||||
|
||||
# Get Selenium Web Drive, with params for Chrome or Firefox
|
||||
# Get Selenium Web Driver, with params for Chrome or Firefox
|
||||
# Or in production to run headless
|
||||
def getBrowser(run_env):
|
||||
if run_env == 'dev':
|
||||
@@ -154,6 +175,7 @@ def createDashURL(site_url):
|
||||
|
||||
# Add Calendar to Event Object (maybe extraneous)
|
||||
def add_calendar(event, calendar):
|
||||
print("Add Calendar", type(event), event, calendar)
|
||||
if type(event) is tuple:
|
||||
event = event[0]
|
||||
cal = Calendar.objects.get(shortcode=calendar)
|
||||
@@ -173,18 +195,21 @@ def add_calendars(event, data):
|
||||
|
||||
# Create Basic DigiSnaxx Event
|
||||
def createBasicEvent(event, event_type, venue):
|
||||
new_event, created = DSEvent.objects.update_or_create(
|
||||
event_type = event_type,
|
||||
show_title = event['title'],
|
||||
show_link = event['link'],
|
||||
show_date = event['dateStamp'],
|
||||
show_day = event['dateStamp'],
|
||||
scraper = event['scraper'],
|
||||
venue = venue
|
||||
)
|
||||
new_event = add_calendars(new_event, event)
|
||||
# print("\n+new event+")
|
||||
return new_event, created
|
||||
try:
|
||||
new_event, created = DSEvent.objects.update_or_create(
|
||||
event_type = event_type,
|
||||
show_title = event['title'],
|
||||
show_link = event['link'],
|
||||
show_date = event['dateStamp'],
|
||||
scraper = event['scraper'],
|
||||
venue = venue
|
||||
)
|
||||
new_event = add_calendars(new_event, event)
|
||||
print("\n+new event+")
|
||||
return new_event, created
|
||||
except Exception as e:
|
||||
print("Error: ", e)
|
||||
return None, None
|
||||
|
||||
# Create iCal Event
|
||||
def createBasiciCalEvent(event, event_type, venue):
|
||||
@@ -192,8 +217,21 @@ def createBasiciCalEvent(event, event_type, venue):
|
||||
event_type = event_type,
|
||||
show_title = event['title'][0],
|
||||
show_link = event['link'],
|
||||
show_date = datetime.strptime(str(event['dateStamp'][0]), '%Y-%m-%d %H:%M:%S'),
|
||||
show_day = datetime.strptime(str(event['dateStamp'][0]), '%Y-%m-%d %H:%M:%S'),
|
||||
show_date = datetime.strptime(str(event['dateStamp'][0]), '%Y-%m-%d %H:%M:%S%z %Z'),
|
||||
scraper = event['scraper'],
|
||||
venue = venue
|
||||
)
|
||||
new_event = add_calendars(new_event, event)
|
||||
print("Success")
|
||||
return new_event, created
|
||||
|
||||
def createDetailedEvent2(event, event_type, venue, scraper):
|
||||
new_event, created = DSEvent.objects.update_or_create(
|
||||
event_type = event_type,
|
||||
show_title = event["show_title"],
|
||||
show_link = event["link"],
|
||||
show_date = event["dateStamp"],
|
||||
more_details = event["details"],
|
||||
scraper = event['scraper'],
|
||||
venue = venue
|
||||
)
|
||||
@@ -209,7 +247,6 @@ def createDetailedEvent(event, event_type, venue, scraper):
|
||||
show_title = event["show_title"],
|
||||
show_link = event["link"],
|
||||
show_date = event["dateStamp"],
|
||||
show_day = event['dateStamp'],
|
||||
guests = " ".join(event["guests"]),
|
||||
more_details = event["details"],
|
||||
scraper = event['scraper'],
|
||||
@@ -221,7 +258,7 @@ def createDetailedEvent(event, event_type, venue, scraper):
|
||||
|
||||
# Create iCal event from DF_Online & Medellin
|
||||
def createCleanIcalEvent(event, scraper, venue, event_type):
|
||||
new_date = event['dateStart']
|
||||
new_date = event['eventDate']
|
||||
new_event = {}
|
||||
new_event['scraper'] = scraper
|
||||
new_event['calendars'] = scraper.calendar
|
||||
@@ -229,6 +266,8 @@ def createCleanIcalEvent(event, scraper, venue, event_type):
|
||||
new_event['date'] = str(new_date),
|
||||
new_event['dateStamp'] = str(new_date),
|
||||
new_event['link'] = venue.website
|
||||
print("New Event")
|
||||
# ppr(new_event)
|
||||
createBasiciCalEvent(new_event, event_type, venue)
|
||||
|
||||
# Get events from iCal
|
||||
@@ -279,7 +318,7 @@ def buildiCalEvents(events, event_type, scraper, venue):
|
||||
scraper.save()
|
||||
return
|
||||
|
||||
def getMDEVenue(venue):
|
||||
def getMDEVenue(venue, event):
|
||||
if venue.name == "DANCEFREE":
|
||||
venue.website = "https://www.instagram.com/dancefreeco"
|
||||
if venue.name == "Vintrash":
|
||||
@@ -297,6 +336,7 @@ def getMDEVenue(venue):
|
||||
if "Concious Warrior" in event['strSummary']:
|
||||
venue.website = "https://www.consciouscolombia.com/"
|
||||
venue.save()
|
||||
print(venue)
|
||||
return
|
||||
|
||||
# Get iCal events for Medellin & OnlineEvents
|
||||
@@ -317,45 +357,49 @@ def getiCalRepeateEvents(gcal, scraper, venue, event_type, cal):
|
||||
}
|
||||
if event['dateStamp'] != None:
|
||||
event['dateStart'] = event['dateStart'].dt
|
||||
event['dateStart'] = datetime.strptime(str(event['dateStart'])[:-6], '%Y-%m-%d %H:%M:%S')
|
||||
event['dateStart'] = datetime.strptime(str(event['dateStart']) + " UTC", '%Y-%m-%d %H:%M:%S%z %Z')
|
||||
event['timezone'] = str(event['dateStart'])[-6:].strip()
|
||||
rules = component.get('RRule')
|
||||
try:
|
||||
if rules['FREQ'][0] == 'WEEKLY':
|
||||
if datetime.today().weekday() != 0:
|
||||
event = splitLocation(event, city="Medellin")
|
||||
date = datetime.today().date() - timedelta(days=datetime.today().weekday())
|
||||
date = datetime.combine(date, event['dateStart'].time())
|
||||
days = ["SU", "MO", "TU", "WE", "TH", "FR", "SA"]
|
||||
for day in rules['BYDAY']:
|
||||
day = days.index(day)
|
||||
if cal == 'mde':
|
||||
getVenue(event['venue'])
|
||||
iCalEventRepeatFilter(day, date, event, scraper, event['venue'], "Ed")
|
||||
date = datetime.today().date() - timedelta(days=datetime.today().weekday())
|
||||
date = datetime.combine(date, event['dateStart'].time())
|
||||
days = ["SU", "MO", "TU", "WE", "TH", "FR", "SA"]
|
||||
event = splitLocation(event, city="Medellin")
|
||||
for day in rules['BYDAY']:
|
||||
nday = days.index(day)
|
||||
if cal == 'mde':
|
||||
getMDEVenue(event['venue'],event)
|
||||
print(event)
|
||||
iCalEventRepeatFilter(nday, date, event, scraper, event['venue'], "Ed")
|
||||
|
||||
except Exception as e:
|
||||
print("Error: ", event, e, "\n\n\n\n")
|
||||
print("Error: ", e, "\n\n")
|
||||
# ppr(event)
|
||||
pass
|
||||
|
||||
def iCalEventRepeatFilter(day, date, event, scraper, venue, event_type):
|
||||
print("repeate events")
|
||||
days = [day-1, day+6, day+13]
|
||||
for day in days:
|
||||
event['dateStamp'] = date + timedelta(days=day)
|
||||
event['dateStart'] = event['dateStamp']
|
||||
dateStart = str(event['dateStamp']) + event['timezone'] + ' UTC'
|
||||
event['eventDate'] = dateStart
|
||||
createCleanIcalEvent(event, scraper, venue, event_type)
|
||||
return
|
||||
|
||||
def splitLocation(event, **kwargs):
|
||||
loc_split = event['strLocation'].split(',')
|
||||
ppr(loc_split)
|
||||
venue_name = loc_split[0]
|
||||
venue, created = Organization.objects.get_or_create(
|
||||
name=venue_name,
|
||||
)
|
||||
event['venue'] = venue
|
||||
# if kwargs['city']:
|
||||
# venue.city = kwargs['city']
|
||||
# venue.save()
|
||||
return event
|
||||
loc_split = event['strLocation'].split(',')
|
||||
# ppr(loc_split)
|
||||
venue_name = loc_split[0]
|
||||
venue, created = Organization.objects.get_or_create(
|
||||
name=venue_name,
|
||||
)
|
||||
event['venue'] = venue
|
||||
if kwargs['city']:
|
||||
venue.city = kwargs['city']
|
||||
venue.save()
|
||||
return event
|
||||
|
||||
# ARCHIVED Methods
|
||||
def createBasicArticle(article, event_type, organization):
|
||||
@@ -366,4 +410,4 @@ def createBasicArticle(article, event_type, organization):
|
||||
published = True,
|
||||
organization = organization
|
||||
)
|
||||
return new_article, created
|
||||
return new_article, created
|
||||
|
||||
Reference in New Issue
Block a user