Skip to content
This repository was archived by the owner on Jun 30, 2022. It is now read-only.

Commit

Permalink
👌 Added optional parameters for language & region of results
Browse files Browse the repository at this point in the history
  • Loading branch information
alexmercerind committed Nov 21, 2020
1 parent cc7b991 commit a30df45
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 9 deletions.
13 changes: 9 additions & 4 deletions youtubesearchpython/__requesthandler.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import sys

if sys.version_info[0] == 2:
from urllib import urlencode, urlopen
from urllib import urlencode, urlopen, Request
else:
from urllib.request import urlopen
from urllib.request import urlopen, Request
from urllib.parse import urlencode


Expand All @@ -13,9 +13,14 @@ def request(self):
query = urlencode({
"search_query": self.keyword,
"page": self.offset,
"sp": self.searchPreferences
"sp": self.searchPreferences,
"persist_gl": 1,
"gl": self.region
})
request = "https://www.youtube.com/results" + "?" + query
request = Request(
"https://www.youtube.com/results" + "?" + query,
headers = {"Accept-Language": f"{self.language},en;q=0.9"}
)
response = urlopen(request).read()
self.page = response.decode('utf_8')

Expand Down
10 changes: 8 additions & 2 deletions youtubesearchpython/playlist__search.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,12 @@ class SearchPlaylists(RequestHandler, ScriptHandler):
Offset for result pages on YouTube. Defaults to 1.
mode : str
Search result mode. Can be 'json', 'dict' or 'list'.
maxResults : int, optional
max_results : int, optional
Maximum number of playlist results. Defaults to 20.
language: str, optional
Can be used to get results in particular language. Defaults to 'en-US'
region: str, optional
Can be used to get results according to particular region. Defaults to 'US'.
Methods
-------
result()
Expand All @@ -24,13 +28,15 @@ class SearchPlaylists(RequestHandler, ScriptHandler):
networkError = False
validResponse = False

def __init__(self, keyword, offset = 1, mode = "json", max_results = 20):
def __init__(self, keyword, offset = 1, mode = "json", max_results = 20, language = "en-US", region = "US"):

self.offset = offset
self.mode = mode
self.keyword = keyword
self.max_results = max_results
self.searchPreferences = "EgIQAw%3D%3D"
self.language = language
self.region = region
self.main()

def main(self):
Expand Down
12 changes: 9 additions & 3 deletions youtubesearchpython/videos__search.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,12 @@ class SearchVideos(RequestHandler, PageHandler, ScriptHandler):
Offset for result pages on YouTube. Defaults to 1.
mode : str
Search result mode. Can be 'json', 'dict' or 'list'.
maxResults : int, optional
Maximum number of video results. Defaults to 20.
max_results : int, optional
Maximum number of playlist results. Defaults to 20.
language: str, optional
Can be used to get results in particular language. Defaults to 'en-US'
region: str, optional
Can be used to get results according to particular region. Defaults to 'US'.
Methods
-------
result()
Expand All @@ -26,12 +30,14 @@ class SearchVideos(RequestHandler, PageHandler, ScriptHandler):
networkError = False
validResponse = False

def __init__(self, keyword, offset = 1, mode = "json", max_results = 20):
def __init__(self, keyword, offset = 1, mode = "json", max_results = 20, language = "en-US", region = "US"):
self.offset = offset
self.mode = mode
self.keyword = keyword
self.max_results = max_results
self.searchPreferences = "EgIQAQ%3D%3D"
self.language = language
self.region = region
self.main()

def main(self):
Expand Down

0 comments on commit a30df45

Please sign in to comment.