Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TypeError: 'NoneType' object is not subscriptable #595

Open
MissGorgeousTech opened this issue Mar 23, 2020 · 16 comments
Open

TypeError: 'NoneType' object is not subscriptable #595

MissGorgeousTech opened this issue Mar 23, 2020 · 16 comments

Comments

@MissGorgeousTech
Copy link

Subject of the issue

when trying to download the course videos specifically one course (listed bellow), it gives the error TypeError: 'NoneType' object is not subscriptable.
Tried with others and doesn't give errors and works fine.

Traceback (most recent call last):
File "/usr/local/bin/edx-dl", line 11, in
sys.exit(main())
File "/usr/local/lib/python3.6/dist-packages/edx_dl/edx_dl.py", line 1023, in main
for selected_course in selected_courses}
File "/usr/local/lib/python3.6/dist-packages/edx_dl/edx_dl.py", line 1023, in
for selected_course in selected_courses}
File "/usr/local/lib/python3.6/dist-packages/edx_dl/edx_dl.py", line 186, in get_available_sections
sections = page_extractor.extract_sections_from_html(page, BASE_URL)
File "/usr/local/lib/python3.6/dist-packages/edx_dl/parsing.py", line 403, in extract_sections_from_html
for i, section_soup in enumerate(sections_soup, 1)]
File "/usr/local/lib/python3.6/dist-packages/edx_dl/parsing.py", line 403, in
for i, section_soup in enumerate(sections_soup, 1)]
File "/usr/local/lib/python3.6/dist-packages/edx_dl/parsing.py", line 372, in _make_url
return section_soup.a['href']

environment

  • Operating System (name/version):
  • Python version: 3.6
  • youtube-dl version: 2020.03.08
  • edx-dl version: 0.1.13

Steps to reproduce

https://courses.edx.org/courses/course-v1:IBM+PY0101EN+1T2020/cou
rse/

@manutiedra
Copy link

@numlockkey
Copy link

@tigerjoy
Copy link

@aprilchew
Copy link

aprilchew commented Apr 2, 2020

I get this fixed by changing line 372 code in parsing.py.
From 'return section_soup.a['href']' to 'return section_soup.ol'

@numlockkey
Copy link

aprilchew: Tried it, doesn't work.

@aprilchew
Copy link

aprilchew: Tried it, doesn't work.

Try section_soup.ol, remove the ['href']

@tigerjoy
Copy link

tigerjoy commented Apr 4, 2020

@aprilchew Thank you very much. It does indeed fix the issue.

For those who are still having trouble, here are the steps that you can follow.

  1. Clone or download as .zip https://github.com/coursera-dl/edx-dl
  2. Extract the .zip using "Extract Here" option.
  3. Navigate to the following folder edx-dl-master/edx_dl
  4. Open parsing.py with your favorite text editor that displays line numbers.
  5. Scroll down to line 372, and change return section_soup.a['href'] to return section_soup.ol

Here is the before and after Image for reference
The commented line 372 shows the before, and the 373 line is the change.

  1. Go up a directory, inside edx-dl-master
  2. To download courses now, you must use the following: -
    python edx-dl.py -u user@user.com COURSE_URL

NOTE: If you have downloaded edx-dl using pip, the following steps won't work. To make it work you need to navigate to site-packages or dist-packages folder, find the edx-dl folder, look for parser.py and make the necessary changes as above.

EDIT: I've downloaded a few other courses as well, and this change has not yet broken any other downloads so far.

@floviolleau
Copy link

Hi,

A PR would be appreciated :)

Kind regards

@dr-jeffrey
Copy link

Tigerjoy solution worked for me. However, be careful and not create another line, I just replaced the original code.

@ichit
Copy link

ichit commented May 10, 2020

Hello smart guys. is there no one available in github who is able to fix the problems of downloading tutorials sucessfully from Edx website?. I have tried since 2019 to use this script to download my tutorials from Edx and it only stops after displaying my course contains. For me its really a pain because i have courses i desperately needed offline which have expired and i am still learning to code and not experiened to help in solving the downloading problems. Thanks

@Ankk98
Copy link
Contributor

Ankk98 commented May 21, 2020

I can work on it, will send a pr soon.
@ichit this is not the way you should be asking people to contribute.
Be kind and respectful.

@rbrito
Copy link
Member

rbrito commented May 22, 2020

@Ankk98, a pull request that closes this would be welcome. Again: the simpler (and cleaner) the code, the better (since it will ease maintenance in the future when things break again--and they will).

@ichit
Copy link

ichit commented May 29, 2020

@Ankk98
I do not mean to disrespect anyone or speak rudely. I quite understand perfectly that no one get paid for their work on this platform. I mistakenly showed my frustration due to my inability to download a course i desperately need for my thesis. I apologize for to anyone who feels offended.
I thank all persons who helps to make life easier for others.

@floviolleau
Copy link

Hi,

I faced to the issue on a course today. So I decided to do a PR...

Here is the PR on the table.

Anyone know who are the owner(s) of this project?
I see lots of PRs pending merge to master.

If anyone can help here it will nice :)
Maybe @rbrito?

Thanks

@Bucky0789
Copy link

@aprilchew Thank you very much. It does indeed fix the issue.

For those who are still having trouble, here are the steps that you can follow.

1. Clone or download as .zip **https://github.com/coursera-dl/edx-dl**

2. Extract the .zip using **"Extract** Here" option.

3. Navigate to the following folder **edx-dl-master/edx_dl**

4. Open **parsing.py** with your favorite text editor that displays line numbers.

5. Scroll down to line 372, and change **return section_soup.a['href']** to **return section_soup.ol**

Here is the before and after Image for reference
The commented line 372 shows the before, and the 373 line is the change.

1. Go up a directory, inside **edx-dl-master**

2. To download courses now, you must use the following: -
   `python edx-dl.py -u user@user.com COURSE_URL`

NOTE: If you have downloaded edx-dl using pip, the following steps won't work. To make it work you need to navigate to site-packages or dist-packages folder, find the edx-dl folder, look for parser.py and make the necessary changes as above.

EDIT: I've downloaded a few other courses as well, and this change has not yet broken any other downloads so far.

Hi,
I have followed the whole procedure according to you but there has to be an empty folder created.
what should I do next step? please suggest.

@Bucky0789
Copy link

@tigerjoy

For those who are still having trouble, here are the steps that you can follow.

  1. Clone or download as .zip https://github.com/coursera-dl/edx-dl

  2. Extract the .zip using "Extract Here" option.

  3. Navigate to the following folder edx-dl-master/edx_dl

  4. Open parsing.py with your favorite text editor that displays line numbers.

  5. Scroll down to line 372, and change return section_soup.a['href'] to return section_soup.ol

Here is the before and after Image for reference
The commented line 372 shows the before, and the 373 line is the change.

  1. Go up a directory, inside edx-dl-master

  2. To download courses now, you must use the following: -
    python edx-dl.py -u user@user.com COURSE_URL

NOTE: If you have downloaded edx-dl using pip, the following steps won't work. To make it work you need to navigate to site-packages or dist-packages folder, find the edx-dl folder, look for parser.py and make the necessary changes as above.

EDIT: I've downloaded a few other courses as well, and this change has not yet broken any other downloads so far.

Hi,
I have followed the whole procedure according to you but there has to be an empty folder created.
what should I do next step? please suggest.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests