script.module.youtube.dl icon indicating copy to clipboard operation
script.module.youtube.dl copied to clipboard

datetime.datetime issue

Open cosminadrianpopescu opened this issue 4 years ago • 5 comments

I'm trying to use script.module.youtube.dl in my own plugin like this:

addon.xml

<import addon="script.module.youtube.dl" version="20.324.0"/>

And then in my python file:

from YDStreamExtractor import getVideoInfo
info = getVideoInfo(id, 1)

This will give me an error in YoutubeDLWrapper.py at line 62:

File "/home/lixa/.kodi/addons/script.module.youtube.dl/lib/YDStreamExtractor.py", line 383, in getVideoInfo
    info = _getYoutubeDLVideo(url, quality, resolve_redirects)
File "/home/lixa/.kodi/addons/script.module.youtube.dl/lib/YDStreamExtractor.py", line 181, in _getYoutubeDLVideo
    r = ytdl.extract_info(url, download=False)
File "/home/lixa/.kodi/addons/script.module.youtube.dl/lib/youtube_dl/YoutubeDL.py", line 797, in extract_info
    ie_result = ie.extract(url)
File "/home/lixa/.kodi/addons/script.module.youtube.dl/lib/youtube_dl/extractor/common.py", line 530, in extract
    ie_result = self._real_extract(url)
File "/home/lixa/.kodi/addons/script.module.youtube.dl/lib/youtube_dl/extractor/youtube.py", line 2157, in _real_extract
    upload_date = unified_strdate(upload_date)
File "/home/lixa/.kodi/addons/script.module.youtube.dl/lib/youtube_dl/utils.py", line 2867, in unified_strdate
    upload_date = datetime.datetime.strptime(date_str, expression).strftime('%Y%m%d')
File "/home/lixa/.kodi/addons/script.module.youtube.dl/lib/YoutubeDLWrapper.py", line 62, in strptime
    return datetime.datetime(*(time.strptime(dstring, dformat)[0:6]))
AttributeError: type object 'datetime' has no attribute 'datetime'

In YoutubeDLWrapper.py, at line 62 there is this:

return datetime.datetime(*(time.strptime(dstring, dformat)[0:6]))

If I replace this with

return datetime(*(time.strptime(dstring, dformat)[0:6]))

Then it will be fine. I will get the info of the movie.

I didn't created a pull request because I don't know exactly why you have there datetime.datetime. I don't know what other implications are there. I don't use your plugin in any other way. But if you think that this wouldn't impact anything else, I can also open a pull request.

Thank you.

cosminadrianpopescu avatar Apr 19 '20 20:04 cosminadrianpopescu

You can find my plugin here: https://gitlab.com/cosminadrianpopescu/plugin.video.invidious

Your plugin is called in file resources/lib/ytdl.py, line 10

cosminadrianpopescu avatar Apr 19 '20 20:04 cosminadrianpopescu

HI there Any solutions of it?

carlosgonz0 avatar Jun 03 '20 22:06 carlosgonz0

The datetime.datetime issue can easy catched by including at line 62 in YoutubeDLWrapper.py

try:
    return datetime.datetime(*(time.strptime(dstring, dformat)[0:6]))
except AttributeError:
    return datetime(*(time.strptime(dstring, dformat)[0:6]))

b-jesch avatar Jul 24 '20 10:07 b-jesch

Yes, of course. But again: what are the implications? I can have a pull request with this, if you think that this is ok.

cosminadrianpopescu avatar Jul 24 '20 10:07 cosminadrianpopescu

I know that you can abbretivave the use of datetime.datetime.function with

from datetime import datetime

so you end with datetime.strptime() instead of datetime.datetime.strptime(). May be there's some import statement anywhere. The fix don't touch the behavior of the original code so this can be included without side effects.

I know that a lot of people have a missfunction of youtube.dl (Attribute error whitin the Kodi logs), others for some reasons don't. Including the fix work for both. I suggest you make a pull request.

b-jesch avatar Jul 24 '20 14:07 b-jesch