├── requirements.txt ├── README.md └── script.py /requirements.txt: -------------------------------------------------------------------------------- 1 | beautifulsoup4==4.6.0 2 | certifi==2018.4.16 3 | chardet==3.0.4 4 | idna==2.6 5 | numpy==1.19.5 6 | pandas==1.2.1 7 | python-dateutil==2.7.3 8 | pytz==2018.4 9 | requests==2.18.4 10 | six==1.11.0 11 | urllib3==1.22 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Filmow to Letterboxd 2 | 3 | ## Gera um csv compatível com o import do Letterboxd com os filmes marcados como já vistos na conta do Filmow do usuário informado. 4 | 5 | ### (Instruções para windows) 6 | 7 | 1. Crie uma pasta para colocar o código, faça download do projeto em "Clone or download > Download ZIP", o coloque nessa pasta e extraia o arquivo. Ou clone o projeto com: 8 | ``` 9 | git clone https://github.com/larissamoreira/filmow_to_letterboxd.git 10 | ``` 11 | 12 | 2. Instale Python 3 (A opção "Add Python 3.6 to PATH" deve ficar selecionada) 13 | - https://www.python.org/downloads/ 14 | 15 | 3. Abra o Prompt de Comando (terminal) 16 | - Win+R > digite cmd > OK 17 | 18 | 4. No terminal entre na pasta onde está o projeto, com `cd `. Agora é necessário instalar as dependências para o código funcionar, crie um ambiente virtual para que tudo ocorra dentro dele com: 19 | 20 | ``` 21 | python -m venv ambiente 22 | ``` 23 | 5. Ambiente criado, agora o ative com: 24 | ``` 25 | ambiente\Scripts\activate 26 | ``` 27 | 28 | 6. Ambiente ativado, agora entre na pasta do projeto: 29 | ``` 30 | cd filmow_to_letterboxd-master 31 | ``` 32 | 33 | 7. Por fim, instale as dependências: 34 | ``` 35 | pip install -r requirements.txt 36 | ``` 37 | 38 | 8. Hora de rodar o código, faça: 39 | ``` 40 | python script.py 41 | ``` 42 | 43 | 9. Ao rodar o código, você terá que informar o seu nome de usuário no filmow, então é só esperar terminar a execução do código! 44 | (Talvez demore um pouquinho! Quer dizer que você viu muitos filmes :D) 45 | 46 | 10. Quando terminar será gerado o arquivo `./filmes.csv`, que é o seu diretório atual. 47 | 48 | 11. Agora é só importar o seu csv no https://letterboxd.com/. Para isso vá em Settings > IMPORT & EXPORT > IMPORT YOUR DATA -------------------------------------------------------------------------------- /script.py: -------------------------------------------------------------------------------- 1 | #imports 2 | import requests 3 | from bs4 import BeautifulSoup 4 | import pandas 5 | import re 6 | 7 | #variables 8 | movies_originals = [] 9 | csv_file = "./filmes.csv" 10 | 11 | #functions 12 | def read_links(soup): 13 | links = [] 14 | for link in soup.find_all("a"): 15 | if link.get('data-movie-pk') != None: 16 | links.append(link.get('href')) 17 | 18 | return links 19 | 20 | def get_original_title(links): 21 | global movies_originals 22 | for link in links: 23 | html_doc = requests.get('https://filmow.com%s' % link) 24 | print("getting original title from link %s" % link) 25 | soup = BeautifulSoup(html_doc.text, 'html.parser') 26 | for link in soup.find_all("h2", class_="movie-original-title"): 27 | if re.match("[^\x00-\x7F]", link.get_text()): 28 | for link in soup.find_all('div', class_="movie-other-titles"): 29 | for item in link.find_all('li'): 30 | if item.em.get_text() == "Estados Unidos da América": 31 | movies_originals.append(item.strong.get_text()) 32 | else: 33 | movies_originals.append(link.get_text()) 34 | 35 | def read_movies(user): 36 | i = 1 37 | while requests.get('https://filmow.com/usuario/%s/filmes/ja-vi/?pagina=%d' % (user, i)): 38 | html_doc = requests.get('https://filmow.com/usuario/%s/filmes/ja-vi/?pagina=%d' % (user, i)) 39 | print("reading page %d" % i) 40 | i = i + 1 41 | soup = BeautifulSoup(html_doc.text, 'html.parser') 42 | links = read_links(soup) 43 | get_original_title(links) 44 | 45 | def get_info(): 46 | user = input("Digite o seu nome de usuário no filmow: ") 47 | print("OK! A busca será feita no usuário " + user + ". Seu csv será salvo no diretório atual com o nome filmes.csv") 48 | 49 | return user 50 | 51 | def main(): 52 | user = get_info() 53 | read_movies(user) 54 | #writing csv 55 | df = pandas.DataFrame(data={"Title": movies_originals}) 56 | df.to_csv(csv_file, sep=',',index=False) 57 | 58 | if __name__ == "__main__": 59 | main() 60 | --------------------------------------------------------------------------------