Rumble or he himself deleted it. Anyone got an archive?I just realized Godwinson has been live for over 40 minutes lol woops. I'm not watching this shit over Proctor, I'll wait for summaries and you guys to laugh at him.
@Short nabbed it earlier on TVAcord and reuploaded it to Rumble. @DTrp archived it on MEGA.Rumble or he himself deleted it. Anyone got an archive?
There is no low a Br*t will not stoop to in order to filate another disgusting crackhead of a Br*t. You are to Godwinson as Elaine is to him, she aims to spite Josh and you aim to spite me, in the process you hurt the best girl Pippa.
You seem to take far more offence to this than Pippa ever would.There is no low a Br*t will not stoop to in order to filate another disgusting crackhead of a Br*t. You are to Godwinson as Elaine is to him, she aims to spite Josh and you aim to spite me, in the process you hurt the best girl Pippa.
I must secure the existence and the future of the meat Pippa.You seem to take far more offence to this than Pippa ever would.
Does anyone have a summary of Pippa's offkai stream? I don't have the time to listen to it, but any highlights or principle comments would be very useful to have for my stream tonight.
For future reference in case you feel like handing your credit card info to some random company for a free trial, I was recently told about this site which summarizes videos. https://eightify.app/stream wasn't that long, you could probably watch the important bits in under 30 mins. just skip to when you see kirsche and you'll know you found the sweet spot.
I archived the chat log, it may help get a deeper gist of things without putting up with yt's broke ass lagbox. No timestamps but i can pull it again if you want them. I grabbed it because i was going to make a word cloud art for it, just out of curiosity. i'll post it here when i do, you're welcome to use that as well if it's interesting.
Oh yeah, I also filtered out all the emojis, that's why you'll see so many usernames and blank messages.
yt-dlp --skip-download --write-auto-subs --sub-langs en-orig https://www.youtube.com/watch?v=fsVRhd_QxOU
--! file: cleanytsubs5.lua
-- Function to clean the VTT content
function clean_vtt_content(content)
local unique_lines = {}
local cleaned_lines = {}
for line in content:gmatch("[^\r\n]+") do
-- Retain only the first timestamp
local timestamp = line:match("^(%d%d:%d%d:%d%d%.%d%d%d)")
if timestamp then
-- If the line contains a timestamp, add the timestamp to cleaned_lines
if not unique_lines[timestamp] then
unique_lines[timestamp] = true
table.insert(cleaned_lines, timestamp)
end
else
-- Remove word-level timestamps and any trailing HTML-like tags
line = line:gsub("<%d%d:%d%d:%d%d%.%d%d%d><c>", "")
line = line:gsub("<[^>]+>", "")
line = line:match("^%s*(.-)%s*$") -- Trim leading and trailing whitespace
-- Skip if the cleaned line is empty or a duplicate
if line ~= "" and not unique_lines[line] then
unique_lines[line] = true
table.insert(cleaned_lines, line)
end
end
end
return cleaned_lines
end
function is_timestamp(line)
if line == nil then return false end
local pattern = "^(%d%d):(%d%d):(%d%d).(%d%d%d)$"
local match = string.match(line, pattern)
return match ~= nil
end
local function cleantimestamps2 (cleaned_lines)
local length = #cleaned_lines
for i=length, 1, -1 do
if is_timestamp(cleaned_lines[i]) then
table.remove(cleaned_lines, i)
end
end
return cleaned_lines
end
local function cleantimestamps3 (cleaned_lines)
local length = #cleaned_lines
for i=length, 1, -1 do
if is_timestamp(cleaned_lines[i]) then
if is_timestamp(cleaned_lines[i+1]) then
table.remove(cleaned_lines, i)
end
end
end
return cleaned_lines
end
-- Read the content of the VTT file
local input_file_path = "transcript.vtt"
local output_file_path = "cleaned_transcript_timestamps.txt"
local output_file2_path = "cleaned_transcript.txt"
local file = io.open(input_file_path, "r")
local content = file:read("*all")
file:close()
-- Clean the content
local cleaned_content = clean_vtt_content(content)
cleaned_content = cleantimestamps3(cleaned_content)
-- Write the cleaned content to a new file
file = io.open(output_file_path, "w")
for _, line in ipairs(cleaned_content) do
file:write(line .. "\n")
end
file:close()
cleaned_content = cleantimestamps2(cleaned_content, 2,1)
file = io.open(output_file2_path, "w")
for _, line in ipairs(cleaned_content) do
file:write(line .. "\n")
end
file:close()
Trick question: you pick the one that's most oppressed to get the job you want, and then turn back into your normal self once you have the job. Good luck with that, HR.While we're at it here's a stream idea: Find your correct gender from the list of genders in the San Fransisco GIFT program.
Pretty much, I can't actually be annoyed given she's sick, and actually talking to the girls instead of sulking by herself. Fuck offkai though, I can mean that, this week has fucking sucked.She's dumb for doing that but I honestly would do something like that if I was sick as well.
Chatting with your friends is good for your mental health, I can't fault Pippa for talking for once when it's usually one of her bigger faults.She's dumb for doing that but I honestly would do something like that if I was sick as well.
I have disliked con season since Phase started doing con stuff in 2022. I remember Pippa doing the 3AM meeting stuff and being exhausted during streams. Really does suck how much cons fuck streams up.Fuck offkai though
I think it's a bit of a mixed bag. It helps foster the community and personal investment many fans have in Phase Connect. The girls seem to enjoy meeting their fans in real-life, seeing the fan merch, meeting other vtubers, performing at the events like live karaoke (when they work), and many of the girls have career goals based on doing live performances and 3D concerts. I don't want to be a completely selfish prick and say, "well, I don't care about any of that, can you get back to streaming, thanks?" But you are right that it fucks up the streaming schedule and sometimes it's really hard to appreciate the convention stuff when you don't get to see most of it.I have disliked con season since Phase started doing con stuff in 2022. I remember Pippa doing the 3AM meeting stuff and being exhausted during streams. Really does suck how much cons fuck streams up.
This year was worse than usual cause depending on who you watch, there has been nothing going on the last week now. Some of the girls prepped things like Tenma's clip compilation, so I feel like for the girls going on the trip at least, those that didn't should have made some videos or something to fill the gap that was even worse than usual cause of the lack of streams from things going on at the con.I have disliked con season since Phase started doing con stuff in 2022. I remember Pippa doing the 3AM meeting stuff and being exhausted during streams. Really does suck how much cons fuck streams up.
You can use something like Whisper to generate a very high quality transcription locally, then search or process those.For future reference in case you feel like handing your credit card info to some random company for a free trial, I was recently told about this site which summarizes videos. https://eightify.app/
example: https://eightify.app/media/how-to-import-vroid-models-into-vrchat-and-fix-leg-issues
i assume it just pulls out the captions and runs them through chatGPT so not sure if it would work for livestreams or not, but might be something to keep in your back pocket for archival uses in other scenarios.
edit: actually looks like there are captions for the pippa stream. neat.
edit2: seems ytdlp can download subtitles. double neat.
Code:yt-dlp --skip-download --write-auto-subs --sub-langs en-orig https://www.youtube.com/watch?v=fsVRhd_QxOU
edit3: i told chatgpt to clean up the transcript ytdlp makes. it kinda did. then i messed with the code and now it produces a transcript without timestamps and one with a timestamp for each line.
Code:--! file: cleanytsubs5.lua -- Function to clean the VTT content function clean_vtt_content(content) local unique_lines = {} local cleaned_lines = {} for line in content:gmatch("[^\r\n]+") do -- Retain only the first timestamp local timestamp = line:match("^(%d%d:%d%d:%d%d%.%d%d%d)") if timestamp then -- If the line contains a timestamp, add the timestamp to cleaned_lines if not unique_lines[timestamp] then unique_lines[timestamp] = true table.insert(cleaned_lines, timestamp) end else -- Remove word-level timestamps and any trailing HTML-like tags line = line:gsub("<%d%d:%d%d:%d%d%.%d%d%d><c>", "") line = line:gsub("<[^>]+>", "") line = line:match("^%s*(.-)%s*$") -- Trim leading and trailing whitespace -- Skip if the cleaned line is empty or a duplicate if line ~= "" and not unique_lines[line] then unique_lines[line] = true table.insert(cleaned_lines, line) end end end return cleaned_lines end function is_timestamp(line) if line == nil then return false end local pattern = "^(%d%d):(%d%d):(%d%d).(%d%d%d)$" local match = string.match(line, pattern) return match ~= nil end local function cleantimestamps2 (cleaned_lines) local length = #cleaned_lines for i=length, 1, -1 do if is_timestamp(cleaned_lines[i]) then table.remove(cleaned_lines, i) end end return cleaned_lines end local function cleantimestamps3 (cleaned_lines) local length = #cleaned_lines for i=length, 1, -1 do if is_timestamp(cleaned_lines[i]) then if is_timestamp(cleaned_lines[i+1]) then table.remove(cleaned_lines, i) end end end return cleaned_lines end -- Read the content of the VTT file local input_file_path = "transcript.vtt" local output_file_path = "cleaned_transcript_timestamps.txt" local output_file2_path = "cleaned_transcript.txt" local file = io.open(input_file_path, "r") local content = file:read("*all") file:close() -- Clean the content local cleaned_content = clean_vtt_content(content) cleaned_content = cleantimestamps3(cleaned_content) -- Write the cleaned content to a new file file = io.open(output_file_path, "w") for _, line in ipairs(cleaned_content) do file:write(line .. "\n") end file:close() cleaned_content = cleantimestamps2(cleaned_content, 2,1) file = io.open(output_file2_path, "w") for _, line in ipairs(cleaned_content) do file:write(line .. "\n") end file:close()
hello everybody hello hopefully you guys
can hear me all right hopefully
hopefully hopefully
hopefully hopefully hopefully hopefully
hopefully I'm
on uh why does the chat keep
disappearing Chad Chad Chad why are you
dis
disappearing
why
why oh dear I change I change like a
little bit I change a little bit bottle
a little bit I know I had to I had to
dig it out I feel bad I feel bad I've
only used it once and Chino worked so
hard on
all Chino worked so hard on all of these
and I just never use mine I'm a
monster like look the chat
setting know why takes so
long appear here
and like it's like not an a like I think
you guys you guys just type too fast I00:00:08.040
hello everybody hello hopefully you guys
00:00:11.400
can hear me all right hopefully
00:00:14.879
hopefully hopefully
00:00:16.800
hopefully hopefully hopefully hopefully
00:00:20.960
hopefully I'm
00:00:23.240
on uh why does the chat keep
00:00:25.880
disappearing Chad Chad Chad why are you
00:00:29.759
dis
00:00:30.960
disappearing
00:00:32.520
why
00:00:34.440
why oh dear I change I change like a
00:00:38.680
little bit I change a little bit bottle
00:00:42.079
a little bit I know I had to I had to
00:00:43.800
dig it out I feel bad I feel bad I've
00:00:46.280
only used it once and Chino worked so
00:00:48.000
hard on
00:00:48.840
all Chino worked so hard on all of these
00:00:52.039
and I just never use mine I'm a
00:00:57.840
monster like look the chat
00:01:00.840
setting know why takes so
00:01:06.119
long appear here
00:01:08.680
and like it's like not an a like I think
00:01:12.640
you guys you guys just type too fast I
00:01:16.799
think you guys are just too
00:01:19.479
too accidentally there we go you guys
00:01:23.479
are just too fast and then the and then
00:01:25.560
the uh the emotes are not working
00:01:30.880
you know what it's kind of it's kind of
00:01:33.000
distracting I'm just G to take chat off
00:01:35.079
screen G to take chat off screen little
so i already used up my one free per day document analysis thing with chatgpt, but it looks like you could easily upload a video transcript using this and have the ai summarize it. no telling how accurate it would be considering its already slightly janky transcription on youtube's end, and in pippa's case half the time she's reading superchats so it probably would think she's talking to herself and being schizo - but with more clear speakers it could be a pretty easy way to get textual summaries of livestreams that are too long to watch. it might not capture the details or nuances (and definitely not nonverbal tone), but could probably get the main themes of discussion.
I feel like it would be really useful having these transcripts for searching for funny things that you remember happening, or trying to see if some specific phrase came up in a mountain of past streams, without having to intuit which ones it might have been in and skimming through each one listening.