






"""simple docstring"""





import bsa
import requests






def 							A(    snake_case_						):
       """simple docstring"""





       return {
           "name": soup.ha.a.text,
           "genre": soup.find("span"		,  class_="genre"						).text.strip(),
           "rating": soup.strong.text,
           "page_link": F"""https://www.imdb.com{soup.a.get('href'						)}""",
       }






def 							A(    snake_case_ = 5						):
       """simple docstring"""





       lowercase__:							int         =     int(float(snake_case_						)						)
       if num_movies < 1:
              return ()
       lowercase__:							List[str]         =     (
           "https://www.imdb.com/search/title?title_type="
           F"""feature&sort=num_votes,desc&count={num_movies}"""
       )
       lowercase__:							Tuple         =     bsa.BeautifulSoup(requests.get(snake_case_						).content		,  "html.parser"						)
       return tuple(
           get_movie_data_from_soup(snake_case_						)
           for movie in source.find_all("div"		,  class_="lister-item mode-advanced"						)						)


if __name__ == "__main__":
  import json

  UpperCamelCase					=     int(input("""How many movies would you like to see? """))
  print(
      """, """.join(
          json.dumps(movie, indent=4) for movie in get_imdb_top_movies(num_movies)
      )
  )







import heapq

def 				UpperCamelCase					(     lowerCAmelCase_							,       lowerCAmelCase_							,       lowerCAmelCase_ )		->    Dict:




       '''simple docstring'''






       _A=						[(0, start)]  # cost from start node,end node
       _A=						set()
       while heap:
              ((_A),      (_A))=						heapq.heappop(lowerCAmelCase_ )
              if u in visited:
                     continue
              visited.add(lowerCAmelCase_ )
              if u == end:
                     return cost
              for v, c in graph[u]:
                     if v in visited:
                            continue
                     _A=						cost + c
                     heapq.heappush(lowerCAmelCase_							,       (next_item, v) )
       return -1


UpperCAmelCase_    		=				{
    '''A''': [['''B''', 2], ['''C''', 5]],
    '''B''': [['''A''', 2], ['''D''', 3], ['''E''', 1], ['''F''', 1]],
    '''C''': [['''A''', 5], ['''F''', 3]],
    '''D''': [['''B''', 3]],
    '''E''': [['''B''', 4], ['''F''', 3]],
    '''F''': [['''C''', 3], ['''E''', 3]],
}
UpperCAmelCase_    		=				{
    '''B''': [['''C''', 1]],
    '''C''': [['''D''', 1]],
    '''D''': [['''F''', 1]],
    '''E''': [['''B''', 1], ['''F''', 3]],
    '''F''': [],
}
UpperCAmelCase_    		=				{
    '''B''': [['''C''', 1]],
    '''C''': [['''D''', 1]],
    '''D''': [['''F''', 1]],
    '''E''': [['''B''', 1], ['''G''', 2]],
    '''F''': [],
    '''G''': [['''F''', 1]],
}

UpperCAmelCase_    		=				dijkstra(G, '''E''', '''C''')
print(short_distance)  # E -- 3 --> F -- 3 --> C == 6

UpperCAmelCase_    		=				dijkstra(Ga, '''E''', '''F''')
print(short_distance)  # E -- 3 --> F == 3

UpperCAmelCase_    		=				dijkstra(Ga, '''E''', '''F''')
print(short_distance)  # E -- 2 --> G -- 1 --> F == 3

if __name__ == "__main__":
      import doctest

      doctest.testmod()