def handle(self, *args, **options): for file in sorted( glob.glob( '/var/www/vhosts/tmi-archive.com/mp3/import2/clean/*.mp3') ): title = file.split('/')[-1].replace('.mp3', '').replace('-', ' ').replace( '_', ' ') title = f'Imported - {title}' existing = Talk.objects.filter(title=title).count() if existing > 0: continue id_ = uuid.uuid4() id_ = base64.b32encode( id_.bytes).decode("utf-8").rstrip("=\n")[:12] new_file_dir = '/var/www/vhosts/tmi-archive.com/mp3.tmi-archive.com' new_file_name = f"tmi-archive-{id_}.mp3" shutil.copy(file, new_file_dir + '/' + new_file_name) talk = Talk(title=title, updated_by_id=1, created_by_id=1, original_file_name=file.split('/')[-1], audio_filename=new_file_name, audio_cleaned=new_file_name, audio_original=new_file_name) talk.auto_add_user_data = False talk.save() print(title, talk.id)
def test_talk_should_be_in_context(self): speaker = Speaker( name = 'Santa Claus', url = 'www.north_pole.net', email = 'admin@north_pole.net', ) speaker.save() talk = Talk( title = 'Title', slug = 'title', description = 'Description', day = datetime.date(2010, 1, 20), start_time = datetime.time(10, 10), duration = '1 hour', place = 'Room 756', speaker = speaker, ) talk.save() second_talk = Talk( title = 'Another Title', slug = 'another-title', description = 'Another description', day = datetime.date(2010, 1, 22), start_time = datetime.time(10, 10), duration = '50 minutes', place = 'Room 765', speaker = speaker, ) second_talk.save() year = '%04d' % talk.day.year month = '%02d' % talk.day.month day = '%02d' % talk.day.day response = self.client.get(reverse('details', args=[year, month, day, talk.slug])) rendered_talk = response.context['talk'] self.assertTrue(isinstance(rendered_talk, Talk)) self.assertEquals(rendered_talk, talk) talk.delete() second_talk.delete() speaker.delete()
def handle(self, *args, **options): df = pd.read_json('./_other/scraper/articles-selenium.json') audio_path = '/home/script/_tmp/dhamma' for i, row in df.iloc[3:].iterrows(): title = row.title existing = Talk.objects.filter(title=title).count() if existing > 0: continue print(title) content = BeautifulSoup(row.article, "html.parser").find('div', {'class': 'entry-content'}) content = str(content).replace('<div class="entry-content">', '')[:-6] content = BeautifulSoup(content, "html.parser") for div in content.find_all("div", {'class': 'powerpress_player'}): div.decompose() for div in content.find_all("p", {'class': 'powerpress_links'}): div.decompose() content = str(content) talk = Talk( title=title, description=content, updated_by_id=1, created_by_id=1 ) talk.auto_add_user_data = False talk.save() if row.audio_link is not None: from django.core.files import File file_name = row.audio_link.replace('?_=1', '').split('/')[-1] orig_audio = '{}/mp3/{}'.format(audio_path, file_name) if os.path.exists(orig_audio): orig_audio = File(open(orig_audio, 'rb')) talk.audio_original.save('new', orig_audio) clean_audio = '{}/mp3-cleaned/{}'.format(audio_path, file_name) if os.path.exists(clean_audio): clean_audio = File(open(clean_audio, 'rb')) talk.audio_cleaned.save('new', clean_audio)
def generate_talk(speaker): talk = Talk() talk.name = random.choice(verbs) + " " + random.choice(things) + ": " + random.choice(long_actions) talk.abstract = talk_description if random.choice(range(0,10)) % 2 == 0: talk.published = False talk.speaker = speaker talk.save() for i in range(0, random.choice(range(2,7))): tag = TalkTag.objects.get(name=random.choice(profile_tags)) if tag not in talk.tags.all(): talk.tags.add(tag) return talk
def talk_new(request): if request.method == 'POST': # If the form has been submitted... talk_form = TalkForm(request.POST, request.FILES) location_form = None if talk_form.is_valid(): talk = Talk() talk.name = talk_form.cleaned_data['name'] talk.abstract = talk_form.cleaned_data['abstract'] talk.speaker = request.user talk.save() return redirect('/talk/' + str(talk.id)) return HttpResponseNotFound()
def process_event_upload(upload): upload.state = EventUpload.IMPORT_STARTED upload.save() csv_reader = csv.reader(upload.import_file) rows = [r for r in csv_reader] upload.import_file.close() rows = [Row(num, *r) for num, r in enumerate(rows)] #Test if they deleted any of the example lines 1 through 5 test_rows = rows[:5] bad_session_titles = ("Session Title", "Text", "REQUIRED", "", "Super Advanced Python") good_rows = [r for r in test_rows if r.session_title not in bad_session_titles] rows = good_rows + rows[5:] new_speakers = [] for row in rows: try: speaker = SpkrbarUser.objects.get(email=row.speaker_email) except: password = SpkrbarUser.objects.make_random_password() speaker = SpkrbarUser.objects.create_user(row.speaker_email, password=password) speaker.save() new_speakers.append(speaker) if not speaker.full_name: speaker.full_name = strip_tags(row.speaker_name) if not speaker.about_me: speaker.about_me = strip_tags(row.speaker_bio) process_event_upload_tags(speaker, UserTag, strip_tags(row.speaker_tags)) process_event_upload_speaker_link(speaker, 'LIN', row.speaker_linkedin) process_event_upload_speaker_link(speaker, 'TWI', row.speaker_twitter) process_event_upload_speaker_link(speaker, 'FAC', row.speaker_facebook) process_event_upload_speaker_link(speaker, 'WEB', row.speaker_website) speaker.save() try: talk = speaker.talks.get(name=row.session_title) except: talk = Talk() talk.speaker = speaker talk.name = strip_tags(row.session_title) if not talk.abstract: talk.abstract = strip_tags(row.session_abstract) talk.save() process_event_upload_tags(talk, TalkTag, strip_tags(row.session_tags)) if row.session_video and talk.videos.count() == 0: video = TalkVideo.from_embed(talk, row.session_video) if video: video.save() if row.session_slide and talk.slides.count() == 0: deck = TalkSlideDeck.from_embed(talk, row.session_slide) if deck: deck.save() links = strip_tags(row.session_links).split(',') for l in links: if l and not talk.links.filter(url=l).exists(): link = TalkLink() link.talk = talk link.name = "Session Resource" link.url = l link.save() start_date = dtparse(strip_tags(row.session_date)) start_time = dtparse(strip_tags(row.session_start_time)) eng = talk.engagements.filter( event_name=upload.name, date=start_date, time=start_time).exists() if not eng: en = Engagement() en.talk = talk en.speaker = speaker en.event_name = upload.name en.location = upload.location en.date = start_date en.time = start_time en.room = strip_tags(row.session_room_name) en.save() upload.state = EventUpload.IMPORT_FINISHED upload.save() #Notify every new speaker for speaker in new_speakers: assign_basic_permissions(speaker) mes = email_template.render(Context({'name': speaker.full_name, 'event': upload.name})) send_html_mail("Claim your profile on SpkrBar", strip_tags(mes), mes, [speaker.email]) return HttpResponse(json.dumps({'success': True}), content_type="application/json")