Bottom Page

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
 urllib.error.HTTPError: HTTP Error 404: Not Found
#1
This is the first time i am using the Google API key and the code is suppose to open up the browser when there is a new video uploaded from the channel. But am getting the http error. Did some searches and some forum actually recommended using the user agent, but no luck making it works.

Here is the code
import urllib3, json
import urllib.request
from selenium import webdriver
import time
import requests

def look_for_new_video():
    headers = {}
    headers['User-Agent'] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"
    api_key = "KEY_REMOVED"
    channel_id = "UCWr0mx597DnSGLFk1WfvSkQ"
    
    base_video_url = 'https://www.youtube.com/watch?v='
    base_search_url = 'https://wwww.googleapis.com/youtube/v3/search?'
    url = base_search_url + 'key={}&channelId={}&part=snippet,id&order=date&maxResults=1'.format(api_key, channel_id)
    req = urllib.request.Request(url, headers = headers)
    print (req)
#####Error starts here
    inp = urllib.request.urlopen(url)
    print (inp)
    resp = json.loads(inp)
    responese = requests.get(url)
    print (responese)
    
look_for_new_video()
    vidID = resp['items'][0]['id']['videoId']

    video_exists = False
    with open('videoid.json', 'r') as json_file:
        data = json.load(json_file)
        if data['videoId'] != vidID:
            driver = webdriver.Chrome()
            driver.get(base_video_url + vidID)
            video_exists = True

        if video_exists:
            with open('videoid.json', 'w') as json_file:
                data = {'videoId' : vidID}
                json.dump(data, json_file)

try:
    while True:
        look_for_new_video()
        time.sleep(10)
except KeyboardInterrupt:
    print ("Stop")


Here are the error messages
Error:
Traceback (most recent call last): File "C:\Users\tyu\video.py", line 24, in <module> look_for_new_video() File "C:\Users\tyu\video.py", line 18, in look_for_new_video inp = urllib.request.urlopen(url) File "c:\users\tyu\appdata\local\programs\python\python37\lib\urllib\request.py", line 222, in urlopen return opener.open(url, data, timeout) File "c:\users\tyu\appdata\local\programs\python\python37\lib\urllib\request.py", line 531, in open response = meth(req, response) File "c:\users\tyu\appdata\local\programs\python\python37\lib\urllib\request.py", line 641, in http_response 'http', request, response, code, msg, hdrs) File "c:\users\tyu\appdata\local\programs\python\python37\lib\urllib\request.py", line 569, in error return self._call_chain(*args) File "c:\users\tyu\appdata\local\programs\python\python37\lib\urllib\request.py", line 503, in _call_chain result = func(*args) File "c:\users\tyu\appdata\local\programs\python\python37\lib\urllib\request.py", line 649, in http_error_default raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 404: Not Found
I did managed to find out which line caused the error but i couldn't really solve it even after surfing through the internet. So any help would be appreciated. Thanks in advance.
buran wrote Feb-13-2020, 02:19 PM:
API KEY removed
Quote
#2
Line 14, you've got 4 Ws in the url: 'https://wwww.googleapis.com/youtube/v3/search?'
There is no passion to be found playing small - in settling for a life that is less than the one you are capable of living.
Quote
#3
Drop all other modules and use only Requests as you have in import.
Call in line 15 is wrong snippet,id&order can not have ,.
Example getting subscribers count for a YouTube channel.
import requests

api_key = 'xxxxxxxxxxxxxxxxx'
channel_id = 'UC5kS0l76kC0xOzMPtOmSFGw'
response = requests.get(f'https://www.googleapis.com/youtube/v3/channels?part=statistics&id={channel_id}&key={api_key}')
Test usage:
>>> response
<Response [200]>
>>> j = response.json()
>>> j['items'][0]['statistics']['subscriberCount']
'273000'
Possible fix for your call.
import requests

api_key = 'xxxxxxxxxxxxxxxx'
channel_id = 'UC5kS0l76kC0xOzMPtOmSFGw'
response = requests.get(f'https://www.googleapis.com/youtube/v3/channels?part=snippet&order=date&maxResults=1&id={channel_id}&key={api_key}')
json_data = response.json()
# Do call on returned json_data
Quote

Top Page

Possibly Related Threads...
Thread Author Replies Views Last Post
  python beginner HTTP Error 500 leofcastro 0 119 Jan-24-2020, 04:37 PM
Last Post: leofcastro
  HTTP error 404 Karin 4 693 May-31-2019, 02:23 PM
Last Post: snippsat
  How to check HTTP error 500 and bypass SriMekala 3 548 May-04-2019, 02:07 PM
Last Post: snippsat
  SSLCertVerificationError using urllib (urlopen) FalseFact 1 1,060 Mar-31-2019, 08:34 AM
Last Post: snippsat
  Beginner: urllib error tomfry 5 1,189 Feb-22-2019, 07:57 AM
Last Post: tomfry
  Error: module 'urllib' has no attribute 'urlopen' mitmit293 2 3,538 Jan-29-2019, 02:32 PM
Last Post: snippsat
  Syntax error for HTTP request GET THX1138 1 2,543 May-12-2018, 12:02 PM
Last Post: snippsat
  urllib request urlopen? nutgut 4 2,043 Apr-14-2018, 01:12 PM
Last Post: nutgut
  urllib urlopen getting error 400 on 1 specific page glidecode 4 1,051 Mar-01-2018, 11:01 PM
Last Post: glidecode
  Type Not Found error on python soap call using suds library wellborn 1 1,704 Dec-19-2017, 07:53 PM
Last Post: micseydel

Forum Jump:


Users browsing this thread: 1 Guest(s)