Tumgik
bangtan-gifs-imake · 5 years
Photo
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
the PERSONA lyrics appreciation post 
>I just wanna give you all the shoulders when you cry
4K notes · View notes
bangtan-gifs-imake · 5 years
Text
Intro: Persona
나는 누구인가 평생 물어온 질문 아마 평생 정답을 찾지 못 할 그 질문 나는 ?? 고작 말 몇개로 답할 수 있었다면 신께서 그 수많은 아름다움을 담아주시지는 않았겠지
How you feel? 지금 기분이 어때? 사실 난 너무 좋아 근데 조금 불편해 나는 내가 개인지 돼지인지 뭔지도 아직 잘 모르겠는데 남들이 와서 진주 목걸이를 거네 카악 퉤
➼ 평생 - forever, one’s entire life ➼ 질문 - question ➼ 정답 - the right answer ➼ 고작 - only ➼ 답하다 - to reply ➼ 신 - god ➼ 담다 - to contain ➼ 기분 - mood ➼ 불편하다 - to be uncomfortable ➼ 개 - dog ➼ 돼지 - pig ➼ 남 - others ➼ 진주 목걸이 - pearl necklace ➼ 걸다 - to hang ➼ 카악퉤 - ptui (spitting)
예전보다 자주 웃어 소원했던 슈퍼히어로  이젠 진짜가 된 것 같아 근데 갈수록 뭔 말들이 많아 누군 달리라고 누군 멈춰서라 해  얘는 숲을 보라고 걔는 들꽃을 보라해 내 그림자 나는 망설임이라고 쓰고 불렀네 걔가 그 되고 나서 망설인 적이 없었네 무대 아래 있던 아님 조명 아래 있던 자꾸 나타나  아지랑이처럼 뜨겁게 날 노려보네
➼ 예전 - before ➼ 소원하다 - to wish for sth ➼ 달리다 - to run ➼ 멈춰서다 - to stop and stand ➼ 숲 - forest ➼ 들꽃 - wild flower ➼ 그림자 - shadow ➼ 망설임 - hesitation ➼ 무대 - stage ➼ 조명 - spotlight ➼ 나타나다 - to appear ➼ 아지랑이 - heat wave, haze ➼ 노려보다 - to glare, scowl at
야 이 짓을 왜 시작한건지 벌써 잊었냐 넌 그냥 들어주는 누가 있던게 막 좋았던거야 가끔은 그냥 싹 다 헛소리 같아 취하면 나오는 거 알지. ㅎㅎ 치기 같아 
나 따위가 무슨 music  나 따위가 무슨 truth 나 따위가 무슨 소명  나 따위가 무슨 muse 내가 아는 나의 흥 어쩌면 그게 사실 내 전부 세상이 사실 아무 관심없어 나의 서툶
➼ 시작하다 - to start ➼ 잊다 - to forget ➼ 헛소리 - nonsense, gibberish ➼ 취하다 - to be drunk ➼ 치기 - immaturity, childishness ➼ 나 따위 - the likes of me ➼ 소명 - calling ➼ 흥 - excitement ➼ 전부 - all, everything ➼ 관심없다 - have no interest ➼ 서툶 - clumsiness
이제 질리지도 않는 후회들과 매밤 징그럽게 뒹굴고 돌릴 길 없는 시간들이 습관처럼 비틀어 그 때마다 날 또 일으켜 세운건 최초의 질문 내 이름 석자 그 가장 앞에 와야할 ‘but’ So I’m askin’ once again yeah Who the hell am I? Tell me all your names baby Do you wanna die? Oh do you wanna go? Do you wanna fly? Where’s your soul? Where’s your dream? Do you think you’re alive?
➼ 질리다 - to be tired of ➼ 후회 - regret ➼ 매밤 - every night ➼ 징그럽다 - to be disgusting ➼ 뒹굴다 - to tumble ➼ 습관 - habit ➼ 비틀다 - to twist, crook ➼ 일으켜 세우다 - make sbd stand up ➼ 석자 - three letters (syllables)
I don’t know man, but I know one thing
My name is R 나는 기억하고 사람들이 아는 나 나 토로하기 위해 내가 스스로 만들어낸 나  Yeah 난 날 속여왔을지도 뻥 쳐왔을지도 but 부끄럽지 않아 이건 내 영혼의 지도  Dear myself 넌 절대로 온도를 잃지마 따뜻이도 차갑게도 될 필요 없으니까 가끔은 위선적이어도 위악적이어도 그게 내가 걸어두고 싶은 내 방향의 척도  내가 되고 싶은 나 사람들이 원하는 나 네가 사랑하는 나 또 내가 빚어내는 나 웃고 있는 나 가끔은 울고 있는 나 지금도 매분 매순간 살아 숨쉬는 Persona Who the hell am I? I just wanna go I just wanna fly I just wanna give you all the voices ‘til I die I just wanna give you all the shoulders when you cry
➼ 기억하다 - to remember ➼ 토로하다 - to vent ➼ 스스로 - by oneself ➼ 속이다 - to deceive ➼ 뻥 치다 - to lie ➼ 부끄럽다 - to be ashamed, shy ➼ 영혼 - soul  ➼ 지도 - map ➼ 온도 - temperature ➼ 따뜻이 x 차갑게 - warmly x coldly ➼ 위선적이다 - hypocritical ➼ 위악적이다 - pretend to be evil, tough ➼ 방향 - direction ➼ 척도 - barometer ➼ 빚어내다 - to create ➼ 매분 - every minute ➼ 매순간 - every moment ➼ 살아숨쉬다 - live and breathe
I am posting it kinda late considering my excitement that they went all the way back to Skool Luv Affair (still shook) BUT there are no correct Korean lyrics to be found on the internet haha! So I trust this one Korean army and my listening skills and I had to type out all the lyrics (I type kinda slowly in Korean ;;) anyways I hope it’s correct because the official lyrics will be released only with the album..!
167 notes · View notes
bangtan-gifs-imake · 5 years
Text
Dionysus
Dionysus is the Greek god of wine and also of theater, insanity, and holy inspiration - fits exactly with this album’s theme.  Thyrsus is the staff Dionysus carries and it’s made of reed and ivy.
쭉 들이켜 술잔 (sippin’) 팔짱 (tippin’) 한 입 티르소스 (grippin’) 포도 (eatin’) 쭉 들이켜 분위기 (keep it) D style (rip it) 한 입 여기 (kill it) let’s steal it The illest
➼ 들이키다 - to drink up ➼ 술 - alcohol ➼ 잔 - a glass ➼ 팔짱 - to link hands ➼ 한 입 - one sip ➼ 티르소스 - thyrsus ➼ 포도 - grapes ➼ 분위기 - atmosphere ➼ 여기 - here
그냥 취해 마치 디오니소스 한 손에 술잔, 다른 손에 든 티르소스 투명한 크리스탈 잔 속 찰랑이는 예술 예술도 술이지 뭐, 마시면 취해 fool You dunno you dunno You dunno what to do with 내가 보여줄게 난 전혀 다른 걸 추진 아이비와 거친 나무로 된 mic 절대 단 한 숨에 나오는 소리 따윈 없다
➼ 취하다 - to get drunk, you’d use the past tense to say “to be drunk” ➼ 마치 - as if, like ➼ 손 - hand ➼ 손에 들다 - to hold in one’s hand(s) ➼ 투명하다 - to be transparent ➼ 찰랑거리다 - to splash ➼ 예술 - art ➼ 마시다 - to drink ➼ 추진 - propel, a push, a recommendation ➼ 아이비 - ivy ➼ 거칠다 - to be rough ➼ 나무로 된 - wooden
해가 뜰 때까지 where the party at 잠이 들 때까지 where the party at Sing it 불러 다시 Drink it 마셔 다시 우린 두 번 태어나지 
쭉 들이켜 (창작의 고통) 한 입 (시대의 호통) 쭉 들이켜 (나와의 소통) 한 입 (Okay now I’m ready fo sho)
➼ 해가 뜨다 - for the sun to rise ➼ 잠이 들다 - to fall asleep ➼ 부르다 - to sing ➼ 태어나다 - to be born ➼ 창착 - creation ➼ 고통 - pain ➼ 시대 - generation ➼ 호통 - a storm, a roar ➼ 소통 - communication
➽ 까지 ➽ 의 ➽ ~지(요)
다 마셔 마셔 마셔 마셔 내 술잔 ay 다 빠져 빠져 빠져 미친 예술가에 한 잔 (one shot) 두 잔 (two shots) 예술에 취해 불러 옹헤야 다 마셔 마셔 마셔 마셔 내 술잔 ay 다 빠져 빠져 빠져 미친 예술가에 한 잔 (one shot) 두 잔 (two shots) 꽹과리 치며 불러 옹헤야
➼ 다 - everything ➼ 마시다 - to drink ➼ 술잔 - a glass for alcohol ➼ ~에 빠지다 - fall for someone ➼ 미치다 - to be crazy ➼ 예술가 - an artist ➼ 옹해야 - an exclamation from Korean traditional music, similar to 얼쑤 좋다 from Idol ➼ 꽹과리 - a Korean small gong ➼ 치다 - to hit sth/to play an instrument (both fitting in this situation)
난 지금 세상의 문 앞에 있어 무대에 오를 때 들리는 환호성 Can’t you see my stacked Broken thyrsus 이제 난 다시 태어나네 비로소 When the night comes Mumble mumble mumble When the night comes Tumble tumble tumble Studio를 채운 저음 저음 저음 Bass drum goes like 덤덤덤 (yea)
➼ 세상 - the world ➼ 문 - door ➼ 무대 - stage ➼ 오르다 - to go up ➼ 환호성 - a cheer ➼ 비로소 - at last ➼ 채우다 - to fill ➼ 저음 - bass, a low-pitched tone
우리가 떴다 하면 전세계 어디든지 stadium party ay Kpop 아이돌로 태어나 다시 환생한 artist 다시 환생한 artist 다시 환생한 artist 내가 아이돌이든 예술가이든 뭐가 중요해 짠해 예술도 이 정도면 과음이지 과음 yeah 새 기록은 자신과 싸움이지 싸움 yeah 축배를 들어올리고 one shot 허나 난 여전히 목말라 What
➼ 뜨다 - to pop up ➼ 전세계 - the whole world ➼ 환생하다 - to reincarnate, to be reborn ➼ 중요하다 - to be important ➼ 짠하다 - to cheer (with alcohol) ➼ 축배 - a toast (cheers) ➼ 허나 - however ➼ 여전히 - still ➼ 목이 마르다 - to be thirsty
119 notes · View notes
bangtan-gifs-imake · 5 years
Text
Make It Right
내가 날 눈치챘던 순간 떠나야만 했어 난 찾아내야 했어 All day all night 사막과 바다들을 건너 넓고 넓은 세계를 헤매어 다녔어 Baby I
➼ 눈치채다 - to notice  ➼ 순간 - a moment ➼ 떠나다 - to leave ➼ 찾아내다 - to find ➼ 사막 - desert ➼ 바다 - sea ➼ 건너다 - to cross ➼ 넓다 - to be wide ➼ 헤매다 - to wander
I could make it better I could hold you tighter 그 먼 길 위에서 Oh you’re the light 초대받지 못한 환영받지 못한 나를 알아줬던 단 한 사람
➼ 멀다 - to be far ➼ 길 - road ➼ 초대받다 - to be invited ➼ 환영받다 - to be welcomed ➼ 알아주다 - to acknowledge/recognize sbd ➼ 사람 - a person
끝도 보이지 않던 영원의 밤 내게 아침을 선물한 건 너야 이제 그 손 내가 잡아도 될까 Oh oh I can make it right
➼ 끝 - end ➼ 영원 - forever, eternity ➼ 아침 - morning ➼ 선물하다 - to gift ➼ 손 - hand ➼ 잡다 - to hold 
All right All right Oh I can make it right
이 세상 속에 영웅이 된 나 나를 찾는 큰 환호와 내 손, 트로피와 금빛 마이크 All day, everywhere But 모든 게 너에게 닿기 위함인 걸 내 여정의 답인 걸 널 찾기 위해 노래해 Baby to you
➼ 세상 - world ➼ 속 - inside ➼ 영웅 - hero ➼ 환호 - cheer ➼ 트로피 - trophy ➼ 금빛 - golden ➼ 마이크 - a mic ➼ 닿다 - to reach ➼ 여정 - a plan of a journey ➼ 답 - answer ➼ 노래하다 - to sing
➽  ~을/를 위하다
전보다 ���금 더 커진 키에 좀 더 단단해진 목소리에 모든 건 네게 돌아가기 위해 이제 너라는 지도를 활짝 펼칠게 My rehab 날 봐 왜 못 알아봐 남들의 아우성 따위 나 듣고 싶지 않아 너의 향기는 여전히 나를 꿰뚫어 무너뜨려 되돌아가자 그때로
➼ 키 - height ➼ 단단하다 - to be firm, strong ➼ 목소리 - voice ➼ 돌아가다 - to return ➼ 지도 - a map ➼ 펼치다 - to spread ➼ 알아보다 - to recognize ➼ 남들 - others ➼ 아우성 - shout, roar ➼ 향기 - a scent ➼ 꿰뚫다 - to pierce ➼ 무너뜨리다 - to knock down, pull down ➼ 되돌아가다 - to return, go back
➽ 보다 ➽ ~아/어지다 +
Baby I know I can make it better I can hold you tighter 그 모든 길은 널 향한 거야 다 소용없었어 너 아닌 다른 건 그때처럼 날 어루만져줘
➼ 모든 - every, all ➼ 소용없다 - to be no use ➼ 다르다 - to be different ➼ 그때 - back then ➼ 어루만지다 - to pat, soothe
➽ ~을/를 향하다 
여전히 아름다운 너 그날의 그때처럼 말없이 그냥 날 안아줘 지옥에서 내가 살아남은 건 날 위했던 게 아닌 되려 너를 위한 거란 걸 안다면 주저 말고 please save my life 너 없이 헤쳐왔던 사막 위는 목말라 그러니 어서 빨리 날 잡아줘 너 없는 바다는 결국 사막과 같을 거란 걸 알아
➼ 여전히 - still  ➼ 아름답다 - to be beautiful  ➼ 말없이 - without words ➼ 안아주다 - to hug, embrace ➼ 지옥 - hell ➼ 살아남다 - to survive ➼ 주저 - hesitation ➼ 헤치다 - to push/pull through ➼ 목마르다 - to be thirsty ➼ 그러니(까) - therefore ➼ 어서 - fast ➼ 결국 - in the end ➼ 같다 - to be the same ➼ 알다 - to know
134 notes · View notes
bangtan-gifs-imake · 5 years
Photo
Tumblr media Tumblr media Tumblr media Tumblr media
Today’s booklet of bangtaneth church, October 1st 2017
264 notes · View notes
bangtan-gifs-imake · 5 years
Text
[ARTICLE] 190419 Band vocals who started from audition programmes.. ‘Jannabi’s Choi Junghoon-N.Flying’s Yoo Hwe Seung-The Rose’s Kim Woosung’
Source 🔗 : http://www.topstarnews.net/news/articleView.html?idxno=614824#_enliple
[Lee Ye Ji Reporter] Recently Jannabi’s Choi Junghoon appeared on “I Live Alone” And has become a hot topic. On the other hand, N.Flying’s popularity is increasing and with their song ‘Rooftop’ placing first place, it’s adding on to the status. On the 12th, The Rose appeared on the audition programme ‘Superband’ and became a hot issue.
 As such, the current bands of today, while searching for similarities, we found an interesting fact.
Jannabi’s Vocal Choi Junghoon, N.Flying’s Vocal Yoo Hwe Seung and The Rose’s Vocal Kim Woosung are band vocals who started from audition programmes.
.
.
.
(They talked about Jannabi and N.Flying but I’m not gonna translate that, it’s too long >_<)
.
.
.
The Rose Kim Woosung (August 2017)
The Rose is a 4-people Korean Band who debuted on the 3rd of August 2017. The team members consist of Woosung as guitar and vocals, Dojoon as keyboard and vocals, Hajoon as drums and Jaehyeong as bass. Before debuting, they performed their self-composed songs and cover songs through busking and they debuted through M! Countdown on the 3rd of August.
The Rose’s Leader and vocal Woosung is from Los Angeles, USA and he appeared in KPOPSTAR (season 1), which ran for 22 episodes from the 29th April 2012.
Appearing on the programme at that time is DAY6’s member Jae (Park Jaehyung), they became close and even up till now have maintained a close friendship. Woosung, who appeared on KPOPSTAR season 1, sang Jason Mraz’s Live High And Rain’s How to Avoid the Sun.
Park Jinyoung, Yang Hyunsuk and BoA watched Woosung’s stage with a pleased smile and said that he has potential.
After appearing in KPOPSTAR Season 1, he debuted as The Rose 5 years later.
In an interview, he said, “when I was eliminated from Kpopstar, I was in my 3rd year of high school. At that time I had a big interest in doing psychology and contemplated going to university too. I went back to the states to further discuss my future with my parents. The conclusion was that “I can go to university next time but to be a singer, if it’s not now, it’s never”, and the writer for KPOPSTAR then also said “there are companies in Korea who want to meet you” so I came to Korea and successfully signed with a company. However, the concept the company wanted was very different with what I imagined. I trained with them for about 3 years and it was a lot harder than I thought. Still, I was teaching English in Korea while chasing my dream of being a singer and I met these friends (The Rose) coincidentally,” he explained his background before debuting as The Rose.
Also, The Rose appeared in the first broadcast of Superband on the 12th and has garnered a lot attention since.
They sang The Script’s song, Breakeven, and won the hearts of the judges.
NELL’s Kim Jongwan said, “firstly, I listened to it well. And as expected as a team who has performed continuously you are less nervous than others, and your voice is especially good Woosung-sshi, that’s a big advantage. Your voice itself is cool but it’s not easy to express your lyrics through singing but (you did, and) I listened to it well,” he praised Woosung’s voice colour.
Yoon Jongshin said, “this team has a complete sound and I don’t know if this is an advantage or a disadvantage but as what Jongwan-sshi has mentioned, as a team that has performed continuously, they have their own sound. I think it’s because of that that they were a team that sounded good.”
 Moving forward, we have to continue watching to see how The Rose will fair in Superband.
The Rose’s company is J&Star Company and The Rose’s releases albums are the Rose 1st Single ‘Sorry’, The Rose 2nd Single '좋았는데’ (Like We Used To), Void and Dawn
Translations by: @blackrose_trans
Translations may contain some inaccuracies. Please do not take out without credit.
26 notes · View notes
bangtan-gifs-imake · 5 years
Photo
hypnotizzzzzzing..
Tumblr media
Shader Harrier · 20190420
123 notes · View notes
bangtan-gifs-imake · 5 years
Photo
Tumblr media
Shaderwave · 20190421
78 notes · View notes
bangtan-gifs-imake · 5 years
Photo
Tumblr media
Shader Harrier · 20190423
117 notes · View notes
bangtan-gifs-imake · 5 years
Photo
Tumblr media
Geometric Shapes / 190424
46 notes · View notes
bangtan-gifs-imake · 5 years
Text
Creating a Twitterbot in Python
Inspired by ‘ursooperduper’s wonderful write-up of how to make a twitter bot in node.js (found here: part 1, part 2) I thought I would share my experience with making one in python.
I too was inspired by Darius Kazemi’s talk at XOXO and decided to dust off my text editor and get to work. A lot of the information from ursooperduper’s part 1 tutorial is transferable, so I’d recommend reading it to figure out how to get set up with twitter. 
My bot is titled asheeshbot and does exactly one thing, it believes people. It does this by searching for people who state that they can’t believe things, and then responding to them. The code can be found here, but before we get into it lets go over set-up.
First off you’ll want to set up a development environment, the first step of which is creating a folder to put all of your code in. On a system with a decent command line this will look like
mkdir my_twitter_bot
Now some of you may know that python versioning is a serious pain. Since we’ll be using a library for communication with twitter (in this case Twython) it’s important that we have the proper version of it, as libraries that rely on external APIs can often break when the API gets updated, this is the case with a lot of the existing python twitter libraries. If you use a regular package manager (such as homebrew or apt-get) to install these libraries globally you can get yourself into the position where you have installed an old version of this library and your code will use it by default.
To deal with this sort of problem it’s common practice to contain each project in its own virtual environment. Apt-get or brew install virtualenv and then create a virtual environment for your project by typing:
virtualenv my_twitter_bot
(or whatever the name of the folder you made was)
once this finishes move into the newly christened directory and activate the virtualenv
cd my_twitter_bot source bin/activate
As I understand it what virtualenv does is it makes a clone of python and your python libraries inside of your project’s folder. When it’s active it will install new libraries just into that directory and when using imported libraries it will first try to find them within the project folder. This allows you have better control over what version of each package each of your projects is using. So now to install Twython:
pip install twython
I seem to have twython 3.1.2 installed, and it’s working just fine.
Okay now to the code:
from twython import Twython import json def auth(): with open("access.json", 'r') as f: db = json.load(f) return Twython(db["API_Key"], db["API_Secret"], db["Access_Token"], db["Access_Token_Secret"]) def load(): with open("queue.json", 'r') as f: queue = json.load(f) with open("info.json", 'r') as fi: info = json.load(fi) return queue, info def dump(queue, info): with open("queue.json", 'w') as f: json.dump(queue, f) with open("info.json", 'w') as fi: json.dump(info, fi) def respond(twitter, top_tweet): name = top_tweet["user"]["screen_name"] twitter.update_status(status="@%s Oh, I can believe it!" %(name), in_reply_to_status_id=top_tweet["id"]) def main(): twitter = auth() queue, info = load() tweets = twitter.search(q="I can't believe", result_type="recent", since_id=info["sinceid"], count='100') info["sinceid"] = tweets["search_metadata"]["max_id"] triggers = ("Can't believe", "can't believe", "I can't believe") to_add = [tweet for tweet in tweets["statuses"] if not tweet["retweeted"] and not tweet.has_key("retweeted_status")] to_add = [tweet for tweet in to_add if tweet["text"].startswith(triggers) or tweet["text"].split(" ",1)[1].startswith(triggers)] queue = queue + to_add mx = max(len(to_add), 20) if len(queue) > mx: queue = queue[-mx:] if len(queue) > 0: respond(twitter, queue.pop()) dump(queue, info) #run on cron every minute if __name__ == "__main__": main()
A scant 45 lines, which we’ll now go through individually
from twython import Twython import json
The first line imports the Twython class from the twython library, which will prevent us from calling something ugly like twython.Twython(etc.). The second line imports python’s standard json library which we’ll be using to store some information about the tweets we’ll be posting in the future, and to get our access token data (those pesky secret keys twitter gives you)
first we call
def main(): twitter = auth()
which calls:
def auth(): with open("access.json", 'r') as f: db = json.load(f) return Twython(db["API_Key"], db["API_Secret"], db["Access_Token"], db["Access_Token_Secret"])
This opens our access.json file which has our credentials stored as a dictionary, and then creates an authenticated Twython object using them. Look at the Twython Docs for more info on the syntax and usage. As a result we now have a variable named twitter that will do the rest of our twitter posting and searching work for us.
Our access.json file looks like this:
{"Access_Token": "0000000000-aaaAAAaaaAaa0a0AAaaaaaaAAa0aAAaAAa0Aa0a", "API_Secret": "aaAaaAaaaaAAa0aA0a0A00aA0a0A00A0AA0A00a", "API_Key": "a0A0aA000AaAaaaAAaa", "Access_Token_Secret": "aAAAaAaaaAAAA00A0A000AaaaAAaa"}
Or whatever. Those db[“Access_Token_Secret”] things are us looking up the value for that key in the dictionary, as defined by this json file, this aAAAaAaaaAAAA00A0A000AaaaAAaa gets input into our Twyton instatiation call. Next:
queue, info = load()
Which calls
def load(): with open("queue.json", 'r') as f: queue = json.load(f) with open("info.json", 'r') as fi: info = json.load(fi) return queue, info
Those weird looking 'with’s here ensure that each of these files is closed after reading out the JSON. queue is a list (that starts off empty i.e. []) of tweets we have yet to respond to, and info is a dictionary with only one value which we’ll use to store some of the information returned to us by our twitter call.
We return these together into the same variable names in the main function, a fun little piece of python syntactic sugar. Otherwise we could return them in a list and access them by index later. Next we do a twitter search and begin to filter out tweets we don’t want to respond to:
tweets = twitter.search(q="I can't believe", result_type="recent", since_id=info["sinceid"], count='100')
This returns us a dictionary with two elements, one with the metadata for our query as the value, and one with a list of tweets (as many as we requested in count) as the value of the other
info["sinceid"] = tweets["search_metadata"]["max_id"]
Here we store the id of the most recent tweet our search got into the info dictionary so that we don’t add the same tweet to the queue multiple times by never getting repeated tweets in a query. We’ll store this in info.json and use it next time we do a search query.
triggers = ("Can't believe", "can't believe", "I can't believe") to_add = [tweet for tweet in tweets["statuses"] if not tweet["retweeted"] and not tweet.has_key("retweeted_status")] to_add = [tweet for tweet in to_add if tweet["text"].startswith(triggers) or tweet["text"].split(" ",1)[1].startswith(triggers)]
Now we use two of python list comprehensions to filter out some tweets we don’t want to respond to. First off we don’t want to hammer everyone who retweeted a popular incredulous tweet by responding to each one of them that we can believe them, so we filter out any tweet that has the attribute 'retweeted_status’. Python list comprehension is of the form [output_var for output_var in list_of_somethings if some boolean] and it will return all output vars that fit that boolean. Remember that our list of tweets is actually a dictionary, so here we’re getting the value from the key “statues” in that dictionary which, confusingly, is a list of dictionary objects, each one representing all of the information about a single tweet. Maybe this will make it easier to understand:
{ "search_metadata": { "completed_in": 0.018, "count": 1, "max_id": 527860500495745024, "max_id_str": "527860500495745024", "next_results": "?max_id=527860500495745023&q=I%20can%27t%20believe&count=1&include_entities=1&result_type=recent", "query": "I+can%27t+believe", "refresh_url": "?since_id=527860500495745024&q=I%20can%27t%20believe&result_type=recent&include_entities=1", "since_id": 0, "since_id_str": "0" }, "statuses": [ { "contributors": null, "coordinates": null, "created_at": "Thu Oct 30 16:32:05 +0000 2014", "entities": { "hashtags": [ { "indices": [ 91, 108 ], "text": "EMABiggestFans1D" } ], "symbols": [], "urls": [ { "display_url": "pic.twitter.com/AqTidz72aK", "expanded_url": "http://twitter.com/larryslovedrunk/status/527692085357330432/photo/1", "indices": [ 109, 131 ], "url": "http://t.co/AqTidz72aK" } ], "user_mentions": [ { "id": 2475817085, "id_str": "2475817085", "indices": [ 3, 16 ], "name": "Maya is larry af !!", "screen_name": "louisxvoguex" }, { "id": 1212597271, "id_str": "1212597271", "indices": [ 19, 35 ], "name": "Styles \u2654", "screen_name": "larryslovedrunk" } ] }, "favorite_count": 0, "favorited": false, "geo": null, "id": 527860500495745024, "id_str": "527860500495745024", "in_reply_to_screen_name": null, "in_reply_to_status_id": null, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_user_id_str": null, "lang": "en", "metadata": { "iso_language_code": "en", "result_type": "recent" }, "place": null, "possibly_sensitive": false, "retweet_count": 8, "retweeted": false, "retweeted_status": { "contributors": null, "coordinates": null, "created_at": "Thu Oct 30 06:42:21 +0000 2014", "entities": { "hashtags": [ { "indices": [ 73, 90 ], "text": "EMABiggestFans1D" } ], "symbols": [], "urls": [ { "display_url": "pic.twitter.com/AqTidz72aK", "expanded_url": "http://twitter.com/larryslovedrunk/status/527692085357330432/photo/1", "indices": [ 91, 113 ], "url": "http://t.co/AqTidz72aK" } ], "user_mentions": [ { "id": 1212597271, "id_str": "1212597271", "indices": [ 1, 17 ], "name": "Styles \u2654", "screen_name": "larryslovedrunk" } ] }, "favorite_count": 6, "favorited": false, "geo": null, "id": 527712088631033857, "id_str": "527712088631033857", "in_reply_to_screen_name": null, "in_reply_to_status_id": null, "in_reply_to_status_id_str": null, "in_reply_to_user_id": null, "in_reply_to_user_id_str": null, "lang": "en", "metadata": { "iso_language_code": "en", "result_type": "recent" }, "place": null, "possibly_sensitive": false, "retweet_count": 8, "retweeted": false, "source": "Twitter for Android", "text": "\"@larryslovedrunk: I SWEAR I STILL CAN'T BELIEVE LOUIS TOMLINSON IS REAL\n#EMABiggestFans1D http://t.co/AqTidz72aK\" he's so cute and tiny aw", "truncated": false, "user": { "contributors_enabled": false, "created_at": "Fri Apr 11 09:06:45 +0000 2014", "default_profile": false, "default_profile_image": false, "description": "\u2661 may and loes are mine !! \u2661 and im in love with lou and his little things \u2661", "entities": { "description": { "urls": [] } }, "favourites_count": 2400, "follow_request_sent": false, "followers_count": 4717, "following": false, "friends_count": 3592, "geo_enabled": false, "id": 2475817085, "id_str": "2475817085", "is_translation_enabled": false, "is_translator": false, "lang": "en", "listed_count": 27, "location": "Louis a$$", "name": "Maya is larry af !!", "notifications": false, "profile_background_color": "C0DEED", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "profile_background_tile": false, "profile_banner_url": "https://pbs.twimg.com/profile_banners/2475817085/1414508621", "profile_image_url": "http://pbs.twimg.com/profile_images/527113360169791488/32mh2AYq_normal.jpeg", "profile_image_url_https": "https://pbs.twimg.com/profile_images/527113360169791488/32mh2AYq_normal.jpeg", "profile_link_color": "A400B3", "profile_location": null, "profile_sidebar_border_color": "C0DEED", "profile_sidebar_fill_color": "DDEEF6", "profile_text_color": "333333", "profile_use_background_image": true, "protected": false, "screen_name": "louisxvoguex", "statuses_count": 8900, "time_zone": "Hawaii", "url": null, "utc_offset": -36000, "verified": false } }, "source": "Twitter for iPhone", "text": "RT @louisxvoguex: \"@larryslovedrunk: I SWEAR I STILL CAN'T BELIEVE LOUIS TOMLINSON IS REAL\n#EMABiggestFans1D http://t.co/AqTidz72aK\" he's s\u2026", "truncated": false, "user": { "contributors_enabled": false, "created_at": "Sat Apr 06 00:56:37 +0000 2013", "default_profile": false, "default_profile_image": false, "description": "Be strong tonight, remember who you are, you're a soldier now fighting in a battle to be free once more. That's worth fighting for \u2022 | Aug 7 | Austin follows \u2022", "entities": { "description": { "urls": [] } }, "favourites_count": 19908, "follow_request_sent": false, "followers_count": 19596, "following": false, "friends_count": 14825, "geo_enabled": false, "id": 1330389110, "id_str": "1330389110", "is_translation_enabled": false, "is_translator": false, "lang": "en", "listed_count": 74, "location": "| Luke/4 & Connor\u2600\ufe0f+band/4 |", "name": "Cecilia", "notifications": false, "profile_background_color": "000000", "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/378800000180949810/gqawGZ1e.jpeg", "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/378800000180949810/gqawGZ1e.jpeg", "profile_background_tile": true, "profile_banner_url": "https://pbs.twimg.com/profile_banners/1330389110/1414352613", "profile_image_url": "http://pbs.twimg.com/profile_images/526458995221860352/uQi_uyBo_normal.jpeg", "profile_image_url_https": "https://pbs.twimg.com/profile_images/526458995221860352/uQi_uyBo_normal.jpeg", "profile_link_color": "DD2E44", "profile_location": null, "profile_sidebar_border_color": "000000", "profile_sidebar_fill_color": "DDEEF6", "profile_text_color": "333333", "profile_use_background_image": true, "protected": false, "screen_name": "MochaxLouis", "statuses_count": 56914, "time_zone": "Mountain Time (US & Canada)", "url": null, "utc_offset": -21600, "verified": false } } ] }
That’s the response for just one tweet! So we drop into the statuses half of that, and then check each tweet in that list to see if it has the attribute 'retweeted_status’. From there we cull the to_add list of things that don’t begin with one of our triggers, those triggers being things like “I can’t believe”. The reason we have this splitting nonsense in there is because we also want to catch responses which will look like “@jim I can’t believe it’s raining today!”
next we update our queue, by putting all of these new tweets at the end of it. This means that if there are still tweets we haven’t responded to we’ll get to them first, otherwise we’ll just respond to the first tweet we got in our response.
queue = queue + to_add
Next we’re going to truncate our queue. Why? Well Twitter is a big place, and tons of people seem to not be able to believe things on it. Due to Twitter rate limiting we can only respond to one tweet a minute, but if 20 people say “I can’t believe” every minute soon our queue will be 1140 elements long (each element being that huge mess posted above) and then you come back a day later to find that your server is out of disk space, or that your program can’t load your queue file in less than a minute and is crashing. Not good. So:
mx = max(len(to_add), 20) if len(queue) > mx: queue = queue[-mx:]
First we find the max between 20 and the number of tweets we got in our last request, with the thought being that 20 minutes should be enough time for people to start tweeting incredulity if we ever hit a dry spot. Using some fancy python string splitting we then truncate the list to those last mx elements, meaning that worst comes to worst we’ll always get one of the tweets from our last search to respond to. Well mostly. Then:
if len(queue) > 0: respond(twitter, queue.pop())
If there’s a tweet in the queue we send it off to our respond function, along with our twitter object. By using pop we will pull it off of our queue so that it doesn’t get responded to again. Note that there’s a slight error here, and if our call to twitter fails we won’t save this popped queue and we might try again with a bad tweet again later. Oops! Well I didn’t promise that I was infallible. One case where this will get annoying is if your bot ingests far less tweets and somehow tries to post a duplicate tweet (maybe you tweeted once to test that it worked but didn’t migrate the new queue, I don’t know). Lets look at respond:
def respond(twitter, top_tweet): name = top_tweet["user"]["screen_name"] twitter.update_status(status="@%s Oh, I can believe it!" %(name), in_reply_to_status_id=top_tweet["id"])
First we extract this person’s twitter name so that we can add it into our tweet. Then we use Python string replacement to tweet it back at them (using the optional value in_reply_to_status_id to make sure twitter understands which tweet we’re responding to as well). Then there’s just one more thing to do, which is to save the data, that is the info and queue json files.
dump(queue, info) def dump(queue, info): with open("queue.json", 'w') as f: json.dump(queue, f) with open("info.json", 'w') as fi: json.dump(info, fi)
Much like load we’re just calling the json dump function to store this data.
Then we call the function once a minute via cron, a standard linux utility that calls bash for us. WARNING: Since our libraries are contained in our virtual environement you will need to do some funky stuff to make sure it can use twython as downloaded in your virtualenv. It might look something like this:
*/2 * * * * cd /home/username/asheeshbot && /home/username/asheeshbot/bin/python /home/username/asheeshbot/bot_logic.py > /tmp/cronlog.txt
This will call cron from the project directory, using that project’s virtual env’s python to do so. The > is for storing error logs, which for some reason never seemed to catch anything, probably because it needs a %2 or something.
That’s it! We’re done, your twitter bot should be ready to go out and terrrorize the internet now! Next time I’ll talk about the process of testing code like this, as it can be frustrating to debug unless you have the proper tools.
3 notes · View notes
bangtan-gifs-imake · 5 years
Photo
Tumblr media Tumblr media
General:
Lang-8 (Journal in another language, be corrected by native speakers. Do the same for others by correcting them.)
Livemocha 
Polyglot Link
FSI Language
BBC Languages
I Kinda Like Languages
GLOSS (Foreign Language Institute)
My Language Exchange
So You Want to Learn a Language
Mango Languages
Forvo
Learning with Texts
LingQ
South Asian Linguistics
F*ckyeahsouthasia #Language
Open Culture: Free Language Lessons (another masterlist)
Reddit Threads:
Arabic Language
Chinese / Chinese Language
Indonesian
Japanese / Learn Japanese
Korean
Hmong
Learn Vietnamese
Tagalog
Language Learning General
All in Chinese
Asian Dramas
SRS  (Spaced Repetition flashcards): 
Memrise (Iphone/pad app available)
Anki (droid/i-app avail)
Skritter (Paid: Japanese/Chinese; i-app avail.)
Mnemosyne
Arabic:
Books to Learn Arabic (Blogs list page)
Al3Arabiya
Mandinah Arabic (Free Printable E-books)
Bengali:
Fuckyeahsouthasia - Bengali .zips
So You Want to Learn…Bengali
Learning Bengali
Uchicago - Bengali
Peace Corps Bengali download
Bengala Instructional Materials
Learn to read Bengali
BBC Bengala
Bengali Podcasts
Burmese/Myanmar:
Burmese By Ear or, Essential Myanmar
Burmese Language
Chinese (Mostly/All Mandarin):
Chinese Grammar Wiki
Fluent Flix
Chinese Hacks
Social Mandarin
Hao Hao Report
Hacking Chinese
Reddit Resource List
MDBG
Why Chinese is so damn hard
sugoideas, Taiwanese dramas
Baidu radio, PRC radio stations
Mac TV, Taiwan TV
中文字譜, site for making mnemonics
Chinesepod
Reviewing the Hanzi
Perapera Chinese Firefox add on
Better Chinese (Paid)
China Sprout online retail
Chinese Grammar (eh, looks dull)
More Manhua
Chinese Rage Comics
English Slang in Chinese
Sentence Structure / Particles / Modals
Sinosplice
Pleco for iPhone
Chinese with Serge (he’s pretty clear)
Review the Hanzi forum thread
eStroke
Nciku (search characters by drawing them)
QQ international version / Weibo (Chinese “twitter”) / renren
Apps: Mindsnacks Mandarin ($5, personal recommendation), Manhua Reader App, Pleco, Word Tracer Learn Chinese, Chinese with Pengyou Pal
Books I own: (Far East) Illustrated 300 Chinese Character Dictionary, Reading and Writing Chinese (Tuttle), Chinese Link (favorite textbook so far), Integrated Chinese (Not as good as Chinese Link imho. Less organized/structured in a good format), Basic Spoken Chinese (Tuttle), Schaum’s Chinese Grammar
Gujarati:
Pronunciator
So You want to Learn… [Resource Masterlist]
Eye of India- Alphabet
Another masterlist
Gujarati Learner
Hindi:
Learning-Hindi
NYU - Virtual Hindi
Hindi-Urdu Flagship Resources (pdfs, textbooks, audio, etc)
A Door into Hindi
Indonesian - Bhasa Indonesian:
Indonesian-Online
Korean:
Hangul Type Attack
Seemile (Also learn Chinese)
Talk to Me in Korean
My Korean 1 & 2
Hangul
Busy Atom
Korean Wiki - Hangul
Dictionary
Grammar Dictionary
Radio Korea
Songang Korean Program
Hulu Kdramas
Airang “I Love Korean”
Seoul National University Korean Crash Course
Apps: Korean Letters Lite App (Free/Paid available), Korean Study Buddy App, Learn Sounds of Korean App (currently free)
Korean Champ
Korean Class 101
Hangukdrama and Korean
Learn Korean
Resource List (Also Japanese)
Books: Integrated Korean (Common textbook, friends used/liked it for class), Learn Korean for Beginner’s (Tuttle), Basic Korean: A Grammar and Workbook.
Japanese:
All Japanese All the Time (AJATT method; perhaps worth a read for other languages)
So You Want to Learn Japanese…
Perapera Firefox add on
Reviewing the Kanji
Tae Kim’s Guide to Learning Japanese / The app
Beginner’s Guide
Kanji Damage
Tofugu / Textfugu (Some-Paid)
Rikaichan FF/Chrome
Gakuu
Subs2SRS
Hiragana42
Lingualift (Paid)
I Know! (Paid)
Nihon Shock ($25)
Tagorin Dictionary
Read the Kanji
Nihongo Dekimasu
Before Breakfast
Kotodama Typing Game
Real Kana
The Japanese Page
All Kana Aesop’s Fables (Practice translating)
Manga RAWs
Apps: Kana iphone/ipad app (all Japanese game), Ninja worlds (free/paid $3 app), Human Japanese (Free/$10)
How to Read Manga/Watch anime (and understand) in 2 years
Pastebin Reddit Resources
Pera Pera Penguin
Nihongo e na
Jbox Study items
Other Books: Remembering the Kanji
Malay:
Learn Malay
Tamil
F-ckyeahsouthasia’s Tamil
UPenn Tamil
Thai:
Learn Thai
Learning Thai
TV Method Thai (Immersion oral learning)
Learning Thai
Thai-Language
Women Learn Thai — Check the detailed Resources Page.
So You Want to Learn… List:
Ainu, Arabic, Azerbaijani (Azeri), Balinese, Bengali, Burmese (Myanmar), Cantonese (Yue), Cebuano, Fuzhou (Foochow), Gujarati, Hakka, Hindi, Hmong, Indonesian, Japanese, Javanese (Basa Jawa/Jawi), Kannada, Kashmiri, Kazakh, Khmer (Cambodian), Korean, Kyrgyz, Lao, Malay (Melayu), Malayalam. Mandarin (Chinese), Marathi, Mongolian, Nepali, Oriya, Pashto, Persian (Farsi, Dari, Tajik/Tajiki), Punjabi (Panjabi), Shanghainese (Wu), Sindhi, Sinhala (Singhalese), Tagalog (Filipino, Pilipino)  Taiwanese (Minnan, Southern Min, Hokkien), Tamil, Telugu, Thai, Tibetan, Turkish, Turkmen, Urdu, Uyghur (Uighur), Uzbek, Vietnamese
Other:
Tumblr tags: #learning _________ 
Can I become Fluent in ______ in ______ months/weeks/days?  No. You can’t. 
Can I learn Japanese from just watching Anime/Korean from Kpop/Chinese from Wuxia films? Not on your life. Do you only speak the english you know from Spongebob? N’SYNC? The 300? Didn’t think so.
What about Rosetta Stone? For $180-$399 dollars? Are you insane? The program is built to teach you the Romantic languages.  If you buy Rosetta stone for $400, and pass up every free resource on this list, I doubt your desire to actually learn anything. Don’t do it to yourself. That is a lot of money you probably won’t get back.
But I heard that Chinese/Japanese/Korean/Arabic/etc is really difficult: Well if over a billion Chinese people can speak Chinese, why can’t you? No really, don’t let something like this bother you. No, this is not the ease of moving from a English to a Romance language or German, but hey, if you wanted to learn German (and all those ridiculous cases) you’d be doing that. 
But what about ______? I have knowledge on resources mostly limited to JPN/CHI/KOR classes. This is a participatory list, which I am more than grateful to take submissions for.
20K notes · View notes
bangtan-gifs-imake · 5 years
Photo
Tumblr media
Many #BTSARmys right now while watching #RM on #VLIVE and figuring out what he could possibly be saying about the album, trying to decompose the intricacies of the Hangul agglutination & picking up familiar words like ‘game’ ‘love’ 'Jungookie’ etc etc #theStruggleIsReal 
2 notes · View notes
bangtan-gifs-imake · 5 years
Photo
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
                                             Kim Namjoon,
                                                  a.k.a. RM, 
                                   a.k.a. Kim PRO BIASWreckoon,
is not only sharing his literary wisdom of PERSONA songwriting via Vlive but also teaching us how to deal with fake love in this series of gifs from his powerful MAMA 2018 Performance that left many Armys seriously question their Bias choices.
4 notes · View notes
bangtan-gifs-imake · 5 years
Photo
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
                                             Kim Namjoon,
                                                  a.k.a. RM, 
                                   a.k.a. Kim PRO BIASWreckoon,
is not only sharing his literary wisdom of PERSONA songwriting via Vlive but also teaching us how to deal with fake love in this series of gifs from his powerful MAMA 2018 Performance that left many Armys seriously question their Bias choices.
4 notes · View notes
bangtan-gifs-imake · 5 years
Photo
Tumblr media Tumblr media Tumblr media Tumblr media
jimin @ bwl choreo practice
600 notes · View notes
bangtan-gifs-imake · 5 years
Photo
Tumblr media Tumblr media
barefaced hoseok
607 notes · View notes