python下载图片被覆盖了怎么办_为什么我的图片下载并用python编写后会被破坏?...

前言

这是我在stackoverflow上的第一篇文章,所以如果我在某个地方搞砸了,我很抱歉。我搜索了互联网和stackoverflow寻找解决我的问题的方法,但我什么也没找到。在

形势

我正在做的是用我的树莓皮制作一个数码相框,它还可以自动从我妻子的facebook页面下载图片。幸运的是,我发现有人在做类似的事情:

一个月前这位先生添加了下载_脸谱网.py脚本。这就是我需要的!所以几天前,我开始编写这个脚本,首先让它在我的windows环境中工作(在我把它放到pi上之前)。不幸的是,没有专门针对该脚本的文档,而且我缺乏python经验。在

基于from urllib import urlopen语句,我可以假设这个脚本是为python2.x编写的,这是因为python3.x现在是from urlib import request。在

所以我安装了Python2.7.9解释器,与尝试使用Python3.4.3解释器相比,我遇到的问题更少。在

问题

我已经得到了从facebook帐户下载图片的脚本;但是,图片被破坏了。在

现在,我最初使用的是python3.4.3,但我的方法urlrequest(url)(请参阅post底部的代码)以及它如何处理图像数据。我尝试过用不同的格式解码,比如utf-8和utf-16,但是根据内容头,它显示的是utf-8格式(我想)。在

结论

我不太确定问题是下载图像还是将图像写入文件。在

如果有人能帮助我,我将永远感激!也让我知道我可以做些什么来改善我的职位。在

提前谢谢。在

代码from urllib import urlopen

from json import loads

from sys import argv

import dateutil.parser as dateparser

import logging

# plugin your username and access_token (Token can be get and

# modified in the Explorer's Get Access Token button):

# https://graph.facebook.com/USER_NAME/photos?type=uploaded&fields=source&access_token=ACCESS_TOKEN_HERE

FACEBOOK_USER_ID = "**USER ID REMOVED"

FACEBOOK_ACCESS_TOKEN = "** TOKEN REMOVED - GET YOUR OWN **"

def get_logger(label='lvm_cli', level='INFO'):

"""

Return a generic logger.

"""

format = '%(asctime)s - %(levelname)s - %(message)s'

logging.basicConfig(format=format)

logger = logging.getLogger(label)

logger.setLevel(getattr(logging, level))

return logger

def urlrequest(url):

"""

Make a url request

"""

req = urlopen(url)

data = req.read()

return data

def get_json(url):

"""

Make a url request and return as a JSON object

"""

res = urlrequest(url)

data = loads(res)

return data

def get_next(data):

"""

Get next element from facebook JSON response,

or return None if no next present.

"""

try:

return data['paging']['next']

except KeyError:

return None

def get_images(data):

"""

Get all images from facebook JSON response,

or return None if no data present.

"""

try:

return data['data']

except KeyError:

return []

def get_all_images(url):

"""

Get all images using recursion.

"""

data = get_json(url)

images = get_images(data)

next = get_next(data)

if not next:

return images

else:

return images + get_all_images(next)

def get_url(userid, access_token):

"""

Generates a useable facebook graph API url

"""

root = 'https://graph.facebook.com/'

endpoint = '%s/photos?type=uploaded&fields=source,updated_time&access_token=%s' % \

(userid, access_token)

return '%s%s' % (root, endpoint)

def download_file(url, filename):

"""

Write image to a file.

"""

data = urlrequest(url)

path = 'C:/photos/%s' % filename

f = open(path, 'w')

f.write(data)

f.close()

def create_time_stamp(timestring):

"""

Creates a pretty string from time

"""

date = dateparser.parse(timestring)

return date.strftime('%Y-%m-%d-%H-%M-%S')

def download(userid, access_token):

"""

Download all images to current directory.

"""

logger = get_logger()

url = get_url(userid, access_token)

logger.info('Requesting image direct link, please wait..')

images = get_all_images(url)

for image in images:

logger.info('Downloading %s' % image['source'])

filename = '%s.jpg' % create_time_stamp(image['created_time'])

download_file(image['source'], filename)

if __name__ == '__main__':

download(FACEBOOK_USER_ID, FACEBOOK_ACCESS_TOKEN)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 JavaScript 编写的记忆游戏(附源代码)   项目:JavaScript 记忆游戏(附源代码) 记忆检查游戏是一个使用 HTML5、CSS 和 JavaScript 开发的简单项目。这个游戏是关于测试你的短期 记忆技能。玩这个游戏 时,一系列图像会出现在一个盒子形状的区域中 。玩家必须找到两个相同的图像并单击它们以使它们消失。 如何运行游戏? 记忆游戏项目仅包含 HTML、CSS 和 JavaScript。谈到此游戏的功能,用户必须单击两个相同的图像才能使它们消失。 点击卡片或按下键盘键,通过 2 乘 2 旋转来重建鸟儿对,并发现隐藏在下面的图像! 如果翻开的牌面相同(一对),您就赢了,并且该对牌将从游戏中消失! 否则,卡片会自动翻面朝下,您需要重新尝试! 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox, 以获得更好、更优化的游戏体验。要玩游戏,首先,通过单击 memorygame-index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值