Browse Source

Remove pycurl and use requests

drymer 2 years ago
parent
commit
c404ec3441
5 changed files with 191 additions and 295 deletions
  1. 2
    6
      README.md
  2. 2
    4
      README.org
  3. 161
    234
      README.rst
  4. 25
    50
      gnusrss.py
  5. 1
    1
      requirements.txt

+ 2
- 6
README.md View File

@@ -57,9 +57,7 @@ gnusrss parse feeds and post them to GNU Social. The idea of ​​this program
57 57
 Need a version equal to or greater than python 3 and some libraries:
58 58
 
59 59
 -   [feedparser](//pypi.python.org/pypi/feedparser) >= 5.0
60
--   [pycurl](//pypi.python.org/pypi/pycurl/) >= 7.0
61
-
62
-In some distributions like Debian, is necessary to install some extra packages before installing pycurl. These are `gnutls-dev libcurl-dev`. You will also need the package `sqlite3`. In other distributions, the names may vary slightly.
60
+-   [requests](https://pypi.python.org/pypi/requests/2.11.1) >= 2.11.1
63 61
 
64 62
 ### Git repository<a id="orgheadline4"></a>
65 63
 
@@ -228,9 +226,7 @@ gnusrss parsea feeds y los postea en GNU Social. La idea de hacer este programa
228 226
 Necesita una versión de python igual o superior a la 3 y algunas librerias:
229 227
 
230 228
 -   [feedparser](https://pypi.python.org/pypi/feedparser) >= 5.0
231
--   [pycurl](https://pypi.python.org/pypi/pycurl/) >= 7.0
232
-
233
-En algunas distribuciones cómo Debian, hacen falta algunos paquetes extra antes de instalar pycurl. Estos son `libcurl-dev gnutls-dev`. También hará falta el paquete `sqlite3`. En otras distribuciones, los nombres pueden variar ligeramente.
229
+-   [requests](https://pypi.python.org/pypi/requests/2.11.1) >= 2.11.1
234 230
 
235 231
 ### Repositorio git<a id="orgheadline14"></a>
236 232
 

+ 2
- 4
README.org View File

@@ -10,9 +10,8 @@
10 10
 *** Requirements
11 11
     Need a version equal to or greater than python 3 and some libraries:
12 12
     - [[Https://pypi.python.org/pypi/feedparser][feedparser]] >= 5.0
13
-    - [[Https://pypi.python.org/pypi/pycurl/][pycurl]] >= 7.0
13
+    - [[https://pypi.python.org/pypi/requests/2.11.1][requests]] >= 2.11.1
14 14
 
15
-    In some distributions like Debian, is necessary to install some extra packages before installing pycurl. These are =gnutls-dev libcurl-dev=. You will also need the package =sqlite3=. In other distributions, the names may vary slightly.
16 15
 *** Git repository
17 16
     It's in two places:
18 17
     - http://daemons.cf/cgit/gnusrss: the original repository
@@ -184,9 +183,8 @@
184 183
 *** Requisitos
185 184
     Necesita una versión de python igual o superior a la 3 y algunas librerias:
186 185
     - [[https://pypi.python.org/pypi/feedparser][feedparser]] >= 5.0
187
-    - [[https://pypi.python.org/pypi/pycurl/][pycurl]] >= 7.0
186
+    - [[https://pypi.python.org/pypi/requests/2.11.1][requests]] >= 2.11.1
188 187
 
189
-    En algunas distribuciones cómo Debian, hacen falta algunos paquetes extra antes de instalar pycurl. Estos son =libcurl-dev gnutls-dev=. También hará falta el paquete =sqlite3=. En otras distribuciones, los nombres pueden variar ligeramente.
190 188
 *** Repositorio git
191 189
     Está en dos sitios:
192 190
     - http://daemons.cf/cgit/gnusrss: el repositorio original

+ 161
- 234
README.rst View File

@@ -1,94 +1,62 @@
1
--  `gnusrss <#gnusrss>`__
2
--  `English <#english>`__
3
-
4
-   -  `About <#about>`__
5
-   -  `Features <#features>`__
6
-   -  `Requirements <#requirements>`__
7
-   -  `Git repository <#git-repository>`__
8
-   -  `Install <#install>`__
9
-   -  `Configuration <#configuration>`__
10
-   -  `Crontab <#crontab>`__
11
-   -  `Use with twitter2rss and/or GNU
12
-      Social <#use-with-twitter2rss-and/or-gnu-social>`__
13
-   -  `License <#license>`__
14
-
15
--  `Castellano <#castellano>`__
16
-
17
-   -  `Acerca de <#acerca-de>`__
18
-   -  `Features <#features>`__
19
-   -  `Requisitos <#requisitos>`__
20
-   -  `Repositorio git <#repositorio-git>`__
21
-   -  `Instalación <#instalación>`__
22
-   -  `Configuración <#configuración>`__
23
-   -  `Crontab <#crontab>`__
24
-   -  `Uso con twitter2rss y/o GNU
25
-      Social <#uso-con-twitter2rss-y/o-gnu-social>`__
26
-   -  `Bugs <#bugs>`__
27
-   -  `Licencia <#licencia>`__
28
-
29
-gnusrss
30
-=======
31
-
32
-English
33
--------
34
-
35
-About
36
-~~~~~
37
-
38
-gnusrss parse feeds and post them to GNU Social. The idea of ​​this
39
-program came from `spigot <https://github.com/nathans/spigot>`__, a
40
-program that posts feeds to the social network
41
-`pump.io <https://pump.io>`__ as does gnusrss but better, because it
42
-controls the possible flood. gnusrss does not have this option and it
43
-will be managed with the crontab (for now).
44
-
45
-Features
46
-~~~~~~~~
47
-
48
--  Multiple feed and GNU Social accounts support
49
--  sqlite3 is used to store the feeds
50
--  Can fetch RSS files or url indistinctly
51
--  Twitter image upload support when used with
52
-   `twitter2rss <http://daemons.cf/cgit/twitter2rss>`__
53
-
54
-Requirements
55
-~~~~~~~~~~~~
1
+
2
+.. contents::
3
+
4
+1 gnusrss
5
+---------
6
+
7
+1.1 English
8
+~~~~~~~~~~~
9
+
10
+1.1.1 About
11
+^^^^^^^^^^^
12
+
13
+gnusrss parse feeds and post them to GNU Social. The idea of ​​this program came from `spigot <https://github.com/nathans/spigot>`_, a program that posts feeds to the social network `pump.io <https://pump.io>`_ as does gnusrss but better, because it controls the possible flood. gnusrss does not have this option and it will be managed with the crontab (for now).
14
+
15
+1.1.2 Features
16
+^^^^^^^^^^^^^^
17
+
18
+- Multiple feed and GNU Social accounts support
19
+
20
+- sqlite3 is used to store the feeds
21
+
22
+- Can fetch RSS files or url indistinctly
23
+
24
+- Twitter image upload support when used with `twitter2rss <http://daemons.cf/cgit/twitter2rss>`_
25
+
26
+1.1.3 Requirements
27
+^^^^^^^^^^^^^^^^^^
56 28
 
57 29
 Need a version equal to or greater than python 3 and some libraries:
58 30
 
59
--  `feedparser <//pypi.python.org/pypi/feedparser>`__ >= 5.0
60
--  `pycurl <//pypi.python.org/pypi/pycurl/>`__ >= 7.0
31
+- `feedparser <//pypi.python.org/pypi/feedparser>`_ >= 5.0
61 32
 
62
-In some distributions like Debian, is necessary to install some extra
63
-packages before installing pycurl. These are ``gnutls-dev libcurl-dev``.
64
-You will also need the package ``sqlite3``. In other distributions, the
65
-names may vary slightly.
33
+- `requests <https://pypi.python.org/pypi/requests/2.11.1>`_ >= 2.11.1
66 34
 
67
-Git repository
68
-~~~~~~~~~~~~~~
35
+1.1.4 Git repository
36
+^^^^^^^^^^^^^^^^^^^^
69 37
 
70 38
 It's in two places:
71 39
 
72
--  http://daemons.cf/cgit/gnusrss: the original repository
73
--  https://notabug.org/drymer/gnusrss/: A mirror in which it can be put
74
-   issues and feature requests
40
+- `http://daemons.cf/cgit/gnusrss <http://daemons.cf/cgit/gnusrss>`_: the original repository
75 41
 
76
-Install
77
-~~~~~~~
42
+- `https://notabug.org/drymer/gnusrss/ <https://notabug.org/drymer/gnusrss/>`_: A mirror in which it can be put issues and feature requests
78 43
 
79
-As with any program that uses python, it should be used a virtual
80
-environment (virtualenv), but that is user selectable. It's possible to
81
-use one of the next installation methods:
44
+1.1.5 Install
45
+^^^^^^^^^^^^^
46
+
47
+As with any program that uses python, it should be used a virtual environment (virtualenv), but that is user selectable. It's possible to use one of the next installation methods:
82 48
 
83 49
 Install via pip:
84 50
 
85
-::
51
+.. code-block:: sh
52
+    :number-lines: 0
86 53
 
87 54
     $ su -c "pip3 install gnusrss"
88 55
 
89 56
 Clone the repository:
90 57
 
91
-::
58
+.. code-block:: sh
59
+    :number-lines: 0
92 60
 
93 61
     $ git clone git://daemons.cf/gnusrss
94 62
     # OR ...
@@ -99,17 +67,18 @@ Clone the repository:
99 67
 
100 68
 If on parabola:
101 69
 
102
-::
70
+.. code-block:: sh
71
+    :number-lines: 0
103 72
 
104 73
     $ su -c "pacman -S gnusrss"
105 74
 
106
-Configuration
107
-~~~~~~~~~~~~~
75
+1.1.6 Configuration
76
+^^^^^^^^^^^^^^^^^^^
108 77
 
109
-The program is (or should be) quite intuitive. Running the following,
110
-should show the basics:
78
+The program is (or should be) quite intuitive. Running the following, should show the basics:
111 79
 
112
-::
80
+.. code-block:: sh
81
+    :number-lines: 0
113 82
 
114 83
     $ gnusrss.py
115 84
     usage: gnusrss [-h] [-c file_name] [-C] [-p config_file] [-P] [-k file_name]
@@ -129,17 +98,17 @@ should show the basics:
129 98
 
130 99
 In any case, if not clear, read the following.
131 100
 
132
-For the first use, it must be created the database and the first
133
-configuration file. This can done using the same command, like this:
101
+For the first use, it must be created the database and the first configuration file. This can done using the same command, like this:
134 102
 
135
-::
103
+.. code-block:: sh
104
+    :number-lines: 0
136 105
 
137 106
     $ gnusrss.py --create-db --create-config daemons
138 107
 
139
-Then it will ask several questions to create the first configuration
140
-file. It should look like this:
108
+Then it will ask several questions to create the first configuration file. It should look like this:
141 109
 
142
-::
110
+.. code-block:: text
111
+    :number-lines: 0
143 112
 
144 113
     Database created!
145 114
     Hi! Now we'll create config file!
@@ -174,10 +143,10 @@ file. It should look like this:
174 143
     Answer with "yes" or just press enter if you don't want to use it:
175 144
     Do you want to populate the database? (y) Or you prefer to post old items? (n)
176 145
 
177
-The file is saved under the name 'daemons.ini'. It should look like
178
-this:
146
+The file is saved under the name 'daemons.ini'. It should look like this:
179 147
 
180
-::
148
+.. code-block:: text
149
+    :number-lines: 0
181 150
 
182 151
     [Feeds]
183 152
     feed = https://daemons.cf/rss.xml
@@ -187,54 +156,44 @@ this:
187 156
     fallback_feed =
188 157
     format = {title} - {link} by @ {author}
189 158
 
190
-It can create all the configuration files you want. When creating the
191
-above file, it put into the database all the feeds that had so far.
192
-Thus, when running **gnusrss** for the first time, it will not post
193
-nothing to GNU Social until the feed has new information. To post feeds
194
-from a concrete config file or all execute, respectively, the following:
159
+It can create all the configuration files you want.
160
+When creating the above file, it put into the database all the feeds that had so far. Thus, when running **gnusrss** for the first time, it will not post nothing to GNU Social until the feed has new information.
161
+To post feeds from a concrete config file or all execute, respectively, the following:
195 162
 
196
-::
163
+.. code-block:: sh
164
+    :number-lines: 0
197 165
 
198 166
     $ gnusrss.py -p daemons.ini
199 167
     $ gnusrss.py -P
200 168
 
201
-If the config file is created manually and the user don't want to post
202
-all the feed's content, just use the –populate-database option to save
203
-them to the database:
169
+If the config file is created manually and the user don't want to post all the feed's content, just use the --populate-database option to save them to the database:
204 170
 
205
-::
171
+.. code-block:: sh
172
+    :number-lines: 0
206 173
 
207 174
     $ gnusrss.py -k otherFile.ini
208 175
 
209
-Crontab
210
-~~~~~~~
176
+1.1.7 Crontab
177
+^^^^^^^^^^^^^
211 178
 
212
-The recommended way to execute **gnurss** is using the crontab. Each
213
-time it's run, a single item of the feed will be posted to prevent
214
-flood. Depending on the number of feeds that are published, you should
215
-choose a different runtime. For a blog that publishs once a day, it
216
-could be used the following:
179
+The recommended way to execute **gnurss** is using the crontab. Each time it's run, a single item of the feed will be posted to prevent flood. Depending on the number of feeds that are published, you should choose a different runtime. For a blog that publishs once a day, it could be used the following:
217 180
 
218
-::
181
+.. code-block:: sh
182
+    :number-lines: 0
219 183
 
220 184
     $ crontab -e
221 185
     # A file is open and gets the following
222 186
     * 12 * * * cd $rutaDEgnusrss && gnusrss.py -p daemons.ini
223 187
 
224
-So it runs once, every day at midday. If, however, it's used with
225
-`twitter2rss <http://daemons.cf/cgit/twitter2rss/>`__, it could be
226
-recommended putting it to run every five minutes. It has to be
227
-remembered that is important to run in the directory where the database
228
-was created, because is where it will search it..
188
+So it runs once, every day at midday. If, however, it's used with `twitter2rss <http://daemons.cf/cgit/twitter2rss/>`_, it could be recommended putting it to run every five minutes. It has to be remembered that is important to run in the directory where the database was created, because is where it will search it..
229 189
 
230
-Use with twitter2rss and/or GNU Social
231
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
190
+1.1.8 Use with twitter2rss and/or GNU Social
191
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
232 192
 
233
-It works like any feed, except for the field that is published. In both
234
-you have to choose ``{summary}``. An example configuration file is as
235
-follows:
193
+It works like any feed, except for the field that is published. In both you have to choose ``{summary}``. An example configuration file is as follows:
236 194
 
237
-::
195
+.. code-block:: text
196
+    :number-lines: 0
238 197
 
239 198
     [feeds]
240 199
     feed = https://quitter.se/api/statuses/user_timeline/127168.atom
@@ -244,15 +203,13 @@ follows:
244 203
     fallback_feed =
245 204
     format = {summary}
246 205
 
247
-The feed can be achieved by looking at the source code of the page of
248
-the account you want. For
249
-`twitter2rss <http://daemons.cf/cgit/twitter2rss>`__, you can host it or
250
-can use this `web <http://daemons.cf/twitter2rss>`__.
206
+The feed can be achieved by looking at the source code of the page of the account you want. For `twitter2rss <http://daemons.cf/cgit/twitter2rss>`_, you can host it or can use this `web <http://daemons.cf/twitter2rss>`_.
251 207
 
252
-License
253
-~~~~~~~
208
+1.1.9 License
209
+^^^^^^^^^^^^^
254 210
 
255
-::
211
+.. code-block:: text
212
+    :number-lines: 0
256 213
 
257 214
     This program is free software: you can redistribute it and / or modify
258 215
     it under the terms of the GNU General Public License as published by
@@ -267,67 +224,59 @@ License
267 224
     You should have received a copy of the GNU General Public License
268 225
     Along With This Program. If not, see <http://www.gnu.org/licenses/>.
269 226
 
270
-Castellano
271
-----------
227
+1.2 Castellano
228
+~~~~~~~~~~~~~~
229
+
230
+1.2.1 Acerca de
231
+^^^^^^^^^^^^^^^
232
+
233
+gnusrss parsea feeds y los postea en GNU Social. La idea de hacer este programa surgió de `spigot <https://github.com/nathans/spigot>`_, un programa que postea feeds en la red social `pump.io <https://pump.io>`_ igual que hace gnusrss pero mejor, ya que controla el posible flood. gnusrss no tiene esta opción y se controlará con el propio crontab (de momento).
234
+
235
+1.2.2 Features
236
+^^^^^^^^^^^^^^
272 237
 
273
-Acerca de
274
-~~~~~~~~~
238
+- Soporta múltiples feeds y cuentas de GNU Social
275 239
 
276
-gnusrss parsea feeds y los postea en GNU Social. La idea de hacer este
277
-programa surgió de `spigot <https://github.com/nathans/spigot>`__, un
278
-programa que postea feeds en la red social `pump.io <https://pump.io>`__
279
-igual que hace gnusrss pero mejor, ya que controla el posible flood.
280
-gnusrss no tiene esta opción y se controlará con el propio crontab (de
281
-momento).
240
+- sqlite3 es usado para guardar los feeds
282 241
 
283
-Features
284
-~~~~~~~~
242
+- Se puede usar tanto archivos RSS cómo url indistintamente
285 243
 
286
--  Soporta múltiples feeds y cuentas de GNU Social
287
--  sqlite3 es usado para guardar los feeds
288
--  Se puede usar tanto archivos RSS cómo url indistintamente
289
--  Soporta la súbida de imágenes de Twitter cuando es usado en conjunto
290
-   con `twitter2rss <http://daemons.cf/cgit/twitter2rss>`__
244
+- Soporta la súbida de imágenes de Twitter cuando es usado en conjunto con `twitter2rss <http://daemons.cf/cgit/twitter2rss>`_
291 245
 
292
-Requisitos
293
-~~~~~~~~~~
246
+1.2.3 Requisitos
247
+^^^^^^^^^^^^^^^^
294 248
 
295
-Necesita una versión de python igual o superior a la 3 y algunas
296
-librerias:
249
+Necesita una versión de python igual o superior a la 3 y algunas librerias:
297 250
 
298
--  `feedparser <https://pypi.python.org/pypi/feedparser>`__ >= 5.0
299
--  `pycurl <https://pypi.python.org/pypi/pycurl/>`__ >= 7.0
251
+- `feedparser <https://pypi.python.org/pypi/feedparser>`_ >= 5.0
300 252
 
301
-En algunas distribuciones cómo Debian, hacen falta algunos paquetes
302
-extra antes de instalar pycurl. Estos son ``libcurl-dev gnutls-dev``.
303
-También hará falta el paquete ``sqlite3``. En otras distribuciones, los
304
-nombres pueden variar ligeramente.
253
+- `requests <https://pypi.python.org/pypi/requests/2.11.1>`_ >= 2.11.1
305 254
 
306
-Repositorio git
307
-~~~~~~~~~~~~~~~
255
+1.2.4 Repositorio git
256
+^^^^^^^^^^^^^^^^^^^^^
308 257
 
309 258
 Está en dos sitios:
310 259
 
311
--  http://daemons.cf/cgit/gnusrss: el repositorio original
312
--  https://notabug.org/drymer/gnusrss/: un mirror, en el que se pueden
313
-   poner los problemas y sugerencias de mejoras
260
+- `http://daemons.cf/cgit/gnusrss <http://daemons.cf/cgit/gnusrss>`_: el repositorio original
314 261
 
315
-Instalación
316
-~~~~~~~~~~~
262
+- `https://notabug.org/drymer/gnusrss/ <https://notabug.org/drymer/gnusrss/>`_: un mirror, en el que se pueden poner los problemas y sugerencias de mejoras
263
+
264
+1.2.5 Instalación
265
+^^^^^^^^^^^^^^^^^
317 266
 
318
-Cómo con cualquier programa con python, es recomendable usar un entorno
319
-virtual (virtualenv), pero eso queda a elección del usuario. Se puede
320
-escoger entre los siguientes metodos:
267
+Cómo con cualquier programa con python, es recomendable usar un entorno virtual (virtualenv), pero eso queda a elección del usuario. Se puede escoger entre los siguientes metodos:
321 268
 
322 269
 Instalar usando pip:
323 270
 
324
-::
271
+.. code-block:: sh
272
+    :number-lines: 0
325 273
 
326 274
     $ su -c "pip3 install gnusrss"
327 275
 
328 276
 Clonar el repositorio:
329 277
 
330
-::
278
+.. code-block:: sh
279
+    :number-lines: 0
331 280
 
332 281
     $ git clone git://daemons.cf/gnusrss
333 282
     # O ...
@@ -338,17 +287,18 @@ Clonar el repositorio:
338 287
 
339 288
 Si se usa parabola:
340 289
 
341
-::
290
+.. code-block:: sh
291
+    :number-lines: 0
342 292
 
343 293
     $ su -c "pacman -S gnusrss"
344 294
 
345
-Configuración
346
-~~~~~~~~~~~~~
295
+1.2.6 Configuración
296
+^^^^^^^^^^^^^^^^^^^
347 297
 
348
-El programa es (o debería ser) bastante intuitivo. Ejecutando lo
349
-siguiente, deberia verse lo básico:
298
+El programa es (o debería ser) bastante intuitivo. Ejecutando lo siguiente, deberia verse lo básico:
350 299
 
351
-::
300
+.. code-block:: sh
301
+    :number-lines: 0
352 302
 
353 303
     $ gnusrss.py
354 304
     usage: gnusrss [-h] [-c file_name] [-C] [-p config_file] [-P] [-k file_name]
@@ -368,18 +318,17 @@ siguiente, deberia verse lo básico:
368 318
 
369 319
 En cualquier caso, si no queda claro, leer lo siguiente.
370 320
 
371
-Para el primer uso, la base de datos y el primer archivo de
372
-configuración deben ser creados. Podemos hacerlo usando la misma orden,
373
-tal que así:
321
+Para el primer uso, la base de datos y el primer archivo de configuración deben ser creados. Podemos hacerlo usando la misma orden, tal que así:
374 322
 
375
-::
323
+.. code-block:: sh
324
+    :number-lines: 0
376 325
 
377 326
     $ gnusrss.py --create-db --create-config daemons
378 327
 
379
-A continuación hará varias preguntas para configurar el primer archivo
380
-de configuración. Debería verse así:
328
+A continuación hará varias preguntas para configurar el primer archivo de configuración. Debería verse así:
381 329
 
382
-::
330
+.. code-block:: text
331
+    :number-lines: 0
383 332
 
384 333
     Database created!
385 334
     Hi! Now we'll create de config file!
@@ -414,25 +363,19 @@ de configuración. Debería verse así:
414 363
     Answer with "yes" or just press enter if you don't want to use it:
415 364
     {5}Do you want to populate the database? (y) Or you prefer to post old items? (n)
416 365
 
417
-A continuación traduciré las lineas con los números entre corchetes. {1}
418
-Necesitas acortar las url que quieres postear? Por favor ten en cuenta
419
-que sólo deberia usarse si el servidor sólo tiene 140 carácteres. {2}
420
-Por favor introduce tu feed de emergencia. Si no tienes uno, solamente
421
-aprieta enter. {3} Por favor pon las etiquetas dentro de los corchetes.
422
-{4} Quieres permitir conexiones inseguras a tu servidor GNU social?
423
-Responde con "si" o simplemente apreta enter si no necesitas usarlo. {5}
424
-Quieres llenar la base de datos? (y) O prefieres publicar los artículos
425
-antiguos? (n)
366
+A continuación traduciré las lineas con los números entre corchetes.
367
+{1} Necesitas acortar las url que quieres postear? Por favor ten en cuenta que sólo deberia usarse si el servidor sólo tiene 140 carácteres.
368
+{2} Por favor introduce tu feed de emergencia. Si no tienes uno, solamente aprieta enter.
369
+{3} Por favor pon las etiquetas dentro de los corchetes.
370
+{4} Quieres permitir conexiones inseguras a tu servidor GNU social? Responde con "si" o simplemente apreta enter si no necesitas usarlo.
371
+{5} Quieres llenar la base de datos? (y) O prefieres publicar los artículos antiguos? (n)
426 372
 
427
-Respecto al 3, hay que examinar el código fuente del RSS para saber
428
-cuales interesan. En general, el que hay de ejemplo será lo que se
429
-busque. En el caso 4, sólo es útil si el servidor usa un certificado
430
-auto-firmado.
373
+Respecto al 3, hay que examinar el código fuente del RSS para saber cuales interesan. En general, el que hay de ejemplo será lo que se busque. En el caso 4, sólo es útil si el servidor usa un certificado auto-firmado.
431 374
 
432
-El archivo se guardará con el nombre 'daemons.ini'. Después de todas
433
-estas preguntas, debería verse similar a esto:
375
+El archivo se guardará con el nombre 'daemons.ini'. Después de todas estas preguntas, debería verse similar a esto:
434 376
 
435
-::
377
+.. code-block:: text
378
+    :number-lines: 0
436 379
 
437 380
     [feeds]
438 381
     feed = https://daemons.cf/rss.xml
@@ -443,55 +386,44 @@ estas preguntas, debería verse similar a esto:
443 386
     format = {title} - {link} by @{author}
444 387
     insecure =
445 388
 
446
-Se pueden crear todos los archivos de configuración que se quieran. Al
447
-haber creado el archivo anterior, se han metido en la base de datos
448
-todos los feeds que habian hasta el momento. Por lo tanto, cuando se
449
-ejecuta **gnusrss** por primera vez, no posteará nada en GNU Social, a
450
-menos que el feed tenga nueva información. Para postear los feeds de un
451
-archivo o todos, ejecutar, respectivamente, lo siguiente:
389
+Se pueden crear todos los archivos de configuración que se quieran.
390
+Al haber creado el archivo anterior, se han metido en la base de datos todos los feeds que habian hasta el momento. Por lo tanto, cuando se ejecuta **gnusrss** por primera vez, no posteará nada en GNU Social, a menos que el feed tenga nueva información.
391
+Para postear los feeds de un archivo o todos, ejecutar, respectivamente, lo siguiente:
452 392
 
453
-::
393
+.. code-block:: sh
394
+    :number-lines: 0
454 395
 
455 396
     $ gnusrss.py -p daemons.ini
456 397
     $ gnusrss.py -P
457 398
 
458
-Si el archivo de configuración ha sido creado manualmente y no se quiere
459
-postear el contenido del feed, sólo hay que ejecutar la opción
460
-–populate-database para guardar estos en la base de datos:
399
+Si el archivo de configuración ha sido creado manualmente y no se quiere postear el contenido del feed, sólo hay que ejecutar la opción --populate-database para guardar estos en la base de datos:
461 400
 
462
-::
401
+.. code-block:: sh
402
+    :number-lines: 0
463 403
 
464 404
     $ gnusrss.py -k otherFile.ini
465 405
 
466
-Crontab
467
-~~~~~~~
406
+1.2.7 Crontab
407
+^^^^^^^^^^^^^
468 408
 
469
-El modo recomendado de ejecución de gnusrss es usando el crontab. Cada
470
-vez que se ejecute posteará un sólo elemento del feed para evitar el
471
-flood. Según la cantidad de feeds que se publiquen, se deberia escoger
472
-un tiempo de ejecución distinto. Para un blog que publique una vez al
473
-día, con poner lo siguiente, deberia valer:
409
+El modo recomendado de ejecución de gnusrss es usando el crontab. Cada vez que se ejecute posteará un sólo elemento del feed para evitar el flood. Según la cantidad de feeds que se publiquen, se deberia escoger un tiempo de ejecución distinto. Para un blog que publique una vez al día, con poner lo siguiente, deberia valer:
474 410
 
475
-::
411
+.. code-block:: sh
412
+    :number-lines: 0
476 413
 
477 414
     $ crontab -e
478 415
     # Se abrirá un archivo y se mete lo siguiente
479 416
     * 12 * * * cd $rutaDEgnusrss && gnusrss.py -p daemons.cf
480 417
 
481
-Así se ejecuta una vez al día, a las doce de la mañana. Si, en cambio,
482
-lo usasemos con `twitter2rss <http://daemons.cf/cgit/twitter2rss/>`__,
483
-se recomienda poner que se ejecute cada cinco minutos. Hay que recordar
484
-que es importante que se ejecute en el directorio en el que se ha creado
485
-la base de datos, ya que es ahí dónde la buscará.
418
+Así se ejecuta una vez al día, a las doce de la mañana. Si, en cambio, lo usasemos con `twitter2rss <http://daemons.cf/cgit/twitter2rss/>`_, se recomienda poner que se ejecute cada cinco minutos. Hay que recordar que es importante que se ejecute en el directorio en el que se ha creado la base de datos, ya que es ahí dónde la buscará.
486 419
 
487
-Uso con twitter2rss y/o GNU Social
488
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
420
+1.2.8 Uso con twitter2rss y/o GNU Social
421
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
489 422
 
490
-Funciona igual que con cualquier feed, exceptuando el campo que se
491
-publica. En ambos hay que escoger ``{summary}``. Un ejemplo de archivo
492
-de configuración sería el siguiente:
423
+Funciona igual que con cualquier feed, exceptuando el campo que se publica. En ambos hay que escoger ``{summary}``. Un ejemplo de archivo de configuración sería el siguiente:
493 424
 
494
-::
425
+.. code-block:: text
426
+    :number-lines: 0
495 427
 
496 428
     [feeds]
497 429
     feed = https://quitter.se/api/statuses/user_timeline/127168.atom
@@ -501,21 +433,16 @@ de configuración sería el siguiente:
501 433
     fallback_feed =
502 434
     format = {summary}
503 435
 
504
-El feed se puede conseguir mirando el código fuente de la página de la
505
-cuenta que se quiere. En el caso de
506
-`twitter2rss <http://daemons.cf/cgit/twitter2rss>`__, se puede hostear o
507
-se puede usar esta `web <http://daemons.cf/twitter2rss>`__. No es
508
-recomendable usarlo con ningún nodo que use 140 carácteres, ya que en
509
-los retweets se añade un símbolo, "♻", lo cual hará que un tweet de 140
510
-carácteres no sea posteado.
436
+El feed se puede conseguir mirando el código fuente de la página de la cuenta que se quiere. En el caso de `twitter2rss <http://daemons.cf/cgit/twitter2rss>`_, se puede hostear o se puede usar esta `web <http://daemons.cf/twitter2rss>`_. No es recomendable usarlo con ningún nodo que use 140 carácteres, ya que en los retweets se añade un símbolo, "♻", lo cual hará que un tweet de 140 carácteres no sea posteado.
511 437
 
512
-Bugs
513
-~~~~
438
+1.2.9 Bugs
439
+^^^^^^^^^^
514 440
 
515
-Licencia
516
-~~~~~~~~
441
+1.2.10 Licencia
442
+^^^^^^^^^^^^^^^
517 443
 
518
-::
444
+.. code-block:: text
445
+    :number-lines: 0
519 446
 
520 447
     This program is free software: you can redistribute it and/or modify
521 448
     it under the terms of the GNU General Public License as published by

+ 25
- 50
gnusrss.py View File

@@ -3,7 +3,7 @@
3 3
 
4 4
 import configparser
5 5
 import urllib.parse
6
-import pycurl
6
+import requests
7 7
 import os.path
8 8
 import sqlite3
9 9
 import feedparser
@@ -175,25 +175,16 @@ class GNUsrss:
175 175
 
176 176
         msg = ' '.join(msg)
177 177
 
178
-        buffer = BytesIO()
179 178
         post_data = {'status': msg, 'source': 'gnusrss'}
180
-        postfields = urllib.parse.urlencode(post_data)
181
-
182
-        curl = pycurl.Curl()
183
-        curl.setopt(pycurl.URL, api)
184
-        curl.setopt(pycurl.USERPWD, username + ':' + password)
185
-        curl.setopt(pycurl.VERBOSE, False)
186
-        curl.setopt(curl.POSTFIELDS, postfields)
187
-        curl.setopt(pycurl.WRITEDATA, buffer)
188 179
 
189 180
         if insecure == 'yes':
190
-            curl.setopt(pycurl.SSL_VERIFYPEER, 0)
191
-            curl.setopt(pycurl.SSL_VERIFYHOST, 0)
181
+            req = requests.post(api, auth=(username, password), data=post_data,
182
+                                verify=False)
192 183
 
193
-        curl.perform()
194
-        curl.close
184
+        else:
185
+            req = requests.post(api, auth=(username, password), data=post_data)
195 186
 
196
-        response = curl.getinfo(curl.RESPONSE_CODE)
187
+        response = req.status_code
197 188
 
198 189
         return response
199 190
 
@@ -232,31 +223,18 @@ class GNUsrss:
232 223
         if not pic:
233 224
             return None
234 225
 
235
-        # Pick the image and put it in the buffer
236
-        buffer = BytesIO()
237
-        curl = pycurl.Curl()
238
-        curl.setopt(pycurl.URL, pic)
239
-        curl.setopt(pycurl.VERBOSE, False)
240
-        curl.setopt(pycurl.WRITEDATA, buffer)
241
-        curl.perform()
242
-
243
-        pic = buffer.getvalue()
244
-        buffer = BytesIO()
226
+        req = requests.get(pic)
227
+        pic = req.content
228
+        img = {'media': ('useless.jpg', pic)}
245 229
 
246 230
         if insecure == 'yes':
247
-            curl.setopt(pycurl.SSL_VERIFYPEER, 0)
248
-            curl.setopt(pycurl.SSL_VERIFYHOST, 0)
249
-
250
-        # Upload the buffer's image
251
-        curl.setopt(pycurl.URL, api)
252
-        curl.setopt(pycurl.USERPWD, username + ':' + password)
253
-        curl.setopt(curl.HTTPPOST,[('media', (curl.FORM_BUFFER, 'useless.jpg',
254
-                                            curl.FORM_BUFFERPTR, pic))])
255
-        curl.setopt(pycurl.WRITEDATA, buffer)
256
-        curl.perform()
257
-        curl.close()
258
-
259
-        buffer = buffer.getvalue().decode()
231
+            req = requests.post(api, auth=(username, password), verify=False,
232
+                                files=img)
233
+
234
+        else:
235
+            req = requests.post(api, auth=(username, password), files=img)
236
+
237
+        buffer = req.content
260 238
         xmldoc = minidom.parseString(buffer)
261 239
         item = xmldoc.getElementsByTagName('rsp')
262 240
         url = item.item(0).getElementsByTagName('mediaurl')[0].firstChild.data
@@ -286,6 +264,7 @@ class GNUsrss:
286 264
                 new_feed.append(feed)
287 265
 
288 266
         db.close()
267
+
289 268
         return new_feed
290 269
 
291 270
     def shortener(self, post):
@@ -298,15 +277,10 @@ class GNUsrss:
298 277
 
299 278
         api = ('http://qttr.at/yourls-api.php?format=xml&action=shorturl'
300 279
                    '&signature=b6afeec983&url=' + post)
301
-        buffer = BytesIO()
302
-        curl = pycurl.Curl()
303
-        curl.setopt(pycurl.URL, api)
304
-        curl.setopt(pycurl.VERBOSE, False)
305
-        curl.setopt(pycurl.WRITEDATA, buffer)
306
-        curl.perform()
307 280
 
308
-        buffer = buffer.getvalue().decode('utf-8')
281
+        req = requests.post(api, auth=(username, password))
309 282
 
283
+        buffer = req.content
310 284
         xmldoc = minidom.parseString(buffer)
311 285
         item = xmldoc.getElementsByTagName('result')
312 286
         url = item.item(0).getElementsByTagName('shorturl')[0].firstChild.data
@@ -328,13 +302,13 @@ class GNUsrss:
328 302
 
329 303
         separate = post[1].split(' ')
330 304
         # Clean shitty carriage return
331
-        tmp = ''
305
+        tmp = []
306
+
332 307
         for i in separate:
333
-            i = i.replace(bytes('\xa0'), bytes('')) + ' '
334 308
             i = i.replace('\n', ' ')
335
-            tmp += i
309
+            tmp.append(i)
336 310
 
337
-        separate = tmp.split(' ')
311
+        separate = tmp
338 312
 
339 313
         for i in urls:
340 314
             shortened = self.shortener(i)
@@ -473,7 +447,8 @@ class ParseOptions():
473 447
         # If first feed and fallback feed aren't available, fail gracefully
474 448
         try:
475 449
             posts = self.gs.parse_feed(self.feed, self.format)
476
-        except:
450
+        except Exception as e:
451
+            print(e)
477 452
             if self.fallback_feed:
478 453
                 posts = self.gs.parse_feed(self.fallback_feed, self.format)
479 454
             else:

+ 1
- 1
requirements.txt View File

@@ -1,2 +1,2 @@
1 1
 feedparser >= 5.0
2
-pycurl >= 7.0
2
+requests >= 2.11.1