py2ls 0.2.4.23__py3-none-any.whl → 0.2.4.25__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
py2ls/.DS_Store CHANGED
Binary file
py2ls/.git/.DS_Store ADDED
Binary file
py2ls/.git/index CHANGED
Binary file
Binary file
Binary file
py2ls/data/.DS_Store CHANGED
Binary file
Binary file
py2ls/ec2ls.py ADDED
@@ -0,0 +1,61 @@
1
+ def get_trend(
2
+ keywords: list = None, # ["AI", "Python", "Data Science"]
3
+ timezone: str = "Europe/Berlin", # minutes differ from UTC
4
+ cat=0,
5
+ timeframe="today 12-m",
6
+ geo="DE",
7
+ gprop="",
8
+ **kwargs
9
+ ):
10
+ from pytrends.request import TrendReq
11
+ from pytrends.exceptions import TooManyRequestsError
12
+ import pytz
13
+ from datetime import datetime
14
+ import time
15
+ import requests
16
+ from urllib3.util.retry import Retry
17
+
18
+ if isinstance(timezone, str):
19
+ stadt = pytz.timezone(timezone)
20
+ current_time = datetime.now(stadt) # This will be timezone-aware
21
+ # Convert the timezone-aware datetime to naive UTC datetime
22
+ naive_time = current_time.astimezone(pytz.utc).replace(tzinfo=None)
23
+ tz_offset = stadt.utcoffset(naive_time).seconds // 60 # in minutes
24
+ elif isinstance(timezone, int):
25
+ tz_offset = timezone
26
+
27
+ # Initialize TrendReq with correct timezone offset
28
+ pytrends = TrendReq(hl="en-US", tz=tz_offset )
29
+
30
+ # Ensure that keywords are in list form
31
+ if isinstance(keywords, str):
32
+ keywords = [keywords]
33
+
34
+ pytrends.build_payload(keywords, cat=cat, timeframe=timeframe, geo=geo, gprop=gprop)
35
+
36
+ res = {}
37
+ # Try fetching data with error handling
38
+ for func_name, fetch_func in [
39
+ ("interest_over_time", pytrends.interest_over_time),
40
+ ("related_topics", pytrends.related_topics),
41
+ ("related_queries", pytrends.related_queries),
42
+ ("categories", pytrends.categories)
43
+ ]:
44
+ try:
45
+ print(f"Fetching {func_name}...")
46
+ res[func_name] = fetch_func()
47
+ print(f"done: {func_name}")
48
+ except TooManyRequestsError:
49
+ print(f"Too many requests error for {func_name}. Retrying...")
50
+ time.sleep(5) # Delay to avoid spamming the server
51
+ if retries > 0:
52
+ return get_trend(keywords, timezone, cat, timeframe, geo, gprop, retries=retries-1)
53
+ res[func_name] = None
54
+ except requests.exceptions.RequestException as e:
55
+ print(f"Request error for {func_name}: {e}")
56
+ res[func_name] = None
57
+ except Exception as e:
58
+ print(f"Error fetching {func_name}: {e}")
59
+ res[func_name] = None
60
+
61
+ return res