From 00fc2a5c4b75433c7a8cce7c6c2ec6bf7fbd80c2 Mon Sep 17 00:00:00 2001 From: Amogh Mannekote Date: Sat, 16 Sep 2017 16:48:17 +0530 Subject: [PATCH 1/4] Fixed all issues --- GUI.py | 19 +++++++++++++------ crawler.py | 6 +----- downloader.py | 10 ++++++---- main.py | 12 ++++++++---- song_finder.py | 2 ++ 5 files changed, 30 insertions(+), 19 deletions(-) diff --git a/GUI.py b/GUI.py index b177c64..896ad24 100755 --- a/GUI.py +++ b/GUI.py @@ -22,10 +22,11 @@ def populate_Song_Metadata(self, relevant_data): """ relevant_data: a dictionary containing (key:value) pairs of metadata. """ + print 'POPULATING' self.lbox2.delete(0, END) print(relevant_data) for key in relevant_data.keys(): - insert_string = key + ': ' + str(relevant_data[key]) + insert_string = key + ': ' + unicode(relevant_data[key]) self.lbox2.insert(END, insert_string) #Function to generate a list of similar songs. @@ -36,8 +37,9 @@ def populate_Similar_Songs(self, search): search: the text entered in the search bar. """ songs = populateSongs(search) - self.lbox.delete(0, END) - self.lbox.insert(END, songs) + self.lbox.delete(0, END) + for song in songs: + self.lbox.insert(END, songs) #Function to initiate a search for the song. def search(self): @@ -47,7 +49,10 @@ def search(self): search_string = self.search_var.get() print(search_string) self.populate_Similar_Songs(search_string) - metadata = initiate_Search(search_string) + metadata = initiate_Search(search_string) + print metadata + # raw_input('>>>') + self.populate_Song_Metadata(metadata) initiate_Download(search_string, metadata) @@ -63,6 +68,7 @@ def onDouble(self, event): value = widget.get(selection[0]) self.entry.delete(0, END) self.entry.insert(END, value) + self.search() #Function to setup the basic layout of the Graphical User Interface def widgets(self): @@ -74,7 +80,8 @@ def widgets(self): Label(self, text="Song Downloader System", background="#CC0001", font= ("Comic Sans MS",16)).grid(row=0, column=0, padx=20) self.search_var = StringVar() - self.entry = Entry(self, textvariable=self.search_var, width=45) + self.entry = Entry(self, textvariable=self.search_var, width=45) + self.entry.grid() self.b1=Button(self, text='Search', command=self.search) self.b1.grid(row=1, column=1, sticky=W, padx=20, pady=10) @@ -84,7 +91,7 @@ def widgets(self): self.lbox.bind("", self.onDouble) self.lbox2 = Listbox(self, width=45, height=15) - self.lbox2.grid(row=2, column=1, columnspan=6,sticky=W, padx=2000, pady=10) + self.lbox2.grid(row=2, column=1, columnspan=6,sticky=W, padx=20, pady=10) """ diff --git a/crawler.py b/crawler.py index 90a50b8..9bf0190 100644 --- a/crawler.py +++ b/crawler.py @@ -210,11 +210,7 @@ def checkIfVerified(meta): #Function that converts Youtube views (a string) to an integer #Eg: Youtube views -> 123,456,789 should become 123456789 def toNumber(string): - number = string - try: - return int(number) - except: - return -1 + return int(string.replace(',', '')) #Function that filters out the most relevant Youtube video def getMostRelevant(metaData, searchWord): diff --git a/downloader.py b/downloader.py index e349c38..5c3a9d6 100644 --- a/downloader.py +++ b/downloader.py @@ -1,5 +1,5 @@ from bs4 import BeautifulSoup -import dryscrape +#import dryscrape import requests import time @@ -9,8 +9,8 @@ def convert_youtubeURL_to_download_URL(youtube_URL): https://www.ssyoutube.com/XXX contains a link which allows music videos to be downloaded. youtube_URL: the URL of the music video to be downloaded """ - index = youtube_URL.find('https') - file_retrieve_URL = youtube_URL[0:index] + 'ss' + youtube_URL[index:] + #index = youtube_URL.find('https') + file_retrieve_URL = youtube_URL redirect_response = requests.get(file_retrieve_URL) print(redirect_response.url) return redirect_response.url @@ -28,7 +28,9 @@ def retrieve_File_URL(ss_downloaded_URL): sess.visit(ss_downloaded_URL) time.sleep(10) response = sess.body() - response = response.encode('ascii', 'ignore') + #r = requests.get(ss_downloaded_URL) + #response = r.content + response = response.encode('"ascii"', 'ignore') soup = BeautifulSoup(response.decode('ascii', 'ignore'), 'html.parser') div = soup.find('div', {'class':'def-btn-box'}) print('*************************') diff --git a/main.py b/main.py index 4e169ba..a414dbf 100644 --- a/main.py +++ b/main.py @@ -23,9 +23,10 @@ def initiate_Search(search): soup = init(base_url) metaData = getMetaData(soup, 10) print(metaData) - + relevant = getMostRelevant(metaData, searchWord) print(relevant) + raw_input('>>') return relevant except urllib2.HTTPError as e: @@ -38,6 +39,8 @@ def initiate_Search(search): """ ***************No error section ends****************** """ + + #Function to download the most relevant video. def initiate_Download(search, relevant): @@ -47,10 +50,11 @@ def initiate_Download(search, relevant): search: the search text relevant: a dictionary containing (key:value) pairs of metadata. """ - youtube_URL = 'https://www.youtube.com'+relevant['Link'] - ssyoutube_URL = convert_youtubeURL_to_download_URL(youtube_URL) + ssyoutube_URL = 'https://www.ssyoutube.com'+relevant['Link'] + #ssyoutube_URL = convert_youtubeURL_to_download_URL(youtube_URL) file_URL = retrieve_File_URL(ssyoutube_URL) - download_video(file_URL, search) + ext = '.mp4' + download_video(file_URL, search + ext) diff --git a/song_finder.py b/song_finder.py index a3040ad..4580bd6 100755 --- a/song_finder.py +++ b/song_finder.py @@ -42,6 +42,8 @@ def getAllSongs(cursor, artist, song): for row in rows: print(row[0], row[1]) songs.append(str(row[0]) + str(row[1])) + print 'Returning' + print songs return songs def populateSongs(search): From d996db19a7d519ad0b5fe6aedaa3daf58b5806e3 Mon Sep 17 00:00:00 2001 From: Amogh Mannekote Date: Sat, 16 Sep 2017 16:55:42 +0530 Subject: [PATCH 2/4] Fixes --- GUI.py | 2 +- crawler.pyc | Bin 4276 -> 4234 bytes downloader.pyc | Bin 2343 -> 2239 bytes main.py | 2 +- main.pyc | Bin 1898 -> 1842 bytes song_finder.pyc | Bin 2111 -> 2103 bytes 6 files changed, 2 insertions(+), 2 deletions(-) diff --git a/GUI.py b/GUI.py index 896ad24..99c5b36 100755 --- a/GUI.py +++ b/GUI.py @@ -26,7 +26,7 @@ def populate_Song_Metadata(self, relevant_data): self.lbox2.delete(0, END) print(relevant_data) for key in relevant_data.keys(): - insert_string = key + ': ' + unicode(relevant_data[key]) + insert_string = key + ': ' + str(relevant_data[key]) self.lbox2.insert(END, insert_string) #Function to generate a list of similar songs. diff --git a/crawler.pyc b/crawler.pyc index ef88d48d466f4dac34499d68707aed8b57c0bb92..f387228f53e72e345c1fab086fed60ec74800a32 100644 GIT binary patch delta 620 zcmaJBb5S`(UFXezJ(V&G#cL_?NouM(tM2%8FL4z^JaX}OgxE(YmM=WfJ?fno# zwDmXGSeRJZ*jV}poFx*BA0#tx=XPH9z1iFQ%uOb&d}uST>ccQRz$G03wl^!n5$lzb zBaU}X>&&E+wo~zMF^lTm3$8_{v5eWrY3;>W?h08$l{%bafq?)#fK!ATM*yxl5K4x^ ztpZ8*Dl-6#00YV0hC>wQ)wMfK)3Oc8p%8;0x8c+cu3!X0=jz8i`LBU2*Su)jZmx4l z5oS@l&}&s~_lavEl>jZdL^*?;Beyj_rR^>2KmqVZF4^u`0NkqlWcO*Gw5_87P!Rem zbO$oZo+@2ST2In=PEU~&Vz&nz<;h_(Ws-9LZgx0w@6s@rtf7F4vG_POcMGjEAJ14KipVGL6^hYDxJe@~BzX=(f`c8z#UX!% zi%@hC{2!d$T-03z7je;hSws}_xbL|4`0l&=-g)t+m=NE!^ykanIB|ya3jkpDhJ&uz zZ@H{z_078N?X9-j{TAyDZ8N;YGRoHvxR{FP7AEfFNwT_hBG6QkP$hT)wSsYFadmlZ`l!`FM!+R*RZCo?2LfP5J=#R zcr<*8@5w0+ryL^qBJV@T0gA?t5Js$Lu>Y!mMCxzaM&3X_34y{zf&@4QI!3sa8Dk|x zoyC9sg+7Om;gvo!D+!9Ephi|ToFb?=Ddfm<4yEu(Uso#RxK<69v-x<{X10vUZ>v|2 AjsO4v diff --git a/downloader.pyc b/downloader.pyc index 635eb55e5318dfd3611b84c9719d987caa3cd2c2..c78050a8276b061171c5cf991ea1adb4e2b5afd2 100644 GIT binary patch delta 612 zcmah_Jxc>Y5S`tY{=Yk(fL6;(5XBrVtVvZ7jq7 z0PXw%+KTu;{1J+cjo|D?w2KG(=Iy+h*>`h4_MFVHkKy>E^|V`upO0c($HPm#%zTQ$ zHNc($o}q~eo~en|3+D?A%T#$$mCqt{0J;POK!ZSsz!iZmg${)Vg;Kd6D>>48zb)ic zudoqX{(0Nyf(w;7_Jxk^R@ko?!sJD>E!v0v!M3|8-$)@ngSp~rl}9{Ztwj8wT&thf z#7Q%%$`W0Psi9z5@`eUGXq>?nRjv`c3_1)N4tN#>1iTn{HY_Uv>l|g#&}v*e$A8s1 zj6;w@u}>HR2ggyf<9y|M?vJt7h{dY<(H8f zL>{PsCMSN6G}`W{LByi99}>JAF!W&dx|W`OFOfr q-0M{z@PNtL8^Z_9amDYm7DAhpmfhZyf+J&nL3hgFNbEnOnBr_%VMlB?` zsNlj?xGPt>6I{4)D|8|L0Dpo@-TDVSXQJS)IG6j~Z_e{O=Va;q@~ZpmO!@WK&pRFX z^Eve1rK?-h)y)e4(t*B!T>;XCmjJsSNKudyNUtFN^vULqpcI$xJx;w(Fa}5|8{rsX zg8WOB#t0i!r%r!F*Xt7p3_?l{r-*Z5>_Y0ogYDVd3dQux+w;bwf?Z<{wITwBHEJDl zPs6aUGHDNRZLP3W$a0jA%xEuZKZ+g}$rO-0w{P&qxr^j&cJo2f?8QUVRlQ~_)9vlJ z(~C_v&zklp-VDkV1l|HR>?KD%c6jz>') + return relevant except urllib2.HTTPError as e: diff --git a/main.pyc b/main.pyc index 148d4ff0737a88a17470329050bb701c5f4ea90a..d574719104c1aa19f45a15418e62997c16e5f031 100644 GIT binary patch delta 307 zcmaFGw~3FP`7}D9 zj43P(!5XZax3CB^no0syXOxr_6kF-*mzS686&F|LmzIWaQ`R zPnKjcXJnil$Rh5>3{>h2#Kq=7B88EmhLItKi9u4lmWiQ+fuV+pp_!4PmYJahD8me9 zvoMq}G1Ray)G#nKGchoxFf#;euxwt#BFxArKDmKOYVsXcPF+6@khvvFKq5ImuPn8w zB)&4gw4^jCH8jX4z9c_BCBHl`CqFSI9>|~kh1HUu8>kej1T3b*CaFTGkGbSg^4uG3{p(vW>;fW0RW>uQp5lN diff --git a/song_finder.pyc b/song_finder.pyc index a5b17b326df2058a23919af17314916e9fd27c3f..f9239689e6866f56505168279ef3c2960b29972a 100644 GIT binary patch delta 337 zcmdlluw8(i`7=PKJR2Uc-oULMt^NNjPg7b>wJra|%6H7Ak^I|4%XPl2m zdUF}mF}&JiSi%|GCU0S>7D!=XaQCQTh7iFTtdmVyWboyo@|REX=6M$jZn%*^ccVqugX!b{$PwpaKn$Dlk!u$8Qzv i3XF!6XR<3X%1_?IE@dnS)D#3#kI+ug41NxMMjil_ZdES; delta 344 zcmdlkuwQ_k`7WaQ`R zPu|ElpP-`6Sxm=>Fv^Q1oUvx|B9>~l8fJ!I4VKBetnrg)v4#*de=-M~vakTqr3{R0 zi~@|jj66Ur%&0lpiR~Vv>|{lD9eo*~qy|U@m?$Rbtul56M*Ydt*_9aOChuaGvXljC Q4N`{bC&eUo4t+*00EX{f6951J From a546104396014ef31cfcf3aea934f73d55a135df Mon Sep 17 00:00:00 2001 From: Amogh Mannekote Date: Sat, 16 Sep 2017 17:03:35 +0530 Subject: [PATCH 3/4] d['Verified'] = True instead of pass --- crawler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crawler.py b/crawler.py index 9bf0190..d2e675c 100644 --- a/crawler.py +++ b/crawler.py @@ -188,7 +188,7 @@ def getMetaData(soup, noOfRecords): if(s != None): if(s.has_attr('title')): if(s['title'] == 'Verified'): - pass + d['Verified'] = True #Third child of yt-lockup-content division metaDataTags = video.contents[2].ul From 9f90f99c58a4d6ccaec207ef5b6313d7f4876a83 Mon Sep 17 00:00:00 2001 From: Amogh Mannekote Date: Sat, 16 Sep 2017 17:19:00 +0530 Subject: [PATCH 4/4] Interchanged artist and song --- crawler.pyc | Bin 4234 -> 4249 bytes song_finder.py | 2 +- song_finder.pyc | Bin 2103 -> 2103 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/crawler.pyc b/crawler.pyc index f387228f53e72e345c1fab086fed60ec74800a32..0869448f9e14b8cd21b839e57fba1ea16a61c746 100644 GIT binary patch delta 204 zcmeBDoT{Kmv4(>oi=82blcAZB zp$N5lED< m0*Rdb^3)=*k{}x(SA!EIt2UXNUzt&JvOfPOMw7`(0vP~)HZ0x% delta 190 zcmbQK*rmwE{F#^QAx_&UlkYLgGrCRw$0*IHxmk*-lF{rAV+{vG7CS=G_Lw&VZAXgt|aAOipp?ktG_ diff --git a/song_finder.py b/song_finder.py index 4580bd6..eaad035 100755 --- a/song_finder.py +++ b/song_finder.py @@ -36,7 +36,7 @@ def searchStringLogic(cursor, search_string): def getAllSongs(cursor, artist, song): songs = [] - query = "SELECT song, year FROM lyrics WHERE artist LIKE '%s' AND song NOT LIKE '%s';" %(song, artist) + query = "SELECT song, year FROM lyrics WHERE artist LIKE '%s' AND song NOT LIKE '%s';" %(artist, song) cursor.execute(query) rows=cursor.fetchall() for row in rows: diff --git a/song_finder.pyc b/song_finder.pyc index f9239689e6866f56505168279ef3c2960b29972a..1c689f2e927d0391b03390f3e1c532270dfc51e4 100644 GIT binary patch delta 25 hcmdlkuw8(S`7