rijdev commited on
Commit
908975c
·
verified ·
1 Parent(s): 0d6ce78

Made a start and end year

Browse files
Files changed (1) hide show
  1. app.py +11 -9
app.py CHANGED
@@ -22,14 +22,15 @@ all_genres = set()
22
  df["genres"].str.split("|").apply(all_genres.update)
23
  genre_list = sorted(all_genres)
24
 
25
- # 5) Recommendation function
26
- def recommend_by_genre_year(genre: str, year: int, top_k: int = 5) -> str:
27
  mask_genre = metadata["genres"].str.lower().str.contains(genre.lower(), na=False)
28
- mask_year = metadata["release_year"].fillna(0) >= year
 
29
 
30
  candidates = metadata[mask_genre & mask_year]
31
  if candidates.empty:
32
- return f"No '{genre.title()}' movies found from {year} onward."
33
 
34
  picks = candidates.sample(n=min(top_k, len(candidates)))
35
  return "\n".join(
@@ -37,19 +38,20 @@ def recommend_by_genre_year(genre: str, year: int, top_k: int = 5) -> str:
37
  for _, row in picks.iterrows()
38
  )
39
 
40
- # 6) Gradio interface with dropdown genre selection
41
  iface = gr.Interface(
42
- fn=recommend_by_genre_year,
43
  inputs=[
44
  gr.Dropdown(choices=genre_list, label="Select Genre"),
45
- gr.Number(label="Release Year (≥)", value=2010, precision=0),
 
46
  gr.Slider(1, 10, step=1, label="Number of Recommendations", value=5),
47
  ],
48
  outputs="text",
49
- title="🎬 Genre & Year-Based Movie Recommender",
50
  description="""
51
  Loads local MovieLens metadata (ml-32m), extracts release years from titles,
52
- normalizes genres, and filters by genre & year. No typing needed — just click!
53
  """,
54
  )
55
 
 
22
  df["genres"].str.split("|").apply(all_genres.update)
23
  genre_list = sorted(all_genres)
24
 
25
+ # 5) Updated recommendation function with year range
26
+ def recommend_by_genre_and_year_range(genre: str, start_year: int, end_year: int, top_k: int = 5) -> str:
27
  mask_genre = metadata["genres"].str.lower().str.contains(genre.lower(), na=False)
28
+ year_col = metadata["release_year"].fillna(0)
29
+ mask_year = (year_col >= start_year) & (year_col <= end_year)
30
 
31
  candidates = metadata[mask_genre & mask_year]
32
  if candidates.empty:
33
+ return f"No '{genre.title()}' movies found between {start_year} and {end_year}."
34
 
35
  picks = candidates.sample(n=min(top_k, len(candidates)))
36
  return "\n".join(
 
38
  for _, row in picks.iterrows()
39
  )
40
 
41
+ # 6) Gradio interface with year range inputs
42
  iface = gr.Interface(
43
+ fn=recommend_by_genre_and_year_range,
44
  inputs=[
45
  gr.Dropdown(choices=genre_list, label="Select Genre"),
46
+ gr.Number(label="Start Year", value=1990, precision=0),
47
+ gr.Number(label="End Year", value=1995, precision=0),
48
  gr.Slider(1, 10, step=1, label="Number of Recommendations", value=5),
49
  ],
50
  outputs="text",
51
+ title="🎬 Movie Recommender by Genre & Year Range",
52
  description="""
53
  Loads local MovieLens metadata (ml-32m), extracts release years from titles,
54
+ normalizes genres, and filters by genre and custom year range. No typing needed — just click!
55
  """,
56
  )
57