· 7 years ago · Nov 30, 2018, 05:22 AM
1import java.io.IOException;
2import java.text.SimpleDateFormat;
3import java.util.Date;
4
5import javax.xml.parsers.ParserConfigurationException;
6
7import org.xml.sax.SAXException;
8
9import com.aetrion.flickr.FlickrException;
10import com.aetrion.flickr.REST;
11import com.aetrion.flickr.RequestContext;
12import com.aetrion.flickr.auth.Auth;
13import com.aetrion.flickr.auth.Permission;
14import com.aetrion.flickr.photos.Extras;
15import com.aetrion.flickr.photos.Photo;
16import com.aetrion.flickr.photos.PhotosInterface;
17import com.aetrion.flickr.photos.SearchParameters;
18
19public class RepairDate {
20 /**
21 * date_postedã‚’date_takenã«å‡ºæ¥ã‚‹ã ã‘åˆã‚ã›ã‚‹
22 *
23 * 事å‰ã«ã‚¢ãƒ—リをflickrã«ç”³è«‹ã—ã‚ーã¨ç§˜å¯†ã‚ーをå–å¾—ã—ã¦ãŠãã€
24 * ユーザーã®èªè¨¼ã‚‚終ã‚ã£ã¦tokenã‚‚å–å¾—ã—ã¦ãŠãå¿…è¦ãŒã‚る。
25 * (tokenã®æ–¹ã¯flickrjã®èªè¨¼ã‚µãƒ³ãƒ—ルを見れã°ç°¡å˜ã«åˆ†ã‹ã‚‹ã¯ãš)
26 *
27 * @param key flickrã‹ã‚‰ã‚¢ãƒ—リ申請時ã«ç™ºè¡Œã•れãŸã‚ー
28 * @param secretKey flickrã‹ã‚‰ã‚¢ãƒ—リ申請時ã«ç™ºè¡Œã•れãŸç§˜å¯†ã®ã‚ー
29 * @param token ユーザーèªè¨¼å¾Œã«ã‚‚らãˆã‚‹ãƒˆãƒ¼ã‚¯ãƒ³
30 * @param joinDate 入会日
31 * @param startPage 処ç†é–‹å§‹ãƒšãƒ¼ã‚¸(1ページ100アイテム)
32 * @param endPage 処ç†çµ‚了ページ
33 * @throws FlickrException
34 * @throws ParserConfigurationException
35 * @throws IOException
36 * @throws SAXException
37 */
38 public void repair(String key, String secretKey, String token,
39 Date joinDate, int startPage, int endPage) throws FlickrException,
40 ParserConfigurationException, IOException, SAXException {
41
42 RequestContext requestContext = RequestContext.getRequestContext();
43 Auth auth = new Auth();
44
45 auth.setPermission(Permission.WRITE);
46 auth.setToken(token);
47 requestContext.setAuth(auth);
48
49 requestContext.setExtras(Extras.ALL_EXTRAS);
50
51 PhotosInterface api = new PhotosInterface(key, secretKey, new REST());
52
53 for (int page = startPage; page <= endPage; page++) {
54 SearchParameters params = new SearchParameters();
55
56 params.setUserId("me");
57
58 /*
59 * flickrå´ã§ã¯searchã¯extrasパラメーターをå—ã‘å–れるãŒã€
60 * flickrjã§ã¯å—ã‘å–るよã†ã«ãªã£ã¦ã„ãªã„ã®ã§ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰å´ã‚’æ›¸ãæ›ãˆã€
61 * RequestContextã‹ã‚‰extrasã‚’å—ã‘å–りparametersã«è¿½åŠ ã—ã¦ã‚ã’ã‚‹å¿…è¦ãŒã‚ã‚‹
62 */
63 for (Photo photo : api.search(params, 100, page)) {
64 // 撮影日ã¨åŒã˜ã‹æŠ•稿日ã®ã»ã†ãŒå¤ããªã£ã¦ã„れã°ä½•ã‚‚ã—ãªã„(投稿日ã®ã»ã†ãŒå¤ã„ã®ã‚‚異常ã ãŒæ„図的ã«ã‚„らãªã„ã¨ç™ºç”Ÿã—ãªã„ãŸã‚無視ã™ã‚‹)
65 if (photo.getDateTaken().getTime() >= photo.getDatePosted()
66 .getTime()) {
67 continue;
68 }
69
70 // 入会日よりå‰ã®æ—¥ã¯è¨å®šã§ããªã„ã®ã§ã€è¨å®šã§ãã‚‹ã‚‚ã®ã ã‘è¨å®šã™ã‚‹(ãã†ã—ãªã„ã¨å…¨ã¦å…¥ä¼šæ—¥ã§æ¸‹æ»žãŒèµ·ã“ã£ã¦ã—ã¾ã†ãŸã‚ã‚„ã£ãŸãŒã€ãれã§ã‚‚寄ã›ãŸã„å ´åˆã¯ã“ã®ifを外ã›ã°è‰¯ã„)
71 if (photo.getDateTaken().getTime() >= joinDate.getTime()) {
72 api.setDates(photo.getId(), photo.getDateTaken(), null,
73 null);
74 }
75 }
76 }
77 }
78}