I'm not sure if this is going to be useful to anyone or not, but I figured I should write a post explaining why I quit the channel (whyhahm), as well as just things I've learned etc. along the way that might be interesting to some people. Hopefully :)

If you're curious about running your own channel like mine (or actually, almost any other service), you might want to read this to get a sense of what it might entail.

TL;DR: Too much time needed to maintain this channel, stress, computer breaking down, Instagram likely to ban live recording.

Why I started the channel

I'll start by saying, I'm not, and never have been, a fan of K-Pop or celebrity culture in general. A friend of mine introduced me to it shortly after I had decided to learn Korean.

As I was learning Korean, I found out that a good source of example sentences came from social media posts from Korean celebrities, as they were usually very short, and (usually) simple grammatically. I started translating first anonymously, then through my current username (whyhahm).

Although I was getting better at reading (and to some degree, writing), I was still terrible at listening. It's rather well-known that living in another country, surrounding yourself by their language, you are able to learn it much quicker and better than through any textbooks. Since I don't really like solely watching or listening to things (as it feels like I'm wasting my time), I thought that it might help to have audio that I didn't really have to focus on playing in the background, where I could focus on it at will, but still be able to do work.

Around this time, a friend of mine that I had worked with for another Instagram-related bot wanted to create a channel that recorded livestreams for a certain group. Since I already had my own system in place, during the process of reverse-engineering the API for him, I figured that Instagram livestreams could work as a way for me to have non-committal audio playing in the background.

Deletion requests

Throughout the course of this channel, I've responded to >100 deletion requests.

As you'd imagine, some of the people who sent the requests were very upset, some would use various kinds of threats, others would "just" use insults and other relatively offensive language. This definitely didn't make it easier to respond to their requests, and it usually actually did quite affect me for a few hours after, in some cases the rest of the day.

Perhaps surprisingly though, the majority of the requests were actually asked really nicely. Some of the people who had requested even followed up later with regular conversation. But the time between the request and the confirmation (usually through Instagram) ended up being quite stressful, regardless of the way they had asked. I didn't want the videos to stay up if it was them, but if it wasn't, I didn't want to take them down unnecessarily either. So it was a waiting game, and unfortunately many people didn't receive comment notifications either. I found that the "heart" button would usually send notifications, so I ended up "heart"ing pretty much every comment I replied to.

You might be wondering then "Why confirm? It probably was them". True, there were only a few occasions where people impersonated the person in the video. However, almost every time I deleted livestreams (especially nearing the end of the channel), there would be people (sometimes many) who would ask why the lives were no longer available. So in order to upset the least amount of people, I made sure to only delete videos where the person had asked, or videos that would otherwise cause harm to the people featured in the livestream.

Occasionally however, I did know it was the person in the livestream, usually because the YouTube account was linked from their Instagram profile. Most people usually ask something along the lines of "please delete this live", while not mentioning whether or not other livestreams were to be deleted as well. Many of the people who had asked for livestreams to be deleted often only wanted the one, or a few types of livestreams to be deleted, not all of them.

So in order to know this, I would ask for a "confirmation" through their Instagram, and once they had confirmed, I would subsequently ask them to specify whether they would prefer for that live, or all lives to be deleted. In the meantime of course, I would take down the one live they had asked for. Again, while one would imagine they would naturally reply "all lives", this didn't actually turn out to be the case most of the time. In fact, while writing this post, I received a vague deletion request where after confirming, they clarified they only wanted the one live deleted, and were thankful for me having uploaded their lives previously.

There were also other occasions, where people had indirectly asked for lives to not be shared, usually through live videos themselves. Problem is, since there are anywhere from 20-60 hours recorded per day, there is absolutely no way I could look through them all, even with YouTube's (half-working) video transcription system. Thankfully though, fans (some more politely than others) would often notify me of this.

However, quite often it would not be in that one video, leading to requiring a lot of back and forth to know where they had asked in most cases. Many people were quite upset, while refusing to provide any sources, often making it quite frustrating and time-consuming to find if the person in the video had indeed asked for their lives to be taken down.

One thing I tried to stick to through this, was to always remain nice, comply with all deletion requests if I could verify it was them, and try to always assume the best in others. In some cases this was easy. In others… less. Although I did this for moral reasons, it actually paid off to do it this way, especially in the more difficult cases.

For example, a copyright strike is not exactly an easy thing to receive. For someone to send a copyright strike, there's a form where they have to specify why they want to strike the video. If they select "I'm featured in this video without my permission", they are told that this is not grounds for a copyright strike, and should instead file a privacy complaint. To actually send a copyright strike, they must select "This infringes my copyright", and then agree that this could land them into serious legal trouble, as well as put their YouTube account in danger if they abuse this. In other words, they were knowingly putting themselves both in legal danger (possibly committing a crime), as well as possibly suffering serious consequences from YouTube.

Furthermore, in both cases my channel was striked, they didn't strike all of the videos. The first time, they sent two strikes, each only covering part of the videos they were in. Of course, they could have easily selected all of the videos in one strike. In the first case, they had clearly saved the video URLs (as I had made them private after the first strike, the second landed much later) to strike again later. To me, it's quite clear they were trying to bring the channel down (through the 3-strikes-you're-out rule). The second I'm not sure as the situation was resolved within a few hours of the first strike, but they did state they were aware that they could have filed a privacy complaint instead, and knew that it would have worked just as well for taking down the videos.

My point here is, in both cases, it was not just a decision based purely off business or personal protection. They also had ill intent. For someone to have ill intent towards someone else, it requires for part of the human connection to be broken. Although there are people who - quoting Alfred from The Dark Knight - "Just want to watch the world burn", I don't believe those kinds of people are very common. For someone to have ill intent towards someone, I believe it usually requires for them to believe ill intent/malice from the other. In fact, the first strike (by a company actually) told me exactly this.

I approached both strikes by simply telling the truth: I had absolutely no ill intent in uploading these lives, I only uploaded them for fans, and had I known they didn't want those lives to be uploaded, I would have taken them down as soon as possible and avoid uploading them in the future.

In both cases, they understood, apologized, and worked with me to remove the strikes. I believe by proving I had no ill intent towards them, it also removed the basis for their ill intent.

Community guidelines and decency

Nearing the end of the channel, it ended up recording ~100-150 lives per day. Most of which were private, as I had no idea who they were (I had written a bot that would follow people based off the "suggestions" list… that was not a good idea haha).

Naturally, every day there were some lives that would have violated the community guidelines. Every day I would delete anywhere from 20-50 lives, due to either overly suggestive, or downright inappropriate content.

Unfortunately, I couldn't just leave the service running without oversight. Each of the videos I had to manually look through (usually scrubbing through the timeline), and delete. For some of them (Korean celebrities and the likes), I also reuploaded them to Google Photos, in case anyone asked why the live wasn't available (which happened quite often).

In some cases, there were lives that didn't necessarily violate the community guidelines, but could have caused issues to the people featured in the livestream. I touched on this in the guide on setting everything up, but here were a few examples:

Filming themselves walking home. For some reason, it hadn't even occured to me that this could be problematic, but then a celebrity let me know that someone had actually tracked her location from this. Since then, I noticed that quite a few people did this, so I tried to make sure those kinds of lives weren't publicly available.

Drinking with friends. Alcohol can, and unfortunately has, created a few controversies with livestreams. Due to the nature of livestreams it's hard to control what will happen, especially when under the influence of alcohol.

Swearing/acting rudely, or divulging personal information. Usually I didn't really remove these lives (if they didn't ask), as it was their own choice to do so, and deciding what people get to see or not due to the controversy felt a little wrong. However for a few occasions where it was clear that this would land them into trouble (HIGHLIGHT Junhyung's lives come to mind), I did take them down. Especially in Junhyung's case however, I then got an incredible amount of messages from people asking to see the lives. I think I counted ~600 total from youtube, twitter, email, and discord haha.

Pre-released songs. Many artists used livestreams to preview pre-released songs to their fans, which unfortunately meant that my channel leaked their songs quite a few times (although I took down the videos as soon as I was notified of this).

Nearing the end of the channel, I've been really busy, so I always ended up delaying checking/deleting videos until before I went to sleep. I could easily spend 2-4 hours just checking and deleting lives.

There was nothing really I could do about it other than blacklisting people, which although I did do, it honestly barely helped. There were a few "regulars" who kept doing lives, but the vast majority of these people just did lives every once in a long while (many stating it was their first live), meaning I had pretty much no way to control the lives that would get recorded and uploaded.

The channel was hit with a community guidelines strike a few days ago over a video that had been uploaded only a few hours prior (and had not been made public). This is what fundamentally lead to me quitting the channel now rather than later (I originally planned to stop in a month or so). I figured it was better to have the channel be stale but still exist, rather than being taken down (alongside all videos uploaded to it) because I can't have enough oversight over the content being uploaded. With that being said, just like for any other youtube channel: Always download/archive any videos you don't want to lose. If you can't or don't know how, please send me a message and I will try to send you the original files.

Computer stress

Although recording lives does not actually require encoding (thankfully), the disk and network load ended up being quite extreme. My HDD had been getting progressively louder, resulting in genuine worry that it might actually break, especially during nights (where lives would be the most frequent).

Just to give you a quick idea of how it works, the livestream is broken up into individual segments, usually about a second long, which is then split into audio/video. Each video segment is ~120KB, and each audio one is ~6KB. However, before downloading, it will first check if the file already exists. It also tries downloading older, and newer files (forward and back-tracking), in case any part of the live failed to download previously, or if the live gets cut out before it managed to record it all. That means any livestream can do anywhere from 20-30 file accesses per second, depending on the livestream. Not necessarily a problem for one livestream, but it becomes a much larger problem when recording 8-10 (which became the norm at many points in the day nearing the end of the channel).

Thankfully Linux can be quite optimized in I/O access, but the cache directory would usually span ~300k individual files. If I hadn't cleared it for a while, I/O usage would progressively increase, making any action on my computer much slower (including recording lives). All things considered though, it really does speak to how well Linux has been been engineered, that this is actually even possible on a single HDD.

Speaking of hard drives, free space became a rather constant concern. It'd usually download ~50GB per day just in livestreams. meaning I had to constantly increase the threshold for old lives that could be deleted. What was originally a threshold of 90 days and >120GB free became 4 days and a constant worry of staying above the red.

Running out of disk space meant not only that lives would no longer be recorded, but it would also kill both the main (MongoDB) and cache (Redis) databases. Restarting MongoDB took at least 20-30 minutes before it was functional again, and took up almost all of my I/O, rendering my computer mostly unusable during the process.

The discord bot (LiveBot) itself took almost zero CPU, but due to the way it was architected, notifying it of lives took up at least a second or two of full CPU usage (single-threaded) to parse the people in the database. Every service connected to it (livestreams for every website connected, stories, replays, etc.) would multiply the amount of CPU used, more or less forcing me to cut back on what I was able to offer through the bot. This specifically could have been prevented had I architected the system in a smarter way, but re-architecting it would have required a ton of testing and downtime, as well as having to significantly rewrite large portions of the system. Overall it just wasn't worth the cost, as I had already been planning to kill the channel later at that point.

Instagram

Instagram has been working hard to track and kill bot accounts, and a number of my friends have had their accounts disabled, and future tries at restarting their service quickly killed. I'm not actually sure how my account has been able to stay this long, but I have been extremely careful in not advertising it, as well as avoiding anything that caused Instagram to have red flags.

Anything to do with actual interaction, such as liking or commenting, is quickly tracked and flagged by Instagram through machine learning algorithms, as detailed by a blog post they wrote. I was very careful to avoid this, and only let my bot view posts and record livestreams.

Although for the most part I followed people manually, I did try writing a bot that would follow recommended people. I stayed under a certain limit (50-100 people per day), and it didn't seem to have caused any issues. However, bloggers have noticed that younger accounts have a much smaller tolerance for this, which might possibly have explained why people had trouble restarting their bots, I'm not sure.

It was my theory that they didn't go after live recording accounts as much, as it created publicity for them. However not too long ago (at the time of writing) Chrome IG Story (a way to view lives in your browser) was hit with a DMCA takedown. Although I doubt Instagram had much of a case legally (as at least under American law, to my knowledge it is perfectly legal to create an alternate application for a service), it was a bit of a signal that they were going to try to go after live recording accounts next. Although I obviously couldn't verify this, I didn't really want to find out either.

Maintenance

Celebrities often create new accounts, rename their accounts, have old accounts banned, etc. While this is easier to keep track of when you're only following a few hundred accounts, when you're following thousands, it becomes a bit of a chore everyday to look through the list to see if anyone had new, deleted, or renamed accounts, and subsequently updating various databases and lists with them.

I used to try to keep lists such as nautiljon and the unfortunately located social media account list updated, as well as occasionally on the Namu wiki (Korean wikipedia). But nearing the end, this just made an already time consuming task even more time consuming (as well as being quite dull). Maybe I should have written a script or something to do that for me haha.

The other issue goes back to how the system was architected. Any change would get reverted ~50% of the time, and would take at least a few seconds to process. This just got incredibly frustrating, leading to me nearly completely letting this go nearing the end. This meant that quite a few lives were unfortunately missed, but due to almost every workload having increased significantly, as well as my personal life getting significantly busier, I really couldn't keep doing this.

There were a few other maintenance-related things I had to do as well. One of them was to free up disk space, which I had created two scripts to do for me. Although I could have run them automatically, I ran them manually in case I needed the old files at some point (and doing it this way actually saved me quite a few times).

Another was with software updates. Both Python and Node.js (the languages I used to build the system) would update in various ways that caused trouble. Python had many different issues with memory leaks (one of which still exists to this day, I haven't been able to track down the source), as well as at one point, downloading became excessively slow for some reason (which was fixed in a later update, although the changelog didn't really shed light on how it got fixed). Node.js thankfully was much more stable, but there was one occasion where timers completely failed, meaning that a lot of lives were missed. Thankfully that issue was patched within a few days as well.

Closing words

Thanks for reading this far :) Since this post was mostly about why I left the channel, I mainly focused on the negative aspects that caused me to stop working on it. However, that certainly doesn't mean the channel was all bad, far from it actually.

I learned a lot through this channel. Although the intial reason behind making this channel (improving my Korean listening ability) unfortunately hasn't really been much improved, I'm now able to read Korean, and interact with native speakers relatively easily. I would definitely not call myself fluent, but I've been able to start reading books in Korean, which I'm really happy about :)

Although from the deletion requests, it might seem like most celebrities hated it, quite a few people (especially smaller groups) thanked me for having shared their livestreams, some requested for me to record specific accounts of theirs, or groups they were part of as well. There were also many fans that left comments stating that they found out about many new groups and celebrities through these livestreams.

I'm really happy people found this service useful. There are a lot more people that record livestreams now, but if you want to do it yourself, and use the same system I wrote, you can check the guide I wrote on it. If you need any help setting it up, please let me know! I'll try to help wherever possible :)