Leosalesblog.files.wordpress.com



### Codigo e #### Packages:import urllib.request as urllib # copia paginas htmlfrom bs4 import BeautifulSoup # functions to parse the data returned from the websiteimport reimport pandas as pdimport numpy as np# Step 1: Funcoes# 1. Pega lista de artistas do site a partir da letra do alfabetodef pega_lista_artistas(letra): link_artista_letra = ("" + letra) pagina_artista = urllib.urlopen(link_artista_letra) for line_number, line in enumerate(pagina_artista): # Because this is 0-index based if line_number == 419: linha_1 = line elif line_number == 420: linha_2 = line # Stop reading elif line_number > 420: break return (linha_1, linha_2)# 2. Pega informacoes do artista (qtde de musicas, genero, posicao inicial e final das musicas) a partir do arquivo baixado:def pega_info_artista_1(file): line_number = 0 for line in open(file, encoding="ISO-8859-1"): line_number += 1 if line_number == 365: genero = line genero = genero.replace("\t", "") genero = genero.replace(" <br />\n", "") if line_number == 368: qtde_musicas = line qtde_musicas = qtde_musicas.replace("\t", "") qtde_musicas = qtde_musicas.replace("\r", "") qtde_musicas = qtde_musicas.replace("\n", "") qtde_musicas = qtde_musicas.replace(" ", "") qtde_musicas = int(qtde_musicas.replace("músicas", "")) elif "</h3>" in line: inicio = line_number elif "<p>N?o encontrou a música que você está procurando?<br>" in line: final = line_number break return (genero, qtde_musicas, inicio, final)# 3. Pega lista de links de musica a partir da posicao no arquivo baixado:def pega_info_artista_2(posicao): line_number = 0 for line in open(file, encoding="ISO-8859-1"): line_number += 1 if line_number == posicao: start_link = line.find("href=") start_quote = line.find('"', start_link) end_quote = line.find('"', start_quote + 1) link_musica = line[start_quote + 1:end_quote] #link_musica = line #link_musica = link_musica.replace("\t", "") #link_musica = link_musica.replace("<a href=", "") #link_musica = link_musica.replace(" class=\"list-group-item\" style=\'font-size:18px; font-weight:bold\' >\n", "") #link_musica = link_musica.replace(" class=\"list-group-item\" ", "") #link_musica = link_musica.replace("style=\'font-size:18px; font-weight:bold\'", "") #link_musica = link_musica.replace(" >\n", "") #link_musica = link_musica.replace("\"", "") break return (link_musica)def pega_info_artista_3(file): lista_links_letras = [] line_number = 0 for line in open(file, encoding="ISO-8859-1"): line_number += 1 if "<li class=\"c" in line: start_link = line.find("href=") start_quote = line.find('"', start_link) end_quote = line.find('"', start_quote + 1) link_letra = line[start_quote + 1:end_quote - 1] lista_links_letras.append(link_letra) return lista_links_letras# 4. Pega cifra e letra a partir do link da musica:def pega_cifra(link_musica) : page = urllib.urlopen(link_musica) # copia a pagina soup = BeautifulSoup(page) # transforma a pagina em um objeto beautiful soup song = soup.pre # copiando o conteudo da tag <pre> song = str(song) # convertendo pra string result = re.findall("<u>(.*)</u>", song) # copiando o trecho dos acordes, pela tag <u> result = str(result) # convertendo de lista pra string, para permitir fazer algumas mudancas result = result.replace("</u>", ",").replace("<u>", ",").replace("/ ", ",").replace("//", "/").replace(" ", "").replace( ",,", ",").replace(",,", ",").replace(",,", ",").replace(",,", ",").replace(",,", ",").replace(",,", ",").replace( ",,", ",").replace(",,", ",").replace("'", "").replace(";", "").replace("\\", "").replace("t", "") result = result[1:-1] result_list = result.split(",") # transformando em lista de novo return result_listdef pega_letra(link_letra) : page = urllib.urlopen(link_letra) # copia a pagina soup = BeautifulSoup(page) # transforma a pagina em um objeto beautiful soup letra = soup.find(id="letra").string letra = letra.replace("\n\t", "").replace("\r", "").replace("\t", "").replace("\n", "|").replace("| |", "|").replace("| |", "|").replace("| |", "|") for p in soup.find_all("p", attrs={'class':'artCompositor'}): compositor = p.text.replace(" Compositor:", "") return (letra, compositor)# 5. Executa funcao de lista de artistasalfabeto = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "[0-9]"]lista_artistas = []for letra in alfabeto: soup = BeautifulSoup(str(pega_lista_artistas(letra))) for ptag in soup.find_all('p'): try: lista_artistas.append(ptag.a["href"] + ": " + ptag.img["src"].replace("", "")) except: pass print(letra)lista_artistas = dict(map(str, x.split(':')) for x in lista_artistas)lista_artistas = {k: v for k, v in lista_artistas.items() if v == " f1.gif"}lista_artistas = list(lista_artistas.keys())lista_artistas = ['chiclete-com-banana', 'asa-de-aguia', 'ivete-sangalo', 'babado-novo', 'harmonia-do-samba', 'banda-eva', 'claudia-leitte', 'daniela-mercury', 'banda-grafith', 'ricardo-chaves', 'timbalada', 'araketu', 'chicabana', 'netinho', 'oz-bambaz', 'companhia-do-calypso', 'banda-passarela', 'carlinhos-brown', 'parangole', 'banda-cheiro-de-amor', 'psirico', 'tomate', 'olodum', 'chicana', 'bambakere', 'terrasamba', 'rapazolla', 'a-zorra', 'os-charadas', 'fantasmao', 'alexandre-peixe', 'banda-mel', 'ceceu-muniz', 'tchakabum', 'voa-dois', 'ed-motta', 'celso-blues-boy', 'dblack', 'ivan-correa', 'toquinho', 'dick-farney', 'joao-gilberto', 'sylvia-telles', 'joyce', 'baden-powell', 'silvia-telles', 'tito-madi', 'amado-batista', 'banda-calypso', 'reginaldo-rossi', 'adelino-nascimento', 'paulo-sergio', 'wander-wildner', 'ricardo-braga', 'jose-orlando', 'odair-jose', 'cristiano-neves', 'carlos-alexandre', 'barto-galeno', 'roberto-leal', 'balthazar', 'genival-santos', 'banda-floribella', 'jose-ribeiro', 'waldick-soriano', 'paulo-marcio', 'tarcys-andrade', 'alipio-martins', 'evaldo-freire', 'assis-cavalcanti', 'evaldo-braga', 'michelle-melo', 'roberto-muller', 'sidney-magal', 'banda-da-loirinha', 'mauricio-reis', 'avioes-do-forro', 'forro-sotaque-bacana', 'garota-safada', 'luiz-gonzaga', 'limao-com-mel', 'calcinha-preta', 'alceu-valenca', 'desejo-de-menina', 'mastruz-com-leite', 'saia-rodada', 'wesley-safadao', 'morais-do-acordeon', 'emiliano-pordeus', 'elba-ramalho', 'estakazero', 'falamansa', 'forro-do-muido', 'flavio-jose', 'dorgival-dantas', 'banda-magnificos', 'cavaleiros-do-forro', 'dominguinhos', 'rita-de-cassia', 'circulado-de-fulo', 'frank-aguiar', 'geraldinho-lins', 'tayrone-cigano', 'trio-nordestino', 'asas-livres', 'cangaia-de-jegue', 'gabriel-diniz', 'kelvin-do-acordeom', 'mala-100-alca', 'jose-marques', 'forro-100-grillo', 'rastape', 'sirano-sirino', 'solteiroes-do-forro', 'collo-de-menina', 'raiz-do-sana', 'banda-labaredas', 'mulher-sarada', 'banda-treme-terra', 'trio-forrozao', 'trio-virgulino', 'bonde-do-forro', 'cheiro-de-menina', 'novo-tom', 'edigar-mao-branca', 'adelmario-coelho', 'jorge-ben-jor', 'pirata-celestino', 'latino', 'anitta', 'claudinho-buchecha', 'perlla', 'mc-naldo', 'mc-marcinho', 'catolicas', 'harpa-crista', 'corinhos-evangelicos', 'padres', 'comunidades', 'igreja-crista-maranata', 'diante-do-trono', 'renascer-praise', 'padre-zezinho', 'oficina-g3', 'igrejas', 'aline-barros', 'hinario-adventista', 'voz-da-verdade', 'catedral', 'david-quinlan', 'fernanda-brum', 'andre-valadao', 'vencedores-por-cristo', 'ludmila-ferber', 'santa-geracao', 'kleber-lucas', 'cantor-cristao', 'asaph-borba', 'cassiane', 'fernandinho', 'toque-no-altar', 'rosa-de-saron', 'sergio-lopes', 'eyshila', 'filhos-do-homem', 'daniel-souza', 'comunidade-catolica-shalom', 'resgate', 'gerson-rufino', 'novo-som', 'thalles-roberto', 'cristina-mel', 'ouvir-e-crer', 'shirley-carvalhaes', 'louvemos', 'vineyard-music', 'anjos-de-resgate', 'daniel-e-samuel', 'ministerio-koinonya-de-louvor', 'casa-de-davi', 'adhemar-de-campos', 'joao-alexandre', 'carlinhos-felix', 'musicas-infantis', 'cantinho-da-crianca', 'trem-da-alegria', 'dominio-publico', 'cagerio-de-souza', 'turma-do-balao-magico', 'balao-magico', 'assis-valente', 'carlos-rogerio', 'roberto-carlos', 'the-fevers', 'erasmo-carlos', 'renato-e-seus-blue-caps', 'jose-roberto', 'jerry-adriani', 'wanderley-cardoso', 'vanusa', 'wanderlea', 'almir-bezerra', 'ronnie-von', 'golden-boys', 'os-incriveis', 'the-originals', 'carlos-gonzaga', 'celly-campello', 'demetrius', 'eduardo-araujo', 'caetano-veloso', 'chico-buarque', 'djavan', 'elis-regina', 'ze-ramalho', 'gilberto-gil', 'jorge-vercillo', 'fagner', 'milton-nascimento', 'marisa-monte', 'tom-jobim', 'zeca-baleiro', 'tim-maia', 'oswaldo-montenegro', 'simone', 'maria-bethania', 'joao-bosco', 'alcione', 'fabio-junior', 'gal-costa', 'vinicius-de-moraes', 'adriana-calcanhotto', 'ney-matogrosso', 'ivan-lins', 'leoni', 'leila-pinheiro', 'wilson-simonal', 'seu-jorge', 'pery-ribeiro', 'jose-augusto', 'lenine', 'guilherme-arantes', 'belchior', 'flavio-venturini', '14-bis', 'vander-lee', 'paulinho-moska', 'rosana', 'mpb4', 'agostinho-dos-santos', 'clara-nunes', 'gonzaguinha', 'vanessa-da-mata', 'o-teatro-magico', 'leo-magalhaes', 'chico-cesar', 'fernando-mendes', 'nora-ney', 'tom-ze', 'maria-rita', 'emilio-santiago', 'roupa-nova', 'kid-abelha', 'belo', 'daniel', 'ana-carolina', 'sandy-junior', 'biquini-cavadao', 'cazuza', 'rosa-morena-e-platino', 'cristian-castro', 'ls-jack', 'lucas-lucco', 'reacao-em-cadeia', 'emmerson-nogueira', 'claudette-soares', 'mamonas-assassinas', 'alexandre-pires', 'banda-sayonara', 'falcao', 'dibob', 'looppy-neves', 'benito-di-paula', 'agnaldo-rayol', 'cauby-peixoto', 'nubia-lafayette', 'scracho', 'camisa-de-venus', 'high-school-musical', 'klb', 'papas-da-lingua', 'cachorro-grande', 'luiza-possi', 'wanessa-camargo', 'ratto', 'marconi-branco', 'wanda-sa', 'neanderthal', 'tiago-iorc', 'the-flanders', 'marjorie-estiano', 'armando-manzanero', 'clarice-falcao', 'rebeldes-(brasil)', 'frejat', 'moacyr-franco', 'maria-do-relento', 'marcelo-camelo', 'walter-viana', 'areia-lima', 'o-rappa', 'sampa-crew', 'projota', 'planet-hemp', 'bonde-da-stronda', 'kiko-mello', 'willian-bo', 'faccao-central', 'gabriel-pensador', 'marcelo-d2', 'racionais-mcs', 'apocalipse-16', 'mv-bill', 'rappervil', 'emicida', 'natiruts', 'armandinho', 'cidade-negra', 'planta-e-raiz', 'chimarruts', 'edson-gomes', 'maskavo', 'ponto-de-equilibrio', 'dazaranha', 'tribo-de-jah', 'armandinho-banda', 'casaca', 'mato-seco', 'adao-negro', 'macucos', 'onze20', 'nengo-vieira', 'diamba', 'irie', 'reobote-zion', 'beca-arruda', 'maneva', 'rastaclone', 'jah-live', 'namaste', 'nomad', 'digo-cardkamp-', 'raizes-rasta', 'alma-djem', 'salomao-do-reggae', 'sine-calmon', 'vibracoes-rasta', 'yomanaho', 'edu-ribeiro-cativeiro', 'filosofia-reggae', 'java-roots', 'javaroots', 'crombie', 'tche-garotos', 'ze-geraldo', 'brenda-lee', 'luiz-marenco', 'cesar-oliveira-e-rogerio-melo', 'os-monarcas', 'os-serranos', 'teixeirinha', 'boi-garantido', 'garotos-de-ouro', 'joao-luiz-correa', 'tche-barbaridade', 'joca-martins', 'mano-lima', 'grupo-minuano', 'jose-mendes', 'joelson-e-joedson', 'walter-toniosso', 'gaucho-da-fronteira', 'tche-boys', 'porca-veia', 'raca-fandangueira', 'elomar', 'noel-guarany', 'arraial-do-pavulagem', 'pouca-vogal', 'tom-cleber', 'matraca-berg', 'grupo-rodeio', 'os-mirins', 'cascatinha-e-inhana', 'xangai', 'marcelo-oliveira', 'tche-guri', 'alma-serrana', 'boi-caprichoso', 'adalberto-e-adriano', 'br5-49', 'alemao-ronaldo', 'chiquito-e-grupo-bordoneio', 'nando-cordel', 'osvaldir-e-carlos-magrao', 'tradicionais', 'grupo-candieiro', 'jairo-lambari-fernandes', 'lisandro-amaral-', 'os-campeiros', 'serrote-preto', 'cordel-do-fogo-encantado', 'pinduca', 'charlie-brown-jr', 'engenheiros-do-hawaii', 'raul-seixas', 'titas', 'capital-inicial', 'skank', 'legiao-urbana', 'rita-lee', 'paralamas-do-sucesso', 'cpm-22', 'angra', 'nando-reis', 'lulu-santos', 'sepultura', 'raimundos', 'anti-flag', 'detonautas', 'ira', 'pato-fu', 'nx-zero', 'jota-quest', 'cassia-eller', 'forfun', 'los-hermanos', 'barao-vermelho', 'nenhum-de-nos', 'renato-russo', 'arnaldo-antunes', 'novas-bandas', 'lobao', 'tequila-baby', 'dead-fish', 'os-mutantes', 'zelia-duncan', 'wilson-sideral', 'aliados', 'ultraje-a-rigor', 'darvin', 'nei-van-soria', 'matanza', 'marina-lima', 'danni-carlos', 'tihuana', 'carbona', 'rpm', 'tianastacia', 'paulo-ricardo', 'rouge', 'garotos-podres', 'jay-vaquer', 'fundo-de-quintal', 'zeca-pagodinho', 'exaltasamba', 'sorriso-maroto', 'grupo-revelacao', 'beth-carvalho', 'raca-negra', 'art-popular', 'turma-do-pagode', 'jorge-aragao', 'trio-parada-dura', 'so-pra-contrariar', 'martinho-da-vila', 'paulinho-da-viola', 'pique-novo', 'sensacao', 'jeito-moleque', 'molejo', 'pixote', 'trio-irakitan', 'boka-loka', 'gustavo-lins', 'katinguele', 'reinaldo', 'imaginasamba', 'dudu-nobre', 'bezerra-da-silva', 'negritude-junior', 'cartola', 'leci-brandao', 'os-travessos', 'jackson-do-pandeiro', 'arlindo-cruz', 'inimigos-da-hp', 'thiaguinho', 'grupo-bom-gosto', 'grupo-so-ficar', 'soweto', 'agepe', 'sem-compromisso', 'arlindo-cruz-sombrinha', 'luiz-melodia', 'swing-simpatia', 'rodriguinho', 'samprazer', 'jammil-e-uma-noites', 'almir-guineto', 'tentasamba', 'os-originais-do-samba', 'joao-nogueira', 'bruno-e-marrone', 'zeze-di-camargo-e-luciano', 'tiao-carreiro-e-pardinho', 'edson-e-hudson', 'jorge-e-mateus', 'chitaozinho-xororo', 'milionario-e-jose-rico', 'gusttavo-lima', 'chrystian-e-ralf', 'eduardo-costa', 'victor-e-leo', 'guilherme-e-santiago', 'joao-bosco-e-vinicius', 'luan-santana', 'cesar-menotti-e-fabiano', 'gian-e-giovani', 'joao-neto-e-frederico', 'fernando-e-sorocaba', 'leonardo', 'tonico-e-tinoco', 'paula-fernandes', 'rick-e-renner', 'rio-negro-e-solimoes', 'lourenco-e-lourival', 'cristiano-araujo', 'sergio-reis', 'leandro-e-leonardo', 'joao-carreiro-e-capataz', 'teodoro-e-sampaio', 'conrado-e-aleksandro', 'henrique-e-juliano', 'jads-e-jadson', 'humberto-e-ronaldo', 'gino-e-geno', 'marcos-e-belutti', 'munhoz-e-mariano', 'joao-paulo-e-daniel', 'almir-sater', 'michel-telo', 'cezar-e-paulinho', 'ze-henrique-e-gabriel', 'hugo-pena-e-gabriel', 'matogrosso-e-mathias', 'joao-mineiro-e-marciano', 'israel-e-rodolffo', 'paulinho-natureza', 'grupo-tradicao', 'thaeme-e-thiago', 'israel-novaes', 'chico-rey-e-parana', 'elizeth-cardoso', 'altemar-dutra', 'maysa', 'agnaldo-timoteo', 'nelson-goncalves', 'noel-rosa', 'silvio-caldas', 'orlando-silva', 'dolores-duran', 'adoniran-barbosa', 'demonios-da-garoa', 'dalva-de-oliveira', 'ary-barroso', 'lamartine-babo', 'moreira-da-silva', 'velha-guarda-da-portela', 'lupicinio-rodrigues', 'francisco-alves', 'ataulfo-alves', 'paulo-vanzolini', 'carlos-galhardo', 'vicente-celestino', 'mestre-marcal', 'herivelto-martins', 'jamelao', 'pixinguinha', 'ze-keti']# 6. Executa funcoes de dados do artista# 6.1. Executando só a primeira parte, para fazer um corte depois e ent?o executar a segunda.lista_artistas_dados_1 = []for nome in lista_artistas: try: artista_page = (""+nome) #file = (nome+".txt") file = "artista.txt" urllib.urlretrieve(artista_page, file) lista_artistas_dados_1.append((nome,) + pega_info_artista_1(file)) # termo_inicial = list(pega_info_artista_1(file))[2]+5 # termo_final = list(pega_info_artista_1(file))[3]-16 # lista_de_posicoes = [] # line_number = 0 # for line in open(file, encoding="ISO-8859-1"): # try: # line_number += 1 # if "class=\"list-group-item\"" in line and "ver-2" not in line and "versao-2" not in line\ # and "ver2" not in line and "versao2" not in line: # lista_de_posicoes.append(line_number) # elif line_number > termo_final : # break # except: # pass # lista_musicas = [] # for posicao in lista_de_posicoes: # try: # lista_musicas.append(pega_info_artista_2_(posicao)) # except: # pass #lista_artistas_dados_2.append(nome + ": " + str(lista_musicas).replace("[", "").replace("]", "")) print(nome) #lista_artistas_dados_2.append((nome,) + tuple([lista_musicas])) except: passlabels_df_artista_1 = ["artista", "genero", "qtde_musicas", "pos_ini", "pos_fim"]df_artista_1 = pd.DataFrame.from_records(lista_artistas_dados_1, columns=labels_df_artista_1)# criando colunas genero_ajustado e rankinkg por genero_ajustadodf_artista_1["genero_ajustado"] = np.where(df_artista_1["genero"] == "Besteirol", "Pop Music", (np.where(df_artista_1["genero"] == "Blues", "Blues/Soul/Jazz", (np.where(df_artista_1["genero"] == "Brasil", "Pop Music", (np.where(df_artista_1["genero"] == "Católicas", "Gospel", (np.where(df_artista_1["genero"] == "Country", "Regional", (np.where(df_artista_1["genero"] == "Espíritas", "Gospel", (np.where(df_artista_1["genero"] == "Gaúchas", "Regional", (np.where(df_artista_1["genero"] == "Heavy Metal", "Rock'n Roll", (np.where(df_artista_1["genero"] == "Jazz", "Blues/Soul/Jazz", (np.where(df_artista_1["genero"] == "Pop Rock", "Rock'n Roll", (np.where(df_artista_1["genero"] == "Punk Rock", "Rock'n Roll", (np.where(df_artista_1["genero"] == "Rock Alternativo", "Rock'n Roll", (np.where(df_artista_1["genero"] == "Rock Clássico", "Rock'n Roll", (np.where(df_artista_1["genero"] == "Rom?ntica", "Pop Music", (np.where(df_artista_1["genero"] == "Samba Enredo", "Samba e Pagode", (np.where(df_artista_1["genero"] == "Soul", "Blues/Soul/Jazz", df_artista_1["genero"])))))))))))))))))))))))))))))))df_artista_1['rank'] = df_artista_1.groupby(['genero_ajustado'])['qtde_musicas'].rank(ascending=False)# filtrosdf_artista_1_agrupado = df_artista_1.groupby("genero_ajustado").agg({"artista": pd.Series.nunique})df_artista_1_agrupado = df_artista_1_agrupado.loc[df_artista_1_agrupado['artista'] > 20, :]df_artista_1_agrupado = df_artista_1_agrupado[df_artista_1_agrupado.index.isin(["Diversos", "N?o Informada"]) == False]df_artista_1_filtrado = df_artista_1[df_artista_1['rank'] <= 50]df_artista_1_filtrado = df_artista_1_filtrado[df_artista_1_filtrado['qtde_musicas'] > 10]#df_artista_1_filtrado = df_artista_1_filtrado[df_artista_1_filtrado['genero_ajustado'].isin(list(df_artista_1_agrupado.index))]# 6.2. Executando a segunda parte, pegando a lista de musicas.lista_artistas_dados_2 = []for nome in list(df_artista_1_filtrado["artista"]): try: artista_page = (""+nome) file = "artista.txt" urllib.urlretrieve(artista_page, file) #lista_artistas_dados_1.append((nome,) + pega_info_artista_1(file)) termo_inicial = int(df_artista_1_filtrado.loc[df_artista_1_filtrado['artista'] == nome]['pos_ini'].values+5) termo_final = int(df_artista_1_filtrado.loc[df_artista_1_filtrado['artista'] == nome]['pos_fim'].values-16) lista_de_posicoes = [] line_number = 0 for line in open(file, encoding="ISO-8859-1"): try: line_number += 1 if "class=\"list-group-item\"" in line and "ver-2" not in line and "versao-2" not in line\ and "ver2" not in line and "versao2" not in line: lista_de_posicoes.append(line_number) elif line_number > termo_final : break except: pass lista_musicas = [] for posicao in lista_de_posicoes: try: lista_musicas.append(pega_info_artista_2_(posicao)) except: pass #lista_artistas_dados_2.append(nome + ": " + str(lista_musicas).replace("[", "").replace("]", "")) print(nome) lista_artistas_dados_2.append((nome,) + tuple([lista_musicas])) except: passlabels_df_artista_2 = ["artista", "lista_de_links_de_musicas"]df_artista_2 = pd.DataFrame.from_records(lista_artistas_dados_2, columns=labels_df_artista_2)# 6.3. Pegando a lista de letras#lista_artistas = ["chico-buarque", "caetano-veloso", "gilberto-gil"]lista_artistas_links = []for artista in list(df_artista_1_filtrado["artista"]): try: artista_page = ("" + artista) file = "artista_letra.txt" urllib.urlretrieve(artista_page, file) lista_artistas_links.append((artista,) + tuple([pega_info_artista_3(file)])) print(artista) except: passlabels_df_artista_letras = ["artista", "lista_de_links_de_letras"]df_artista_letras = pd.DataFrame.from_records(lista_artistas_links, columns=labels_df_artista_letras)#Complemento: Lista de links de letras, corrigindo divergencias entre e nomes = ["fabio-junior", "claudinho-buchecha", "sandy-junior", "gabriel-pensador", "armandinho-banda", "chitaozinho-xororo"]nomes_corrigidos = ["fabio-jr", "claudinho-e-buchecha", "sandy-e-junior", "gabriel-o-pensador", "armandinho", "chitaozinho-e-xororo"]dic_artista_complemento = {}for i in range(len(nomes)): dic_artista_complemento[nomes[i]] = nomes_corrigidos[i]df_artista_complemento = pd.DataFrame(list(dic_artista_complemento.items()), columns=['artista', 'artista_ajustado'])lista_artistas_links_complemento = []for artista_ajustado in list(df_artista_complemento["artista_ajustado"]): try: artista_page = ("" + artista_ajustado) file = "artista_letra.txt" urllib.urlretrieve(artista_page, file) lista_artistas_links_complemento.append((artista_ajustado,) + tuple([pega_info_artista_3(file)])) print(artista_ajustado) except: passlabels_df_artista_complemento_links = ["artista_ajustado", "lista_de_links_de_letras"]df_artista_complemento_links = pd.DataFrame.from_records(lista_artistas_links_complemento, columns=labels_df_artista_complemento_links)df_artista_complemento = pd.merge(df_artista_complemento, df_artista_complemento_links, on='artista_ajustado', how='outer')# atualizando o data framedf_artista = pd.merge(df_artista_1, df_artista_2, on='artista', how='outer')# criando subdfs para rodar aos poucos#df_artista_parte_1 = df_artista.iloc[:151]#df_artista_parte_2 = df_artista.iloc[151:301]#df_artista_parte_3 = df_artista.iloc[301:451]#df_artista_parte_4 = df_artista.iloc[451:590]# 7. Executa funcao de busca das cifraslista_acordes = []for index, row in df_artista.iterrows(): artista = row["artista"] # count = 0 for link in row["lista_de_links_de_musicas"]: #lista_acordes.append((artista,) + (link,) + tuple(pega_cifra(link))) try: lista_acordes.append(artista + "?" + link + "?" + str(pega_cifra(link))) # count = count+1 print(artista + " - " + link) except: passlista_acordes_editada = [s.replace("", "") for s in lista_acordes]lista_acordes_editada = [s.replace("", "") for s in lista_acordes_editada]df_cifras = pd.DataFrame({'lista_completa': lista_acordes_editada})df_cifras = df_cifras['lista_completa'].str.split('?', expand=True)df_cifras.columns = ['artista', 'link', 'cifra','x', 'y', 'z']df_cifras = df_cifras[df_cifras["x"].isnull()]df_cifras = df_cifras[df_cifras["y"].isnull()]df_cifras = df_cifras[df_cifras["z"].isnull()]del df_cifras["x"]del df_cifras["y"]del df_cifras["z"]df_cifras["nome_musica"] = df_cifras['link'].apply(lambda x: pd.Series(x.split('/')))[1]df_cifras = df_cifras[df_cifras["nome_musica"] != ""]#df_cifras.to_csv('df_cifras.csv', sep=';')# 8. Juntando df_artista com df_cifrasdf_artista_completo = pd.merge(df_artista, df_cifras, on='artista', how='outer')df_artista_completo_pt1 = df_artista_completo.iloc[:9000]df_artista_completo_pt2 = df_artista_completo.iloc[9000:18000]df_artista_completo_pt3 = df_artista_completo.iloc[18000:27000]df_artista_completo_pt4 = df_artista_completo.iloc[27000:36000]df_artista_completo_pt5 = df_artista_completo.iloc[36000:44004]# 9. Pegando letraslista_letras = []df_artista_letras_pt1 = df_artista_letras.iloc[:100]df_artista_letras_pt2 = df_artista_letras.iloc[100:150]df_artista_letras_pt3 = df_artista_letras.iloc[150:200]df_artista_letras_pt4 = df_artista_letras.iloc[200:250]df_artista_letras_pt5 = df_artista_letras.iloc[250:300]df_artista_letras_pt6 = df_artista_letras.iloc[300:350]df_artista_letras_pt7 = df_artista_letras.iloc[350:400]df_artista_letras_pt8 = df_artista_letras.iloc[400:450]df_artista_letras_pt9 = df_artista_letras.iloc[450:500]df_artista_letras_pt10 = df_artista_letras.iloc[500:550]df_artista_letras_pt11 = df_artista_letras.iloc[550:590]for index, row in df_artista_letras_pt11.iterrows(): artista = row["artista"] try: for link in row["lista_de_links_de_letras"]: #lista_acordes.append((artista,) + (link,) + tuple(pega_cifra(link))) try: lista_letras.append(artista + "?" + link + "?" + pega_letra(link)[1] + "?" + pega_letra(link)[0]) # count = count+1 print(str(index) + artista + " - " + link) except: pass except: pass print(str(index) + "-" + artista)# Complementofor index, row in df_artista_complemento.iterrows(): artista = row["artista"] try: for link in row["lista_de_links_de_letras"]: #lista_acordes.append((artista,) + (link,) + tuple(pega_cifra(link))) try: lista_letras.append(artista + "?" + link + "?" + pega_letra(link)[1] + "?" + pega_letra(link)[0]) # count = count+1 print(str(index) + artista + " - " + link) except: pass except: pass print(str(index) + "-" + artista)df_letras = pd.DataFrame({'lista_letras': lista_letras})df_letras = df_letras['lista_letras'].str.split('?', expand=True)df_letras.columns = ['artista', 'nome_musica', 'compositor','letra']# 10. Criando base de análise#df_analise = df_artista_completo_letras#del df_analise["lista_de_links_de_musicas"]#del df_analise["qtde_musicas"]#del df_analise["pos_ini"]#del df_analise["pos_fim"]#del df_analise["rank"]# 10.1. Base de análise - cifrasdf_analise_cifras = df_artista_completodel df_analise_cifras["lista_de_links_de_musicas"]del df_analise_cifras["qtde_musicas"]del df_analise_cifras["pos_ini"]del df_analise_cifras["pos_fim"]del df_analise_cifras["rank"]# 10.2. Base de análise - letrasdf_analise_letras = pd.merge(df_letras, df_artista, on='artista', how='inner')del df_analise_letras["lista_de_links_de_musicas"]del df_analise_letras["qtde_musicas"]del df_analise_letras["pos_ini"]del df_analise_letras["pos_fim"]del df_analise_letras["rank"]df_analise_letras = pd.merge(df_analise_letras, df_analise_letras.groupby("artista", as_index = False).agg({"nome_musica": pd.Series.nunique}), on='artista', how='inner') ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download

To fulfill the demand for quickly locating and searching documents.

It is intelligent file search solution for home and business.

Literature Lottery

Related download
Related searches