-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathphp-twitter2weibo.html
More file actions
422 lines (280 loc) · 16.9 KB
/
php-twitter2weibo.html
File metadata and controls
422 lines (280 loc) · 16.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
<!DOCTYPE html>
<html lang="zh-Hans,default">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 4.2.0">
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
<link rel="mask-icon" href="/images/logo.svg" color="#222">
<link rel="stylesheet" href="/css/main.css">
<link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css">
<script id="hexo-configurations">
var NexT = window.NexT || {};
var CONFIG = {"hostname":"www.mak-blog.com","root":"/","scheme":"Muse","version":"7.7.1","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":false,"show_result":false,"style":null},"back2top":{"enable":true,"sidebar":false,"scrollpercent":false},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":false,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":false,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}}};
</script>
<meta name="description" content="吐槽:因为一直都习惯retweet一些好黄好暴力的推,又不想手动同步到新浪,就折腾了一个下午,想用别人基于python实现的wet,苦于真正开发过,首先在gae那里上传,怎知道一句不支持os.makedirs就把我弄到无语了,然后再折腾sae,申请了一个内测python账号,不过又返回500错误,应该也是由于gae同样的问题。几个小时就过去了,心想自己已经基于php用sina的openapi发过微">
<meta property="og:type" content="article">
<meta property="og:title" content="基于php定时同步twitter到新浪微博">
<meta property="og:url" content="http://www.mak-blog.com/php-twitter2weibo.html">
<meta property="og:site_name" content="Songtao Mai">
<meta property="og:description" content="吐槽:因为一直都习惯retweet一些好黄好暴力的推,又不想手动同步到新浪,就折腾了一个下午,想用别人基于python实现的wet,苦于真正开发过,首先在gae那里上传,怎知道一句不支持os.makedirs就把我弄到无语了,然后再折腾sae,申请了一个内测python账号,不过又返回500错误,应该也是由于gae同样的问题。几个小时就过去了,心想自己已经基于php用sina的openapi发过微">
<meta property="article:published_time" content="2012-02-04T15:28:22.000Z">
<meta property="article:modified_time" content="2020-02-21T09:33:23.967Z">
<meta property="article:author" content="Songtao Mai">
<meta property="article:tag" content="twitter">
<meta property="article:tag" content="php">
<meta property="article:tag" content="同步">
<meta property="article:tag" content="新浪">
<meta name="twitter:card" content="summary">
<link rel="canonical" href="http://www.mak-blog.com/php-twitter2weibo.html">
<script id="page-configurations">
// https://hexo.io/docs/variables.html
CONFIG.page = {
sidebar: "",
isHome: false,
isPost: true
};
</script>
<title>基于php定时同步twitter到新浪微博 | Songtao Mai</title>
<noscript>
<style>
.use-motion .brand,
.use-motion .menu-item,
.sidebar-inner,
.use-motion .post-block,
.use-motion .pagination,
.use-motion .comments,
.use-motion .post-header,
.use-motion .post-body,
.use-motion .collection-header { opacity: initial; }
.use-motion .site-title,
.use-motion .site-subtitle {
opacity: initial;
top: initial;
}
.use-motion .logo-line-before i { left: initial; }
.use-motion .logo-line-after i { right: initial; }
</style>
</noscript>
</head>
<body itemscope itemtype="http://schema.org/WebPage">
<div class="container use-motion">
<div class="headband"></div>
<header class="header" itemscope itemtype="http://schema.org/WPHeader">
<div class="header-inner"><div class="site-brand-container">
<div class="site-nav-toggle">
<div class="toggle" aria-label="Toggle navigation bar">
<span class="toggle-line toggle-line-first"></span>
<span class="toggle-line toggle-line-middle"></span>
<span class="toggle-line toggle-line-last"></span>
</div>
</div>
<div class="site-meta">
<div>
<a href="/" class="brand" rel="start">
<span class="logo-line-before"><i></i></span>
<span class="site-title">Songtao Mai</span>
<span class="logo-line-after"><i></i></span>
</a>
</div>
</div>
<div class="site-nav-right"></div>
</div>
<nav class="site-nav">
<ul id="menu" class="menu">
<li class="menu-item menu-item-home">
<a href="/" rel="section"><i class="fa fa-fw fa-home"></i>Home</a>
</li>
<li class="menu-item menu-item-archives">
<a href="/archives/" rel="section"><i class="fa fa-fw fa-archive"></i>Archives</a>
</li>
<li class="menu-item menu-item-tags">
<a href="/tags/" rel="section"><i class="fa fa-fw fa-tags"></i>Tags</a>
</li>
<li class="menu-item menu-item-about">
<a href="/about/" rel="section"><i class="fa fa-fw fa-user"></i>About</a>
</li>
</ul>
</nav>
</div>
</header>
<div class="back-to-top">
<i class="fa fa-arrow-up"></i>
<span>0%</span>
</div>
<main class="main">
<div class="main-inner">
<div class="content-wrap">
<div class="content">
<div class="posts-expand">
<article itemscope itemtype="http://schema.org/Article" class="post-block " lang="zh-Hans">
<link itemprop="mainEntityOfPage" href="http://www.mak-blog.com/php-twitter2weibo.html">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="Songtao Mai">
<meta itemprop="description" content="记录,分享,交流的空间">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="Songtao Mai">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
基于php定时同步twitter到新浪微博
</h1>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">Posted on</span>
<time title="Created: 2012-02-04 23:28:22" itemprop="dateCreated datePublished" datetime="2012-02-04T23:28:22+08:00">2012-02-04</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-check-o"></i>
</span>
<span class="post-meta-item-text">Edited on</span>
<time title="Modified: 2020-02-21 17:33:23" itemprop="dateModified" datetime="2020-02-21T17:33:23+08:00">2020-02-21</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">In</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/%E6%8A%98%E8%85%BE/" itemprop="url" rel="index">
<span itemprop="name">折腾</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>吐槽:因为一直都习惯retweet一些好黄好暴力的推,又不想手动同步到新浪,就折腾了一个下午,想用别人基于python实现的wet,苦于真正开发过,首先在gae那里上传,怎知道一句不支持<code>os.makedirs</code>就把我弄到无语了,然后再折腾sae,申请了一个内测python账号,不过又返回500错误,应该也是由于gae同样的问题。几个小时就过去了,心想自己已经基于php用sina的openapi发过微博,再弄一个php定时获取twitter内容就行了,然后就决定还是自己写好了。</p>
<a id="more"></a>
<p>第一步:获取tweet<br>有两种方法,第一种是用官方的<code>http://twitter.com/statuses/user/timeline/用户名.rss</code>源,然后用php编程获取想同步的内容。这种方法需要墙外的服务器,而且获取的信息量比较少;所以我才用了第二种方法,使用自己的API来获取,例如格式为<code>http://你的API地址/statuses/user\_timeline.json?since\_id=155030004701405184</code>。这代表着获取id为155030004701405184之后你的tweet,而且格式为json。我的思路是记录tweet的id,因为不想用SQL来保存一个数字,就用一个TXT文本保存,每抓取一次就打开一次文本获取tweet的id,如果有新的tweet,就比较id大小,进而记录较大的到TXT文本中。<br>第二步:发送到新浪微博<br>因为新浪微博的API要审核,随便弄个发微博的页面先通过审核,主要是要它的<code>APP KEY</code>和<code>APP SECRECT</code>。新浪有php开发的sdk,尽量使用<code>OAUTH1.0</code>的,这样授权出来的<code>OAUTH</code>的码不会变,使用<code>OAUTH2.0</code>的话,授权的<code>OAUTH</code>有时间的限制,时间久了可能要再授权。先进行一次授权,<code>include</code>它的<code>weibooauth.php</code>,把<code>OAUTH_TOKEN和OAUTH_TOKEN_SECRET</code>都echo出来并记录。就凭<code>APP KEY</code>和<code>APP_SECRECT和OAUTH_TOKEN</code>和<code>OAUTH_TOKEN_SECRET</code>就可以发微博啦。例如</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">id;</span><br><span class="line"> if($new_id > $old_id) {</span><br><span class="line"> $old_id = $new_id;</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> $nonono=$item -> text;</span><br><span class="line"></span><br><span class="line"> $result = $c->update( $nonono );</span><br><span class="line"> if($result['id']) {</span><br><span class="line"> $fp=fopen("id.txt",'w');</span><br><span class="line"> fwrite($fp,$old_id);</span><br><span class="line"> fclose($fp);</span><br><span class="line"> } else {</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> endforeach;</span><br><span class="line"> endif;</span><br><span class="line">?></span><br></pre></td></tr></table></figure>
<p>这前两步解决了同步的问题。<br>第三部:定时检测。<br>有很多方法,如果你是外国的linux主机主机,而且还是cPanel面板的话,就会有一个cron job来执行定时任务。添加任务:<br><code>* * * * * php /home/***.**/public_html/***.**/weibo/sync.php</code><br>在网上查了很多方法,有些是填php的完整路径,并不是php,而后面的一定要是最绝对路径。填错了php路径可能显示/bin/sh: /usr/lib/php: is a directory登提示。<br>第二个就是运行的文件一定要修改他的权限为777,要不会提示Permission denied。<br>很多东西没有细说,折腾一下还是可以滴。</p>
</div>
<footer class="post-footer">
<div class="post-tags">
<a href="/tags/twitter/" rel="tag"># twitter</a>
<a href="/tags/php/" rel="tag"># php</a>
<a href="/tags/%E5%90%8C%E6%AD%A5/" rel="tag"># 同步</a>
<a href="/tags/%E6%96%B0%E6%B5%AA/" rel="tag"># 新浪</a>
</div>
<div class="post-nav">
<div class="post-nav-item">
<a href="/2012-lunar-year.html" rel="prev" title="2012农历新年">
<i class="fa fa-chevron-left"></i> 2012农历新年
</a></div>
<div class="post-nav-item">
<a href="/lumia-800-twitter.html" rel="next" title="lumia 800 人脉中添加twitter之路">
lumia 800 人脉中添加twitter之路 <i class="fa fa-chevron-right"></i>
</a></div>
</div>
</footer>
</article>
</div>
</div>
<script>
window.addEventListener('tabs:register', () => {
let activeClass = CONFIG.comments.activeClass;
if (CONFIG.comments.storage) {
activeClass = localStorage.getItem('comments_active') || activeClass;
}
if (activeClass) {
let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
if (activeTab) {
activeTab.click();
}
}
});
if (CONFIG.comments.storage) {
window.addEventListener('tabs:click', event => {
if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
let commentClass = event.target.classList[1];
localStorage.setItem('comments_active', commentClass);
});
}
</script>
</div>
<div class="toggle sidebar-toggle">
<span class="toggle-line toggle-line-first"></span>
<span class="toggle-line toggle-line-middle"></span>
<span class="toggle-line toggle-line-last"></span>
</div>
<aside class="sidebar">
<div class="sidebar-inner">
<ul class="sidebar-nav motion-element">
<li class="sidebar-nav-toc">
Table of Contents
</li>
<li class="sidebar-nav-overview">
Overview
</li>
</ul>
<!--noindex-->
<div class="post-toc-wrap sidebar-panel">
</div>
<!--/noindex-->
<div class="site-overview-wrap sidebar-panel">
<div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
<p class="site-author-name" itemprop="name">Songtao Mai</p>
<div class="site-description" itemprop="description">记录,分享,交流的空间</div>
</div>
<div class="site-state-wrap motion-element">
<nav class="site-state">
<div class="site-state-item site-state-posts">
<a href="/archives/">
<span class="site-state-item-count">126</span>
<span class="site-state-item-name">posts</span>
</a>
</div>
<div class="site-state-item site-state-categories">
<span class="site-state-item-count">19</span>
<span class="site-state-item-name">categories</span>
</div>
<div class="site-state-item site-state-tags">
<a href="/tags/">
<span class="site-state-item-count">173</span>
<span class="site-state-item-name">tags</span></a>
</div>
</nav>
</div>
</div>
</div>
</aside>
<div id="sidebar-dimmer"></div>
</div>
</main>
<footer class="footer">
<div class="footer-inner">
<div class="copyright">
©
<span itemprop="copyrightYear">2020</span>
<span class="with-love">
<i class="fa fa-user"></i>
</span>
<span class="author" itemprop="copyrightHolder">Songtao Mai</span>
</div>
<div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a> v4.2.0
</div>
<span class="post-meta-divider">|</span>
<div class="theme-info">Theme – <a href="https://muse.theme-next.org/" class="theme-link" rel="noopener" target="_blank">NexT.Muse</a> v7.7.1
</div>
</div>
</footer>
</div>
<script src="/lib/anime.min.js"></script>
<script src="/lib/velocity/velocity.min.js"></script>
<script src="/lib/velocity/velocity.ui.min.js"></script>
<script src="/js/utils.js"></script>
<script src="/js/motion.js"></script>
<script src="/js/schemes/muse.js"></script>
<script src="/js/next-boot.js"></script>
</body>
</html>