wwwpf / qzoneexporter Goto Github PK
View Code? Open in Web Editor NEWQQ空间爬虫,可导出并显示日志、相册、留言板、说说、照片、视频等数据。
License: GNU General Public License v3.0
QQ空间爬虫,可导出并显示日志、相册、留言板、说说、照片、视频等数据。
License: GNU General Public License v3.0
导出说说的时候没问题,但是显示数据(输入displayer.py--download)的时候显示:
Traceback (most recent call last):
File "D:\QzoneExporter-master\displayer.py", line 145, in
z = ZipFile(os.path.join(
File "C:\Python38\lib\zipfile.py", line 1216, in init
self.fp = io.open(file, filemode)
FileNotFoundError: [Errno 2] No such file or directory: 'html\static\static.zip'
请问要怎么解决?谢谢。
下载文件的方法建议价格timeout,不然会卡死在那里·
Describe the bug
使用displayer.py展示数据时访问出错
To Reproduce
Expected behavior
DIsplay the data properly.
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
**shell:**
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2328, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2314, in wsgi_app
response = self.handle_exception(e)
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1760, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.5/dist-packages/flask/_compat.py", line 36, in reraise
raise value
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2311, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1834, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1737, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.5/dist-packages/flask/_compat.py", line 36, in reraise
raise value
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1832, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1818, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/root/QzoneExporter/displayer.py", line 58, in shuoshuo
return generator.generate_shuoshuo(page)
File "/root/QzoneExporter/generator.py", line 269, in generate_shuoshuo
**self._template_args)
File "/usr/local/lib/python3.5/dist-packages/flask/templating.py", line 135, in render_template
context, ctx.app)
File "/usr/local/lib/python3.5/dist-packages/flask/templating.py", line 117, in _render
rv = template.render(context)
File "/usr/local/lib/python3.5/dist-packages/jinja2/environment.py", line 1008, in render
return self.environment.handle_exception(exc_info, True)
File "/usr/local/lib/python3.5/dist-packages/jinja2/environment.py", line 780, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.5/dist-packages/jinja2/_compat.py", line 37, in reraise
raise value.with_traceback(tb)
File "/root/QzoneExporter/html/templates/shuoshuo.html", line 7, in top-level template code
{% from "tools.html" import shuoshuo_comment_content %}
File "/root/QzoneExporter/html/templates/index_base.html", line 1, in top-level template code
{% extends "base.html" %}
File "/root/QzoneExporter/html/templates/base.html", line 39, in top-level template code
{% block content %}
File "/root/QzoneExporter/html/templates/shuoshuo.html", line 27, in block "content"
<pre style="display:inline;" class="content">{{msg["content"]|content_beautify|safe}}</pre>
File "/root/QzoneExporter/template_filters.py", line 71, in content_beautify
s = s.replace(m[0],
TypeError: '_sre.SRE_Match' object is not subscriptable
注,目标空间部分相册上锁,空间访问不受限。
爬取数据时得到"done"
博主你好,请问你对QQ空间说说批量点赞有研究吗?请问怎么联系你,想做个点赞器项目。
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior.
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
Add any other context about the problem here.
KeyError
KeyError: 'id'
Traceback (most recent call last)
This is the Copy/Paste friendly version of the traceback. You can also paste this traceback into a gist:
Traceback (most recent call last):
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 2463, in call
return self.wsgi_app(environ, start_response)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 2449, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1866, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask_compat.py", line 39, in reraise
raise value
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask_compat.py", line 39, in reraise
raise value
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1935, in dispatch_request
return self.view_functionsrule.endpoint
File "C:\Users\admin\Desktop\QzoneExporter-master\displayer.py", line 99, in album
return generator.generate_photo()
File "C:\Users\admin\Desktop\QzoneExporter-master\generator.py", line 356, in generate_photo
self._init_album_info()
File "C:\Users\admin\Desktop\QzoneExporter-master\generator.py", line 453, in _init_album_info
self._album_info_dict[album["id"]] = album
KeyError: 'id'
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior.
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
Add any other context about the problem here.
脚本不错,能用。希望可以把结果多个json合并成一个
sry
解决方法:pip install requests
Describe the bug
A clear and concise description of what the bug is.
使用displayer.py --download
网页查看QQ空间照片的时候,照片右边一列会显示评论,当评论很多时,右边的区域不能完全显示所有评论。
To Reproduce
Steps to reproduce the behavior.
Expected behavior
A clear and concise description of what you expected to happen.
我希望能在照片的右边评论区追加一个滚动条
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
Add any other context about the problem here.
要是可以自己配制导出的保存目录该多好
cookie没过期
不是全部报错,只是一部分人的会报错
报错时会有个网页
这是网页的内容
下面附上了网页的截图
个人猜测是空相册在作怪
TypeError
TypeError: 'NoneType' object is not iterable
Traceback (most recent call last)
File "/usr/local/lib64/python3.6/site-packages/flask/app.py", line 2463, in call
return self.wsgi_app(environ, start_response)
File "/usr/local/lib64/python3.6/site-packages/flask/app.py", line 2449, in wsgi_app
response = self.handle_exception(e)
File "/usr/local/lib64/python3.6/site-packages/flask/app.py", line 1866, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib64/python3.6/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/usr/local/lib64/python3.6/site-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib64/python3.6/site-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib64/python3.6/site-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib64/python3.6/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/usr/local/lib64/python3.6/site-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib64/python3.6/site-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functionsrule.endpoint
File "/root/Jupyter/QzoneExpoter/displayer.py", line 99, in album
return generator.generate_photo()
File "/root/Jupyter/QzoneExpoter/generator.py", line 363, in generate_photo
self._init_album_info()
File "/root/Jupyter/QzoneExpoter/generator.py", line 452, in _init_album_info
for album in temp:
TypeError: 'NoneType' object is not iterable
The debugger caught an exception in your WSGI application. You can now look at the traceback which led to the error.
To switch between the interactive traceback and the plaintext one, you can click on the "Traceback" headline. From the text traceback you can also create a paste of it. For code execution mouse-over the frame you want to debug and click on the console icon on the right side.
You can execute arbitrary Python code in the stack frames and there are some extra helpers available for introspection:
dump() shows all variables in the frame
dump(obj) dumps all that's known about the object
解决方法:pip install bs4
案例:一则说说第一张为视频,后面10张图片,点开“查看全部11张照片”后,视频将不显示,只显示10张图片
问题1:
说说图片数量超过9 ,displayer.py将出现报错
原因为:template_filters.py文件第412行
##img 标签所使用的 class 无对应
问题2
案例中最后1张图片未显示,怀疑没有下载
$ p3 exporter.py --shuoshuo
请输入需要导出数据的QQ号:155++++801
请输入用于登录的QQ号:155++++801
请输入 cookies:***********************
error: 由于对方权限设置,您不能进行此操作
done
是不是我自己的QQ设置有问题?谢谢。
有些空间相册都没有权限访问,但是说说里面的图是可以访问的,不知道是否是我的操作有问题还是确实存在这个逻辑bug
Traceback (most recent call last):
File "C:\Users\xiebing\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 2463, in call
return self.wsgi_app(environ, start_response)
File "C:\Users\xiebing\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 2449, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\xiebing\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1866, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\xiebing\AppData\Local\Programs\Python\Python37\lib\site-packages\flask_compat.py", line 39, in reraise
raise value
File "C:\Users\xiebing\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\xiebing\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\xiebing\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\xiebing\AppData\Local\Programs\Python\Python37\lib\site-packages\flask_compat.py", line 39, in reraise
raise value
File "C:\Users\xiebing\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\xiebing\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1935, in dispatch_request
return self.view_functionsrule.endpoint
File "C:\Users\xiebing\Desktop\QzoneExporter-master\displayer.py", line 111, in photo
return generator.generate_photo(encoded_album, page)
File "C:\Users\xiebing\Desktop\QzoneExporter-master\generator.py", line 373, in generate_photo
album_id, album_dir = self.get_album_id_dir(encoded_album)
File "C:\Users\xiebing\Desktop\QzoneExporter-master\generator.py", line 539, in get_album_id_dir
album_id = self._ablum_name2id[encoded_album]
KeyError: '摄影日记'
Describe the bug
我写了一个 wrapper 用于批量获取所有好友的空间信息. 在加上--download参数下载大量图片时, 有较小的概率发生下载卡住的情况.
To Reproduce
正常调用 python3 exporter.py --all --download
有比较小的几率复现(是否是因为 http 请求没有设置超时时间卡住了, 有些线程一直无法完成?是否应该添加超时时间?)
Expected behavior
调用完成后正常退出.
Screenshots
第一次调用 2000s 后超时退出, 但第二次调用很快就完成了.
Additional context
Log 因为涉及隐私就不贴出了...
就是 start downloading 之后 一堆 xxx is downloaded.
最后卡住不动很久.
args = shlex.split('python3 -u exporter.py ' + os.environ['PARAM'] + ' --download')
p = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=output_f, stderr=output_f, bufsize=0)
p.stdin.write((target_uin + "\n").encode("utf-8"))
p.stdin.write((my_uin + "\n").encode("utf-8"))
p.stdin.write((login_cookie + "\n").encode("utf-8"))
p.stdin.flush()
p.wait(2000)
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior.
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
Add any other context about the problem here.
说说图片点击进去后直接显示成了大图,无法左右点击查看下一张。未像原QQ空间或者QzoneExporter的相册功能一样弹出一个模态框
并且部分说说看着是图片,点进去其实是视频,QzoneExporter未抓到这些视频
关于图片下载,无法下载好友说说中所附带的图片,尽管该图片不存在于自建相册中。
所以是不支持该功能的吗?我看到有人说 说说中的图片会存在于说说相册中,但是仅本人可见,且会随着说说的删除而删除。该功能是否存在权限问题
我只能从火狐登qqzone,没找到main_page_cgi
找了个别的cookie 可以下载说说和留言的文字内容,日志和图片都没有,数量好像能读取到
权限都放开了 不知道哪里的问题
PS E:\Downloads\QzoneExporter-master> python exporter.py --all
日志: 841 说说: 101 相册: 996
'list'
sleep 1.94s
sleep 1.75s
sleep 1.54s
sleep 1.95s
sleep 1.52s
sleep 1.32s
done
只是保存了一个1kb的man_page.json和shuoshuo目录其他都没有导出来 不知道为什么
空间权限什么的都开放了
是我自己的cookies没有弄好 谢谢了
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior.
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
Add any other context about the problem here.
displayer.py运行后,点开说说,所有的视频都一起开始播放,声音嘈杂,建议默认不开始播放
运行exporter.py
提示
[WinError 3] 系统找不到指定的路径。: ''
windows 10
python3.7 依赖已安装
现在的QQ空间抓不到cookie了,
试了好几次了,
main page cui里面没有cookie,
但是有个qzonetoken,
不知道是不是QQ空间做出的调整
源代码中第一个参数为self_uin:
Line 885 in f9c4448
README.md中第一个参数为uin:
# exporter.py
# 根据需要设定以下变量
target_uin = "需要导出数据的QQ号"
uin = "登录空间的QQ号"
g_tk = "从浏览器获取"
cookies_value = "从浏览器获取"
q = QZoneExporter(uin, g_tk, cookies_value, args, target_uin)
q.export()
print("done")
可能是typo?
json.decoder.JSONDecodeError
json.decoder.JSONDecodeError: Unexpected UTF-8 BOM (decode using utf-8-sig): line 1 column 1 (char 0)
Traceback (most recent call last)
This is the Copy/Paste friendly version of the traceback. You can also paste this traceback into a gist:
Traceback (most recent call last):
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 2463, in call
return self.wsgi_app(environ, start_response)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 2449, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1866, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask_compat.py", line 39, in reraise
raise value
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask_compat.py", line 39, in reraise
raise value
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1935, in dispatch_request
return self.view_functionsrule.endpoint
File "C:\Users\admin\Desktop\QzoneExporter-master\displayer.py", line 99, in album
return generator.generate_photo()
File "C:\Users\admin\Desktop\QzoneExporter-master\generator.py", line 356, in generate_photo
self.init_album_info()
File "C:\Users\admin\Desktop\QzoneExporter-master\generator.py", line 442, in init_album_info
json_data = json.load(fin)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\json_init.py", line 296, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\json_init.py", line 338, in loads
s, 0)
json.decoder.JSONDecodeError: Unexpected UTF-8 BOM (decode using utf-8-sig): line 1 column 1 (char 0)
使用平台为windows 10 x64
下载运行导出之后,到1700多篇的时候停止
sleep 0.40s
'NoneType' object is not subscriptable
done
无法继续,不知道是啥原因
有个严重的问题,我在d盘运行的py,为啥c盘会被塞满了呢
Traceback (most recent call last):
File "/home/eallion/.local/lib/python3.6/site-packages/flask/app.py", line 2328, in __call__
return self.wsgi_app(environ, start_response)
File "/home/eallion/.local/lib/python3.6/site-packages/flask/app.py", line 2314, in wsgi_app
response = self.handle_exception(e)
File "/home/eallion/.local/lib/python3.6/site-packages/flask/app.py", line 1760, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/eallion/.local/lib/python3.6/site-packages/flask/_compat.py", line 36, in reraise
raise value
File "/home/eallion/.local/lib/python3.6/site-packages/flask/app.py", line 2311, in wsgi_app
response = self.full_dispatch_request()
File "/home/eallion/.local/lib/python3.6/site-packages/flask/app.py", line 1834, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/eallion/.local/lib/python3.6/site-packages/flask/app.py", line 1737, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/eallion/.local/lib/python3.6/site-packages/flask/_compat.py", line 36, in reraise
raise value
File "/home/eallion/.local/lib/python3.6/site-packages/flask/app.py", line 1832, in full_dispatch_request
rv = self.dispatch_request()
File "/home/eallion/.local/lib/python3.6/site-packages/flask/app.py", line 1818, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/eallion/shuosuo/QzoneExporter-master/displayer.py", line 57, in shuoshuo
return generator.generate_shuoshuo(page)
File "/home/eallion/shuosuo/QzoneExporter-master/generator.py", line 269, in generate_shuoshuo
**self._template_args)
File "/home/eallion/.local/lib/python3.6/site-packages/flask/templating.py", line 135, in render_template
context, ctx.app)
File "/home/eallion/.local/lib/python3.6/site-packages/flask/templating.py", line 117, in _render
rv = template.render(context)
File "/home/eallion/.local/lib/python3.6/site-packages/jinja2/asyncsupport.py", line 76, in render
return original_render(self, *args, **kwargs)
File "/home/eallion/.local/lib/python3.6/site-packages/jinja2/environment.py", line 1008, in render
return self.environment.handle_exception(exc_info, True)
File "/home/eallion/.local/lib/python3.6/site-packages/jinja2/environment.py", line 780, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/eallion/.local/lib/python3.6/site-packages/jinja2/_compat.py", line 37, in reraise
raise value.with_traceback(tb)
File "/home/eallion/shuosuo/QzoneExporter-master/html/templates/shuoshuo.html", line 7, in top-level template code
{% from "tools.html" import shuoshuo_comment_content %}
File "/home/eallion/shuosuo/QzoneExporter-master/html/templates/index_base.html", line 1, in top-level template code
{% extends "base.html" %}
File "/home/eallion/shuosuo/QzoneExporter-master/html/templates/base.html", line 39, in top-level template code
{% block content %}
File "/home/eallion/shuosuo/QzoneExporter-master/html/templates/shuoshuo.html", line 40, in block "content"
{% include "shuoshuo_md.html" %}
File "/home/eallion/shuosuo/QzoneExporter-master/html/templates/shuoshuo_md.html", line 3, in top-level template code
{% set media_list = msg | get_shuoshuo_media_list(uin, download_if_not_exist) %}
File "/home/eallion/shuosuo/QzoneExporter-master/template_filters.py", line 376, in get_shuoshuo_media_list
download_if_not_exist, shuoshuo=True)
File "/home/eallion/shuosuo/QzoneExporter-master/template_filters.py", line 349, in get_media_list
for media_info in media_info_list:
TypeError: 'NoneType' object is not iterable
长的说说被截断了,应该就是预览界面的显示量。
技术小白,只知道一点点常识和用轮子,打扰了。
2018-08-01 11:43:36,978 tools.py[line:19] ERROR 'albumListModeSort'
Traceback (most recent call last):
File "D:/qzone/QzoneExporter\tools.py", line 16, in wrapper
return func(*args, **kwargs)
File "D:/qzone/QzoneExporter/exporter.py", line 412, in _get_list_album_data
if not json_data["data"]["albumListModeSort"]:
KeyError: 'albumListModeSort'
请问这个是哪里出错了啊
--photos 时需改成temp = line.split('\t'),不然部分photo里的文件夹被分成两个,路径错位
--download时,又需改回temp = line.split(),不然下载报错,好像多个url多个回车
(发现也不行,文件下不全,还是会在下载时截断文件夹(文件夹名字中有空格会被截断),我先切回init测试)
具体什么原因,太晚了,看不动了。。。
受greysign启发,写了个exif信息全部写回文件的代码,切回你的最新版测试时发现如上问题。
exif信息写回照片文件的代码可独立运行,不改动你原先代码,回头pull给你。
解决方法:在每个.py文件开头加上
# -*- coding: utf-8 -*-
目前说说图像统一下载于 ./shuoshuo/downloaded ,与此同时,album_info.json 中无相关图片的记录
请问在此情况下,说说图片的 exif 能否提取并进一步恢复?
日志建议加上[转]的标记
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.