mirror of
https://github.com/wallabag/wallabag.git
synced 2025-09-15 18:57:05 +00:00
Add Pinboard import
This commit is contained in:
parent
b5571b52cc
commit
9ab024b4f5
24 changed files with 596 additions and 2 deletions
|
@ -381,6 +381,10 @@ import:
|
|||
# page_title: 'Import > Instapaper'
|
||||
# description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").'
|
||||
# how_to: 'Please select your Instapaper export and click on the below button to upload and import it.'
|
||||
pinboard:
|
||||
# page_title: "Import > Pinboard"
|
||||
# description: 'This importer will import all your Instapaper articles. On the backup (https://pinboard.in/settings/backup) page, click on "JSON" in the "Bookmarks" section. A JSON file will be downloaded (like "pinboard_export").'
|
||||
# how_to: 'Please select your Pinboard export and click on the below button to upload and import it.'
|
||||
|
||||
developer:
|
||||
# page_title: 'Developer'
|
||||
|
|
|
@ -381,6 +381,10 @@ import:
|
|||
page_title: 'Aus Instapaper importieren'
|
||||
description: 'Dieser Import wird all deine Instapaper Artikel importieren. Auf der Einstellungsseite (https://www.instapaper.com/user) klickst du auf "Download .CSV Datei" in dem Abschnitt "Export". Eine CSV Datei wird heruntergeladen (z.B. "instapaper-export.csv").'
|
||||
how_to: "Bitte wähle deine Instapaper Sicherungsdatei aus und klicke den nachfolgenden Button zum Importieren."
|
||||
pinboard:
|
||||
# page_title: "Import > Pinboard"
|
||||
# description: 'This importer will import all your Instapaper articles. On the backup (https://pinboard.in/settings/backup) page, click on "JSON" in the "Bookmarks" section. A JSON file will be downloaded (like "pinboard_export").'
|
||||
# how_to: 'Please select your Pinboard export and click on the below button to upload and import it.'
|
||||
|
||||
developer:
|
||||
page_title: 'Entwickler'
|
||||
|
|
|
@ -381,6 +381,10 @@ import:
|
|||
page_title: 'Import > Instapaper'
|
||||
description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").'
|
||||
how_to: 'Please select your Instapaper export and click on the below button to upload and import it.'
|
||||
pinboard:
|
||||
page_title: "Import > Pinboard"
|
||||
description: 'This importer will import all your Instapaper articles. On the backup (https://pinboard.in/settings/backup) page, click on "JSON" in the "Bookmarks" section. A JSON file will be downloaded (like "pinboard_export").'
|
||||
how_to: 'Please select your Pinboard export and click on the below button to upload and import it.'
|
||||
|
||||
developer:
|
||||
page_title: 'Developer'
|
||||
|
|
|
@ -381,6 +381,10 @@ import:
|
|||
page_title: 'Importar > Instapaper'
|
||||
# description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").'
|
||||
# how_to: 'Please select your Instapaper export and click on the below button to upload and import it.'
|
||||
pinboard:
|
||||
page_title: "Importar > Pinboard"
|
||||
# description: 'This importer will import all your Instapaper articles. On the backup (https://pinboard.in/settings/backup) page, click on "JSON" in the "Bookmarks" section. A JSON file will be downloaded (like "pinboard_export").'
|
||||
# how_to: 'Please select your Pinboard export and click on the below button to upload and import it.'
|
||||
|
||||
developer:
|
||||
page_title: 'Promotor'
|
||||
|
|
|
@ -381,6 +381,10 @@ import:
|
|||
page_title: 'درونریزی > Instapaper'
|
||||
# description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").'
|
||||
# how_to: 'Please select your Instapaper export and click on the below button to upload and import it.'
|
||||
pinboard:
|
||||
# page_title: "Import > Pinboard"
|
||||
# description: 'This importer will import all your Instapaper articles. On the backup (https://pinboard.in/settings/backup) page, click on "JSON" in the "Bookmarks" section. A JSON file will be downloaded (like "pinboard_export").'
|
||||
# how_to: 'Please select your Pinboard export and click on the below button to upload and import it.'
|
||||
|
||||
developer:
|
||||
# page_title: 'Developer'
|
||||
|
|
|
@ -381,6 +381,10 @@ import:
|
|||
page_title: "Import > Instapaper"
|
||||
description: "Sur la page des paramètres (https://www.instapaper.com/user), cliquez sur « Download .CSV file » dans la section « Export ». Un fichier CSV sera téléchargé (« instapaper-export.csv »)."
|
||||
how_to: "Choisissez le fichier de votre export Instapaper et cliquez sur le bouton ci-dessous pour l’importer."
|
||||
pinboard:
|
||||
page_title: "Import > Pinboard"
|
||||
description: "Sur la page « Backup » (https://pinboard.in/settings/backup), cliquez sur « JSON » dans la section « Bookmarks ». Un fichier json (sans extension) sera téléchargé (« pinboard_export »)."
|
||||
how_to: "Choisissez le fichier de votre export Pinboard et cliquez sur le bouton ci-dessous pour l’importer."
|
||||
|
||||
developer:
|
||||
page_title: "Développeur"
|
||||
|
|
|
@ -381,6 +381,10 @@ import:
|
|||
page_title: 'Importa da > Instapaper'
|
||||
# description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").'
|
||||
# how_to: 'Please select your Instapaper export and click on the below button to upload and import it.'
|
||||
pinboard:
|
||||
page_title: "Importa da > Pinboard"
|
||||
# description: 'This importer will import all your Instapaper articles. On the backup (https://pinboard.in/settings/backup) page, click on "JSON" in the "Bookmarks" section. A JSON file will be downloaded (like "pinboard_export").'
|
||||
# how_to: 'Please select your Pinboard export and click on the below button to upload and import it.'
|
||||
|
||||
developer:
|
||||
page_title: 'Sviluppatori'
|
||||
|
|
|
@ -381,6 +381,10 @@ import:
|
|||
page_title: 'Importar > Instapaper'
|
||||
description: "Aquesta aisina importarà totas vòstres articles d'Instapaper. Sus la pagina de paramètres (https://www.instapaper.com/user), clicatz sus \"Download .CSV file\" dins la seccion \"Export\". Un fichièr CSV serà telecargat (aital \"instapaper-export.csv\")."
|
||||
how_to: "Mercés de causir vòstre fichièr Instapaper e de clicar sul boton dejós per lo telecargar e l'importar"
|
||||
pinboard:
|
||||
# page_title: "Import > Pinboard"
|
||||
# description: 'This importer will import all your Instapaper articles. On the backup (https://pinboard.in/settings/backup) page, click on "JSON" in the "Bookmarks" section. A JSON file will be downloaded (like "pinboard_export").'
|
||||
# how_to: 'Please select your Pinboard export and click on the below button to upload and import it.'
|
||||
|
||||
developer:
|
||||
page_title: 'Desvolopaire'
|
||||
|
|
|
@ -381,6 +381,10 @@ import:
|
|||
page_title: 'Import > Instapaper'
|
||||
description: 'Ten importer, zaimportuje wszystkie twoje artykuły z Instapaper. W ustawieniach (https://www.instapaper.com/user), kliknij na "Download .CSV file" w sekcji "Export". Otrzymasz plik CSV.'
|
||||
how_to: 'Wybierz swój plik eksportu z Instapaper i kliknij poniższy przycisk, aby go załadować.'
|
||||
pinboard:
|
||||
# page_title: "Import > Pinboard"
|
||||
# description: 'This importer will import all your Instapaper articles. On the backup (https://pinboard.in/settings/backup) page, click on "JSON" in the "Bookmarks" section. A JSON file will be downloaded (like "pinboard_export").'
|
||||
# how_to: 'Please select your Pinboard export and click on the below button to upload and import it.'
|
||||
|
||||
developer:
|
||||
page_title: 'Deweloper'
|
||||
|
|
|
@ -71,6 +71,7 @@ config:
|
|||
300_word: 'Posso ler ~300 palavras por minuto'
|
||||
400_word: 'Posso ler ~400 palavras por minuto'
|
||||
pocket_consumer_key_label: 'Chave do consumidor do Pocket para importar conteúdo'
|
||||
# android_configuration: Configure your Android application
|
||||
form_rss:
|
||||
description: 'Feeds RSS providos pelo wallabag permitem que você leia seus artigos salvos em seu leitor de RSS favorito. Você precisa gerar um token primeiro.'
|
||||
token_label: 'Token RSS'
|
||||
|
@ -88,6 +89,18 @@ config:
|
|||
name_label: 'Nome'
|
||||
email_label: 'E-mail'
|
||||
twoFactorAuthentication_label: 'Autenticação de dois passos'
|
||||
delete:
|
||||
# title: Delete my account (a.k.a danger zone)
|
||||
# description: If you remove your account, ALL your articles, ALL your tags, ALL your annotations and your account will be PERMANENTLY removed (it can't be UNDONE). You'll then be logged out.
|
||||
# confirm: Are you really sure? (THIS CAN'T BE UNDONE)
|
||||
# button: Delete my account
|
||||
reset:
|
||||
# title: Reset area (a.k.a danger zone)
|
||||
# description: By hiting buttons below you'll have ability to remove some informations from your account. Be aware that these actions are IRREVERSIBLE.
|
||||
# annotations: Remove ALL annotations
|
||||
# tags: Remove ALL tags
|
||||
# entries: Remove ALL entries
|
||||
# confirm: Are you really really sure? (THIS CAN'T BE UNDONE)
|
||||
form_password:
|
||||
old_password_label: 'Senha atual'
|
||||
new_password_label: 'Nova senha'
|
||||
|
@ -355,6 +368,7 @@ import:
|
|||
how_to: 'Por favor, selecione sua exportação do Readability e clique no botão abaixo para importá-la.'
|
||||
worker:
|
||||
enabled: "A importação é feita assíncronamente. Uma vez que a tarefa de importação é iniciada, um trabalho externo pode executar tarefas uma por vez. O serviço atual é:"
|
||||
# download_images_warning: "You enabled downloading images for your articles. Combined with classic import it can take ages to proceed (or maybe failed). We <strong>strongly recommend</strong> to enable asynchronous import to avoid errors."
|
||||
firefox:
|
||||
page_title: 'Importar > Firefox'
|
||||
description: "Com este importador você importa todos os favoritos de seu Firefox. Somente vá até seus favoritos (Ctrl+Maj+O), e em \"Importar e Backup\" e escolha \"Backup...\". Você terá então um arquivo .json."
|
||||
|
@ -367,6 +381,10 @@ import:
|
|||
page_title: 'Importar > Instapaper'
|
||||
description: 'Este importador pode importar todos os artigos do seu Instapaper. Nas página de configurações (https://www.instapaper.com/user), clique em "Download .CSV file" na seção "Export". Um arquivo CSV será baixado (algo como "instapaper-export.csv").'
|
||||
how_to: 'Por favor, selecione sua exportação do seu Instapaper e clique no botão abaixo para importá-la.'
|
||||
pinboard:
|
||||
# page_title: "Import > Pinboard"
|
||||
# description: 'This importer will import all your Instapaper articles. On the backup (https://pinboard.in/settings/backup) page, click on "JSON" in the "Bookmarks" section. A JSON file will be downloaded (like "pinboard_export").'
|
||||
# how_to: 'Please select your Pinboard export and click on the below button to upload and import it.'
|
||||
|
||||
developer:
|
||||
page_title: 'Desenvolvedor'
|
||||
|
@ -445,16 +463,23 @@ user:
|
|||
delete_confirm: 'Tem certeza?'
|
||||
back_to_list: 'Voltar para a lista'
|
||||
|
||||
error:
|
||||
# page_title: An error occurred
|
||||
|
||||
flashes:
|
||||
config:
|
||||
notice:
|
||||
config_saved: 'Configiração salva. Alguns parâmetros podem ser considerados depois da desconexão.'
|
||||
password_updated: 'Senha atualizada'
|
||||
password_not_updated_demo: 'Em modo de demonstração, você não pode alterar a senha deste usuário.'
|
||||
# user_updated: 'Information updated'
|
||||
rss_updated: 'Informação de RSS atualizada'
|
||||
tagging_rules_updated: 'Regras de tags atualizadas'
|
||||
tagging_rules_deleted: 'Regra de tag apagada'
|
||||
rss_token_updated: 'Token RSS atualizado'
|
||||
# annotations_reset: Annotations reset
|
||||
# tags_reset: Tags reset
|
||||
# entries_reset: Entries reset
|
||||
entry:
|
||||
notice:
|
||||
entry_already_saved: 'Entrada já foi salva em %date%'
|
||||
|
|
|
@ -381,6 +381,10 @@ import:
|
|||
# page_title: 'Import > Instapaper'
|
||||
# description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").'
|
||||
# how_to: 'Please select your Instapaper export and click on the below button to upload and import it.'
|
||||
pinboard:
|
||||
# page_title: "Import > Pinboard"
|
||||
# description: 'This importer will import all your Instapaper articles. On the backup (https://pinboard.in/settings/backup) page, click on "JSON" in the "Bookmarks" section. A JSON file will be downloaded (like "pinboard_export").'
|
||||
# how_to: 'Please select your Pinboard export and click on the below button to upload and import it.'
|
||||
|
||||
developer:
|
||||
# page_title: 'Developer'
|
||||
|
|
|
@ -381,6 +381,10 @@ import:
|
|||
page_title: 'İçe Aktar > Instapaper'
|
||||
# description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").'
|
||||
# how_to: 'Please select your Instapaper export and click on the below button to upload and import it.'
|
||||
pinboard:
|
||||
# page_title: "Import > Pinboard"
|
||||
# description: 'This importer will import all your Instapaper articles. On the backup (https://pinboard.in/settings/backup) page, click on "JSON" in the "Bookmarks" section. A JSON file will be downloaded (like "pinboard_export").'
|
||||
# how_to: 'Please select your Pinboard export and click on the below button to upload and import it.'
|
||||
|
||||
developer:
|
||||
# page_title: 'Developer'
|
||||
|
|
|
@ -17,7 +17,7 @@ class ImportCommand extends ContainerAwareCommand
|
|||
->setDescription('Import entries from a JSON export')
|
||||
->addArgument('userId', InputArgument::REQUIRED, 'User ID to populate')
|
||||
->addArgument('filepath', InputArgument::REQUIRED, 'Path to the JSON file')
|
||||
->addOption('importer', null, InputArgument::OPTIONAL, 'The importer to use: v1, v2, instapaper, readability, firefox or chrome', 'v1')
|
||||
->addOption('importer', null, InputArgument::OPTIONAL, 'The importer to use: v1, v2, instapaper, pinboard, readability, firefox or chrome', 'v1')
|
||||
->addOption('markAsRead', null, InputArgument::OPTIONAL, 'Mark all entries as read', false)
|
||||
;
|
||||
}
|
||||
|
@ -56,6 +56,9 @@ class ImportCommand extends ContainerAwareCommand
|
|||
case 'instapaper':
|
||||
$import = $this->getContainer()->get('wallabag_import.instapaper.import');
|
||||
break;
|
||||
case 'pinboard':
|
||||
$import = $this->getContainer()->get('wallabag_import.pinboard.import');
|
||||
break;
|
||||
default:
|
||||
$import = $this->getContainer()->get('wallabag_import.wallabag_v1.import');
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ class RedisWorkerCommand extends ContainerAwareCommand
|
|||
$this
|
||||
->setName('wallabag:import:redis-worker')
|
||||
->setDescription('Launch Redis worker')
|
||||
->addArgument('serviceName', InputArgument::REQUIRED, 'Service to use: wallabag_v1, wallabag_v2, pocket, readability, firefox, chrome or instapaper')
|
||||
->addArgument('serviceName', InputArgument::REQUIRED, 'Service to use: wallabag_v1, wallabag_v2, pocket, readability, pinboard, firefox, chrome or instapaper')
|
||||
->addOption('maxIterations', '', InputOption::VALUE_OPTIONAL, 'Number of iterations before stoping', false)
|
||||
;
|
||||
}
|
||||
|
|
|
@ -42,6 +42,7 @@ class ImportController extends Controller
|
|||
+ $this->getTotalMessageInRabbitQueue('firefox')
|
||||
+ $this->getTotalMessageInRabbitQueue('chrome')
|
||||
+ $this->getTotalMessageInRabbitQueue('instapaper')
|
||||
+ $this->getTotalMessageInRabbitQueue('pinboard')
|
||||
;
|
||||
} catch (\Exception $e) {
|
||||
$rabbitNotInstalled = true;
|
||||
|
@ -57,6 +58,7 @@ class ImportController extends Controller
|
|||
+ $redis->llen('wallabag.import.firefox')
|
||||
+ $redis->llen('wallabag.import.chrome')
|
||||
+ $redis->llen('wallabag.import.instapaper')
|
||||
+ $redis->llen('wallabag.import.pinboard')
|
||||
;
|
||||
} catch (\Exception $e) {
|
||||
$redisNotInstalled = true;
|
||||
|
|
77
src/Wallabag/ImportBundle/Controller/PinboardController.php
Normal file
77
src/Wallabag/ImportBundle/Controller/PinboardController.php
Normal file
|
@ -0,0 +1,77 @@
|
|||
<?php
|
||||
|
||||
namespace Wallabag\ImportBundle\Controller;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Wallabag\ImportBundle\Form\Type\UploadImportType;
|
||||
|
||||
class PinboardController extends Controller
|
||||
{
|
||||
/**
|
||||
* @Route("/pinboard", name="import_pinboard")
|
||||
*/
|
||||
public function indexAction(Request $request)
|
||||
{
|
||||
$form = $this->createForm(UploadImportType::class);
|
||||
$form->handleRequest($request);
|
||||
|
||||
$pinboard = $this->get('wallabag_import.pinboard.import');
|
||||
$pinboard->setUser($this->getUser());
|
||||
|
||||
if ($this->get('craue_config')->get('import_with_rabbitmq')) {
|
||||
$pinboard->setProducer($this->get('old_sound_rabbit_mq.import_pinboard_producer'));
|
||||
} elseif ($this->get('craue_config')->get('import_with_redis')) {
|
||||
$pinboard->setProducer($this->get('wallabag_import.producer.redis.pinboard'));
|
||||
}
|
||||
|
||||
if ($form->isValid()) {
|
||||
$file = $form->get('file')->getData();
|
||||
$markAsRead = $form->get('mark_as_read')->getData();
|
||||
$name = 'pinboard_'.$this->getUser()->getId().'.json';
|
||||
|
||||
if (null !== $file && in_array($file->getClientMimeType(), $this->getParameter('wallabag_import.allow_mimetypes')) && $file->move($this->getParameter('wallabag_import.resource_dir'), $name)) {
|
||||
$res = $pinboard
|
||||
->setFilepath($this->getParameter('wallabag_import.resource_dir').'/'.$name)
|
||||
->setMarkAsRead($markAsRead)
|
||||
->import();
|
||||
|
||||
$message = 'flashes.import.notice.failed';
|
||||
|
||||
if (true === $res) {
|
||||
$summary = $pinboard->getSummary();
|
||||
$message = $this->get('translator')->trans('flashes.import.notice.summary', [
|
||||
'%imported%' => $summary['imported'],
|
||||
'%skipped%' => $summary['skipped'],
|
||||
]);
|
||||
|
||||
if (0 < $summary['queued']) {
|
||||
$message = $this->get('translator')->trans('flashes.import.notice.summary_with_queue', [
|
||||
'%queued%' => $summary['queued'],
|
||||
]);
|
||||
}
|
||||
|
||||
unlink($this->getParameter('wallabag_import.resource_dir').'/'.$name);
|
||||
}
|
||||
|
||||
$this->get('session')->getFlashBag()->add(
|
||||
'notice',
|
||||
$message
|
||||
);
|
||||
|
||||
return $this->redirect($this->generateUrl('homepage'));
|
||||
} else {
|
||||
$this->get('session')->getFlashBag()->add(
|
||||
'notice',
|
||||
'flashes.import.notice.failed_on_file'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return $this->render('WallabagImportBundle:Pinboard:index.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
'import' => $pinboard,
|
||||
]);
|
||||
}
|
||||
}
|
143
src/Wallabag/ImportBundle/Import/PinboardImport.php
Normal file
143
src/Wallabag/ImportBundle/Import/PinboardImport.php
Normal file
|
@ -0,0 +1,143 @@
|
|||
<?php
|
||||
|
||||
namespace Wallabag\ImportBundle\Import;
|
||||
|
||||
use Wallabag\CoreBundle\Entity\Entry;
|
||||
|
||||
class PinboardImport extends AbstractImport
|
||||
{
|
||||
private $filepath;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return 'Pinboard';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getUrl()
|
||||
{
|
||||
return 'import_pinboard';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getDescription()
|
||||
{
|
||||
return 'import.pinboard.description';
|
||||
}
|
||||
|
||||
/**
|
||||
* Set file path to the json file.
|
||||
*
|
||||
* @param string $filepath
|
||||
*/
|
||||
public function setFilepath($filepath)
|
||||
{
|
||||
$this->filepath = $filepath;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function import()
|
||||
{
|
||||
if (!$this->user) {
|
||||
$this->logger->error('PinboardImport: user is not defined');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!file_exists($this->filepath) || !is_readable($this->filepath)) {
|
||||
$this->logger->error('PinboardImport: unable to read file', ['filepath' => $this->filepath]);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$data = json_decode(file_get_contents($this->filepath), true);
|
||||
|
||||
if (empty($data)) {
|
||||
$this->logger->error('PinboardImport: no entries in imported file');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($this->producer) {
|
||||
$this->parseEntriesForProducer($data);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
$this->parseEntries($data);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function parseEntry(array $importedEntry)
|
||||
{
|
||||
$existingEntry = $this->em
|
||||
->getRepository('WallabagCoreBundle:Entry')
|
||||
->findByUrlAndUserId($importedEntry['href'], $this->user->getId());
|
||||
|
||||
if (false !== $existingEntry) {
|
||||
++$this->skippedEntries;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$data = [
|
||||
'title' => $importedEntry['description'],
|
||||
'url' => $importedEntry['href'],
|
||||
'content_type' => '',
|
||||
'language' => '',
|
||||
'is_archived' => ('no' === $importedEntry['toread']) || $this->markAsRead,
|
||||
'is_starred' => false,
|
||||
'created_at' => $importedEntry['time'],
|
||||
'tags' => explode(' ', $importedEntry['tags']),
|
||||
];
|
||||
|
||||
$entry = new Entry($this->user);
|
||||
$entry->setUrl($data['url']);
|
||||
$entry->setTitle($data['title']);
|
||||
|
||||
// update entry with content (in case fetching failed, the given entry will be return)
|
||||
$entry = $this->fetchContent($entry, $data['url'], $data);
|
||||
|
||||
if (!empty($data['tags'])) {
|
||||
$this->contentProxy->assignTagsToEntry(
|
||||
$entry,
|
||||
$data['tags'],
|
||||
$this->em->getUnitOfWork()->getScheduledEntityInsertions()
|
||||
);
|
||||
}
|
||||
|
||||
$entry->setArchived($data['is_archived']);
|
||||
$entry->setStarred($data['is_starred']);
|
||||
$entry->setCreatedAt(new \DateTime($data['created_at']));
|
||||
|
||||
$this->em->persist($entry);
|
||||
++$this->importedEntries;
|
||||
|
||||
return $entry;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setEntryAsRead(array $importedEntry)
|
||||
{
|
||||
$importedEntry['toread'] = 'no';
|
||||
|
||||
return $importedEntry;
|
||||
}
|
||||
}
|
|
@ -24,6 +24,14 @@ services:
|
|||
- "@wallabag_import.instapaper.import"
|
||||
- "@event_dispatcher"
|
||||
- "@logger"
|
||||
wallabag_import.consumer.amqp.pinboard:
|
||||
class: Wallabag\ImportBundle\Consumer\AMQPEntryConsumer
|
||||
arguments:
|
||||
- "@doctrine.orm.entity_manager"
|
||||
- "@wallabag_user.user_repository"
|
||||
- "@wallabag_import.pinboard.import"
|
||||
- "@event_dispatcher"
|
||||
- "@logger"
|
||||
wallabag_import.consumer.amqp.wallabag_v1:
|
||||
class: Wallabag\ImportBundle\Consumer\AMQPEntryConsumer
|
||||
arguments:
|
||||
|
|
|
@ -42,6 +42,27 @@ services:
|
|||
- "@event_dispatcher"
|
||||
- "@logger"
|
||||
|
||||
# pinboard
|
||||
wallabag_import.queue.redis.pinboard:
|
||||
class: Simpleue\Queue\RedisQueue
|
||||
arguments:
|
||||
- "@wallabag_core.redis.client"
|
||||
- "wallabag.import.pinboard"
|
||||
|
||||
wallabag_import.producer.redis.pinboard:
|
||||
class: Wallabag\ImportBundle\Redis\Producer
|
||||
arguments:
|
||||
- "@wallabag_import.queue.redis.pinboard"
|
||||
|
||||
wallabag_import.consumer.redis.pinboard:
|
||||
class: Wallabag\ImportBundle\Consumer\RedisEntryConsumer
|
||||
arguments:
|
||||
- "@doctrine.orm.entity_manager"
|
||||
- "@wallabag_user.user_repository"
|
||||
- "@wallabag_import.pinboard.import"
|
||||
- "@event_dispatcher"
|
||||
- "@logger"
|
||||
|
||||
# pocket
|
||||
wallabag_import.queue.redis.pocket:
|
||||
class: Simpleue\Queue\RedisQueue
|
||||
|
|
|
@ -71,6 +71,17 @@ services:
|
|||
tags:
|
||||
- { name: wallabag_import.import, alias: instapaper }
|
||||
|
||||
wallabag_import.pinboard.import:
|
||||
class: Wallabag\ImportBundle\Import\PinboardImport
|
||||
arguments:
|
||||
- "@doctrine.orm.entity_manager"
|
||||
- "@wallabag_core.content_proxy"
|
||||
- "@event_dispatcher"
|
||||
calls:
|
||||
- [ setLogger, [ "@logger" ]]
|
||||
tags:
|
||||
- { name: wallabag_import.import, alias: pinboard }
|
||||
|
||||
wallabag_import.firefox.import:
|
||||
class: Wallabag\ImportBundle\Import\FirefoxImport
|
||||
arguments:
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{{ 'import.pinboard.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<div class="card-panel settings">
|
||||
{% include 'WallabagImportBundle:Import:_information.html.twig' %}
|
||||
|
||||
<div class="row">
|
||||
<blockquote>{{ import.description|trans }}</blockquote>
|
||||
<p>{{ 'import.pinboard.how_to'|trans }}</p>
|
||||
|
||||
<div class="col s12">
|
||||
{{ form_start(form, {'method': 'POST'}) }}
|
||||
{{ form_errors(form) }}
|
||||
<div class="row">
|
||||
<div class="file-field input-field col s12">
|
||||
{{ form_errors(form.file) }}
|
||||
<div class="btn">
|
||||
<span>{{ form.file.vars.label|trans }}</span>
|
||||
{{ form_widget(form.file) }}
|
||||
</div>
|
||||
<div class="file-path-wrapper">
|
||||
<input class="file-path validate" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-field col s6 with-checkbox">
|
||||
<h6>{{ 'import.form.mark_as_read_title'|trans }}</h6>
|
||||
{{ form_widget(form.mark_as_read) }}
|
||||
{{ form_label(form.mark_as_read) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ form_widget(form.save, { 'attr': {'class': 'btn waves-effect waves-light'} }) }}
|
||||
|
||||
{{ form_rest(form) }}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
Loading…
Add table
Add a link
Reference in a new issue