41

(7 відповідей, залишених у Python)

Як я зрозумів, або серед присутніх ніхто не бавився з Google Customserch API, або не було бажання пояснити, тому, коротко розпишу як організувати свій пошук в гугл програмно. Писати буду на python. Так от, поїхали.

1. Спочатку потрібно зарареєструвати свій Google пошук, так званий Користувацький пошук - https://cse.google.com.ua/cse/all .
Ось тут і починаються проблеми і обмеження: є вибір, шукати на окремому сайті, або ж, "по всьому інтернету". Звісно, мені потрібен був пошук по всьому інтернету, внизу були налаштування пошуку по всьому інтернету. Самі ж обмеження - шукати можна тільки по сайтах з шаблонами schem.org. Добавити можна всього 10 шаблонів. В реалі їх є дуже багато.
Зареєструваши, берем користувацький id. Він виглядає типу "0182************37171:ysu****7xw8") Зірочки вписую тому, що користуюсь даним кодом.
2. Дальше нам потрібно зареєструвати АРІ-ключ
Рядки в json-об'єкті які повертає гугл. Документація, одним словом)
Виглядає типу "AIzaSyCAoU*************ANe3PYXeLzBdspi50"

3. Більша частина пройдена. Тепер потрібно встановити бібліотеку. Як я зрозумів, бібліотека є тільки для 3 гілки пайтона.
Linux:

$ pip install --upgrade google-api-python-client
or
$ easy_install --upgrade google-api-python-client

Windows:

pip install google-api-python-client

4. А тепер сама програма:

# -*- coding: utf-8 -*-

from googleapiclient.discovery import build
import config


def main(query, numb):
    service = build("customsearch", "v1",
                    developerKey = config.keyGoogleAPI)

    res = service.cse().list(
        q = query,
        cx = config.idGoogle,
        num = numb,
        googlehost = 'www.google.com.ua',
    ).execute()

    return res['items'][0]['formattedUrl']

if __name__ == '__main__':
    main()

Програма повертає посилання на перший пропонований сайт в гугл. Використовую її як модуль в іншій програмі.
Щоб роздрукувати весь json-об'єкт добавляємо модуль pprint і прописуємо замість return:

pprint.pprint(res)

Файл config:

# -*- coding: utf-8 -*-

keyGoogleAPI = 'AIzaSyCAoU*************ANe3PYXeLzBdspi50'
idGoogle = '0182************37171:ysu****7xw8'

42

(7 відповідей, залишених у Python)

а хтось колись мав взагалі справу з Google Customsearch API? Бо в інеті дуже мало інфи, більшість на сайтах гугл, а толком там нічого немає. Мені потрібно після запиту перше посилання отримати і короткий опис. Короткий опис я отримав з рядка htmlSnippet, а от посилання, чомусь мені гугл повертає на якийсь незрозумілий сайт, який відношення до запиту взагалі не має:

'formattedUrl': 'www.cs.jhu.edu/.../Advances%20in%20Image- '
                            'Guided%20Surgery%20AAMI.pdf'

І при різних запитах повертає посилання саме на такі сайти як cs.jhu.edu, cs.cornel.edu, cs.toronto.edu, і в більшості випадків це pdf файли. А інколи при запиті взагалі помилку вибиває і каже "KeyError: 'items'"

43

(7 відповідей, залишених у Python)

Master_Sergius написав:

Отак:

res['items']['htmlSnippet']

Воно?

Ні, ось так пробував.
Але проблему вже вирішив

res['items'][0]['htmlSnippet']

Не питайте як я до цього дійшов :D

44

(7 відповідей, залишених у Python)

Master_Sergius, ви мене напевне не правильно зрозуміли, максимум що я зміг витягнути з нього - це, як я наводив приклад вижче, блок items, в якому є багато рядків. Мені потрібно конкретно один рядок з усіх цих вибрати. Проблема в тому, що не знаю як це синтаксично записати, і в гуглі на схоже не натрапив.

45

(7 відповідей, залишених у Python)

Ось таке завдання: потрібно зробити пошук в гугл програмно на Python.
Так як в пітоні я чайник, потрібна допомога:

Прихований текст
import pprint
import json
from googleapiclient.discovery import build

def main():
  service = build("customsearch", "v1",
            developerKey = "<myDeveloperKey>")
  #json.loads = service.cse().list(
  res = service.cse().list(
      q = '3d.justaction.xyz',
      cx = '017576662512468239146:omuauf_lfve',
      num = 1,
      googlehost = 'www.google.com.ua',
    ).execute()
  #pprint.pprint(json.loads)
  pprint.pprint(res)

if __name__ == '__main__':
    main()

В результаті res, якщо я правильно розумію, є асоціативним масивом.
Сам результат:

Прихований текст
{'context': {'facets': [[{'anchor': 'Lectures',
                          'label': 'lectures',
                          'label_with_op': 'more:lectures'}],
                        [{'anchor': 'Assignments',
                          'label': 'assignments',
                          'label_with_op': 'more:assignments'}],
                        [{'anchor': 'Reference',
                          'label': 'reference',
                          'label_with_op': 'more:reference'}]],
             'title': 'CS Curriculum'},
 'items': [{'cacheId': '81VWSGPSXVUJ',
            'displayLink': 'www.cs.jhu.edu',
            'fileFormat': 'PDF/Adobe Acrobat',
            'formattedUrl': 'www.cs.jhu.edu/.../Advances%20in%20Image- '
                            'Guided%20Surgery%20AAMI.pdf',
            'htmlFormattedUrl': 'www.cs.jhu.edu/.../Advances%20in%20Image- '
                                'Guided%20Surgery%20AAMI.pdf',
            'htmlSnippet': '38 y.o. woman 23 weeks <b>gestation</b> with '
                           'history of breast cancer. A small .... '
                           '<b>3D</b>-<br>\n'
                           'Slicer adapted for prostate procedures and ... MR '
                           'guided biopsy-<b>3D</b> slicer.',
            'htmlTitle': 'Dr. Corrino&#39;s Talk',
            'kind': 'customsearch#result',
            'link': 'http://www.cs.jhu.edu/cista/445/Lectures/Advances%20in%20Image-Guided%20Surgery%20AAMI.pdf',
            'mime': 'application/pdf',
            'pagemap': {'metatags': [{'author': 'Russell Taylor',
                                      'creationdate': "D:20071116170941-05'00'",
                                      'creator': 'PowerPoint',
                                      'moddate': "D:20071116170941-05'00'",
                                      'producer': 'Mac OS X 10.4.10 Quartz '
                                                  'PDFContext',
                                      'title': 'Advances in Image-Guided '
                                               'Surgery AAMI.ppt'}]},
            'snippet': '38 y.o. woman 23 weeks gestation with history of '
                       'breast cancer. A small .... 3D-\n'
                       'Slicer adapted for prostate procedures and ... MR '
                       'guided biopsy-3D slicer.',
            'title': "Dr. Corrino's Talk"}],
 'kind': 'customsearch#search',
 'queries': {'nextPage': [{'count': 1,
                           'cx': '017576662512468239146:omuauf_lfve',
                           'googleHost': 'www.google.com.ua',
                           'inputEncoding': 'utf8',
                           'outputEncoding': 'utf8',
                           'safe': 'off',
                           'searchTerms': '3d.justaction.xyz',
                           'startIndex': 2,
                           'title': 'Google Custom Search - 3d.justaction.xyz',
                           'totalResults': '197000'}],
             'request': [{'count': 1,
                          'cx': '017576662512468239146:omuauf_lfve',
                          'googleHost': 'www.google.com.ua',
                          'inputEncoding': 'utf8',
                          'outputEncoding': 'utf8',
                          'safe': 'off',
                          'searchTerms': '3d.justaction.xyz',
                          'startIndex': 1,
                          'title': 'Google Custom Search - 3d.justaction.xyz',
                          'totalResults': '197000'}]},
 'searchInformation': {'formattedSearchTime': '0.17',
                       'formattedTotalResults': '197,000',
                       'searchTime': 0.166133,
                       'totalResults': '197000'},
 'url': {'template': 'https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&cref={cref?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&relatedSite={relatedSite?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json',
         'type': 'application/json'}}

Ось, мені потрібно звідси витягнути деякі дані.Наприклад, якщо прописати pprint.pprint(res['items']) - виведе тільки те що знаходиться в items, мені ж потрібно отримати доступ до конкретного рядка, наприклад items.htmlSnippet.
Хтось підкаже як це зробити?

46

(19 відповідей, залишених у Залізо)

фіва написав:
navchalkin написав:

А які драйвери використати? RAMPS 1.4 працює тільки з A4988 і DVR8825.

Коли робив RepRap то брав драйвери А4988. Щодо крокових двигунів то можна підключати 6-провідний як 4-провідний. Є схеми як це зробити, а точніше з'ясувати які дроти підключити. Я це з'ясовував експериментально, підключаючи двигун до Arduino Uno з шилдом драйверів.

Зробив аналогічно. Ну і так, як в цьому ділі я рак ракович, трохи досвіду набрався:)

47

(19 відповідей, залишених у Залізо)

Підключив даний кроковик до А4988
Схема і принцип - описав на сайті ( http://3d.justaction.xyz/?p=86 )

48

(19 відповідей, залишених у Залізо)

Відкрив україномовний блог по 3D принтерах. Багато в інеті всякої інфи про це, тільки не українською мовою. Кому цікаво подивитись на мій майбутній принтер (надіюсь він буде не одним і не в одній модифікації) - ласкаво прошу в мою скромну хату: http://3d.justaction.xyz/
P.S: строго не судіть. Досвід набираю в процесі роботи:)

49

(19 відповідей, залишених у Залізо)

quez написав:
navchalkin написав:

Це нормально коли адміністратори порушують правила форуму, пишучи оффтоп?

Ні, але ж весело вийшло, погодьтесь?

Не зовсім.

50

(19 відповідей, залишених у Залізо)

То по темі я жодної відповіді не отримаю? Весело

51

(19 відповідей, залишених у Залізо)

Це нормально коли адміністратори порушують правила форуму, пишучи оффтоп?
Якщо добре покопатись в форумі, мабуть в кожного можна знайти русизми.  :|

52

(19 відповідей, залишених у Залізо)

Затролювати

Це ви самі собі придумали?

53

(19 відповідей, залишених у Залізо)

koala написав:
navchalkin написав:

Привичка взяла верх :(

Звичка взяла гору?

Затролити вирішили?

54

(19 відповідей, залишених у Залізо)

ПРоблема в тому, що ці драйвері для Nema 17. А в Неми тільки 4 провода на виході. В ПБМГ-200-256 їх 6.

55

(19 відповідей, залишених у Залізо)

ADR написав:

крокових...

спочатку думав так писати, але "шаговики" якось привичніше. Привичка взяла верх :(

56

(19 відповідей, залишених у Залізо)

А які драйвери використати? RAMPS 1.4 працює тільки з A4988 і DVR8825.

57

(19 відповідей, залишених у Залізо)

Хтось щось може сказати про ці шаговики? Підійдуть? Вирішив зібрати щось дешеве і сердите.
http://img14.allegroimg.pl/photos/oryginal/63/47/62/88/6347628821_1
http://img14.allegroimg.pl/photos/oryginal/63/47/62/88/6347628821

58

(10 відповідей, залишених у *nix)

Ethernet підключення. З пінгом все добре. і качається з інших пристроїв. На цьому ж компі з вінди качав нормально.
Згадав що через wget можна скачати в терміналі. Скачав без жодних проблем. Баг в Xubuntu напевно. Бо в усіх браузерах однакова проблема, і проблема тільки з тими файлами які довго качаються.

59

(10 відповідей, залишених у *nix)

Така от проблема виникла: який би файл і де б не качав з нету - спочатку все добре, качає, потім швидкість падає до 0 (це відбувається десь на третині скачаного файлу), і далі ноль реакції. Помилка. Пробував різні браузери, не помагає

60

(73 відповідей, залишених у Windows)

yaroshko.01 написав:

Це виключно моя думка, але я б не радив взагалі встановлювати Windows 10? Чому?
На мою думку Біл Гейтс хоче панувати над світом.


А нічо що Біл Гейтс в 2008 пішов з поста ген-директора Майкрософта?