1+ """
2+ Citation Helper - Provides working URLs and fallback options for dataset citations
3+ """
4+
5+ def get_working_citation_url (dataset_id : str , dataset_title : str , original_url : str ) -> dict :
6+ """
7+ Returns working URLs and metadata for dataset citations
8+ """
9+
10+ # Working URL mappings for known datasets
11+ working_urls = {
12+ 'agri-1' : {
13+ 'primary_url' : 'https://data.gov.in/catalog/district-wise-season-wise-crop-production-statistics' ,
14+ 'search_url' : 'https://data.gov.in/search?title=district+crop+production' ,
15+ 'status' : 'search_recommended'
16+ },
17+ 'agri-2' : {
18+ 'primary_url' : 'https://data.gov.in/catalog/state-wise-estimates-principal-crops' ,
19+ 'search_url' : 'https://data.gov.in/search?title=state+crop+estimates' ,
20+ 'status' : 'search_recommended'
21+ },
22+ 'agri-3' : {
23+ 'primary_url' : 'https://data.gov.in/search?title=agricultural+statistics+glance' ,
24+ 'search_url' : 'https://data.gov.in/search?title=agricultural+statistics' ,
25+ 'status' : 'search_recommended'
26+ },
27+ 'climate-1' : {
28+ 'primary_url' : 'https://data.gov.in/catalog/district-wise-rainfall-normal' ,
29+ 'search_url' : 'https://data.gov.in/search?title=district+rainfall' ,
30+ 'status' : 'search_recommended'
31+ },
32+ 'climate-2' : {
33+ 'primary_url' : 'https://data.gov.in/search?title=state+monthly+rainfall' ,
34+ 'search_url' : 'https://data.gov.in/search?title=rainfall' ,
35+ 'status' : 'search_recommended'
36+ },
37+ 'live-1' : {
38+ 'primary_url' : 'https://data.gov.in/catalog/daily-market-prices-commodity-wise' ,
39+ 'search_url' : 'https://data.gov.in/search?title=market+prices' ,
40+ 'status' : 'live_api'
41+ },
42+ 'live-2' : {
43+ 'primary_url' : 'https://data.gov.in/catalog/current-crop-production' ,
44+ 'search_url' : 'https://data.gov.in/search?title=crop+production' ,
45+ 'status' : 'live_api'
46+ }
47+ }
48+
49+ # Get working URL or create search fallback
50+ if dataset_id in working_urls :
51+ return working_urls [dataset_id ]
52+ else :
53+ # Create search URL from dataset title
54+ search_terms = dataset_title .lower ().replace (' ' , '+' ).replace (',' , '' )
55+ return {
56+ 'primary_url' : f'https://data.gov.in/search?title={ search_terms } ' ,
57+ 'search_url' : f'https://data.gov.in/search?title={ search_terms } ' ,
58+ 'status' : 'search_fallback'
59+ }
60+
61+ def get_citation_display_info (dataset_id : str , dataset_title : str ) -> dict :
62+ """
63+ Returns display information for citations including status badges
64+ """
65+
66+ url_info = get_working_citation_url (dataset_id , dataset_title , "" )
67+
68+ status_info = {
69+ 'search_recommended' : {
70+ 'badge' : 'Search Portal' ,
71+ 'description' : 'Links to data.gov.in search - original files may have moved' ,
72+ 'color' : 'amber'
73+ },
74+ 'live_api' : {
75+ 'badge' : 'Live API' ,
76+ 'description' : 'Real-time data from government API' ,
77+ 'color' : 'green'
78+ },
79+ 'search_fallback' : {
80+ 'badge' : 'Search' ,
81+ 'description' : 'Search data.gov.in for this dataset' ,
82+ 'color' : 'gray'
83+ }
84+ }
85+
86+ status = url_info ['status' ]
87+
88+ return {
89+ 'url' : url_info ['primary_url' ],
90+ 'search_url' : url_info ['search_url' ],
91+ 'badge' : status_info [status ]['badge' ],
92+ 'description' : status_info [status ]['description' ],
93+ 'color' : status_info [status ]['color' ]
94+ }
0 commit comments