Git Product home page Git Product logo

rtnews-ui's Introduction

rtnews-ui - Клиентская сторона для новой версии news.radio-t.com

Полное описание задачи можно подсмотреть здесь


Разработка

Таски описаны в makefile

Build

# modes are: production|development
npm install && ./node_modules/.bin/webpack --mode "development"

После билда, все нужные файлы будут в папке public. Для работы нужен реврайт несуществующих урлов на index.html.

Dev Server

./node_modules/.bin/webpack-dev-server --mode "development"

С помощью Docker

В makefile продублированы команды для docker

ENVIRONMENT

RTHOST: Ссылка на api. По умолчанию используется https://news.radio-t.com/api/v1 для продакшна и http://jess.umputun.com:8780/api/v1 для дева


Feeds API

  • GET /api/v1/feeds - list of feeds
  • POST /api/v1/feeds - add feed, needs at least {feedlink: url}
  • DELETE /api/v1/feeds/:id - delete feed by id

feed record

    {
        "active": true,
        "feedlink": "http://www.instapaper.com/folder/1733843/rss/470308/Epogj3Ubs5DdJJnUdVD2HUAKSk",
        "id": "566283bd4e1ad997adf3f532",
        "updated": "2015-12-05T06:27:09.449Z"
    }

News API

  • basic news ops

  • POST /api/v1/news - add article

  • POST /api/v1/news/manual - add or upsert article with data in body

  • POST /api/v1/news/blocking - add article synchronously (similar to /api/v1/news), with article data in response

  • GET /api/v1/news - get all news, except deleted. Strps "content" field

  • GET /api/v1/news/id/:id - get full article by id, including "content"

  • GET /api/v1/news/last/:count - get last articles

  • GET /api/v1/news/slug/:slug - get article by slug

  • GET /api/v1/news/domain/#domain - get articles for domain

  • DELETE /api/v1/news/:id - delete by id (mark as deleted)

  • delete/archive ops

  • PUT /api/v1/news/undelete/:id - undelete by id (clear deleted status)

  • GET /api/v1/news/del - get deleted articles

  • PUT /api/v1/news/archive/:id - archive article by id

  • GET /api/v1/news/archive - get list of archives articles

  • move

  • PUT /api/v1/news/move/:pos/:offset - move from pos with +/- offset

  • PUT /api/v1/news/moveid/:id/:offset - move from id with +/- offset

  • GET /api/v1/news/positions - get positions as {id:pos, id1:pos1 ...}

  • activation

  • PUT /api/v1/news/active/:id - activate article by id

  • GET /api/v1/news/active - get active article

  • GET /api/v1/news/active/href - get active article as {title:foo, url:bar}

  • GET /api/v1/news/active/id - get id of active article as {id:xyz}

  • GET /api/v1/news/active/last/:hrs - get articles activated in last hrs

  • DELETE /api/v1/news/active/last/:hrs - archive all article activate in last :hrs

  • GET /api/v1/news/lastmd/:hrs, - get markdown of recently activated`

  • GET /api/v1/news/active/wait/:secs - wait for change of active up to :secs

  • marking

  • PUT /api/v1/news/nogeek/:id - mark as geek-article by id

  • PUT /api/v1/news/geek/:id - mark as regular (non-geek) by id

  • miscs

  • GET /api/v1/news/rss/:count - get rss feed with last (by time) :count

  • PUT /api/v1/news/reload - force reprocessing of all RSS feeds

  • PUT /api/v1/show/start[/:datetime] - save start time (used by markdown request). datetime: show start forced datetime in YYYYMMDD-HHMMSS format, server timezone (-06:00).

  • GET /api/v1/show/start - return saved start time

article (news) records

{
    "active": false,
    "activets": "0001-01-01T00:00:00Z",
    "archived": false,
    "ats": "2015-12-05T06:29:05.414Z",
    "author": "",
    "comments": 0,
    "content": "At GitHub we place an emphasis on stability, ....... CAN BE REALLY BIG ..."
    "del": false,
    "domain": "",
    "exttitle": "",
    "feed": "http://www.instapaper.com/rss/94339/obmip3D4ed6h67x3zX1oNbNWCYw",
    "geek": true,
    "id": "566284314e1ad997adf3f56a",
    "likes": 0,
    "link": "http://githubengineering.com/githubs-metal-cloud/",
    "origlink": "http://githubengineering.com/githubs-metal-cloud/",
    "pic": "http://githubengineering.com/images/githubs-metal-cloud/gpanel-chassis-view.png",
    "position": 0,
    "slug": "github-s-metal-cloud-github-engineering",
    "snippet": "At GitHub we place an emphasis on stability, availability, and performance. A large component of ensuring we excel in these areas is deploying services on bare-metal hardware. This allows us to…",
    "title": "GitHub's Metal Cloud - GitHub Engineering",
    "ts": "2015-12-05T05:17:21Z",
    "votes": 0
}

по поводу нескольких ts (тут их целых 3) могут быть резонные вопросы:

  1. activets – момент активации новости
  2. ts – время новости из rss
  3. ats – когда новость добавлена в систему

Как правило, link и origlink идентичны, однако в некоторых случаях они могут отличаться. origlink всегда содержит исходную ссылку, а link - это конечная ссылка после всех возможных редиректов.

rtnews-ui's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar igoradamenko avatar reeywhaar avatar umputun avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

rtnews-ui's Issues

Поменять источник ссылки

В прошлом подкасте была проблема с заблокированной после редиректов ссылки и невозможность найти оригинал. В записи уже есть решение этой проблемы - origlink:

    "_id" : ObjectId("5bb90131ff233b4db5b5e8c1"), 
    "title" : "Bloomberg - Are you a robot?", 
    "content" : "<div><div>\n        <h2 class=\"main__heading\">We&#39;ve detected unusual activity from your computer network</h2>\n        <p class=\"continue\">To continue, please click the box below to let us know you&#39;re not a robot.</p>\n        <p id=\"px-captcha\"></p>\n    </div></div>", 
    "snippet" : "We've detected unusual activity from your computer network To continue, please click the box below to let us know you're not a ...", 
    "mainpic" : "", 
    "link" : "https://www.bloomberg.com/tosv2.html?vid=&uuid=0c41be80-c997-11e8-947e-37b830ab0743&url=L25ld3MvZmVhdHVyZXMvMjAxOC0xMC0wNC90aGUtYmlnLWhhY2staG93LWNoaW5hLXVzZWQtYS10aW55LWNoaXAtdG8taW5maWx0cmF0ZS1hbWVyaWNhLXMtdG9wLWNvbXBhbmllcw==", 
    "author" : "", 
    "ts" : ISODate("2018-10-06T14:38:41.509-0400"), 
    "addedts" : ISODate("2018-10-06T14:38:41.509-0400"), 
    "active" : false, 
    "activets" : ISODate("0000-12-31T20:00:00.000-0400"), 
    "geek" : false, 
    "votes" : 0, 
    "deleted" : true, 
    "archived" : false, 
    "slug" : "bloomberg-are-you-a-robot", 
    "exttitle" : "Bloomberg - Are you a robot?", 
    "position" : -1, 
    "sourcefeed" : "manual", 
    "domain" : "www.bloomberg.com", 
    "comments" : 0, 
    "likes" : 0, 
    "origlink" : "https://www.bloomberg.com/news/features/2018-10-04/the-big-hack-how-china-used-a-tiny-chip-to-infiltrate-america-s-top-companies"

Все, что надо сделать на строне UI это использовать origlink вместо link

возможность делать временную метку для тем слушателей

Gray выдвинул хорошую идею:

а соорудите как-то возможность делать метку для тем слушателей. Наверное, это надо где-то рядом с «Поехали» воткнуть.

Не уверен про место, подозреваю что где-то сверху надо. Для того, чтоб оно сработало надо 3 вещи вызвать:

  • взять по site api тему
  • добавить по news api
  • активировать

Избавиться от disqus

это, похоже, последнее место, где у нас остался disqus. Было бы логично переключить на ремарк42. Если это не сильно сложно то стоит сделать. Однако, если с этим какие-то заморочки, то можно и просто отключить комменты.

UI забывает что я админ

@Reeywhaar - все еще происходит и нередко. UI теряет знание что я админ после разных переходов. Не знаю как это надежно повторить, но на практике случается

Стало плохо

  1. не работает поехали
  2. выбранная новость доходит не всем

Редактирование текста новости

Иногда у нас просиходит странное , типа вот этого http://rtnews.vyrtsev.com/post/the-consistency-of-arithmetic-pdf. Тут, несомненно, прoблема в том, что pdf однако бывают и другие случаи когда хочется поправить тeкст руками.

На стороне UI для этого можно использовать существующий POST /api/v1/news/manual поменяв в body только content и snippet

Перенести репо в radio-t org

Там тоже подобный есть с какими-то старыми экспериментами. Я его переименую, а этому сдeлаю transfer

Надо будет поменять и dockerhub auto-build и ссылку на образ. Все это на паузе пока мы не добили #6

постоянные запросы на обновление счетчика коментов

POST - /api/v1/counts?site=rtnews - 6e8c499551fb - 200 (35535) - 748.258µs ["https://news.radio-t.com/post/5-things-you-can-do-to-write-better-code","https://news.radio-t.com/post/do-a-majority-of-google-developers-use-visual-studio-code-microsoft-declines-to-back-up-its-top-marketing-exec-s-claim","https://news.radio-t.com/post/gaia-build-powerful-pipelines-in-any-programming-language","https://news.radio-t.com/post/bootstrap-builder-for-busy-developers","https://news.radio-t.com/post/bootstrap-studio-the-revolutionary-web-design-tool","https://news.radio-t.com/post/movim-blog-happy-birthday-xmpp-20th-anniversary-of-1st-jabber-server","https://news.radio-t.com/post/open-source-business-models-considered-harmful-john-mark-medium","https://news.radio-t.com/post/monorepo-please-do-adam-jacob-medium","https://news.radio-t.com/post/monorepos-please-don-t-matt-klein-medium","https://news.radio-t.com/post/how-developers-will-work-in-2019","https://news.radio-t.com/post/looking-forward-to-2019-let-s-encrypt-free-ssl-tls-certificates","https://news.radio-t.com/post/microsoft-totally-changed...

Вот такое посылается постоянно и это не есть хорошо.

Автоматизация "Поехали"

Непонятно, как этому можно помочь, но на практике я иногда забываю нажать "Поехали". Хорошо бы придумать какую автоматизацию которая помогла бы вспомнить. Например, если не нажата до 14:15 показать ненавязчивый, но явно видимый диалог, который напомнит. GET /api/v1/show/start поможет понять была нажата или нет.

Скорее всего подобное нажатие по напоминанию будет неточным (поздним). Хорошо бы опционально спросить "сколько минут прошло от начала?" и использовать ответ посредством POST /api/v1/show/start/{dtime}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.